feat: more group stuff #1

Merged
maot merged 20 commits from feat/group-stage into main 2026-09-28 14:36:22 +00:00
Owner
No description provided.
maot added 16 commits 2026-09-28 13:52:55 +00:00
- Grid and focus share one persistent stage (Discord-style tiles + filmstrip);
  players survive layout switches and tiles slide between positions
- Theater mode (T / Esc): rail, sidebar and filmstrip slide away
- Stream info, manage and navigation moved into the player overlay
- Enter/exit animations for dialogs, menus, tooltips, popovers; sliding tabs;
  page and sidebar transitions
- Go Live: only Navegador + Manual (OBS), Navegador default when capture is
  available; status line removed; 720p60/1080p30/1080p60 quality presets,
  switchable while live

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Settings open over the current page via ?settings= / ?group_settings=,
with a left nav (full screen with a tab row on phones). Old /settings/*
and /g/{slug}/settings/* URLs redirect; OAuth linking returns to the page
it started from with the connections tab open.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Shared golden fixtures cover the new rules; osu! timestamps get their own
chip style.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Any file type; images keep the sniff + metadata-strip path, other files are
stored under a sanitized name and served as downloads (sandboxed) unless
they're playable audio/video. Messages gain `files`; the composer shows
progress and file cards; messages render players and download cards.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Chat messages and uploads now belong to a group, with an optional channel
(null = the group's general chat). The migration backfills group_id from
the channel. New /groups/{slug}/chat endpoints and a groupchat:{id} topic;
the stage's chat island gets tabs (Geral + one per live stream) that follow
focus, and shows on the grid and the empty stage too.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The publish script round-tripped payloads through Lua cjson, which encodes
empty tables as objects, so image-only messages arrived with parts: {} and
crashed the chat renderer.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The group chat moves out of the chat island into a sidebar text channel
(/g/{slug}/general) that takes over the stage; the stream you were on
shrinks to a picture-in-picture over it without reconnecting. The chat
island now only holds stream chats.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Streams expose viewer_ids (state + stream.viewers events); presence keeps
  "watching" pointed at another open stream when you stop one of several
- Stage tiles show a preview with "Assistir" and only connect once watched;
  focusing a stream watches it; optional auto-watch in Appearance settings
- Right-click a tile for per-stream volume (remembered), mute, focus and
  watch/stop watching; "Parar de assistir" in the control bar
- Viewer avatars in the sidebar's live list and the focused overlay

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- New messages float over a fullscreen stream for a few seconds
- The right chat island lists only streams you're watching and disappears
  when there are none
- Drop explanatory copy: chat welcome block, quality hint, auto-watch
  description

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Focused stream: labeled top-right "Todas as transmissões" and a red
  "Sair da transmissão"; grid tiles: "Ver só esta" and "Sair" (icons only
  on small tiles). Ambiguous eye/grid icons leave the control bar
- Closing the PIP also leaves that stream
- Remove explanatory subtitles from dialogs and settings pages

Co-Authored-By: Claude Opus 5.5 <[email protected]>
feat: group icon upload; Go Live closes once publishing starts
All checks were successful
backend / test (pull_request) Successful in 58s
frontend / test (pull_request) Successful in 28s
1013ad653b
- PUT/DELETE /groups/{slug}/icon (admin+), sniffed like chat images; the
  previous icon blob is deleted. Overview tab gets a preview with upload
  and remove
- Go Live panel closes after the browser source is picked and publishing
  starts
- Settings modal no longer auto-focuses (and clips) the first nav item

Co-Authored-By: Claude Opus 5.5 <[email protected]>
feat: continue implementation of invitation system
All checks were successful
backend / test (pull_request) Successful in 57s
frontend / test (pull_request) Successful in 28s
8a14ec38cb
feat: use tui for concurrent dev command
All checks were successful
backend / test (pull_request) Successful in 58s
frontend / test (pull_request) Successful in 31s
8842e86688
maot merged commit 0335d208af into main 2026-09-28 14:36:22 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
maot/afogados!1
No description provided.