Repository navigation
Releases
Stille Post 0.9.56 — HTML editor insertion
Fixed on macOS
- Automatic insertion now recognizes Apple Mail’s HTML message editor as an editable target.
- The same detection also supports other apps that expose a focused HTML editor as a writable accessibility web area. Read-only web content remains excluded.
- The existing checks for the original app, window, and input field remain in place.
Download
Download StillePost-0.9.56.dmg below. The app and disk image are Developer ID signed and notarized by Apple. Existing macOS installations can also update through Check for Updates….
Validation
- App regression tests and paste-target policy tests passed, including editor, window, and write-access changes.
- Target detection was checked against Apple Mail’s message editor. A complete dictation-to-insertion run in Mail and other HTML editors has not yet been verified.
- Release packaging verifies the app, nested binaries, signatures, notarization tickets, and Gatekeeper acceptance.
Stille Post 0.9.55 — Menu bar and history access
Fixed on macOS
- The menu bar icon now uses a stable identifier for its saved visibility and position.
- Opening the running app again from Finder or Spotlight now opens history, keeping dictations accessible even when macOS hides the menu bar icon. It also asks macOS to show the icon again.
- History (⌘⌥H) and Settings (⌘,) are also available in the application menu when an app window is active.
The app still starts quietly in the background, including at login. Existing settings and dictation history are retained.
Download
Download StillePost-0.9.55.dmg below. The app and disk image are Developer ID signed and notarized by Apple. Existing macOS installations can also update through Check for Updates….
Validation
- Swift build and test suite passed; one existing test was skipped.
- Native app check confirmed history opens when the running app is opened again.
- Release packaging verifies the app, nested binaries, signatures, notarization tickets, and Gatekeeper acceptance.
Stille Post 0.9.53 — Linux
Dieses Linux-Update verbessert die lokale Spracherkennung und das automatische Einfügen von Diktaten.
- Whisper kann mit aktuellen Mesa-Treibern wieder Vulkan verwenden, ohne durch die Bibliotheken der Qt-Oberfläche auf CPU-Berechnung zurückzufallen.
- Automatisches Einfügen in tief verschachtelte Chromium-/Electron-Felder, einschließlich leerer ChatGPT-Felder, über die Zwischenablage und Strg+V.
- Hintergrundereignisse lösen keinen falschen Wechsel des Einfügeziels mehr aus.
- Die Wayland-Zwischenablage ist bereits beim Start im Hintergrund verfügbar; eine unnötige Ergebnisvorschau entfällt.
KDE kann einmalig nach der Erlaubnis zur Eingabesteuerung für „stillepost“ fragen. Nach „Zulassen“ gegebenenfalls erneut diktieren. „Immer erlauben“ ist optional. Das automatische Clipboard-Einfügen setzt ein unverändertes, fokussiertes Feld unter X11/XWayland und einen einzelnen lesbaren Absatz ohne Zeilenumbrüche voraus. Andere Ziele behalten den Text zum manuellen Einfügen.
Geprüft wurden der vollständige Diktatablauf mit künstlicher Audioquelle bis zum sichtbaren Einfügen im ChatGPT-Feld unter KDE/Wayland sowie zwölf Prüfungen für Einfügen und geschützte Ziele. Physische Mikrofone und längerer Alltagsbetrieb bleiben zusätzliche Geräteprüfungen.
Linux x86_64 benötigt glibc 2.39 oder neuer. Das Archiv enthält den benutzerlokalen Installer. Prüfsumme, signiertes Update-Manifest und Signatur liegen bei.
Dieses Release enthält das Linux-Paket. Der macOS-Updatefeed behält seine bisherige Version.
Stille Post 0.9.48 — Linux
Stille Post 0.9.48 erweitert die Linux-Version für CachyOS/KDE/Wayland und Linux Mint/Cinnamon/X11.
- Globale Hotkeys mit Toggle und Halten, sichere Zieleinfügung, Vorschau und Wiederaufruf.
- Einstellungen, Profile, App-Zuordnungen, Wörterbuch, Verlauf, Diagnose, Testdiktat und Audioimport in Deutsch und Englisch.
- Lokale Spracherkennung, geordnete Textbereinigung mit lokalem Fallback, optionales Silero-VAD und HTTPS-Empfängerbrücke.
- Benutzerlokales Installationspaket und signierter Linux-Updatefeed; der Mac-Appcast bleibt erhalten.
Desktop- und Paketprüfungen bestehen auf beiden Zielsystemen mit künstlichen Audioquellen. Physische Mikrofonhardware, Suspend/Resume, mehrtägiger Betrieb und reale iPhone-Kopplung sind noch nicht abschließend abgenommen.
Linux x86_64 benötigt glibc 2.39 oder neuer.
Der öffentliche Updateweg ist auf beiden Zielsystemen in einer isolierten Installation geprüft: Feed und Paketdownload, Ed25519-Signatur, SHA-256, Paketstart, atomarer Versionswechsel, unveränderte Testdaten und Rollback.
Stille Post 0.9.46 — Recording overlay fix
Stille Post 0.9.46 fixes recording overlay visibility when displays change or the menu bar app is hidden. It also includes the automatic insertion fix from 0.9.45 and supersedes that release.
- An active overlay is repositioned onto an available display when the display count, arrangement or resolution changes.
- Hiding the menu bar app no longer hides the active recording overlay.
- The target app keeps keyboard focus. A display change does not reopen an overlay that has already been dismissed.
The native regression reproduces the previous offscreen and app-hiding failures and verifies the corrected behavior against the macOS WindowServer. The complete app bundle was also visually checked in its recording preview. Physical unplugging of an external display was not repeated; the resulting offscreen window position and display-change notification were simulated. No new physical microphone test was performed for this patch.
The app and DMG are Developer ID signed and notarized. Automatic updates use the signed Sparkle feed.
See the full changelog. For changes and the iPhone bridge migration since 0.9.20, see the 0.9.45 release notes.
Stille Post 0.9.45 — Automatic insertion fix
Stille Post 0.9.45 restores automatic insertion in ChatGPT and other apps that do not expose a focused element through macOS Accessibility.
Fixed
- When an app exposes its focused window but no focused element, automatic insertion now works while the original app process and window remain unchanged.
- Apps that expose a text field still require that exact field. App or window changes continue to leave the result in the clipboard for manual insertion.
- Field changes within a window cannot be detected when the app exposes no focused element.
Also included since 0.9.20
- Optional result preview and recall of the last text; searchable history, retention controls, text correction, and explicit vocabulary updates.
- Dictation profiles and app assignments, an exclusively local cleanup policy, hold to talk, pause/resume, diagnostics, and an optional live raw transcript preview.
- Local audio-file transcription, explicit German/English formatting commands, selected-text cleanup, and optional Silero VAD with RMS fallback. Whisper large-v3-turbo and macOS 13 remain supported.
iPhone bridge migration
The bridge now requires HTTPS and direct QR pairing with the native iPhone development client. Existing HTTP shortcuts must migrate to the app's Open Dictation action and pair again. The iPhone client is a source development build, not an App Store release; offline iPhone dictation is not included.
See the bridge migration guide and full changelog.
The app and DMG are Developer ID signed and notarized. Validation includes the full Swift test suite, native insertion regressions, real ChatGPT target detection, synthetic speech-to-text and cleanup, package verification, and a background app/CLI smoke test on a second Mac. The suite completed with 416 tests, one optional real-Silero-model test skipped, and no failures. Physical microphone and all supported device combinations were not retested for this release.
v0.9.20
Stille Post 0.9.20 fixes cleanup after canceled dictations and restores compatibility with the current SwiftPM resource layout.
- Temporary recording and transcription files are removed on cancellation, including cancellation during active speech recognition.
- Packaged resources are resolved correctly with the current build system.
- Local ad-hoc builds remain available while public releases require verified Developer ID signatures and notarization.
Validated with 219 tests, full bundle/DMG verification and the installed app on a second Mac. The technical vocabulary editor was checked in German and English: edit, save, reopen and cancel preserve the expected configuration. Physical microphone and iPhone bridge combinations were not retested in this release check.
The app and disk image are signed and notarized. Automatic updates use the signed Sparkle feed.
Stille Post 0.9.18
Stille Post 0.9.18 closes the final cancellation window between completed history persistence and resuming the main thread. The cancelled dictation’s own entry is removed; an already deleted WAV no longer causes a misleading deletion error.
Includes the cancellation, WAV ownership and FIFO download fixes from 0.9.17. Validation: all 216 Swift tests and the GitHub CI passed; the new main-thread cancellation regression fails against a temporary copy with only this fix removed. The synthetic German audio end-to-end test passed. The app and DMG are Developer-ID signed and notarized.
Existing hardware and interactive acceptance checks for device removal, iPhone bridge operation and dictionary editing remain open.
Stille Post 0.9.17
Stille Post 0.9.17 fixes cancellation during history persistence: cancelled dictation text is discarded even when its atomic write has already started. Older sessions cannot clear a newer recording’s WAV ownership. Model downloads reject FIFOs without waiting for another process.
This release also includes conservative cleanup checks, asynchronous bridge lifecycle handling, recording-device failure handling and the dictionary editor from the preceding development builds.
Validation: all 215 Swift tests, targeted lifecycle/FIFO regressions, release contracts and the end-to-end test with synthetic German audio passed. The app and DMG are Developer-ID signed and notarized; the app passed a background startup test. Device removal, iPhone bridge operation and dictionary editing remain subject to their existing hardware and interactive acceptance checks.
Stille Post 0.9.16
[0.9.16] — unveröffentlicht
Behoben
- Das Verlaufsfenster liest und leert den Verlauf jetzt außerhalb des
Main-Threads. Ein paralleler CLI-Zugriff oder das Löschen vieler Aufnahmen
blockiert dadurch weder Fenster noch Menüleiste. - Ein fertig transkribiertes Diktat wird auch dann ausgeliefert, wenn nur das
abschließende Entfernen eines bereits überflüssigen WAV-Verweises im Verlauf
nicht gespeichert werden kann; der Fehler bleibt sichtbar.
[0.9.15] — unveröffentlicht
Behoben
- Netzwerk-Brücke: Vollständig eingelesene Anfragen belegen das gemeinsame
Speicherbudget jetzt bis zum Ende ihrer Verarbeitung. Wartende Diktate können
dadurch nicht mehr neben weiteren Teilanfragen ein zweites Body-Budget belegen. - Modell-Installation: App und CLI folgen beim Schreiben einer Download-
Teildatei keinem Symlink mehr. Typ, Größe, Wiederaufnahme und Schreiben werden
über denselben geprüften Dateideskriptor ausgeführt. stillepost-cli set-cleanup-keybricht jetzt vor dem Lesen ab, wenn ein
Terminal seine Eingabeanzeige nicht sicher abschalten kann. Der API-Schlüssel
kann in diesem Fehlerfall nicht mehr sichtbar im Scrollback landen.- Diktat und Verlauf speichern den WAV-Verweis jetzt vor jedem Löschversuch und
entfernen ihn erst nach bestätigtem Löschen. Ein zweiter Schreibfehler,
paralleles Leeren des Verlaufs oder das Beenden in einem Fehlerzustand kann
dadurch keine vorhandene Diagnoseaufnahme mehr unauffindbar machen. - Das Ende eines Diktats wartet nicht mehr auf Verlaufssperren und Dateioperationen
auf dem Main-Thread; Menüleiste, Overlay und Einstellungen bleiben dabei bedienbar. - Der Datenschutzbefehl „Alle löschen“ schreibt vor dem ersten Dateilöschen
textfreie Verweise auf alle eigenen Aufnahmen. Auch ein Prozessabbruch oder
zweiter Schreibfehler lässt damit keinen unbekannten WAV-Rest zurück. - Das Release-Skript gibt seine Laufsperre jetzt vor dem Entfernen der
Signal-Handler frei. Ein Signal im Abschlussfenster kann Folge-Releases nicht
mehr mit einer veralteten Sperre blockieren.
[0.9.14] — unveröffentlicht
Geändert
stillepost-cliprüft die vollständige Befehlsform jetzt vor dem Laden der
Konfiguration. Unbekannte oder zusätzliche Optionen werden mit Exit-Code 2
abgewiesen, bevor der Befehl Verlauf, Schlüsselbund, Netz oder Server berührt.stillepost-cli doctorzählt bei ausgeschaltetem Whisper-Selbststart nur den
nicht erreichbaren Server als Problem. Fehlendes Binary und Modell werden in
dieser Konfiguration nicht benutzt und deshalb nicht als weitere Fehler
ausgegeben.
Behoben
- Bereinigung: Cloud- und Ollama-Endpunkte akzeptieren nur noch vollständige
HTTP- oder HTTPS-Adressen ohne Zugangsdaten, Query oder Fragment. Ein
abschließender Schrägstrich erzeugt außerdem keinen doppelten Pfadtrenner mehr. - Diktat: Enthält eine Aufnahme nur Stille und lässt sich ihre WAV-Datei nicht
löschen, bleibt ihr Name jetzt in einem textfreien Fehler-Eintrag im Verlauf
erreichbar. Bisher lag der einzige Verweis im Arbeitsspeicher und ging beim
nächsten Diktat oder Neustart verloren. - Whisper: Verzeichnisse und Spezialdateien am Modellpfad gelten nicht mehr als
installiertes Modell. App und CLI bieten dadurch wieder die Installation an,
die den ungeeigneten Zieltyp mit einer konkreten Fehlermeldung abweist. - Whisper: Die lokale Serveradresse lehnt Port 0 sowie Werte über 65535 ab,
bevor sie an URLSession oder den Selbststart weitergereicht werden. scripts/install-model.shprüft Ziel und Teildatei vor dem Download und erneut
vor dem Verschieben. Das Skript folgt keinem Symlink auf ein Verzeichnis mehr
und kann über einen Teildatei-Symlink keine fremde Datei überschreiben.stillepost-cli set-cleanup-keyinstalliert seine Abbruchbehandlung jetzt vor
dem Abschalten der Terminal-Anzeige und nimmt sie zurück, falls das Terminal
die Umschaltung ablehnt. Ein Abbruchfenster mit dauerhaft stummer Eingabe ist
damit geschlossen.
[0.9.13] — unveröffentlicht
Geändert
stillepost-cli doctorprüft die Bereinigungs-Endpunkte jetzt über dieselbe
Stelle im Kern, die auch die Bereinigung selbst benutzt — inklusive des Baus
der Cloud-Adresse. Die Diagnose kann dadurch nicht mehr nach anderen Regeln
urteilen als der Betrieb.stillepost-cli doctorprüft whisper-server jetzt in derselben Reihenfolge wie
der Betrieb: Erst zählt, ob der Server antwortet. Läuft er, sind fehlendes
Binary oder Modell kein Problem mehr, sondern ein Hinweis für den nächsten
Kaltstart; läuft er nicht und istwhisper.autostartaus, ist das jetzt ein
gemeldetes Problem statt einer Entwarnung.- Ein Ollama-Modell gilt nur noch dann als vorhanden, wenn der Name exakt
stimmt — plus dem einen Alias, den Ollama selbst definiert: Ein eingestellter
Name ohne Tag meint:latest. Vorher passte zugemma4jeder beliebige
installierte Tag, und die Diagnose meldete „bereit“ für ein Modell, das der
spätere Bereinigungs-Request gar nicht kennt.
Behoben
- Sicherheit: Der über
stillepost-cli set-cleanup-keyeingetippte API-Schlüssel
wird im Terminal nicht mehr angezeigt. Die Aufforderung verspricht das seit
jeher, die Eingabe lief aber mit normaler Anzeige — der Schlüssel stand danach
im Scrollback. Die Anzeige wird auch nach Abbruch mit Ctrl-C wieder
eingeschaltet; eine Eingabe aus einer Pipe funktioniert unverändert. - Modell-Installation: Zeigt
whisper.modelPathversehentlich auf ein
Verzeichnis, bricht die Installation jetzt ab, statt dessen Inhalt zu löschen
und das Verzeichnis durch die Modelldatei zu ersetzen. Geprüft wird vor dem
Download, und ein gescheitertes Aufräumen am Zielpfad wird gemeldet statt
verschluckt. - Release-Skript: Zwei gleichzeitige
./release.sh-Läufe im selben
Arbeitsverzeichnis schließen sich jetzt über eine Sperre aus. Beide benutzten
dieselben Pfade unterbuild/; ein zweiter Lauf konnte dem ersten das DMG
nach der Prüfung austauschen, sodass ein ungeprüftes Artefakt samt frisch
berechneter Prüfsumme veröffentlicht wurde. - Diktat: Ein Abbruch während der Verarbeitung löscht jetzt auch die fertige
Aufnahme. Bisher kannte sie nach dem Stoppen niemand mehr — der Verlauf
bekommt bei einem Abbruch keinen Eintrag —, und eine vollständige Aufnahme
blieb unauffindbar auf der Platte liegen. - Diktat: Lässt sich die Aufnahme nach einem erfolgreichen Diktat nicht löschen,
wird ihr Name jetzt im Verlaufseintrag nachgetragen. Ohne diesen Verweis fand
„Alle löschen“ sie später nicht mehr. Dasselbe gilt für „Erneut
transkribieren“, wenn dort das Löschen scheitert. - Diktat: Die Nachverarbeitung läuft jetzt vollständig auf dem Hauptthread. Sie
las und schrieb dieselben Felder (Zustand, Sitzungsnummer), die Start, Stopp
und Abbruch dort anfassen; ein alter Lauf konnte deshalb den Zustand eines
neuen überschreiben oder trotz Abbruch noch ausliefern. Die eigentliche
Bereinigung läuft weiterhin außerhalb des Hauptthreads. - Diktat: Ein verspätet fertig gewordenes Segment kann nicht mehr in der
Sammlung einer bereits neu begonnenen Aufnahme landen. - Verlauf: Lässt sich beim „Alle löschen“ eine Aufnahme nicht löschen (Rechte,
gesperrte Datei), bleibt jetzt ein Platzhalter mit ihrem Dateinamen stehen —
ohne den gelöschten Text. Bisher war der Verweis weg, und ein zweiter Klick
fand die Datei nicht mehr. - Netzwerk-Brücke: Alle Verbindungen zusammen dürfen nur noch so viele
Anfrage-Bytes puffern, wie die Warteschlange überhaupt annimmt. Acht offene
Verbindungen konnten vorher acht vollständige Bodys gleichzeitig im Speicher
halten, obwohl fünf davon anschließend nur ein 503 bekommen hätten. Ein
vollständig gelesener Inhalt wird außerdem nicht mehr doppelt gehalten. - Netzwerk-Brücke: Ein Kopf an der Größengrenze wird nicht mehr abgelehnt, nur
weil die vier Trennbytes zwischen Kopf und Inhalt in zwei Paketen ankamen. - Modell-Download: Eine fortgesetzte Übertragung wird nur noch angenommen, wenn
der Server genau den angeforderten Bereich derselben Datei liefert
(Content-Rangemit passendem Startversatz und passender Gesamtgröße). scripts/install-model.sh: Eine angefangene Datei, die größer ist als das
Modell heute, wird verworfen statt fortgesetzt. Sonst fordertecurleinen
Versatz hinter dem Dateiende an und scheiterte bei jedem weiteren Versuch —
derselbe Dauerblocker, der in App und CLI schon behoben war.- Verlauf: „Alle löschen“ räumt jetzt jede zurückbehaltene Aufnahme weg, auch
wenn eine davon nicht zu löschen ist. Bisher brach der Vorgang beim ersten
Problem ab; der Verlauf war zu diesem Zeitpunkt schon leer, und alle weiteren
Aufnahmen blieben ohne zugehörigen Eintrag auf der Platte liegen. Ein
aufgetretener Fehler wird weiterhin gemeldet. - Diktat: Lässt sich die temporäre Aufnahme nach einem erfolgreichen Diktat
nicht löschen, wird der fertige Text jetzt trotzdem eingefügt und erst danach
der Fehler gemeldet. Bisher hielt das gescheiterte Aufräumen das gesamte
Diktat zurück, obwohl es längst bereinigt und im Verlauf gespeichert war. - Modell-Download: Eine Teildatei, die größer ist als die erwartete Datei, wird
nicht mehr als angefangener Download weiterverwendet, sondern neu geladen.
Wurde das Modell am Server durch eine kleinere Fassung ersetzt, blieb die
Installation sonst dauerhaft mit der Meldung über eine unvollständige Datei
stehen, bis jemand die Teildatei von Hand löschte. - Netzwerk-Brücke: Die Herkunftsprüfung entscheidet jetzt anhand der 16 Bytes
einer Adresse statt anhand ihrer Schreibweise. Eine IPv6-Adresse darf ihre
letzten vier Bytes mit Punkten schreiben („2a00:1234::192.168.1.1“ ist eine
gültige globale Adresse); bisher galt so eine Adresse aus dem Internet wegen
der Punkte als privates IPv4-Netz und kam an der ersten Hürde vorbei — das
Token schützte weiterhin. Umgekehrt zählt eine eingebettete private
IPv4-Adresse nun in beiden Schreibweisen als Heimnetz...