Skip to content

Releases: negentropi/roma-just-talk

v1.95

Choose a tag to compare

@negentropi negentropi released this 17 Jun 05:54

v1.95 - 2026-06-17

  • Fixed Special startRecording modifier-only shortcuts so unreliable key-up evidence and short clean presses no longer cancel after recording has already started.
  • Canceled unclaimed rolling-buffer preload sessions after sustained silence or a short stale-session cap, preventing local STT from running for minutes after brief ambient speech.

Build proof:

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.

roma just talk v1.93

Choose a tag to compare

@negentropi negentropi released this 15 Jun 06:27

v1.93

Changes

  • Moved real-time transcription controls into the main Settings page while keeping them available from model settings.
  • Improved cursor-context capitalization in editors that expose focused text but not an exact Accessibility cursor range.
  • Fixed real-time transcription chunk loss when local VAD briefly missed speech inside an utterance.
  • Made Special shortcuts fail closed when key evidence is unreliable, including secure text entry, held companion keys at Shift release, and very short no-evidence Shift presses, so hidden typing does not start dictation.
  • Removed the Keyboard Shortcut setup card from App Permissions so the page only lists macOS permission grants.
  • Renamed the main sidebar items to home, manual stt, past, models, and style.

Build proof:

  • GitHub Actions run: 27527688198
  • Artifact: roma just talk.app.zip
  • SHA-256: f4d43f3a354e477065f47f9677fba84e60cf2e478d4ec5544496fe141c3b6db4
  • Bundle: roma just talk.app, version 1.93, build 193

Notes:

  • This uses the v1.80-v1.82 style local app zip workflow, not the later notarized DMG workflow.
  • The shared prompt core package is included in the release repo so the GitHub Actions checkout is self-contained.

roma just talk v1.92

Choose a tag to compare

@negentropi negentropi released this 13 Jun 03:59

v1.92

Changes

  • Fixed Special shortcut typing detection for Karabiner mappings that emit bare function keys, including Left Shift + X and Left Shift + S/D/F.
  • Fixed Special shortcut empty taps so they only paste the previous transcription after the current tap transcribes empty, instead of treating every short tap as paste-only.

Build proof:

  • GitHub Actions run: 27455423169
  • Artifact: roma just talk.app.zip
  • SHA-256: b29c19cdd12ed5f6024a1208cbf65aa1249b113fb6b05893b5593e9331574d45
  • Bundle: roma just talk.app, version 1.92, build 192

Notes:

  • This uses the v1.80-v1.82 style local app zip workflow, not the later notarized DMG workflow.

roma just talk v1.91

Choose a tag to compare

@negentropi negentropi released this 12 Jun 05:43

v1.91

Changes

  • Polished the app shell and dashboard with cleaner native glass surfaces, quieter accent use, and a less marketing-heavy metrics layout.
  • Added cursor-context capitalization for dictation paste so mid-sentence inserts lower an auto-capitalized first word while sentence starts stay capitalized.
  • Fixed Special shortcut typing detection so fast held Shift chords such as Shift down, S down, Shift up reliably cancel instead of pasting last text or committing an empty recording.
  • Added an Auto/On/Off real-time transcription policy with cloud and low-battery rules, plus local Silero VAD gating before streaming audio chunks reach the transcription model.
  • Made Special shortcut empty taps paste the last transcription immediately instead of waiting for an empty recording to transcribe.
  • Reused the PermissionFlow grant path for shortcut warning banners and metrics permission actions instead of direct System Settings deep links.

Build proof:

  • GitHub Actions run: 27391731270
  • Artifact: roma just talk.app.zip
  • SHA-256: 1667226e36efd7ae4bae2efc4745ad68768fbb3148bafb3e30f7a891293c01a6
  • Bundle: roma just talk.app, version 1.91, build 191

Notes:

  • This uses the v1.80-v1.82 style local app zip workflow, not the later notarized DMG workflow.

roma just talk v1.90

Choose a tag to compare

