Skip to content

fix: bring 1.44 (long-meeting notes, audio-brief engine, wasapi 0.25) onto main - #4

Merged
nkeating-cmd merged 2 commits into
mainfrom
fix/1.44-main
Oct 17, 2026
Merged

nkeating-cmd merged 2 commits into
mainfrom
fix/1.44-main

Conversation

@nkeating-cmd

Copy link
Copy Markdown
Owner

What

This PR brings the Kōrero 1.44 fixes onto main, on top of 1.45's speaker separation (#2) and in-room mode (#3). The app version becomes 1.44.0.

The fix/1.44 commits (9a8cfaa, 921e897) are cherry-picked here rather than rebased, so the original branch is untouched:

  • Notes for long meetings read the whole meeting. The meeting is read in parts, then the notes are combined (notes_parts.rs), and the Notes panel shows progress for each part.
  • Audio brief finds its engine. There is a new tts_engine_dir setting.
  • wasapi 0.25 fixes advisory RUSTSEC-2026-0332, and the app manifest is now applied to every build target.

Conflicts resolved

File Resolution
src/bindings.ts 1.44's AppSettings (adds tts_engine_dir), plus 1.45's RoomTranscript, SpeakerSeparation and SpeakerTurn types
useMeetingsController.ts onBoth keeps 1.44's audio-brief guard (briefStage === "script") and then 1.45's room route (runRoom)
meetingJobsStore.ts 1.44's NotesProgress and phaseLabel, plus 1.45's "speakers" task kind
Cargo.lock Took main's lock and let cargo re-resolve: only wasapi moves, 0.23.0 → 0.25.0. Its checksum is the same as on fix/1.44

Evidence

  • cargo test --lib: 283 passed. That is 268 from 1.45 plus 1.44's new tests.
  • clippy: clean.
  • bun test unit-tests: 104 passed.
  • tsc: clean.
  • eslint: 0 errors. The 17 warnings are unused-disable warnings that already exist on main.
  • No line-ending churn: --numstat gives the same 22 files with and without --ignore-cr-at-eol. No mojibake.
  • gitleaks: no leaks.

Not yet

  • Not exercised in the running app yet. The installer built from this head is the test for both 1.44 and 1.45.
  • Once this merges, fix/1.44 can be deleted.

🤖 Generated with Claude Code

https://claude.ai/code/session_01M9niYsTjphhTSYCLhCwg5n

nkeating-cmd and others added 2 commits October 17, 2026 12:40
Long meetings: over 48,000 characters the notes model read only the
start (8 of 35 meetings on the test laptop) and lost every flagged
moment, which came after the transcript. Notes for a long meeting are
now written from working notes on each part (split at speaker turns,
at most 40,000 characters less the flags), combined by the user's own
notes prompt. Under 48,000 nothing changes. Flags now come first.
Only new notes are read in parts; refine and Audio Brief drafts keep
one pass and say when they were cut. Ask says when it read part.

Audio brief: PRIV-1 removed the only lookup that found the engine on
the test laptop, so it failed with "voice engine not found". Models
now has a folder setting (checked first; both engine files required;
network paths refused). The Meetings button writes a spoken script
first instead of sending raw Markdown notes, and nothing over 330
words is rendered, since the engine stops there silently.

Version 1.44.0. Live test on gemma4:12b: a fictional 92,762-character
meeting, 3 parts plus combine in 36 s, all three planted code words,
all actions with owners and the flag in the notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AFrpWY1PdbUjoZTaqkhDRj
wasapi 0.23's WaveFormat::parse is unsound (out-of-bounds read when a
copied WAVEFORMATEX header claims an extensible format). Korero never
calls parse, and get_mixformat reads from Windows' own pointer, so it
was not reachable, but cargo deny now fails on it. 0.25.0 makes parse
unsafe. Korero's calls compile unchanged.

Side effect: 0.25 shares windows 0.62 with the GUI crates, and test
binaries now import TaskDialogIndirect from comctl32.dll directly. That
export exists only in Common Controls v6, which comes from the manifest
Tauri embeds in the app binary only, so cargo test binaries failed to
load (0xC0000139). build.rs now embeds the same manifest (copied from
tauri-build 2.5.5) through the linker for every target, and tells Tauri
not to add its own.

Live test (ignored; Windows with audio playing): loopback captures a
quiet 440 Hz tone, 4.02 s at 16 kHz mono, peak 500, rms 353; with
nothing playing it fails, as it should.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AFrpWY1PdbUjoZTaqkhDRj
@nkeating-cmd
nkeating-cmd merged commit fa55c9d into main Oct 17, 2026
2 checks passed
@nkeating-cmd
nkeating-cmd deleted the fix/1.44-main branch October 17, 2026 00:21
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