roma just talk v1.94
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, version1.94, build194
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.