Commit Graph

1556 Commits

Author SHA1 Message Date
Storm Dragon 160cd7287e Merge remote-tracking branch 'upstream/master' into a11y 2026-05-09 12:48:22 -04:00
Juliusz Chroboczek 122db74fb8 Use message passing for changing permissions.
We used to handle permission change commands by directly mutating
the permissions field from the source client's thread, which is
racy.  We now use message passing.

Thanks to Vinayak Mishra.
2026-04-30 00:50:22 +02:00
Juliusz Chroboczek e3f098e189 Use constant time comparison for WHIP tokens.
Thanks to Vinayak Mishra.
2026-04-30 00:18:29 +02:00
Juliusz Chroboczek ab44a661cb Export group.ConstantTimeCompare. 2026-04-30 00:18:16 +02:00
Juliusz Chroboczek 4683c3c126 Minor tweaks to galene.js. 2026-04-29 19:43:36 +02:00
Juliusz Chroboczek fb546d8b96 Fix guard in parseCommand. 2026-04-29 19:43:14 +02:00
Juliusz Chroboczek 56220bb942 Update this.frameRate in filters.
We weren't correctly updating the framerate, which caused us to
recheck every 30 frames.
2026-04-29 19:41:02 +02:00
Juliusz Chroboczek b0ce21defe Use EncodeURIComponent in setChangePassword. 2026-04-29 19:40:33 +02:00
Juliusz Chroboczek 213e3e5c6d Limit message size in keyHandler.
Thanks to Vinayak Mishra.
2026-04-07 17:41:24 +02:00
Juliusz Chroboczek eea92c5ac5 Fix CORS headers for key handler. 2026-04-07 17:40:16 +02:00
Juliusz Chroboczek c28a24aa32 Update CHANGES. 2026-04-07 15:51:20 +02:00
Juliusz Chroboczek d76f594130 Limit the size of API requests.
Thanks to Vinayak Mishra.
2026-04-07 15:47:11 +02:00
Juliusz Chroboczek 2b4952fcf1 Protect websocket against oversized messages.
The maximum message size of 1MB is probably overkill, but SDP
can grow pretty large.  Thanks to Vinayak Mishra.
2026-04-07 15:45:24 +02:00
Andrea Zucchelli 550c58ad85 fix: allow wildcard password update when users map is nil 2026-03-21 23:43:23 +01:00
Juliusz Chroboczek a4c917f9ca Fix width of invite dialog.
Reported by on6zq.
2026-03-14 13:23:20 +01:00
Kirill Smelkov 88dc7bf5f8 client: Fix users list disappear on mobile
When on mobile galene.css tunes #left-sidebar to appear/disappear
when #sidebarCollapse is tapped. It indeed works ok when in chat mode,
but when in video mode, when #sidebarCollapse is tapped the only thing
that happens is that only "Galène" title of left sidebar window appears
- the other content of that window below the title is completely black
and even more: I only see title bar of the whole screen being scrolled
to the right, but the main area with videos is not scrolled to the
right.

That happens because video is overlaying left sidebar.

-> Fix that by setting z-index on #left-sidebar.active so that it always
comes on top of video.
2026-03-14 13:00:52 +01:00
Kirill Smelkov 499b750508 client: Fix chat window disappear on mobile
The chat window appears when #show-chat is clicked. That click leads
to #left becoming visible, which contains chat elements. However when
mobile user taps #input, on-screen keyboard appears, which triggers
screen resize -> setViewportHeight() and the latter calls showVideo()
which hides the chat completely.

-> Fix that by doing showVideo() in setViewportHeight() only if we were
not in chat mode.
2026-03-14 13:00:52 +01:00
Juliusz Chroboczek 888aa9bcd1 Add congtributing section to README. 2026-03-08 13:14:04 +01:00
Daniel ef1539d96e Fix link reference for galene-api.md in README 2026-02-05 20:24:18 +03:30
Habetdin 3c6a3051bd Fix markup errors 2025-11-28 14:39:08 +03:00
Storm Dragon 34a2751e71 Attempt fix for control+alt+t and c shortcuts. Add keyboard shortcuts to /help command. 2025-11-28 03:26:28 -05:00
Storm Dragon d51cb1aa90 Changed shortcuts a bit, added a mute/unmute shortcut to control+alt+t. 2025-11-28 01:10:56 -05:00
Storm Dragon 6f1cb957c3 Add keyboard shortcuts for some actions. 2025-11-28 00:52:24 -05:00
Storm Dragon 5e4b9ae439 Fixed problems with radio button grouping. Also added headings to chat area. 2025-11-28 00:11:51 -05:00
Storm Dragon ef2eeb073f Fix accessibility labels and context menu activation
Add descriptive ARIA labels to unlabeled controls and fix keyboard
activation for context menu items.

