Skip to content

feat: roster sorting strategies + max-rows cap with +N pill - #19

Merged
FAZuH merged 2 commits into
v0.3.2from
feat/roster-order-cap
Sep 11, 2026
Merged

FAZuH merged 2 commits into
v0.3.2from
feat/roster-order-cap

Conversation

@FAZuH

@FAZuH FAZuH commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Summary

  • roster-order config key: join-order (default, today's behavior) | name (case-insensitive A→Z) | recent-speakers (most recent bubbles up, sinks back on stop); stable sorts, ties keep join order
  • max-rows config key (0 = unlimited, clamp 0..=200): overflow rows are hidden and a "+N" pill row counts exactly the filtered-hidden participants; surface height = capped rows + pill row; no inner scroll
  • Both keys follow the 30-key registry conventions (wire name, clamp, apply, GUI row, ctl); last-spoke tracking is a runtime-only tick counter — roster.json/Participant/reply formats untouched
  • Folded into the v0.3.2 line per user decision (was the v0.3.3 unit)

Test plan

  • CI-exact mirror green: fmt, clippy -D warnings, 331 tests (311 baseline + 20 pins: sort tables incl. tie/stop-sink, cap n<cap/n=cap/n>cap/0, pill count with filters, config round-trips, wire grammar both keys)
  • Review passed (Standards + Spec); CONTEXT.md glossary + code-layout updated in-PR

New roster-order config key (Layout group, wire grammar + GUI chip row)
with a join-order | name | recent-speakers picker. The overlay stamps a
runtime-only last-spoke tick per speaker (cleared on stop and on channel
switch, never serialized) and sorts the filtered roster before
rendering; every strategy is a stable sort, so ties keep join order.
New max-rows config key (0 = unlimited, clamped 0..=200, GUI number
row). Truncation happens after sort and filters and before the
desired-size math, so the surface shrinks to the capped rows plus one
pill row; the pill counts exactly the rows the cap hides, in the glyphs'
muted grey. Presentation-only: cache and wire format are untouched.
@github-actions

Copy link
Copy Markdown

Release Preview

Next version: v0.3.2

0.3.2 (2026-09-11)

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

@FAZuH
FAZuH merged commit b501dd0 into v0.3.2 Sep 11, 2026
7 checks passed
@FAZuH
FAZuH deleted the feat/roster-order-cap branch September 11, 2026 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant