Repository navigation
Release v0.4.1 - #793
Merged
Merged
Release v0.4.1#793
Conversation
…AC half-duration bug) Symphonia has no SBR support: for HE-AAC files it decodes only the AAC-LC core at half the container-declared rate (e.g. 24 kHz for a 48 kHz HE-AAC m4a, a common phone-recorder format). decode_audio_file trusted codec_params.sample_rate from the container, so the decoded samples were labeled at 2x their true rate: imported recordings played at double speed, transcribed as garbled text, and covered only half their real duration (an 84-min meeting produced a transcript ending at 42:03 with the second half apparently missing). Take the sample rate from the first decoded buffer's spec instead, exactly like the existing channel-count correction one line above. Also fix the VAD flush force-end timestamp: silero's SpeechStart timestamp_ms is already session-absolute, so adding processed_samples double-counted and produced segment start times past the end of the audio (a 162-min start in an 84-min file). Adds an HE-AAC regression fixture (5 s, 440 Hz sine, explicit SBR signaling: container says 48 kHz, core decodes at 24 kHz) and a test asserting decode reports ~5 s, not ~2.6 s. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add a resizable transcript/summary splitter with Settings-style tabs, keep summary actions in the top toolbar for empty state, and size action labels from panel width via container queries.
Allow thinking models to reason, remove that text from saved summaries, and expose reasoning_stripped/reasoning so the UI can notify the user.
Removes the confidence-threshold gate that silently discarded non-empty transcripts (e.g. short acknowledgements like "Yes"/"ok") when confidence was below 0.3. Emission now only depends on the transcript text being non-empty, via a new should_emit_transcript helper. Adds unit tests for the helper.
The Anthropic response parser assumed content[0] is always a text block with a required `text` field. Models that enable thinking by default (claude-sonnet-5, claude-opus-5) return a `thinking` block first, which has no `text` field, so deserialization failed outright with "Failed to parse LLM response: missing field `text`" and those models could not be used at all - even though they are offered in the model picker, which is populated live from /v1/models. - Make `text` optional on ClaudeChatContent so non-text blocks parse. - Select the first block that actually has text instead of content[0]. - Raise max_tokens 2048 -> 8192: it is a shared budget for thinking plus the answer, so 2048 truncated summaries mid-sentence on these models. Backwards compatible: models without thinking return a single text block first, which is still what gets picked. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fix(summary): preserve transcript coverage across chunks
fix(import): use decoder output sample rate, not container rate (HE-AAC half-duration bug)
…ding-readiness fix(recording): respect selected transcription provider
- Follow up PR #608 / issue #607: repair pre-fix HE-AAC metadata during explicit retranscription by persisting the corrected decoded duration. - Follow up PR #639 / issue #637: keep active Local Whisper downloads authoritative during discovery and clear stale transfer state on terminal errors. - Add regression coverage for historical recovery and early download feedback
- Keep each active download owned until its worker completes cleanup, preventing a cancelled worker from clearing a retry’s state. - Interrupt stalled requests and response streams with a per-download cancellation token, then remove cancelled partial files. - Preserve the existing IPC/UI contract by treating expected cancellation as non-error and add lifecycle regressions for retry ownership and terminal cleanup.
fix(summary): handle Claude thinking blocks in Anthropic response parsing
- Align the frontend status contract with the backend’s nested download progress payload. - Keep discovery and cleanup from exposing a completed download as still active. - Add focused regressions for readiness detection and the final Available transition.
- send an explicit versioned User-Agent for Whisper model requests - validate downloaded artifacts before publishing them as available - remove failed partial downloads and restore the backend cache to Missing - bound cancellation acknowledgement without reopening download ownership races - add loopback regressions for headers, validation, partial streams, and timeout ownership
- Prevent header-valid truncated downloads from being published as Available. - Apply the catalog’s existing 90% minimum-size rule before terminal success. - Cover cleanup and Missing-state recovery for an undersized valid-prefix response.
- Prevent cancellation finalization and model discovery from acquiring download-state locks in conflicting order. - Keep the active owner reserved until cleanup publishes the terminal backend state, returning `pending` while shutdown continues. - Reconcile the UI with backend state before enabling retry, preserving a model that completed just before cancellation. - Add deterministic regressions for lock ordering, pending cleanup, and late cancellation.
fix(transcription): complete post-merge follow-ups
Fix: stop dropping transcripts below confidence threshold (#675)
…ollama fix(ui/summary): meeting-details layout and Ollama reasoning strip (#592)
[skip ci] - request disabled reasoning effort only for Ollama-compatible chat calls - retry Ollama requests without reasoning_effort on documented legacy rejection - strip leading reasoning envelopes before each summary pipeline stage - reject empty visible output after reasoning removal - retain only a reasoning_stripped metadata flag in summary results - redact legacy reasoning fields for flagged persisted summaries - unify desktop and mobile summary/transcript panes under accessible tabs - preserve keyboard and pointer resizing with clamped persisted split ratios
Revert the expanded sidebar wordmark to the compact blue Meetily pill used on devtest. Keep the collapsed logo asset unchanged.
Raise the transcript pane minimum to 30% and compact its toolbar until all labeled actions can fit without overflow.
- Remove unused className props and cn wrappers from transcript and summary panels. - Preserve their fixed layout classes because the sole caller supplies no overrides.
…el-downloads fix(parakeet): preserve completed files across download retries
- Retry legacy Ollama reasoning-effort rejections once without duplicating unrelated failed requests, while preserving accurate timeout and HTTP status diagnostics. - Fail chunked summary generation after one retry instead of publishing partial completed summaries. - Stabilize mobile summary-tab selection, model Markdown and legacy summary data explicitly, and make editor dirty state render-driven. - Treat split-pane storage as an optional preference so blocked localStorage cannot break resizing.
- Invalidate the active generation before cancellation so an in-flight poll cannot restore an empty summary UI after Stop. - Gate generation setup, polling callbacks, cancellation recovery, and error paths behind the current generation ID. - Preserve normal backup restoration for cancellations not initiated by the user.
On macOS a freshly-connected Bluetooth mic can leave its input callback asleep for 40-90s after AudioDeviceStart returns noErr, so a new recording captures no audio until the link wakes on its own. Play a brief burst of silence out the output device just before opening the mic to wake the link, so audio flows immediately. macOS-only, non-fatal on error, verified on hardware (deep-cold AirPods). Refs #450
- Preserve devtest's 500ms live VAD policy and corrected forced-flush boundaries. - Keep ONNX readiness gating and fallible pipeline startup through the merge.
…eck" This reverts commit ca8e7ad.
fix(windows): load compatible ONNX Runtime dynamically
…ion-detection Fix microphone checks, summary progress, and Start button layout [skip ci]
- Exclude cooldown notices and report each error class at most once per session to prevent repeated failures from inflating event volume. - Replace raw error messages with bounded codes and deduplicate before delivery, including when delivery fails. - Clear limits on new sessions, successful opt-out, and reset. - Add regression coverage for error bursts and session renewal while leaving recording behavior and transcription retries unchanged.
- Release session state before emitting the session-end event. - Add a local regression test confirming cleanup completes.
fix(instrumentation): reduce duplicate transcription diagnostics
- Reveal Generate Summary, Regenerate Summary, Processing, and Stop once the summary pane reaches 384px. - Keep the controls compact with 12px horizontal padding and an 8px icon-to-text gap.
- Document Vulkan-based Windows packages, the AVX2 baseline, disabled AVX-512, and CUDA as a configured source-build option. - Align source-build setup with pnpm 9.15.9, frozen-lockfile installation, and committed lockfile updates. - Describe the CI portability guard, cache isolation, and pre-bundle validation across release, standalone Windows, and DevTest workflows.
- Distinguish the Rust x86-64-v2 target from Whisper's native AVX2 baseline and disabled AVX-512. - Keep the Windows build workflow Vulkan-only and make the Linux quick start install the committed dependency set.
hotfix(ui): polish sidebar and meeting controls
fix(tests): resolve Bun TypeScript errors
safvanatzack
approved these changes
Sep 10, 2026
sujithatzackriya
approved these changes
Sep 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.4.1
Release of
release/v0.4.1intomain, prepared fromdevtest. Includes recording, transcription, model-download, summary, and Windows compatibility improvements since v0.4.0.Fixes
Chores & Docs
0.4.0to0.4.1across manifests, lockfile metadata, version displays, and README.9.15.9, align the frontend lockfile, and use frozen dependency installation.Build verification
cargo check --locked— passed onadbccd9with 8 application-library warnings. The subsequent fix(tests): resolve Bun TypeScript errors #795 merge changed only development dependencies and test typings.pnpm tsc --noEmit— passed on source identical to merged release commit24fd4a1.bun test tests— 45 passed, 0 failed.