diff options
| author | Yuval Adam <_@yuv.al> | 2026-07-24 12:51:42 +0200 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2026-07-24 12:51:42 +0200 |
| commit | b509b20e05dcc481b20ae1e8181553e860ca5e34 (patch) | |
| tree | 81661f983c2abfaa555d7c3ecc8f7f85c75c7aa6 /SPEC.md | |
| parent | 6608dbd48c3e50d184ab984c56a84e090f49e40b (diff) | |
Tighten project documentation around the working product
Diffstat (limited to 'SPEC.md')
| -rw-r--r-- | SPEC.md | 32 |
1 files changed, 16 insertions, 16 deletions
@@ -14,13 +14,13 @@ The normal interaction is: 6. Parley inserts through the configured insertion backend. 7. Parley also saves the transcript and copies it to the clipboard. -The initial target environment is: +The supported target environment is deliberately narrow: -- Arch Linux +- fully updated Arch Linux - GNOME Shell 50 on Wayland - IBus 1.5.34 - PipeWire/WirePlumber with PulseAudio compatibility -- Python 3 with PyGObject +- Python 3.14 with PyGObject - The existing `transcribe-cli` binary and Parakeet Unified EN model ## 2. Goals @@ -43,18 +43,18 @@ The initial target environment is: - Cloud transcription is out of scope. - The Shell extension will not load the model, capture audio, or run transcription. -## 4. Existing transcription pipeline +## 4. Transcription pipeline -The source prototype lives in the sibling `transcribe-parakeet` project. It currently: +The terminal-independent Python core now: - records the default input with FFmpeg's `pulse` input at mono 16 kHz PCM; -- invokes a bundled `transcribe-cli` executable; +- invokes `transcribe-cli` as a cancellable child process; - uses `parakeet-unified-en-0.6b-Q8_0.gguf` (approximately 698 MiB); -- reads JSONL batch output; -- saves uniquely named text files; and -- uses terminal Enter/Escape handling to stop or cancel. +- parses JSONL batch output; +- persists collision-safe UTF-8 transcript files atomically; and +- exposes the same core to the standalone terminal frontend and daemon. -The runtime binary currently links to CUDA 13 and Intel MKL libraries. Packaging must either declare those host dependencies or later supply a more portable build. +Development can use runtime assets from the sibling `transcribe-parakeet` checkout. Installed assets default to `~/.local/bin/transcribe-cli` and `~/.local/share/parley/models/`. The current runtime binary links to CUDA 13 and Intel MKL libraries. Packaging must declare those host dependencies or later supply a more portable build. ## 5. Architecture @@ -239,7 +239,7 @@ Regardless of selected backend, a successful transcript is saved and copied to t ### 7.1 Primary candidate: IBus `commit_text` -Implement a minimal IBus dictation engine. When it owns the focused input context, it commits the transcript as semantic text. +A minimal persistent passthrough IBus engine is implemented. When it owns the focused input context, it commits the transcript as semantic text. Initial end-to-end insertion and ordinary passthrough typing work in Firefox and GNOME Console; the full application and input-behavior matrix is still required. Benefits: @@ -366,7 +366,7 @@ Secrets and portal restore tokens must not be exposed over D-Bus or written to l ## 12. Delivery phases -### Phase 1 — Refactor +### Phase 1 — Refactor (complete) - Create the terminal-independent core. - Implement start/stop/cancel recording operations. @@ -376,7 +376,7 @@ Secrets and portal restore tokens must not be exposed over D-Bus or written to l Exit criterion: CLI behavior works through the shared core without core TTY dependencies. -### Phase 2 — Daemon, D-Bus, and early hotkey +### Phase 2 — Daemon, D-Bus, and early hotkey (complete for development) - Implement the GLib daemon and state machine. - Add the systemd user unit. @@ -387,7 +387,7 @@ Exit criterion: CLI behavior works through the shared core without core TTY depe Exit criterion: hotkey-driven recording/transcription reliably ends with a saved transcript on the clipboard. -### Phase 3 — Insertion bake-off +### Phase 3 — Insertion bake-off (in progress) Build two deliberately small prototypes: @@ -413,7 +413,7 @@ For portal paste, test first authorization, restored sessions, logout/login, per Exit criterion: record results, choose the default backend, and document unsupported applications. If IBus passthrough or activation is flaky, use clipboard as the safe default and retain portal paste as opt-in. -### Phase 4 — GNOME Shell extension +### Phase 4 — GNOME Shell extension (baseline implemented) - Implement the top-bar indicator and menu. - Synchronize state over D-Bus. @@ -481,7 +481,7 @@ Runtime and desktop dependencies should be abstracted so core tests do not requi These must be resolved by prototypes or packaging work rather than assumption: -- whether IBus persistent passthrough or temporary activation is reliable enough to be default; +- whether the promising IBus persistent passthrough results remain reliable across the full test matrix; - exact compatibility of IBus and portal paste across the target application's real versions; - GNOME portal restore-token lifetime and user experience across login sessions; - final reverse-DNS application/D-Bus identifier; |
