Skip to content

roma just talk v1.94

Choose a tag to compare

@negentropi negentropi released this 16 Jun 16:09

v1.94

Changes

  • Replaced the misaligned silence-filter path with rolling buffer preload controls that use local VAD to pre-run supported STT before capture finalization, independent from final/batch transcription VAD.
  • Made the fresh Special shortcut default preload-only so quick releases can commit the rolling-buffer pre-run path without opening a recorder first.
  • Added configurable rolling buffer duration with decimal seconds support.
  • Renamed model-card transcription mode controls to "Streaming" so they stay separate from rolling buffer preload.
  • Renamed the provisional transcript UI toggle to "Show Transcript Preview" so it no longer reads like a separate live-transcription feature.
  • Moved recorder audio-duration metadata work after paste so completed text reaches the cursor sooner.
  • Deferred the recorder history save until after transcription work starts so quick releases do not wait on SwiftData I/O before STT.
  • Removed the fixed pre-paste delay after verified clipboard writes so completed text posts to the cursor sooner.
  • Skipped cursor-context Accessibility reads when capitalization logic can prove the output text cannot change.
  • Reduced the fixed autosend wait after paste from 500ms to 120ms while keeping a short guard before Return is posted.
  • Blocked Auto low-battery local rolling-buffer preload before loading or running the local VAD, so the low-battery opt-out now fully disables buffer pre-run work.
  • Claimed ready rolling-preload sessions before Power Mode configuration work so quick releases do not wait on model/session setup when the preloaded model and language still match.
  • Tightened cached rolling-preload finalization so quick releases avoid pasting stale partial hypotheses when the local ASR pass is behind the live buffer.
  • Let preload-only Special shortcut quick releases commit the rolling buffer instead of being canceled as short no-evidence presses.
  • Preserved pre-roll-first streaming order without holding the recorder file lock through the whole pre-roll emission.
  • Released the recorder file lock before forwarding queued live chunks after pre-roll streaming emission, reducing audio-thread blocking risk during startup handoff.
  • Shortened the post-commit wait for local FluidAudio streaming finalization while preserving the longer cloud streaming wait.
  • Moved the rolling-buffer VAD model picker into Rolling Buffer settings and clarified active-recording streaming text so buffer preload is not presented as generic live transcription.
  • Overlapped rolling-preload quick-release active-window Power Mode application with STT finalization, so ready preloads no longer wait on window rule resolution before stopping the pre-run session.
  • Started active-recording Power Mode rule resolution while audio hardware starts, so pre-roll/live buffered chunks wait less before fallback streaming setup.
  • Removed a fixed post-STT wait before trigger-word AI enhancement starts.
  • Removed fixed sleeps between simulated paste key events so completed text reaches the target app sooner.
  • Kept warmed local STT resources after successful transcription so the next recording and rolling-buffer preload avoid an immediate teardown/reload cycle.
  • Warmed the rolling-buffer VAD model before first speech when preload is eligible, so the first VAD trigger can start STT without paying model-load delay.
  • Broadcast the restored startup transcription model so rolling-buffer preload can warm immediately after launch instead of waiting for a later settings change.
  • Let preload-only quick releases commit an already-ready rolling-buffer STT session directly, without opening and stopping a new recorder session first.
  • Let preload-only quick releases fall back to the current rolling-buffer audio snapshot directly, avoiding a recorder open/stop cycle when no pre-run session is claimable and the model supports saved-WAV transcription.
  • Let local streaming models transcribe buffered rolling-audio snapshots immediately while the WAV writes in parallel for fallback/history, instead of waiting for the file before STT starts.
  • Let very short active recordings that stop during startup replay their captured pre-roll/live PCM into the streaming session before falling back to batch transcription.
  • Removed the preload-miss shortcut polling timeout by awaiting recorder startup before the immediate stop handoff.
  • Replayed active-recording startup chunks into claimed rolling-preload sessions instead of dropping audio captured during the handoff.
  • Preserved rolling-buffer audio for direct snapshot fallback when an existing pre-run session is canceled by a model, language, or finalization-policy mismatch.
  • Preserved rolling audio collected while a preload-only quick release finalizes, so the next rolling preload does not restart from an empty lead-in after paste.
  • Deferred quick-release rolling-preload history insertion until the post-paste save boundary, removing avoidable SwiftData work before the cursor paste starts.
  • Warmed and cached word replacement rules outside the dictation hot path so quick-release paste no longer repeats the SwiftData lookup before every cursor paste.
  • Deferred quick-release rolling-preload WAV writing until after cached stream finalization can start, while still waiting for the file before batch fallback or history metadata needs it.
  • Added claim-to-paste latency tracing for rolling-preload quick releases so remaining delays can be measured from runtime logs.
  • Included rolling-buffer preload mode, duration, VAD model, Auto policy, power state, and per-model preload state in diagnostic log exports.
  • Added the last rolling-buffer quick-release claim strategy and claim-to-paste timing to diagnostics so packaged builds can show whether a release used ready preload, buffered audio snapshot, or missed the rolling path.
  • Started Power Mode rule resolution on preload-only Special shortcut key-down, so quick releases avoid doing active-window and URL matching work after key-up.
  • Cached prompt trigger-word eligibility and skipped prompt detection in the common no-trigger case, reducing transcript-ready-to-paste work.
  • Pre-read cursor text context on preload-only Special shortcut key-down so contextual capitalization can avoid an Accessibility read immediately before quick-release paste.
  • Pre-read clipboard restore context on preload-only Special shortcut key-down so restore-enabled quick releases avoid copying pasteboard data immediately before paste.
  • Started quick-release rolling-buffer WAV writes immediately after claiming buffered audio so file I/O overlaps Power Mode resolution instead of running wholly after key-up validation.
  • Used the claimed rolling-buffer PCM byte count for quick-release history duration, avoiding a post-paste AVFoundation metadata read.
  • Deferred quick-release session metric recording until after the rolling-preload pipeline returns, so the app can leave the busy path before noncritical metric I/O.
  • Deferred quick-release history persistence until after the rolling-preload pipeline returns and added returned/idle timing diagnostics for measuring the remaining post-paste tail.
  • Deferred rolling-preload quick-release Power Mode/session restoration until after the engine marks idle, with diagnostics for the remaining session-finish tail.
  • Skipped browser URL lookup during automatic Power Mode selection when no enabled URL rules exist, removing an avoidable pre-pipeline quick-release delay.
  • Reduced the shortcut duplicate-press guard from 500ms to 80ms so valid back-to-back dictations are not ignored after the app is ready again.
  • Skipped fallback streaming setup on immediate startup-stop recordings when the selected model can transcribe the saved WAV directly.
  • Included rolling buffer preload mode, per-model opt-outs, Auto policy, duration, finalization, and VAD model settings in settings backup/import.
  • Made the pre-run finalization opt-out also skip rolling-buffer STT pre-run work instead of warming an unusable session.
  • Preserved the exact latest rolling-buffer preload audio when incoming chunks exceed or cross the configured duration boundary.
  • Canceled warm rolling-preload sessions when the selected transcription language changes before the shortcut claims them.
  • Woke quick-release claims as soon as rolling-preload startup resolves instead of polling until the next 10ms tick.

Build proof:

  • GitHub Actions run: 27630517241
  • Artifact: roma just talk.app.zip
  • SHA-256: 79eba5a1b3c6424482fb4f7da549d24ace97078f86dbdafae13c48578d8b71bb
  • Bundle: roma just talk.app, version 1.94, build 194

Notes:

  • This uses the v1.80-v1.82 style local app zip workflow, not the later notarized DMG workflow.
  • The release is built from aa4984c250d9f29d54cf7c50939d94de3a5d6a69.