You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: rewrite README for a real release - user-facing, not implementation-facing
Rewritten from a development-log style (explaining Textual internals,
threading decisions, confirmation trails for every design choice) to a
straightforward pitch for someone deciding whether to install this:
what it does, why it's useful, how to use it. No more "Textual's own
built-in X" framing anywhere - what matters to a user is that F1 opens
a help panel and Ctrl+P opens a searchable command palette, not what
they're built with.
Added a new "Why this is worth having" section with concrete debugging
scenarios (seeing which skill actually answered a question and which
gave up, catching vocabulary gaps live, understanding fallback
behavior, checking pipeline order, restarting a stuck service) - the
kind of real value this tool provides day to day, not just a feature
list.
Softened the top banner from "actively under development, expect
frequent changes" to "actively maintained, stable core experience,
solid replacement for the old CLI clients today" - this is genuinely
usable now, not a preview.
Kept as-is per explicit request: the "Why not just fix ovos-cli-client
/ neon-cli-client" section (still accurate and relevant), the ASCII
layout diagram (renders everywhere, no image asset to maintain -
happy to add a real screenshot alongside it if one gets provided,
discussed but not something I can generate myself), the Docker/Podman
section, and the Category/Tags footer.
259 -> 128 lines. Verified the new content is correctly embedded as
the PyPI long_description via a real sdist->wheel build. No code
changes.
**🚧 Actively under development - expect frequent changes.** This is a
4
-
young project with ongoing design iteration (see git history/tags for
5
-
the pace of change); pin a specific version if you need stability, or
6
-
just `pip install --upgrade` regularly to stay current.
3
+
A split-pane terminal UI for talking to and debugging [OpenVoiceOS](https://www.openvoiceos.org/) without a microphone or speaker - type what you'd say, read what OVOS says back, and watch exactly what's happening on the message bus while it happens.
7
4
8
-
A split-pane terminal UI for testing OVOS without a mic/speaker - a
9
-
lightweight replacement for the unmaintained `ovos-cli-client` and the
10
-
broken `neon-cli-client` (whose `pyyaml~=5.4` dependency fails to build
11
-
on modern Python/setuptools).
5
+
Actively maintained. The core experience is stable today and it's a solid, working replacement for the old CLI clients - see the [comparison](#why-not-just-fix-ovos-cli-client--neon-cli-client) below. It'll keep picking up refinements and fixes, but you don't need to wait for a "1.0" to get real use out of it.
`gui.log`, `enclosure.log`, `phal.log`), each with its own color.
39
-
OVOS's own `TIMESTAMP - COMPONENT - ` prefix is stripped, and every
40
-
`[source]` tag is padded to the same width so message text lines up
41
-
in one column. Lines containing `ERROR` are bolded. Scrolled-up panes
42
-
(logs, conversation, activity) are never yanked back to the bottom by
43
-
incoming content - auto-scroll only re-engages once you're back at
44
-
the bottom yourself.
45
-
-**Sources** and **Log Levels** (DEBUG/INFO/WARNING/ERROR/CRITICAL)
46
-
are compact checkboxes directly in the main view, checked by
47
-
default, no modal needed - each category on its own single line.
48
-
-**Skills:** - click it, or press Enter when it's focused - opens the
49
-
Command Palette, where "Log: Skill" filters the log display
50
-
by skill_id (dynamically discovered the first time a skill_id is
51
-
seen in the log text - best-effort, not every skill-related line
52
-
mentions its own skill_id explicitly; unchecked by default, unlike
53
-
Sources/Levels, since this list is open-ended rather than short and
54
-
fixed). No modal for this anymore - see the Command Palette section
55
-
below.
30
+
Four panes at once: raw logs, a normal back-and-forth conversation, a live simplified feed of what's happening behind the scenes, and a text input that stands in for your voice. Everything updates in real time as OVOS processes what you type.
56
31
57
-
**Filter semantics:** an unchecked box does NOT mean "hidden" - it
58
-
means "not specifically filtered to". With nothing checked in a
59
-
category, nothing in that category is restricted and everything
60
-
shows. Checking one or more boxes restricts that category to only
61
-
the checked ones - independently per category, applying
62
-
retroactively to already-received lines too, same as the free-text
63
-
filter. Choices persist across sessions (`~/.config/ovos-tui-client/
64
-
state.json`), saved on quit.
65
-
-**F1**: toggles Textual's own built-in help panel - a genuine side
66
-
panel docked to the right, not a popup - combining this project's
67
-
own explanatory text (filter semantics, scroll behavior, the
68
-
no-popup-windows design) with a live, always-accurate list of every
69
-
current keybinding. No custom-built help screen to maintain
70
-
separately and let go stale. **F5-F8**: jump focus straight to
71
-
Logs / Conversation / Activity / the utterance input. There's no
72
-
F2/Services, F3/Skills, or F4/Skill-filter shortcut anymore -
73
-
service management, installed-skill listing/activation, AND the
74
-
log-display skill filter all moved entirely into the Command
75
-
Palette (below), with results written to the **conversation pane**
76
-
(dim/grey text) instead of a popup - this tool avoids modal windows
77
-
wherever an action doesn't inherently need its own screen.
78
-
-**Ctrl+P**: Textual's command palette - meant as a way to talk to/
79
-
control OVOS directly ("bagom"/behind the scenes), not just a
80
-
launcher for this tool's own popup screens. Every F1/F5-F8 action is
81
-
there too, fuzzy-searchable, but it also goes further. The palette
82
-
itself has no native grouping/submenus (confirmed - it's a flat
83
-
fuzzy-matched list in every command-palette implementation, not just
84
-
Textual's), so related commands share a literal prefix instead, so
85
-
typing that prefix clusters them together - and every action below
86
-
runs immediately, filtered in place as you type, with its result
87
-
written to the conversation pane - **no popup windows**:
88
-
-**`Log: `** - toggle any source/level/skill directly, e.g. "Log:
89
-
Source: skills", "Log: Level: ERROR", "Log:
90
-
Skill: ovos-skill-horoscope..." - same effect as clicking the
91
-
checkbox, without leaving the palette. Once at least one skill_id
92
-
has been seen, "Log: Select all skills" / "Log: Deselect all
-**Logs** - tails every OVOS service log it can find (bus, skills, audio, voice, GUI, PHAL, etc), color-coded by source, timestamps stripped for readability, errors bolded. Filter by source, log level, free text, or a specific skill - any combination, live, without restarting anything (with nothing checked in a category everything shows; checking one or more narrows to just those). Scroll up to read something and new lines won't yank you back down.
35
+
-**Conversation** - what you typed and what OVOS said back, plus quiet status lines for everything else this tool does (service restarts, skill toggles, startup info) kept visually distinct so they don't clutter the actual conversation.
36
+
-**Activity** - a simplified, human-readable feed of what's happening on the bus right now: which skill is handling the request, wake word and speech start/stop, which fallback skill caught something nothing else understood (and whether it actually resolved anything), and for content-reading requests specifically, which providers answered and at what confidence.
37
+
-**A searchable command palette** (`Ctrl+P`) for everything else - restart a stuck service, activate or deactivate a skill, check the intent pipeline order, or toggle any log filter - all searchable by typing, with results appearing right in the conversation pane instead of popup windows. A help panel (`F1`) covers the rest of the keybindings.
38
+
- Type what you'd say and press Enter, same as talking to a real OVOS device. Up/Down arrows browse what you've typed before, like shell history.
39
+
40
+
## Why this is worth having
41
+
42
+
Testing OVOS by voice means dealing with wake-word misfires, STT mistakes, and no visibility into *why* something did or didn't happen. Typing directly and watching the activity feed skips all of that - and makes some genuinely hard-to-see things visible:
43
+
44
+
-**See which skill actually answered - and which ones tried and gave up.** Ask a factual question and watch each candidate skill respond in real time, including the ones that came back empty - useful for figuring out why you got a weird or unhelpful answer instead of a good one.
45
+
-**Catch vocabulary gaps as you find them.** Type a phrasing you'd expect to work; if nothing responds, or the wrong skill claims it, that's immediately visible instead of a silent failure you'd only notice by accident.
46
+
-**Understand fallback behavior.** When nothing matches normally, OVOS asks a chain of fallback skills whether they can help - the activity feed shows exactly which one stepped in, and whether it actually resolved anything or just apologized.
47
+
-**Check the intent pipeline order without digging through config files.** Search "pipeline" in the command palette to see every matching stage in the exact order OVOS evaluates them.
48
+
-**Restart a stuck service in two keystrokes**, without switching to another terminal.
49
+
50
+
None of this requires working audio hardware, a wake word, or STT accuracy getting in the way - just type.
0 commit comments