summaryrefslogtreecommitdiff
path: root/SPEC.md
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2026-07-24 12:51:42 +0200
committerYuval Adam <_@yuv.al>2026-07-24 12:51:42 +0200
commitb509b20e05dcc481b20ae1e8181553e860ca5e34 (patch)
tree81661f983c2abfaa555d7c3ecc8f7f85c75c7aa6 /SPEC.md
parent6608dbd48c3e50d184ab984c56a84e090f49e40b (diff)
Tighten project documentation around the working product
Diffstat (limited to 'SPEC.md')
-rw-r--r--SPEC.md32
1 files changed, 16 insertions, 16 deletions
diff --git a/SPEC.md b/SPEC.md
index dd4b8d4..0feee57 100644
--- a/SPEC.md
+++ b/SPEC.md
@@ -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;