Skip to content

feat(portal): assume the microphone works, retire the mic check from the monitor - #1064

Merged
spashii merged 2 commits into
mainfrom
portal-assume-mic-works
Sep 11, 2026
Merged

feat(portal): assume the microphone works, retire the mic check from the monitor#1064
spashii merged 2 commits into
mainfrom
portal-assume-mic-works

Conversation

@JorimTheuns

Copy link
Copy Markdown
Member

Two changes to the participant portal that landed after #1059 was squash-merged, carried over onto main (which now includes #1063's needs-form link on the event card; the two combine cleanly).

The microphone check is gone

The onboarding deck no longer tests the microphone. Nearly every phone's microphone is fine, and the check cost every participant a permission prompt, a test and a tap before they had said a word. The deck now runs privacy, then a name and tags if the host asks for them, then recording. The permission prompt moves to the first tap on Record.

The safety net is the level meter #1059 introduced: it runs blue, turns yellow when the connection is unhealthy and red when the recording itself is in trouble, and eight seconds of a flat signal (a muted, unplugged or taken-over microphone; a quiet room still returns room tone) opens the microphone test on its own. The one participant in fifty who needs the test still gets it; the other forty-nine never see it.

Retired on both sides

The mic_ok / mic_skipped / mic_blocked funnel stages leave the monitor's vocabulary. The dashboard drops its three mic timeline rows, the drilldown labels and the blocked colour; the server stops accepting them from the portal and stops counting them in the funnel summary. A visitor session written by a portal tab from before the change can still carry one for as long as the session lives; those fold forward to terms, since the participant had passed consent and scanned would read as a step backwards. There is a test for the fold.

The thank you page, settled

  • Every button is secondary: "Show QR Code", "Record another conversation", and the footer's "dembrane at your event?", which is full width with its label centred and links to the website's needs form (Portal event invitation links to the website's needs form #1063).
  • The heading has more room from the header above it.
  • The page fills the viewport, so the footer sits at the bottom even when the content is short.

One column, everywhere

The header keeps to the same 42rem column as the content beneath it. On a wide screen the logo and the actions used to sit at the window's edges, a foot away from the text they belong to; now everything shares one column and the page reads as the phone layout it is. The header's shadow still runs edge to edge.

Verification

  • Walked the onboarding deck on a project with nothing to ask: "I understand" lands straight on the recording screen, no mic card.
  • Finish page checked at 375px and 1280px: header, content and footer span the same column; footer at the viewport bottom; button full width.
  • Frontend: tsc --noEmit, biome, production build; participant / voice / common / conversation / hooks suites (116 pass; the 5 failures are pre-existing and identical on main).
  • Server: ruff check clean; test_visitor_session, test_participant_ping, test_conversation_monitor pass (64 tests) in the devcontainer. ruff format drift in these files predates this PR and CI only runs ruff check.
  • i18n catalogs extracted twice and stable.

🤖 Generated with Claude Code

JorimTheuns and others added 2 commits September 11, 2026 16:56
…phone

The onboarding deck loses its microphone check. Nearly every phone's
microphone is fine, and the check cost every participant a permission
prompt, a test, and a tap before they had said a word. The deck now
runs privacy, then (if the host asks for one) a name and tags, then
recording. The permission prompt moves to the first tap on Record. If
nothing arrives once recording starts, the meter turns red and opens
the microphone test itself, so the one participant in fifty who needs
it still gets it, and the other forty-nine never see it.

The mic_ok / mic_skipped / mic_blocked funnel stages stay in the
monitor's vocabulary but the portal no longer emits them.

The thank you page settles its hierarchy: "Show QR Code" and "Record
another conversation" are tertiary text links; "dembrane at your
event?" is a secondary outline button in the footer, full width on a
phone and a fixed width on anything wider. The page fills the viewport
so the footer sits at the bottom even when the content is short.

The header keeps to the same column as the content beneath it. On a
wide screen the logo and the actions used to sit at the window's
edges, a foot away from the text they belong to; now everything shares
one 42rem column, and the page reads as the phone layout it is.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… page

The portal no longer runs a microphone check, so the host monitor no
longer has a place for one. The three mic stages leave the funnel's
vocabulary on both sides: the dashboard drops the "Mic checked",
"Skipped mic check" and "Mic blocked" timeline rows and the blocked
colour, the server stops accepting them from the portal and stops
counting them in the funnel summary.

A visitor session written by a portal tab from before the change can
still carry one of the old stages for as long as the session lives.
Those fold forward to "terms": the participant had passed consent, and
"scanned" would have read as a step backwards.

On the thank you page every button is secondary now: "Show QR Code",
"Record another conversation" and the footer's "dembrane at your
event?", which goes back to full width with its label centred. The
heading gets more room from the header above it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@spashii
spashii merged commit 989bddd into main Sep 11, 2026
11 checks passed
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.

2 participants