Commit Graph

16 Commits

Author SHA1 Message Date
Jeff Emmett 8dc9c74c45 feat(shared-video): add video source types, embed URLs, and tile view support
Adds VIDEO_SOURCE_TYPES, getVideoSourceType, getVideoEmbedUrl to
shared-video for multi-platform embed support (Vimeo, Dailymotion,
Twitch). Adds SharedVideoTile and EmbedPlayerManager components.
Updates shared-music with embed player manager and source type helpers.
CSS fixes for meeting intelligence, toolbars, and filmstrip tiles.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 18:58:10 -04:00
Jeff Emmett 2984a2944c feat(shared-video): show shared video in tile view and default to tile layout
Remove auto-exit from tile view when video is shared, stop auto-pinning
the video participant, and render shared videos as embedded tiles in the
filmstrip. Users can still click to pin/maximize the video to stage view.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 16:47:52 -04:00
Jeff Emmett 2fe77055a9 feat(meeting-intelligence): add per-meeting access control
Restrict MI data so only meeting attendees can access their meetings.
Each meeting gets a unique access_token generated at creation time.
Attendees discover their token via conference_id (room name) lookup.

Backend:
- New auth.py with Bearer token validation and multi-token extraction
- Token generation in create_meeting(), backfill on startup
- All endpoints gated: list_meetings filters by X-MI-Tokens header,
  per-meeting endpoints require Authorization: Bearer <token>
- New GET /meetings/token?conference_id=<room> discovery endpoint

Frontend:
- tokenStorage.ts manages tokens in localStorage keyed by room name
- middleware.ts auto-fetches token on CONFERENCE_JOINED
- All API calls in actions.ts now include auth headers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 10:18:13 -04:00
Jeff Emmett 4efcdfbf36 feat(meeting-intelligence): add toolbar button and close page link
- Add meetingintelligence to toolbarButtons and interface_config on server
- Add "View Meeting Recordings & Transcripts" link to close page
- Fix shared-video TS errors that blocked webpack builds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 17:54:02 -04:00
Jeff Emmett 57db6da004 feat(mobile): add swipe navigation and tileview button for mobile layout switching
Add Zoom-like layout switching on mobile web: horizontal swipe on video area
toggles between speaker and tile view, tileview button now visible in toolbar
at mobile widths (≤470px), and layout indicator dots show current view mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 16:09:35 -04:00
Jeff Emmett 65c4a1acf0 feat(shared-media): show volume controls to all participants
Previously only the media owner could see playback controls (including
volume). Now all participants see native controls so they can adjust
their local volume independently. Playback sync still overrides
non-owner play/pause/seek actions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 15:29:02 -04:00
Jeff Emmett aa85248a22 fix(mobile): show toolbox controls immediately on mobile browsers
The toolbox was hidden by default on mobile and only appeared on tap,
which users couldn't discover. Now shows controls on conference mount
since the mobile auto-hide timeout is already a no-op.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 17:31:41 -07:00
Jeff Emmett ec77b5f471 feat(video-layout): make videos fill tiles and remove blurred background
Videos now use object-fit: cover in all thumbnail types, removing dark
bars around portrait videos. Hides the blurred large video background
and makes the large video fill its container edge-to-edge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:28:03 -07:00
Jeff Emmett 325960fa15 feat(reactions,chat): expand emoji features across reactions, chat picker, and message reactions
Add 8 new floating reactions (party, thinking, wave, cry, eyes, mindblown, pray, rocket) in a
two-row grid layout without sounds or shortcuts. Replace the basic SmileysPanel in chat with a
full @emoji-mart/react picker featuring categories, search, and skin tones. Expand message
reaction quick-access from 5 to 8 emojis with a "+" button to open the full picker.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 11:22:48 -07:00
Jeff Emmett ef6a5a1ffe feat(video-layout): default to tile view on conference join
Also add tooltip to Meeting Intelligence button explaining that
recordings are transcribed by self-hosted AI post-recording.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 14:15:27 -08:00
Jeff Emmett 68016c30f6 feat(meeting-intelligence): add frontend dashboard for recordings and transcripts
Adds the Meeting Intelligence dashboard UI with:
- Toolbar button to open side panel during meetings
- Recordings list showing past meeting recordings
- Transcript viewer with speaker diarization colors
- AI summary panel with key points, action items, decisions
- Search panel for searching across all transcripts
- Export functionality (Markdown, PDF, JSON)

Frontend components:
- MeetingIntelligenceButton (toolbar integration)
- MeetingIntelligenceDashboard (side panel container)
- RecordingsList, TranscriptViewer, SummaryPanel, SearchPanel

Integrations:
- Redux state management via ReducerRegistry
- Config support via meetingIntelligence settings
- SCSS styles matching Jitsi design system

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 02:24:50 +00:00
Jeff Emmett f56986818b feat(shared-music): add support for Vimeo, SoundCloud, Spotify, Dailymotion, Twitch
- Add source type detection for Vimeo, SoundCloud, Spotify, Dailymotion, Twitch
- Create EmbedPlayerManager for iframe-based media players
- Update extractMusicUrl to extract IDs from various platforms
- Update SharedMusicPlayer to route to appropriate player manager
- Update SharedMusicTile to handle video vs audio sources
- Video sources (YouTube, Vimeo, Dailymotion, Twitch) show embedded player
- Audio sources (SoundCloud, Spotify) show embedded widget
- Direct audio files show HTML5 audio player with custom controls

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 16:43:22 +00:00
Jeff Emmett 751a04b950 feat(shared-music): display YouTube video in tile view with controls
- Add SharedMusicTile component for rendering video in filmstrip
- Create fake participant for shared music (shows as tile, not pinned)
- Make YouTube player visible with proper dimensions in tile
- Remove auto-mute behavior when sharing music
- Add SharedMusic to FakeParticipant enum
- Add isSharedMusicParticipant helper function
- Move player rendering from LargeVideo to tile
- Add CSS styles for player wrapper and controls overlay

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 16:29:59 +00:00
Jeff Emmett dfebe26cd1 fix(shared-music): render player and add mobile/native support
- Add SharedMusicPlayer to LargeVideo.web.tsx so audio actually plays
- Handle mobile autoplay restrictions in DirectAudioManager with
  fallback to play on user interaction
- Add native (React Native) components for SharedMusicDialog and
  SharedMusicButton to support iOS/Android apps

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:04:01 +00:00
Jeff Emmett 1c9fed8794 feat(shared-music): add synchronized music playback feature
Add a new shared-music feature that allows users to share YouTube or
direct audio URLs with all participants. Music plays locally on each
device with the host controlling playback (play/pause/seek/volume).

New feature module includes:
- Redux state management (actions, reducer, middleware)
- Conference command sync for real-time playback coordination
- YouTube player (hidden video, audio only) via react-youtube
- HTML5 audio player for direct audio URLs
- Toolbar button with share dialog
- Translation strings for all UI elements

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 18:43:22 +00:00
Jeff Emmett 9f4b09d135 Initial commit: Jeffsi Meet - forked from Jitsi Meet 2026-01-08 19:27:14 +01:00