Changes:
- Add aria-label to chat message textarea ("Message or /command")
- Add aria-labels to Enable/Disable buttons ("Enable/Disable camera and microphone")
- Fix Enter/Space key activation in context menus by clicking parent <li> element

The context menu fix ensures that keyboard users can properly activate
menu items with Enter or Space. Previously, these keys had no effect
because the click handler is attached to the parent <li> element, not
the focused <div>.
2025-11-27 00:55:11 -05:00
Storm Dragon c0929247e7 Add keyboard navigation and accessibility to context menus
This commit makes the Contextual library menus fully keyboard accessible.
Previously, context menus (user menu and chat message menu) were only
usable with a mouse.

Changes:
- Add makeContextualMenuAccessible() helper function
  * Adds ARIA role="menu" to menu container
  * Adds role="menuitem" to each menu item
  * Makes menu items focusable with tabindex
  * Automatically focuses first menu item when opened

- Add keyboard navigation support
  * Arrow Up/Down: Navigate between menu items
  * Enter/Space: Activate selected menu item
  * Escape: Close menu

- Apply to both context menus
  * User menu (click/Enter on username)
  * Chat message menu (double-click on message)

- Focus management
  * First item automatically focused when menu opens
  * Roving tabindex for efficient keyboard navigation
  * Menu closes and returns focus after activation

This makes context menus fully accessible to keyboard and screen reader
users. They can now navigate menus with arrow keys and activate items
with Enter or Space.
2025-11-27 00:33:44 -05:00
Storm Dragon 3c58e13c11 Add keyboard navigation support and raise hand commands
This commit adds comprehensive keyboard navigation support for all
interactive elements and adds slash commands for raising hands.

Changes:
- Add /raisehand and /unraisehand slash commands
  * Previously only accessible via context menu
  * Now keyboard users can raise/lower hand from chat input
  * Shows up in /help command list

- Add keyboard event handlers (Enter/Space) for all interactive elements
  * User list items now respond to keyboard (open context menu)
  * Sidebar collapse button supports keyboard
  * Settings panel open/close supports keyboard
  * Video show/hide buttons support keyboard
  * Chat show/hide buttons support keyboard
  * All buttons now have role="button" and tabindex where needed

- Add keyboard support for chat resizer
  * Made resizer focusable with tabindex="0"
  * Added role="separator" and aria-label
  * Left/Right arrow keys resize chat panel
  * 20px step per keypress
  * Maintains minimum width constraint

These changes make Galene fully keyboard-accessible. Users who cannot
use a mouse can now navigate all controls using Tab, Enter, Space, and
arrow keys.
2025-11-27 00:31:21 -05:00
Storm Dragon 82ab7e553d Add additional accessibility improvements (quick wins)
This commit adds more accessibility enhancements that improve usability
for screen reader and keyboard users with minimal code changes.

Changes:
- Add aria-labels to all icon-only buttons
  * Show/hide video and chat toggle buttons
  * Video controls (play, volume, pip, fullscreen, stop)
  * Chat submit button (send message)
  * All buttons converted from spans/divs to proper button elements

- Add aria-label to volume slider
  * Screen readers can now identify the volume control

- Increase error message timeout from 4s to 8s
  * Gives screen reader users more time to read error messages
  * Messages still dismissible with close button

- Add semantic HTML landmarks
  * Changed main div to <main> element
  * Changed settings sidebar div to <aside> with aria-label
  * Added role="region" and aria-label to chat area
  * Left sidebar already uses <nav> element

- Fix typo and improve close button
  * Fixed id from "clodeside" to "closeside"
  * Converted close button from anchor to button element
  * Added aria-label "Close settings"

These changes improve navigation for screen reader users through proper
landmarks and ensure all interactive elements are properly labeled.
2025-11-27 00:11:44 -05:00
Storm Dragon e03c0be0f7 Add accessibility improvements for screen readers and keyboard navigation
This commit addresses critical accessibility issues that prevent blind users
and keyboard-only users from using Galene effectively.

Changes:
- Convert navigation buttons from divs to proper button elements with ARIA labels
  * Mute button now has aria-pressed state and updates label (Mute/Unmute)
  * Share screen button has proper aria-label
  * More options button has aria-label and aria-haspopup
  * Collapse sidebar button converted to proper button element
  * Close chat button converted to proper button element

