Releases: rcourtman/presspeech
Release list
v0.3.0
Presspeech 0.3.0
Parakey is now Presspeech. The old name collided in search with an
unrelated access-control product; the new name is distinctive and says
what the app does: press, speak, release.
The rename does not reset the app. Presspeech keeps the existing bundle
identifier and preferences suite, so macOS permissions, hotkey choices,
text settings, and local dictionary rules carry over.
New
- Voice shortcuts map a phrase you say to exact reusable text. They
are deterministic, local, and managed alongside dictionary
corrections. - Spoken formatting commands optionally turn phrases such as “new
line”, “new paragraph”, “bullet point”, “comma”, “open quote”, and
parentheses into exact formatting without a rewriting model. - Try Dictation opens a focused private scratchpad after setup, so
the first hotkey test has an obvious destination. - FluidAudio is updated to v0.15.5 after model-integrity, cold-download,
latency, and real-dictation regression checks.
Upgrade notes
Homebrew users can run:
brew update
brew upgrade --cask rcourtman/parakey/presspeechThe tap migrates the installed cask token from parakey to
presspeech and replaces Parakey.app with Presspeech.app. When
upgrading from a v0.2 build through the in-app updater, Homebrew may
finish the upgrade and the old updater may still open this release page
because the bundle moved. If that happens, launch
/Applications/Presspeech.app; the upgrade itself is complete. macOS
shows its standard downloaded-app confirmation on the first launch under
the new name; choose Open after checking that Apple found no malicious
software.
For a previous direct-download install, quit Parakey, move
Presspeech.app into Applications, launch it once, then remove the old
Parakey.app. Do not run both copies at the same time because they
intentionally share one permissions and settings identity.
v0.2.20
What's Changed
- Rapid dictation stability: Parakey now keeps the microphone engine warm
briefly between rapid dictations instead of tearing CoreAudio down and
rebuilding it after every release. This avoids a reproducible freeze after
several quick uses while still closing the input session after the user
pauses. - Audio route handling: Configuration-change notifications caused by
Parakey's own audio-engine start/stop cycle are ignored, so they no longer
trigger redundant deferred restarts during normal dictation. - Filler-word cleanup: Removing a sentence-start filler inside a longer
transcript now restores the capitalization of the next word. For example,
This is the first sentence. Um this is the second sentence.now becomes
This is the first sentence. This is the second sentence.
Validation
- Ran the full in-binary self-test suite.
- Ran a signed dev-app stress check with 15 rapid event-tap dictation cycles
and confirmed the app stayed responsive, reused the warm input engine for
the burst, then closed it after the idle delay.
v0.2.19
v0.2.18
What's Changed
- Release the microphone session while Parakey is idle, so macOS only shows microphone activity while a dictation hotkey is actively held or toggled on.
- Keep the speech model warm between recordings, preserving the fast local transcription path.
Maintenance
- Update GitHub Actions checkout usage in CI and Pages workflows.
v0.2.17
- Release v0.2.17
- Recover CoreAudio input startup after wake
- Add head-to-head compare table and freshness checking
- Add Wispr Flow and Superwhisper comparison pages
- Add 512px PNG icon for app directories
- Recast sharing kit: one-time Show HN plus answer-driven replies
- Serve demo video on mobile docs where SVG captions are illegible
- Add launch sharing kit with stale-stat scanning
- Add social share metadata to all docs pages
- Add animated workflow demo to README and docs, guard asset stats
- Sync release-size stat across designed assets and demo video
v0.2.16
What's Changed
- Hotkey responsiveness: System-audio mute calls, corrections-sync
file checks, and update helpers now run off the main thread that
services the global hotkey tap. A slow call (iCloud-synced corrections
file, Homebrew, AppleScript) can no longer stall typing system-wide or
cause macOS to drop a hotkey press. - Mute reliability: If the system-audio mute succeeds but its
verification read fails, Parakey now keeps the crash-recovery marker
and watchdog armed instead of tearing them down — the Mac can no
longer be left muted with no recovery path. The mute lifecycle is now
driven by pure, self-tested decision functions. - Toggle mode: Pressing the hotkey while a transcription is still
finishing no longer silently swallows presses; the toggle state only
advances when a recording can actually start. - Filler-word removal: Fixed punctuation artifacts with consecutive
or sentence-final fillers ("So, um, uh, yes." no longer becomes
"So,, yes."), and fillers before "?" or "!" are now cleaned up. - Update check: "Remind me later" now survives relaunch instead of
re-prompting shortly after the next launch. Manual check failures
distinguish being offline from GitHub rate limiting and unexpected
responses. The check now sends a fixedparakey-update-check
User-Agent, documented in the privacy table. - Text corrections: Failed saves now surface an alert instead of
silently dropping the edit, the corrections file cap is raised to
4 MiB so maximum-size sets always fit, imports say when a file was
truncated to the 512-entry cap, and sync no longer loses near-cap
entries after a merge or skips an explicit "Sync Corrections Now"
behind a stalled background scan. - Audio capture hardening: Closed a data race on audio-converter
state during engine stop/restart. - Text insertion: The fallback typing path now posts matching
key-up events so apps that track key state behave correctly. - Privacy documentation: Now lists every model re-download trigger,
the Homebrew hosts contacted during a user-triggered update, and the
fact that the last transcript stays on the clipboard after pasting. - Release and CI hardening: Release tags are annotated and pushed
explicitly, releases run QA gates (CI-green check, self-test suite,
packaged smoke test) before notarization, a--cask-onlymode
resumes half-finished releases, CI actions are SHA-pinned, the
benchmark harness is compiled in CI, and docs deploy only after
checks pass.
Manual Checks
- Run the signed-app hotkey and dictation smoke from
docs/manual-qa.md.
v0.2.15
What's Changed
- Hotkey recovery: Added Settings -> Hotkey -> Reset Hotkey to
Default so a bad or awkward custom hotkey can be returned to Right Option
without recording a replacement. - Hotkey recorder polish: The recorder now accepts additional F-keys and
right-side modifiers, rejects unsafe typing keys, and has stronger
self-test coverage for save, rollback, and listener restart paths. - Speech model recovery guidance: Startup failures now distinguish likely
interrupted/corrupt model caches from network/download failures and point
to Support -> Reset Speech Model Cache... when that is the right
recovery path. - Unexpected-exit notice: On the next launch after an abnormal exit,
Parakey offers to copy privacy-safe diagnostics or open the local log.
Nothing is sent anywhere. - Mute recovery: If Parakey crashes or is force-quit while it muted
system audio for an active recording, a local watchdog now unmutes the Mac
when the app process disappears. The next launch also repairs any stale
mute marker. - Audio capture hardening: Recording samples are accumulated in segments
and flattened outside the audio lock, with added downmix/converter
self-tests. - Private benchmark tooling: Added redacted real-dictation regression and
power benchmark helpers. Their reports redact transcript text, fixture
names, and local paths by default, and CI now runs their self-tests. - Release safety checks: Added a packaged-app smoke script that verifies
resources, signing, entitlements, and packaged self-tests.
Manual Checks
- Run the signed-app hotkey and dictation smoke from
docs/manual-qa.md. - Run
bench-power.shonce aftersudo -vto validate the real
powermetricspath on the release machine.
v0.2.14
v0.2.13
- Release v0.2.13
- Redact nonstandard bundle paths in diagnostics
- Avoid full paths in support logs
- Stop sync after unsafe correction path
- Cancel update checks on termination
- Pause runtime during model cache reset
- Reject symlinked correction imports
- Track correction sync content changes
- Fall back to direct text insertion
- Recover audio runtime after system wake
- Retry setup failures from checklist
- Document diagnostics workflow
- Strengthen release script self-test
- Expand diagnostics report
- Sanitize TCC reset environment
- Hash model files without following symlinks
- Open update logs before launching helper
- Sanitize updater process environment
- Create update helper scripts safely
- Reject hard-linked update logs
- Bound transcript correction entries
- Normalize stored hotkey choices
- Normalize stored app versions
- Normalize input device preferences
- Reject hard-linked log files
- Normalize correction sync file paths
- Normalize skipped update versions
- Reject correction writes through symlinks
- Bound stored correction decoding
- Bound update response decoding
- Harden update version parsing
- Harden application log writes
- Bound correction transfer file reads
- Harden update helper logging
- Avoid stale clipboard paste on insertion failure
- Reject symlinked model cache paths
- Guard speech model cache reset path
- Tighten update release URL checks
- Validate update release metadata
- Clean up update helper script files
- Harden model manifest updater
- Tighten model manifest validation
- Harden model loading and release checks
- docs: add llms.txt reference to structured metadata
v0.2.12
- Release v0.2.12
- build, docs: expand support to macOS 14 (Sonoma) and later
- docs: sync star suggestion in website docs pages and sync-docs script
- Bump actions/upload-pages-artifact from 3 to 5 (#2)
- Bump actions/deploy-pages from 4 to 5 (#1)
- Bump actions/configure-pages from 5 to 6 (#4)
- Bump actions/checkout from 4 to 6 (#3)