Commit Graph

1354 Commits

Author SHA1 Message Date
Igor Loskutov
1764c591c4 meeting page frontend fixes 2025-09-17 12:18:25 -04:00
Igor Loskutov
3bd2190aa8 remove work.md 2025-09-16 17:33:14 -04:00
Igor Loskutov
4d66eacab2 calendar refresh quick action icon 2025-09-16 17:15:13 -04:00
Igor Loskutov
f4d59a4af8 room url copy button for ics 2025-09-16 16:52:12 -04:00
Igor Loskutov
88fe0e051d test fix 2025-09-16 15:58:17 -04:00
Igor Monadical
5d0a571247 Merge branch 'main' into mathieu/calendar-integration-rebased 2025-09-16 15:53:18 -04:00
Igor Loskutov
1087ce5b3a invalidate meeting list on new meeting 2025-09-16 15:41:30 -04:00
fa049e8d06 fix: ignore player hotkeys for text inputs (#646)
* Ignore player hotkeys for text inputs

* Fix event listener effect
2025-09-16 10:57:35 +02:00
2ce7479967 chore(main): release 0.11.0 (#648) v0.11.0 2025-09-15 22:42:53 -06:00
b42f7cfc60 feat: remove profanity filter that was there for conference (#652) 2025-09-15 18:19:19 -06:00
c546e69739 fix: zulip stream and topic selection in share dialog (#644)
* fix: zulip stream and topic selection in share dialog

Replace useListCollection with createListCollection to match the working
room edit implementation. This ensures collections update when data loads,
fixing the issue where streams and topics wouldn't appear until navigation.

* fix: wrap createListCollection in useMemo to prevent recreation on every render

Both streamCollection and topicCollection are now memoized to improve performance
and prevent unnecessary re-renders of Combobox components
2025-09-15 12:34:51 -06:00
Igor Monadical
3f1fe8c9bf chore: remove timeout-based auth session logic (#649)
* remove timeout-based auth session logic

* remove timeout-based auth session logic

---------

Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
2025-09-15 14:19:10 -04:00
5f143fe364 fix: zulip and consent handler on the file pipeline (#645) 2025-09-15 10:49:20 -06:00
Igor Monadical
fb01a89bd3 fix: meeting useEffect frontend-only dedupe (#647)
* meeting useEffect frontend-only dedupe

* format

* also get room by name backend fix

---------

Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
2025-09-15 11:59:06 -04:00
0510d10040 fix: rework process logic for meeting 2025-09-12 17:21:52 -06:00
3673d9f106 fix: meeting selection responsive 2025-09-12 17:01:36 -06:00
Igor Loskutov
e983606ba6 compile fix 2025-09-12 18:57:36 -04:00
d7d9e492e1 fix: meeting selection create button 2025-09-12 16:55:06 -06:00
7e98c2eea7 fix: creation of meeting 2025-09-12 16:53:06 -06:00
0f59115a2a fix: local fixes 2025-09-12 16:49:58 -06:00
Igor Loskutov
b438a2646e self-pr review treeshake 2025-09-12 18:41:27 -04:00
Igor Loskutov
5a1ce2f9fd self-pr review 2025-09-12 18:39:15 -04:00
Igor Loskutov
5d53c53db2 self-pr review 2025-09-12 18:34:56 -04:00
1f41448e1c fix: database migration 2025-09-12 11:32:36 -06:00
Igor Monadical
cfe8aa1fef Merge branch 'main' into mathieu/calendar-integration-rebased 2025-09-12 13:10:39 -04:00
Igor Monadical
79f161436e chore: meeting user id removal and room id requirement (#635)
* chore: remove meeting user id and make meeting room id required

* meeting room_id optional

* orphaned meeting room ids DATA migration

* ci fix

* fix meeting_room_id_fkey downgrade

* fix migration rollback

* fix: put index back (meeting room id)

* fix: put index back (meeting room id)

* fix: put index back (meeting room id)

* remove noop migrations

---------

Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
2025-09-12 13:07:58 -04:00
Igor Monadical
5cba5d310d chore: sentry and nextjs major bumps (#633)
* chore: remove nextjs-config

* build fix

* sentry update

* nextjs update

* feature flags doc

* update readme

* explicit nextjs env vars + remove feature-unrelated things and obsolete vars from config

* full config removal

* remove force-dynamic from pages

* compile fix

* restore claude-deleted tests

* no sentry backward compat

* better .env.example

* AUTHENTIK_REFRESH_TOKEN_URL not so required

* accommodate auth system to requiredLogin feature

---------

Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
2025-09-12 12:41:44 -04:00
43ea9349f5 chore(main): release 0.10.0 (#616) v0.10.0 2025-09-11 20:57:19 -06:00
21a8a1b274 fix: minor code quality improvements - add emoji constants, fix type safety, cleanup comments 2025-09-11 16:38:27 -06:00
06246b8b8e refactor: rename MinimalHeader to MeetingMinimalHeader for clarity 2025-09-11 16:33:35 -06:00
0a814b769d fix: add Redis distributed locking to prevent race conditions in process_meetings
- Implement per-meeting locks using Redis to prevent concurrent processing
- Add lock extension after slow API calls (Whereby) to handle long-running operations
- Use redis-py's built-in lock.extend() with replace_ttl=True for simple TTL refresh
- Track and log skipped meetings when locked by other workers
- Document SSRF analysis showing it's low-risk due to async worker isolation

This prevents multiple workers from processing the same meeting simultaneously,
which could cause state corruption or duplicate deactivations.
2025-09-11 16:26:15 -06:00
Igor Monadical
b3a8e9739d chore: whereby & s3 settings env error reporting (#637)
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
2025-09-11 17:52:34 -04:00
f3fa86f065 fix: update room ICS API tests to include required webhook fields and correct URL
- Add webhook_url and webhook_secret fields to room creation tests
- Fix room URL matching in ICS sync test to use UI_BASE_URL instead of BASE_URL
- Aligns test with actual API requirements and ICS sync service implementation
2025-09-11 15:51:03 -06:00
be4784243f fix: incompleted changes from EVENT_WINDOW* 2025-09-11 14:36:08 -06:00
b14b7fc3f2 fix: remove unwanted file 2025-09-11 14:15:09 -06:00
7540209f7e Update test to match new deactivation logic for calendar meetings 2025-09-11 11:53:59 -06:00
b9d483b29d Remove grace period logic and improve meeting deactivation
- Removed grace_period_minutes and last_participant_left_at fields
- Simplified deactivation logic based on actual usage patterns:
  * Active sessions: Keep meeting active regardless of scheduled time
  * Calendar meetings: Wait until scheduled end if unused, deactivate immediately once used and empty
  * On-the-fly meetings: Deactivate immediately when empty
- Created migration to drop unused database columns
- Updated tests to remove grace period test cases
2025-09-11 11:52:34 -06:00
c39e374af4 fix: resolve pyflakes warnings in ics_sync and meetings modules
Remove unused imports and variables to clean up code quality
2025-09-11 10:06:01 -06:00
8071210979 chore: remove loguru dependency and improve type annotations
- Remove loguru from dependencies in pyproject.toml (replaced with structlog)
- Update meeting controller methods to properly return Optional types
- Update dependency lock file after loguru removal
2025-09-11 09:38:00 -06:00
3d131d9c09 refactor: replace loguru with structlog in ics_sync service
- Replace loguru import with structlog in services/ics_sync.py
- Update logging calls to use structlog's structured format with keyword args
- Maintains consistency with other services using structlog
- Changes: logger.info(f'...') -> logger.info('...', key=value) format
2025-09-11 09:32:38 -06:00
540ad7897d feat: update TypeScript definitions for ICSStatus Literal type
- OpenAPI generation now properly reflects Literal['enabled', 'disabled'] type
- Improves type safety for frontend consumers of the API
- Applied automatic formatting via pre-commit hooks
2025-09-11 09:25:15 -06:00
aff01ba789 feat: use Literal type for ICSStatus.status field
- Changed ICSStatus.status from str to Literal['enabled', 'disabled']
- Improves type safety and API documentation
2025-09-11 09:22:00 -06:00
Igor Monadical
369ecdff13 feat: replace nextjs-config with environment variables (#632)
* chore: remove nextjs-config

* build fix

* update readme

* explicit nextjs env vars + remove feature-unrelated things and obsolete vars from config

* full config removal

* remove force-dynamic from pages

* compile fix

* restore claude-deleted tests

* better .env.example

---------

Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
2025-09-11 11:20:41 -04:00
51965d3848 fix: import top level 2025-09-11 09:17:15 -06:00
6ef5be70ed refactor: remove unnecessary docstring from get_ics_enabled method
The function name is self-explanatory
2025-09-11 00:45:03 -06:00
1f7fddb81b feat: add SyncStatus enum and refactor ICS sync to use rooms controller
- Add SyncStatus enum to replace string literals in ICS sync status
- Replace direct SQL queries in worker with rooms_controller.get_ics_enabled()
- Improve type safety and maintainability of ICS sync code
- Enum values: SUCCESS, UNCHANGED, ERROR, SKIPPED maintain backward compatibility
2025-09-11 00:24:10 -06:00
c27b297c30 fix: alembic migration with named foreign keys 2025-09-11 00:09:07 -06:00
a7b18fa3b3 fix: remove plan files 2025-09-10 19:49:22 -06:00
eeed91cc82 style: linting 2025-09-10 19:45:23 -06:00
b4da188a1a style: change room title and no meetings text to pure black
- Update room title in MinimalHeader from gray.700 to black
- Update 'No meetings right now' text from gray.700 to black
- Improves visual hierarchy and readability
- Consistent with other pages' styling
2025-09-10 19:17:44 -06:00