@negentropi negentropi released this 10 Jun 13:11

v1.90

This release is built from without/no-adhoc-macos-tcc, based on without/dictation-cleanup-windows-port, with the post-v1.82 ad-hoc/signing/notarization/TCC bucket excluded by explicit revert commits.

Excluded bucket: 9 commits.

  • 4e1018c9 ci: notarize macos release artifacts
  • 0f513ec4 ci: use ad-hoc app zip packaging
  • dc58cc63 fix: preserve app zip entitlements
  • f017e4ac fix: sign packaged app with release entitlements
  • 301154bc fix: read dotted entitlement keys in release proof
  • 56f85907 build: add dmg package artifact
  • fd343021 ci: restore notarized dmg release workflow
  • 8d44c03a ci: make notarized dmg workflow manual
  • 3847dd47 fix: route permission grants through PermissionFlow

Build proof:

  • GitHub Actions run: 27277795306
  • Artifact: roma just talk.app.zip
  • SHA-256: a6f2009b9681c50cfb492fdf924a9b71c326925ff09faae234b196b6347909f8
  • Bundle: roma just talk.app, version 1.90, build 190

Notes:

  • This uses the v1.80-v1.82 style local app zip workflow, not the later notarized DMG workflow.

v1.89

Choose a tag to compare

@negentropi negentropi released this 10 Jun 10:58

v1.89

Important distribution note: this artifact follows the v1.80-v1.82 local DMG release path. It is ad-hoc signed, not Developer ID signed, and not notarized. On normal Gatekeeper systems, double-clicking the downloaded app may show "Apple could not verify" until the app is explicitly allowed or quarantine is removed.

Changes

  • Restored the real Developer ID signed, notarized, and stapled DMG workflow as a manual workflow for when Apple signing secrets are available.
  • Removed the automatic fake/ad-hoc DMG artifact from the app-zip build.
  • Fixed Special shortcut flex-off handling so modifier-only shortcuts fail closed when the key-evidence event tap is unavailable.
  • Updated the app bundle version metadata to 1.89 / 189.
  • Documented the legacy local DMG release path used by v1.80-v1.82.

Artifact

Local open workaround

Only use this for artifacts you trust:

xattr -dr com.apple.quarantine /Applications/roma\ just\ talk.app
open /Applications/roma\ just\ talk.app

A Gatekeeper-clean public release still requires Developer ID signing, notarization, and stapling through the manual Build notarized macOS DMG workflow after the Apple signing secrets are configured.

v1.88

Choose a tag to compare

@negentropi negentropi released this 10 Jun 07:10

Changes

  • Added a DMG build artifact alongside the app zip so Gatekeeper behavior can be tested against both packaging formats.
  • Added Special shortcut sub-settings for keydown preload behavior, key-down-only flex, and empty-tap paste-last fallback.

SHA-256

  • roma.just.talk.app.zip: 667aa9c680b37561871e4505539995db7b43a2ff244baedc502d38c75e67e9a5
  • roma.just.talk.dmg: 1bfb82286607e74ebd13b011964241cdf34596a67fd0fa95721a7edc287424b2

v1.87

Choose a tag to compare

@negentropi negentropi released this 09 Jun 15:38
  • Fixed a post-keyup latency regression by finalizing the recording file without restarting the pre-roll AudioUnit on every stop.
  • Added a direct DMG asset for Gatekeeper packaging comparison against the app ZIP.

v1.86

Choose a tag to compare

@negentropi negentropi released this 09 Jun 10:28
  • Reissued the release as v1.86 after the v1.84 and v1.85 tags failed before publishing an app asset.
  • Hid the menu bar icon by default for fresh installs while keeping Dock-icon hiding as a separate setting.
  • Added Special shortcut mode as the fresh default with Left Shift: start recording on keydown, decide on keyup, and cancel typing cases where another key was released during the hold.
  • Fixed app zip packaging so the release harness preserves and verifies local macOS entitlements instead of stripping them during final signing.