Block a user
E2E: run the Playwright suite under WebKit as a Safari/iOS proxy
Done in 52e0cfaa (+ the WebKit console wording in 6aa77552). CI run #2005 is green: playwright install --with-deps chromium webkit works on the runner, and the webkit (Desktop Safari) and…
E2E: run the Playwright suite under WebKit as a Safari/iOS proxy
a11y in CI: axe-core gate + accessibility-tree snapshots as the screen-reader proxy
Done in 6aa77552 (CI #2005 green).
e2e/a11y.spec.ts: @axe-core/playwright (WCAG 2.x A/AA tags) over login, room timeline + composer, message options menu, thread panel, user settings, room…
[research] Verification reminder for your OWN unverified sessions
Findings (2026-09-20, code audit)
1. Signals we already compute, and every combination
Bulk media drop renders as one gallery (client-side grouping, standard events)
Done in bd8c79e0 — render-time grouping only; nothing changes on the wire (verified: the events are plain m.image per file, the recipient's other clients would see 5 images).
Rule…
Bulk media drop renders as one gallery (client-side grouping, standard events)
[research] Mic level meter in the call bar while unmuted — what exists today?
Inventory (2026-09-20)
Element Call (fork) — what exists
- Self tile:
vm.speaking$→ green speaking border (GridTile/MediaView.speakingBorder), sound-wave glyph in spotlight.…
One timestamp formatter: audit and unify date/time display across timeline, room list, search, threads
Done in 4d4a7621.
Audit → what each place used → now
One timestamp formatter: audit and unify date/time display across timeline, room list, search, threads