feat(identity): rename user-visible identity to voculinux with one-time legacy import
The fork takes its own name everywhere a user can see it: binaries (voculinux, voculinux-gui), desktop entry, autostart, tray, D-Bus namespace (com.voculinux.Voculinux, no alias for the old name), config/data/cache dirs, single-instance lock, IBus engine identity, tray icons, resource prefixes, VOCULINUX_* environment names, and the update-checker user agent. The internal Python module stays vocalinux and the distribution metadata keeps the upstream URLs as provenance. On first run a previous Vocalinux install's config.json, custom dictionary, and portal restore token are copied once into the new locations (new config always wins, no merge, no write-back); models re-resolve through the pinned-checksum download path. An offline naming-sweep test proves no old-name strings remain on user-visible surfaces outside the allowlist. Refs #18
This commit is contained in:
@@ -16,13 +16,13 @@ would make the external terms contract surprising.
|
||||
|
||||
## File contracts
|
||||
|
||||
Both files live in VocaLinux's XDG-aware configuration directory:
|
||||
`$XDG_CONFIG_HOME/vocalinux` (or `~/.config/vocalinux` when unset).
|
||||
Both files live in Voculinux's XDG-aware configuration directory:
|
||||
`$XDG_CONFIG_HOME/voculinux` (or `~/.config/voculinux` when unset).
|
||||
|
||||
| File | Contract | Consumer |
|
||||
| --- | --- | --- |
|
||||
| `dictionary.txt` | UTF-8 (BOM accepted), one term per line. Blank lines and lines beginning with `#` are ignored. Terms are de-duplicated case-insensitively while retaining the first spelling. | VocaLinux and an external accessibility scanner. |
|
||||
| `custom-dictionary-corrections.json` | UTF-8 JSON object: `{"version": 1, "corrections": [{"heard": "super base", "replacement": "Supabase"}]}`. | VocaLinux only. |
|
||||
| `dictionary.txt` | UTF-8 (BOM accepted), one term per line. Blank lines and lines beginning with `#` are ignored. Terms are de-duplicated case-insensitively while retaining the first spelling. | Voculinux and an external accessibility scanner. |
|
||||
| `custom-dictionary-corrections.json` | UTF-8 JSON object: `{"version": 1, "corrections": [{"heard": "super base", "replacement": "Supabase"}]}`. | Voculinux only. |
|
||||
|
||||
The terms file remains deliberately simple and scanner-friendly. Corrections
|
||||
need two unambiguous fields, a version, and exact replacement casing, so JSON is
|
||||
@@ -35,7 +35,7 @@ edited file therefore takes effect on the next dictation segment without an app
|
||||
restart. Missing, unreadable, malformed, or unsupported correction files are
|
||||
ignored safely; dictation continues without their entries.
|
||||
|
||||
The terms file may contain any number of lines, but VocaLinux limits a single
|
||||
The terms file may contain any number of lines, but Voculinux limits a single
|
||||
prompt to the first 200 valid terms and 2,000 characters. This bounds decoding
|
||||
work while leaving the scanner's complete line-file contract intact. The Custom
|
||||
Dictionary page keeps both an add/remove editor and a validated file chooser
|
||||
@@ -43,7 +43,7 @@ for the terms file.
|
||||
|
||||
## Processing and engine behavior
|
||||
|
||||
For every completed audio segment, VocaLinux applies this order:
|
||||
For every completed audio segment, Voculinux applies this order:
|
||||
|
||||
1. The selected engine transcribes audio.
|
||||
2. Live phrase corrections run against the raw transcript.
|
||||
@@ -78,7 +78,7 @@ the JSON corrections file exists; it is never silently deleted or migrated.
|
||||
|
||||
The #767 persisted configuration keys are retained unchanged:
|
||||
`dictionary.enabled`, `dictionary.file_path` (default
|
||||
`~/.config/vocalinux/dictionary.txt`), and `dictionary.max_words`. Existing
|
||||
`~/.config/voculinux/dictionary.txt`), and `dictionary.max_words`. Existing
|
||||
Peony settings therefore continue to select the scanner's `dictionary.txt`
|
||||
file. New configured paths are accepted only when they can be expanded and are
|
||||
either absent (so the UI can create them) or readable regular files; a failed
|
||||
@@ -99,7 +99,7 @@ paths are safely ignored and shown as unavailable rather than raising.
|
||||
|
||||
## Human test checklist
|
||||
|
||||
1. Add `VocaLinux`, `PyGObject`, and a non-ASCII term in **Custom terms**;
|
||||
1. Add `Voculinux`, `PyGObject`, and a non-ASCII term in **Custom terms**;
|
||||
confirm `dictionary.txt` is UTF-8, one line per term, and an external
|
||||
edit changes the next Whisper, whisper.cpp, and Faster Whisper dictation segment.
|
||||
2. Add `super base` → `Supabase`; test lowercase, uppercase, punctuation, an
|
||||
@@ -108,7 +108,7 @@ paths are safely ignored and shown as unavailable rather than raising.
|
||||
3. With voice commands enabled, add a correction that changes a command-like
|
||||
misrecognition into ordinary text. Confirm it is injected rather than acted
|
||||
on. Also verify an intentionally command-like replacement is avoided.
|
||||
4. Edit each file externally while VocaLinux is running. Test an invalid JSON
|
||||
4. Edit each file externally while Voculinux is running. Test an invalid JSON
|
||||
correction file and invalid UTF-8 terms file; confirm dictation continues and
|
||||
the Settings status/save feedback is clear.
|
||||
5. Test the UI with keyboard only: Add buttons via Enter, empty validation,
|
||||
|
||||
Reference in New Issue
Block a user