Skip to content

feat: choose On a call or In the room before Record (B3, D-009) - #3

Merged
nkeating-cmd merged 2 commits into
mainfrom
feat/in-room
Oct 16, 2026
Merged

nkeating-cmd merged 2 commits into
mainfrom
feat/in-room

Conversation

@nkeating-cmd

Copy link
Copy Markdown
Owner

What

Kōrero 1.45, bet B3 (D-009): choose On a call or In the room before Record.

  • An "In the room" meeting records the microphone only: no call capture, no "call audio missing" warnings, one "Room" meter.
  • After Stop, the transcript is rebuilt from the speaker model's turns, one line per turn, each labelled Speaker 1, Speaker 2, and so on.
  • The type is explicit wherever a meeting starts:
    • the Meetings page, the Record page and Today show the picker;
    • Ctrl K has "Record a call" and "Record in the room";
    • the pop-out window has its own toggle and a typed button;
    • a room start always says so.
  • The meeting pills now have even widths (minimum width, shorter labels; the full text is in the tooltip).

Why

Nic's in-room test produced an empty transcript. The recording held no speech the recogniser could use through the call path. The fixed 0.010 RMS gate (about -40 dBFS) drops most far-field speech.

Measured on AMI far-field audio (4 meetings): the speaker-turn path gives 5,293 words, against 1,731 from the energy path.

Review

An independent review of 67ab618 found H1, M1 to M7 and L1 to L10. All are fixed in 4b60d53 except L4 (snapping splits to a quiet frame), which is a follow-up. The commit message maps each fix.

Evidence

  • cargo test --lib: 268 passed (6 ignored: the AMI DER and room tests, which need local data).
  • bun test unit-tests: 94 passed.
  • tsc and eslint: clean.
  • No line-ending churn (--numstat is the same with and without --ignore-cr-at-eol); no mojibake.
  • gitleaks: no leaks.
  • Main at f32ae92 is green.

Not yet

  • Not exercised in the running app. The installer built from this branch is the test.
  • The branch is cut from main (1.43), so it lacks 1.44's fixes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01M9niYsTjphhTSYCLhCwg5n

nkeating-cmd and others added 2 commits October 17, 2026 12:05
Nic, 17 Oct: "there should be the ability to select if it is a in-person
meeting up front, so it knows there is nothing on the call". Also: "pill
widths are not even".

- Meeting type picker above Record (library and the Record page),
  remembered on this computer. Today, Ctrl K and the companion use it too.
- In the room:
  - records the microphone only: no system capture, so no call-audio
    warnings, banners or "Others" meter;
  - the live preview uses a 0.003 energy floor (Silero still decides what
    is speech): on four AMI room-mic meetings the fixed 0.010 floor passed
    only 2-9% of labelled speech in three;
  - after Stop the transcript is rebuilt from the speaker model's turns,
    one line per turn with its speaker and real start time
    (diarise::meeting_room_transcript); the live lines are kept if it fails
    or finds nothing. "Rebuild by speaker" on the Audio tab runs it again.
  - unlabelled lines read "Room", the header pill "In the room" or
    "N speakers", the after-Stop card counts words for the room.
- Header pills: one height and a 72 px minimum, centred, tabular figures;
  the privacy pill reads "On this computer" / "Cloud notes" (the full
  wording moves to the hover text). Measured on Nic's screenshot: all four
  were 20 px tall with 9 px padding; only the widths differed (39-182 px).

Evidence (main laptop, 17 Oct): cargo test --lib 267 passed (3 new), 6
ignored; bun test unit-tests 94 passed (2 new); tsc clean; eslint: no
findings in the touched files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M9niYsTjphhTSYCLhCwg5n
Review of 67ab618 (H1, M1-M7, L1-L3, L5-L7, L9, L10):

- H1: the meeting type is explicit wherever a meeting starts. Ctrl K has
  "Record a call" and "Record in the room"; Today shows the picker and the
  type on its button; the pop-out window has its own type toggle and a
  typed Record button; a room start always announces itself.
- M1: the pop-out window shows one "Room" meter, no missing-call banner and
  "Room" line labels for a room meeting.
- M2: the audio test in room mode tests the microphone only.
- M3: Re-transcribe and Re-transcribe + notes on a room meeting rebuild by
  speaker (with notes after, as for calls).
- M4: Stop does no per-source rebuild for a room meeting, and the
  mic-silent message names the floor that meeting used (about -50 dBFS).
- M5: a background room rebuild waits while a meeting is recording.
- M6: live lines no successful piece covers are kept (merge_room, tested);
  a manual rebuild asks first and clears speaker names.
- M7: short replies in quiet far-field pieces are no longer dropped as
  hallucinations.
- L1 store-failed stop outcome; L3 no notes prewarm before a room rebuild;
  L5 MeetingStatus.room; L6 picker hidden while saving; L7 radiogroup
  arrow keys and one tab stop; L9 bindings doc order; L10 live_floor() is
  pure, so tests no longer touch the global.

cargo test --lib 268 passed; bun test 94 passed; tsc and eslint clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M9niYsTjphhTSYCLhCwg5n
@nkeating-cmd
nkeating-cmd merged commit c895fd3 into main Oct 16, 2026
2 checks passed
@nkeating-cmd
nkeating-cmd deleted the feat/in-room branch October 16, 2026 23:33
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