- Add visible focus indicators for keyboard navigation
  * Restore focus outlines for all interactive elements
  * Add consistent 2px blue outline for buttons, inputs, selects, and links
  * Remove outline: none that was blocking keyboard users

- Add aria-live region for chat messages
  * New messages announced to screen readers in real-time
  * History messages not announced to avoid spam on page load
  * Includes .sr-only CSS class for screen-reader-only content

- Add aria-labels to video stream elements
  * Video containers labeled with username
  * Video elements labeled to identify stream owner
  * Helps screen reader users identify which video belongs to whom

- Add raised hand notifications for screen readers
  * Announces when users raise their hand
  * User list items show status (hand raised, camera on, microphone on)
  * Does not announce when you raise your own hand
  * Updates aria-label on user elements with full status

These changes make Galene significantly more accessible for users who rely
on screen readers or keyboard navigation.
2025-11-27 00:04:33 -05:00
Juliusz Chroboczek 4cf2c9e14c Rework include-subgroups for cryptographic tokens. 2025-11-20 18:13:09 +01:00
Juliusz Chroboczek 24ee1f6a18 Update CHANGES. 2025-11-20 17:29:03 +01:00
izeau e3d161e056 Add include-subgroups capabilities for JWTs
Implements #285
2025-11-20 17:28:18 +01:00
Juliusz Chroboczek f9b86db9fb Fix incorrect error message in galenectl. 2025-11-20 17:28:07 +01:00
Juliusz Chroboczek 783502be6a Fix typo in documentation.
Thanks to CompuRoot.
2025-10-28 14:02:08 +01:00
Juliusz Chroboczek efcb2c04e7 Create configuration directory if needed.
This would cause "galenectl initial-setup" to fail if the configuration
directory didn't exist.  Thanks to CompuRoot.
2025-10-28 13:59:50 +01:00
Jesse Bickel 7cf95c7f86 Improve the nginx websocket proxy example
Include the full `proxy-pass` directive (continuing the example) and
set the `Host` header.

Issue #175 Websocket upgrade: websocket: request origin not allowed by
    Upgrader.CheckOrigin
2025-10-15 12:32:08 +02:00
A. Iooss b0b4ff484e Make sure data directory exists before rsync. 2025-10-13 01:43:14 +02:00
Juliusz Chroboczek 82275d03e0 Mention curl -O as an alternative to wget. 2025-10-13 01:41:01 +02:00
A. Iooss 5a334b7286 Use wget rather than npm pack to fetch @mediapipe/tasks-vision.
End users might not have npm set up on their machine, using wget
makes the installation process more straightforward.
Moreover, this change pins a specific tasks-vision release, making
Galene installation a bit more reproducible.
2025-10-13 01:37:20 +02:00
Juliusz Chroboczek c7be11eb06 Update CHANGES. 2025-10-13 01:23:16 +02:00
izeau 218ecbd3f7 Add RSA key parsing for RS256 algorithm
Implements RSA key parsing for the RS256 algorithm, allowing
compatibility with Auth0, which do not provide symmetric or elliptic
curve keys.

https://datatracker.ietf.org/doc/html/rfc7518#section-6.3
2025-10-12 22:34:25 +02:00
Juliusz Chroboczek fff2acf1f0 Improve logging of authorisation errors. 2025-09-17 12:08:12 +02:00
Juliusz Chroboczek 594e1c2032 Remove references to form.active.
HTMLFormElement does not have an "active" member.
2025-08-22 12:18:37 +02:00
Juliusz Chroboczek 7bf098a57c Use binaryType=blob for file transfer.
This was the intended behaviour, but the default value changed
at some point.  This should in principle allow receiving files
larger than available RAM.
2025-08-21 22:55:41 +02:00
Juliusz Chroboczek b40dcd2fc8 More proof-reading of documentation. 2025-08-21 16:48:10 +02:00
Juliusz Chroboczek efc153788c Update CHANGES. 2025-08-21 15:42:12 +02:00
Juliusz Chroboczek a631975df3 Proof-read galene.md and galene-install.md. 2025-08-21 15:36:32 +02:00
Juliusz Chroboczek 23575ea122 Fix caching of stateful tokens after an addition. 2025-08-18 13:00:22 +02:00
Juliusz Chroboczek 22af4567e9 Documentation rework. 2025-08-17 16:30:05 +02:00
Juliusz Chroboczek 5bbfd287e5 Implement galenectl show-group. 2025-08-14 17:42:06 +02:00