Skip to content

Releases

Stille Post 0.9.56 — HTML editor insertion

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 09 Nov 17:20

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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 09 Nov 14:57

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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 06 Nov 13:08

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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 05 Nov 08:58

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.

Linux-Updatefeed · Ed25519-Signatur

Stille Post 0.9.46 — Recording overlay fix

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 03 Nov 15:21

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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 03 Nov 14:05

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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 07 Oct 11: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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 01 Oct 08:15

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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 01 Oct 07:56

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

Choose a tag to compare

@DanielMuellerIR DanielMuellerIR released this 30 Aug 11:48

[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-key bricht 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-cli prü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 doctor zä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.sh prü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-key installiert 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 doctor prü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 doctor prü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 ist whisper.autostart aus, 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 zu gemma4 jeder 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-key eingetippte 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.modelPath versehentlich 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 unter build/; 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-Range mit 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 forderte curl einen
    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...
Read more