Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

## [Unreleased]

### Overlay

- Replaced the M and D text badges with crossed-mic and crossed-headphones glyphs after each name, red for server-set and grey for self-set mute or deafen
- Added roster sorting with join order, name, and recent speakers
- Added max rows setting that hides overflow participants behind a +N pill

## 0.3.1 (2026-09-11)

### Platforms

- Changed the app and tray icon to a circular design
Expand Down
21 changes: 18 additions & 3 deletions CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,24 @@ Platform mechanics live behind ports in `src/platform/`; see
name and own user id. Persisted to the roster cache only while connected;
speaking state is never persisted (it would be stale on load).
- **Roster row** — one participant entry rendered on the overlay surface:
avatar plus username, decorated by speaking ring and mute badges. The
overlay shows only roster rows — never connection or status text. An
empty roster renders an empty transparent surface.
avatar plus username, decorated by the speaking ring and, when the
participant is silenced, by one mute glyph shown inline after the username
(crossed microphone, or crossed headphones when deafened). Red marks a
server-set state, grey a self-set one. The overlay shows only roster rows
plus the +N pill when the row cap truncates them — never connection or
status text. An empty roster renders an empty transparent surface.
- **Roster order** — the strategy that orders roster rows before rendering,
set by `roster-order` (default `join-order`): `join-order` keeps the
order Discord reports, `name` sorts case-insensitive A→Z,
`recent-speakers` puts the most recent speaker on top. Every strategy is
a stable sort, so ties keep join order.
- **Max rows** — roster height cap in rows (`max-rows`, clamped 0..=200;
0 = unlimited). Applied after sorting and filtering: rows past the cap
are not rendered and are counted by the +N pill.
- **+N pill** — the roster overflow indicator: one extra row after a
capped roster reading `+N`, where N counts exactly the rows the cap
hides (participants removed by filters do not count). Dressed like a
name chip in the glyphs' muted grey.
- **RosterChange** — `Changed`/`Unchanged` result of applying a Discord
event to the `Overlay`; drives cache writes and view refreshes.
- **Overlay layer** — the Wayland layer-shell layer the overlay binds to.
Expand Down
Loading
Loading