Every release, newest first. Sourced from the changelog in the app repo — the same file the in-app updater reads — so this page can’t drift from reality.
v0.4.0
latest
First open-source release (MIT). Command Mode, per-app profiles, adaptive prompt refinement, usage metering, and a full reliability pass across the pipeline.
Added
Command Mode — select text anywhere, hold ⌘⇧C, speak an instruction ("make this formal", "translate to French") — the selection is rewritten in place.
Usage metering — Anthropic token counts per history row, with a running total in the History tab.
Per-app profiles — per-app tone + vocabulary for dictation (new Profiles settings tab).
Prompt personalisation — optional free-text user profile injected as standing preferences; adaptive two-pass refinement for complex asks (on by default).
Eval harness — 30 property-scored fixtures run against the real rewrite path.
Mic input selection and automatic update check on launch.
Toggle recording mode — press to start, press again to stop.
STT model + language selection, max recording length slider (10–120 s).
History search, mode filter, re-inject, and 1000-row pruning.
Pipeline resilience — one retry on transient failures, Prompt Mode falls back to the raw transcript instead of losing the utterance.
OSS scaffolding: SECURITY.md, CONTRIBUTING.md, issue templates; cargo test + frontend typecheck in CI.
Changed
Prompt-rewrite system prompt v2 — insufficient-intent passthrough (noise never becomes a fabricated task), a silent quality bar, few-shot exemplars.
Confidence-based silence gating — Whisper segment confidence replaces the phrase denylist that discarded real dictations like "thank you"; quiet speakers no longer suppressed.
Latency — Anthropic prompt caching on static system prompts; event-driven clipboard restore replaces the fixed 250 ms post-paste sleep.
Fixed
Esc no longer plays a cancel sound system-wide when nothing is recording.
Clipboard is restored even when app activation or ⌘V dispatch fails mid-injection; non-text clipboards survive selection capture.
{query} in open_url actions is percent-encoded.
Onboarding: hotkeys are editable during first-run setup, and the test-box dictation no longer pastes into whatever app was previously focused.
Security
Voice transcripts delimited as untrusted input in Prompt Mode — closing the last two prompt-injection gaps.
Real CSP replaces "csp": null; devtools removed from production builds.
History rewritten before publication to remove internal planning docs and personal data; gitleaks + cargo audit + semgrep enforced green in CI.
Real logs at last, an Export Diagnostics button, prompt-injection hardening for selected text, and clipboard flavours that survive dictation.
Added
File logger with rotation and a Settings → Privacy toggle. Logs go to ~/Library/Logs/Wisspa/wisspa.log — previously they went to /dev/null, which made bug reports tricky.
Export Diagnostics button in the About tab — bundles redacted logs, app version, permission state, and hotkey config into one .zip for bug reports.
Default actions are seeded into packaged installs — fresh installs ship all 14 voice commands instead of an empty Actions tab.
Changed
Prompt Mode treats selected text as untrusted — selection content is wrapped in an explicitly-marked block so a malicious web page or email can’t smuggle instructions into your prompt.
Recording session ids threaded through the pipeline — Esc now aborts the in-flight backend work, and overlapping recordings no longer race the clipboard restore.
Clipboard flavours preserved — images, files, and other non-text clipboard content survive a dictation paste.
Logging redaction policy — full transcripts and LLM outputs are no longer logged; length + content hash only.
Prompt Mode reads the active browser tab to decide between writing a prompt and writing the thing itself. Plus a quieter, better-behaved pill.
Added
Prompt Mode reads the active browser tab. Press the prompt hotkey with claude.ai or chatgpt.com focused and you get a structured prompt for that tool. Press it with Gmail, LinkedIn, or Notion focused and you get the finished content directly — because asking Gmail for a prompt would be odd. Browser context travels sanitised (scheme + host only) in an untrusted block.
Quiet notifications toggle — suppress the success toast after a paste.
Changed
The pill is now an agent app (no Dock icon, no menu-bar focus) — it stops disappearing when another app takes focus.
Paste lands in the target app, pill follows the cursor — activation switched to a single System Events grant that works for any visible process, and the pill anchors to whichever display your cursor is on.