python-voiceio 0.2.3__tar.gz → 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_voiceio-0.2.3/python_voiceio.egg-info → python_voiceio-0.2.4}/PKG-INFO +10 -29
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/README.md +7 -28
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/pyproject.toml +3 -1
- {python_voiceio-0.2.3 → python_voiceio-0.2.4/python_voiceio.egg-info}/PKG-INFO +10 -29
- python_voiceio-0.2.4/voiceio/__init__.py +1 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/app.py +0 -1
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/cli.py +36 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/wizard.py +1 -1
- python_voiceio-0.2.3/voiceio/__init__.py +0 -1
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/LICENSE +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/python_voiceio.egg-info/SOURCES.txt +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/python_voiceio.egg-info/dependency_links.txt +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/python_voiceio.egg-info/entry_points.txt +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/python_voiceio.egg-info/requires.txt +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/python_voiceio.egg-info/top_level.txt +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/setup.cfg +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_app_wiring.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_backend_probes.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_config.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_fallback.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_health.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_ibus_typer.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_platform.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_prebuffer.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_recorder_integration.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_streaming.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/tests/test_transcriber.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/__main__.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/backends.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/config.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/feedback.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/health.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/hotkeys/__init__.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/hotkeys/base.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/hotkeys/chain.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/hotkeys/evdev.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/hotkeys/pynput_backend.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/hotkeys/socket_backend.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/ibus/__init__.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/ibus/engine.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/platform.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/recorder.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/service.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/sounds/__init__.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/sounds/commit.wav +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/sounds/start.wav +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/sounds/stop.wav +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/streaming.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/transcriber.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/tray.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/__init__.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/base.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/chain.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/clipboard.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/ibus.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/pynput_type.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/wtype.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/xdotool.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/typers/ydotool.py +0 -0
- {python_voiceio-0.2.3 → python_voiceio-0.2.4}/voiceio/worker.py +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-voiceio
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Speak → text, locally, instantly.
|
|
5
5
|
Author: Hugo Montenegro
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/Hugo0/voiceio
|
|
8
|
+
Project-URL: Repository, https://github.com/Hugo0/voiceio
|
|
8
9
|
Project-URL: Issues, https://github.com/Hugo0/voiceio/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/Hugo0/voiceio/releases
|
|
9
11
|
Keywords: voice,speech-to-text,whisper,linux,dictation,wayland,ibus
|
|
10
12
|
Classifier: Development Status :: 4 - Beta
|
|
11
13
|
Classifier: Environment :: X11 Applications
|
|
@@ -41,15 +43,6 @@ Dynamic: license-file
|
|
|
41
43
|
|
|
42
44
|
Speak → text, locally, instantly.
|
|
43
45
|
|
|
44
|
-
<!-- demo video -->
|
|
45
|
-
<p align="center">
|
|
46
|
-
<a href="https://www.tella.tv/video/YOUR_VIDEO_ID">
|
|
47
|
-
<img src="https://github.com/Hugo0/voiceio/raw/main/assets/demo-thumbnail.png" alt="voiceio demo" width="600">
|
|
48
|
-
</a>
|
|
49
|
-
<br>
|
|
50
|
-
<em>Click to watch the demo</em>
|
|
51
|
-
</p>
|
|
52
|
-
|
|
53
46
|
## Quick start
|
|
54
47
|
|
|
55
48
|
```bash
|
|
@@ -98,7 +91,7 @@ voiceio setup
|
|
|
98
91
|
```
|
|
99
92
|
</details>
|
|
100
93
|
|
|
101
|
-
> You can also install with `uv tool install voiceio` or `pip install voiceio`.
|
|
94
|
+
> You can also install with `uv tool install python-voiceio` or `pip install python-voiceio`.
|
|
102
95
|
|
|
103
96
|
## How it works
|
|
104
97
|
|
|
@@ -143,6 +136,7 @@ voiceio setup Interactive setup wizard
|
|
|
143
136
|
voiceio doctor Health check (--fix to auto-repair)
|
|
144
137
|
voiceio test Test microphone + live transcription
|
|
145
138
|
voiceio toggle Toggle recording on a running daemon
|
|
139
|
+
voiceio update Update to latest version
|
|
146
140
|
voiceio service install Autostart on login via systemd
|
|
147
141
|
voiceio logs View recent logs
|
|
148
142
|
voiceio uninstall Remove all system integrations
|
|
@@ -194,28 +188,15 @@ voiceio uninstall # removes service, IBus, shortcuts, symlinks
|
|
|
194
188
|
pipx uninstall python-voiceio # removes the package
|
|
195
189
|
```
|
|
196
190
|
|
|
197
|
-
## TODO
|
|
198
|
-
|
|
199
|
-
**Launch**
|
|
200
|
-
- [ ] Publish to PyPI
|
|
201
|
-
- [ ] Record demo video + thumbnail
|
|
202
|
-
- [ ] Test clean install on a fresh VM/container
|
|
203
|
-
- [ ] GitHub repo: description, topics, social preview image
|
|
204
|
-
- [ ] Bump version to 0.2.0
|
|
205
|
-
|
|
206
|
-
**Code quality**
|
|
207
|
-
- [ ] IBus activation on non-GNOME desktops (KDE, Sway, Hyprland), currently GNOME-only via gsettings
|
|
208
|
-
- [ ] `voiceio doctor --json` for machine-readable output
|
|
209
|
-
- [ ] Shell completions (`voiceio completion bash/zsh/fish`)
|
|
210
|
-
- [ ] Refactor wizard.py (882 lines) into smaller, testable modules
|
|
211
|
-
- [ ] Socket protocol versioning (e.g. `v1:preedit:text`)
|
|
212
|
-
- [ ] Configurable log file path
|
|
213
|
-
|
|
214
191
|
## Wishlist
|
|
215
192
|
|
|
216
|
-
Contributions welcome! Open an issue to discuss before starting.
|
|
193
|
+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md). Open an issue to discuss before starting.
|
|
217
194
|
|
|
218
195
|
**High impact**
|
|
196
|
+
- [ ] **macOS support**: test and polish pynput hotkey + typer backends
|
|
197
|
+
- [ ] **Silence filtering**: VAD-based trimming to prevent Whisper hallucinations on silence
|
|
198
|
+
- [ ] **distil-whisper models**: better speed/accuracy tradeoffs
|
|
199
|
+
- [ ] **IBus on non-GNOME desktops**: KDE, Sway, Hyprland activation (currently GNOME-only via gsettings)
|
|
219
200
|
- [ ] **Text-to-speech (voice output)**: select text, press a hotkey, hear it spoken aloud. Completes the "io" in voiceio. Use a local TTS engine (Piper, Coqui, espeak-ng), same philosophy: no cloud, no API keys
|
|
220
201
|
- [ ] **Wake word**: "Hey voiceio" hands-free activation (no hotkey needed). Use a small always-on keyword model (e.g. openWakeWord, Porcupine)
|
|
221
202
|
- [ ] **Custom vocabulary / hot words**: user-defined word list for names, jargon, technical terms that Whisper gets wrong. Boost via `initial_prompt` or fine-tuned logit bias
|
|
@@ -7,15 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
Speak → text, locally, instantly.
|
|
9
9
|
|
|
10
|
-
<!-- demo video -->
|
|
11
|
-
<p align="center">
|
|
12
|
-
<a href="https://www.tella.tv/video/YOUR_VIDEO_ID">
|
|
13
|
-
<img src="https://github.com/Hugo0/voiceio/raw/main/assets/demo-thumbnail.png" alt="voiceio demo" width="600">
|
|
14
|
-
</a>
|
|
15
|
-
<br>
|
|
16
|
-
<em>Click to watch the demo</em>
|
|
17
|
-
</p>
|
|
18
|
-
|
|
19
10
|
## Quick start
|
|
20
11
|
|
|
21
12
|
```bash
|
|
@@ -64,7 +55,7 @@ voiceio setup
|
|
|
64
55
|
```
|
|
65
56
|
</details>
|
|
66
57
|
|
|
67
|
-
> You can also install with `uv tool install voiceio` or `pip install voiceio`.
|
|
58
|
+
> You can also install with `uv tool install python-voiceio` or `pip install python-voiceio`.
|
|
68
59
|
|
|
69
60
|
## How it works
|
|
70
61
|
|
|
@@ -109,6 +100,7 @@ voiceio setup Interactive setup wizard
|
|
|
109
100
|
voiceio doctor Health check (--fix to auto-repair)
|
|
110
101
|
voiceio test Test microphone + live transcription
|
|
111
102
|
voiceio toggle Toggle recording on a running daemon
|
|
103
|
+
voiceio update Update to latest version
|
|
112
104
|
voiceio service install Autostart on login via systemd
|
|
113
105
|
voiceio logs View recent logs
|
|
114
106
|
voiceio uninstall Remove all system integrations
|
|
@@ -160,28 +152,15 @@ voiceio uninstall # removes service, IBus, shortcuts, symlinks
|
|
|
160
152
|
pipx uninstall python-voiceio # removes the package
|
|
161
153
|
```
|
|
162
154
|
|
|
163
|
-
## TODO
|
|
164
|
-
|
|
165
|
-
**Launch**
|
|
166
|
-
- [ ] Publish to PyPI
|
|
167
|
-
- [ ] Record demo video + thumbnail
|
|
168
|
-
- [ ] Test clean install on a fresh VM/container
|
|
169
|
-
- [ ] GitHub repo: description, topics, social preview image
|
|
170
|
-
- [ ] Bump version to 0.2.0
|
|
171
|
-
|
|
172
|
-
**Code quality**
|
|
173
|
-
- [ ] IBus activation on non-GNOME desktops (KDE, Sway, Hyprland), currently GNOME-only via gsettings
|
|
174
|
-
- [ ] `voiceio doctor --json` for machine-readable output
|
|
175
|
-
- [ ] Shell completions (`voiceio completion bash/zsh/fish`)
|
|
176
|
-
- [ ] Refactor wizard.py (882 lines) into smaller, testable modules
|
|
177
|
-
- [ ] Socket protocol versioning (e.g. `v1:preedit:text`)
|
|
178
|
-
- [ ] Configurable log file path
|
|
179
|
-
|
|
180
155
|
## Wishlist
|
|
181
156
|
|
|
182
|
-
Contributions welcome! Open an issue to discuss before starting.
|
|
157
|
+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md). Open an issue to discuss before starting.
|
|
183
158
|
|
|
184
159
|
**High impact**
|
|
160
|
+
- [ ] **macOS support**: test and polish pynput hotkey + typer backends
|
|
161
|
+
- [ ] **Silence filtering**: VAD-based trimming to prevent Whisper hallucinations on silence
|
|
162
|
+
- [ ] **distil-whisper models**: better speed/accuracy tradeoffs
|
|
163
|
+
- [ ] **IBus on non-GNOME desktops**: KDE, Sway, Hyprland activation (currently GNOME-only via gsettings)
|
|
185
164
|
- [ ] **Text-to-speech (voice output)**: select text, press a hotkey, hear it spoken aloud. Completes the "io" in voiceio. Use a local TTS engine (Piper, Coqui, espeak-ng), same philosophy: no cloud, no API keys
|
|
186
165
|
- [ ] **Wake word**: "Hey voiceio" hands-free activation (no hotkey needed). Use a small always-on keyword model (e.g. openWakeWord, Porcupine)
|
|
187
166
|
- [ ] **Custom vocabulary / hot words**: user-defined word list for names, jargon, technical terms that Whisper gets wrong. Boost via `initial_prompt` or fine-tuned logit bias
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-voiceio"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.4"
|
|
8
8
|
description = "Speak → text, locally, instantly."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -34,7 +34,9 @@ dev = ["pytest>=7.0", "pytest-mock"]
|
|
|
34
34
|
|
|
35
35
|
[project.urls]
|
|
36
36
|
Homepage = "https://github.com/Hugo0/voiceio"
|
|
37
|
+
Repository = "https://github.com/Hugo0/voiceio"
|
|
37
38
|
Issues = "https://github.com/Hugo0/voiceio/issues"
|
|
39
|
+
Changelog = "https://github.com/Hugo0/voiceio/releases"
|
|
38
40
|
|
|
39
41
|
[project.scripts]
|
|
40
42
|
voiceio = "voiceio.cli:main"
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-voiceio
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Speak → text, locally, instantly.
|
|
5
5
|
Author: Hugo Montenegro
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/Hugo0/voiceio
|
|
8
|
+
Project-URL: Repository, https://github.com/Hugo0/voiceio
|
|
8
9
|
Project-URL: Issues, https://github.com/Hugo0/voiceio/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/Hugo0/voiceio/releases
|
|
9
11
|
Keywords: voice,speech-to-text,whisper,linux,dictation,wayland,ibus
|
|
10
12
|
Classifier: Development Status :: 4 - Beta
|
|
11
13
|
Classifier: Environment :: X11 Applications
|
|
@@ -41,15 +43,6 @@ Dynamic: license-file
|
|
|
41
43
|
|
|
42
44
|
Speak → text, locally, instantly.
|
|
43
45
|
|
|
44
|
-
<!-- demo video -->
|
|
45
|
-
<p align="center">
|
|
46
|
-
<a href="https://www.tella.tv/video/YOUR_VIDEO_ID">
|
|
47
|
-
<img src="https://github.com/Hugo0/voiceio/raw/main/assets/demo-thumbnail.png" alt="voiceio demo" width="600">
|
|
48
|
-
</a>
|
|
49
|
-
<br>
|
|
50
|
-
<em>Click to watch the demo</em>
|
|
51
|
-
</p>
|
|
52
|
-
|
|
53
46
|
## Quick start
|
|
54
47
|
|
|
55
48
|
```bash
|
|
@@ -98,7 +91,7 @@ voiceio setup
|
|
|
98
91
|
```
|
|
99
92
|
</details>
|
|
100
93
|
|
|
101
|
-
> You can also install with `uv tool install voiceio` or `pip install voiceio`.
|
|
94
|
+
> You can also install with `uv tool install python-voiceio` or `pip install python-voiceio`.
|
|
102
95
|
|
|
103
96
|
## How it works
|
|
104
97
|
|
|
@@ -143,6 +136,7 @@ voiceio setup Interactive setup wizard
|
|
|
143
136
|
voiceio doctor Health check (--fix to auto-repair)
|
|
144
137
|
voiceio test Test microphone + live transcription
|
|
145
138
|
voiceio toggle Toggle recording on a running daemon
|
|
139
|
+
voiceio update Update to latest version
|
|
146
140
|
voiceio service install Autostart on login via systemd
|
|
147
141
|
voiceio logs View recent logs
|
|
148
142
|
voiceio uninstall Remove all system integrations
|
|
@@ -194,28 +188,15 @@ voiceio uninstall # removes service, IBus, shortcuts, symlinks
|
|
|
194
188
|
pipx uninstall python-voiceio # removes the package
|
|
195
189
|
```
|
|
196
190
|
|
|
197
|
-
## TODO
|
|
198
|
-
|
|
199
|
-
**Launch**
|
|
200
|
-
- [ ] Publish to PyPI
|
|
201
|
-
- [ ] Record demo video + thumbnail
|
|
202
|
-
- [ ] Test clean install on a fresh VM/container
|
|
203
|
-
- [ ] GitHub repo: description, topics, social preview image
|
|
204
|
-
- [ ] Bump version to 0.2.0
|
|
205
|
-
|
|
206
|
-
**Code quality**
|
|
207
|
-
- [ ] IBus activation on non-GNOME desktops (KDE, Sway, Hyprland), currently GNOME-only via gsettings
|
|
208
|
-
- [ ] `voiceio doctor --json` for machine-readable output
|
|
209
|
-
- [ ] Shell completions (`voiceio completion bash/zsh/fish`)
|
|
210
|
-
- [ ] Refactor wizard.py (882 lines) into smaller, testable modules
|
|
211
|
-
- [ ] Socket protocol versioning (e.g. `v1:preedit:text`)
|
|
212
|
-
- [ ] Configurable log file path
|
|
213
|
-
|
|
214
191
|
## Wishlist
|
|
215
192
|
|
|
216
|
-
Contributions welcome! Open an issue to discuss before starting.
|
|
193
|
+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md). Open an issue to discuss before starting.
|
|
217
194
|
|
|
218
195
|
**High impact**
|
|
196
|
+
- [ ] **macOS support**: test and polish pynput hotkey + typer backends
|
|
197
|
+
- [ ] **Silence filtering**: VAD-based trimming to prevent Whisper hallucinations on silence
|
|
198
|
+
- [ ] **distil-whisper models**: better speed/accuracy tradeoffs
|
|
199
|
+
- [ ] **IBus on non-GNOME desktops**: KDE, Sway, Hyprland activation (currently GNOME-only via gsettings)
|
|
219
200
|
- [ ] **Text-to-speech (voice output)**: select text, press a hotkey, hear it spoken aloud. Completes the "io" in voiceio. Use a local TTS engine (Piper, Coqui, espeak-ng), same philosophy: no cloud, no API keys
|
|
220
201
|
- [ ] **Wake word**: "Hey voiceio" hands-free activation (no hotkey needed). Use a small always-on keyword model (e.g. openWakeWord, Porcupine)
|
|
221
202
|
- [ ] **Custom vocabulary / hot words**: user-defined word list for names, jargon, technical terms that Whisper gets wrong. Boost via `initial_prompt` or fine-tuned logit bias
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.4"
|
|
@@ -18,7 +18,6 @@ from voiceio.recorder import AudioRecorder
|
|
|
18
18
|
from voiceio.streaming import StreamingSession
|
|
19
19
|
from voiceio.transcriber import Transcriber
|
|
20
20
|
from voiceio.typers import chain as typer_chain
|
|
21
|
-
from voiceio.typers.base import StreamingTyper
|
|
22
21
|
log = logging.getLogger("voiceio")
|
|
23
22
|
|
|
24
23
|
|
|
@@ -59,6 +59,9 @@ def main() -> None:
|
|
|
59
59
|
choices=["install", "uninstall", "start", "stop", "status"],
|
|
60
60
|
help="Action to perform (default: status)")
|
|
61
61
|
|
|
62
|
+
# ── voiceio update ──────────────────────────────────────────────────
|
|
63
|
+
sub.add_parser("update", help="Update voiceio to the latest version")
|
|
64
|
+
|
|
62
65
|
# ── voiceio uninstall ──────────────────────────────────────────────
|
|
63
66
|
sub.add_parser("uninstall", help="Remove all voiceio system integrations")
|
|
64
67
|
|
|
@@ -77,6 +80,8 @@ def main() -> None:
|
|
|
77
80
|
_cmd_test()
|
|
78
81
|
elif args.command == "service":
|
|
79
82
|
_cmd_service(args)
|
|
83
|
+
elif args.command == "update":
|
|
84
|
+
_cmd_update()
|
|
80
85
|
elif args.command == "uninstall":
|
|
81
86
|
_cmd_uninstall()
|
|
82
87
|
elif args.command == "logs":
|
|
@@ -283,6 +288,37 @@ def _cmd_service(args: argparse.Namespace) -> None:
|
|
|
283
288
|
sys.exit(1)
|
|
284
289
|
|
|
285
290
|
|
|
291
|
+
def _cmd_update() -> None:
|
|
292
|
+
"""Update voiceio to the latest PyPI version."""
|
|
293
|
+
import subprocess
|
|
294
|
+
from voiceio import __version__
|
|
295
|
+
from voiceio.config import PYPI_NAME
|
|
296
|
+
|
|
297
|
+
is_pipx = "pipx" in sys.prefix
|
|
298
|
+
if is_pipx:
|
|
299
|
+
print(f"Current version: {__version__}")
|
|
300
|
+
print("Checking for updates...")
|
|
301
|
+
try:
|
|
302
|
+
result = subprocess.run(
|
|
303
|
+
["pipx", "upgrade", PYPI_NAME],
|
|
304
|
+
capture_output=True, text=True, timeout=60,
|
|
305
|
+
)
|
|
306
|
+
print(result.stdout.strip())
|
|
307
|
+
if result.returncode != 0 and result.stderr.strip():
|
|
308
|
+
print(result.stderr.strip(), file=sys.stderr)
|
|
309
|
+
sys.exit(1)
|
|
310
|
+
except FileNotFoundError:
|
|
311
|
+
print("pipx not found. Update manually: pipx upgrade " + PYPI_NAME, file=sys.stderr)
|
|
312
|
+
sys.exit(1)
|
|
313
|
+
except subprocess.TimeoutExpired:
|
|
314
|
+
print("Update timed out.", file=sys.stderr)
|
|
315
|
+
sys.exit(1)
|
|
316
|
+
else:
|
|
317
|
+
print("Not a pipx install. Update manually:")
|
|
318
|
+
print(f" pip install --upgrade {PYPI_NAME}")
|
|
319
|
+
sys.exit(1)
|
|
320
|
+
|
|
321
|
+
|
|
286
322
|
def _cmd_uninstall() -> None:
|
|
287
323
|
"""Remove all voiceio system integrations."""
|
|
288
324
|
import os
|
|
@@ -860,7 +860,7 @@ def run_wizard() -> None:
|
|
|
860
860
|
from voiceio.config import LOG_PATH
|
|
861
861
|
log_path = LOG_PATH
|
|
862
862
|
start_hint = (
|
|
863
|
-
|
|
863
|
+
" voiceio is running and will start automatically on login."
|
|
864
864
|
if autostart_idx == 0
|
|
865
865
|
else f" Start voiceio:\n {CYAN}voiceio{RESET}"
|
|
866
866
|
)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.2.3"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|