@pellux/goodvibes-tui 0.23.0 → 0.24.1
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.
- package/CHANGELOG.md +34 -0
- package/README.md +20 -12
- package/docs/foundation-artifacts/operator-contract.json +304 -230
- package/package.json +2 -2
- package/src/cli/management.ts +80 -10
- package/src/core/long-task-notifier.ts +145 -0
- package/src/core/session-recovery.ts +147 -0
- package/src/core/stream-event-wiring.ts +77 -3
- package/src/core/transcript-journal.ts +339 -0
- package/src/core/turn-event-wiring.ts +67 -4
- package/src/input/commands/control-room-runtime.ts +0 -2
- package/src/input/commands/diff-runtime.ts +1 -1
- package/src/input/commands/eval.ts +1 -1
- package/src/input/commands/health-runtime.ts +23 -4
- package/src/input/commands/knowledge.ts +1 -1
- package/src/input/commands/local-runtime.ts +1 -2
- package/src/input/commands/memory-product-runtime.ts +2 -2
- package/src/input/commands/memory.ts +1 -1
- package/src/input/commands/onboarding-runtime.ts +0 -1
- package/src/input/commands/policy.ts +1 -1
- package/src/input/commands/profile-sync-runtime.ts +4 -3
- package/src/input/commands/provider.ts +1 -1
- package/src/input/commands/qrcode-runtime.ts +0 -1
- package/src/input/commands/session-content.ts +2 -2
- package/src/input/commands/session-workflow.ts +32 -2
- package/src/input/commands/session.ts +1 -1
- package/src/input/commands/settings-sync-runtime.ts +9 -9
- package/src/input/commands/shell-core.ts +2 -2
- package/src/input/commands/work-plan-runtime.ts +8 -8
- package/src/input/feed-context-factory.ts +6 -0
- package/src/input/handler-feed-routes.ts +19 -1
- package/src/input/handler-feed.ts +11 -0
- package/src/input/handler-prompt-buffer.ts +28 -0
- package/src/input/handler-shortcuts.ts +88 -2
- package/src/input/handler-ui-state.ts +2 -2
- package/src/input/handler.ts +39 -3
- package/src/input/keybindings.ts +33 -3
- package/src/input/kill-ring.ts +134 -0
- package/src/input/model-picker.ts +18 -1
- package/src/input/search.ts +18 -6
- package/src/input/settings-modal-activation.ts +134 -0
- package/src/input/settings-modal-adjustment.ts +124 -0
- package/src/input/settings-modal-data.ts +53 -0
- package/src/input/settings-modal.ts +48 -145
- package/src/main.ts +33 -33
- package/src/panels/base-panel.ts +2 -1
- package/src/panels/provider-health-domains.ts +3 -3
- package/src/panels/provider-health-panel.ts +13 -9
- package/src/panels/provider-health-tracker.ts +7 -4
- package/src/panels/settings-sync-panel.ts +3 -3
- package/src/panels/work-plan-panel.ts +2 -2
- package/src/renderer/diff-view.ts +2 -2
- package/src/renderer/help-overlay.ts +1 -0
- package/src/renderer/model-picker-overlay.ts +23 -11
- package/src/renderer/progress.ts +3 -3
- package/src/renderer/search-overlay.ts +8 -5
- package/src/renderer/settings-modal.ts +1 -1
- package/src/renderer/ui-factory.ts +11 -0
- package/src/runtime/bootstrap-hook-bridge.ts +18 -0
- package/src/runtime/bootstrap-shell.ts +1 -0
- package/src/shell/blocking-input.ts +32 -0
- package/src/shell/recovery-input-helpers.ts +71 -0
- package/src/utils/terminal-width.ts +10 -3
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,40 @@ All notable changes to GoodVibes TUI.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [0.24.1] — 2026-06-17
|
|
8
|
+
|
|
9
|
+
### Changes
|
|
10
|
+
- 1813b36d test: align suite with goodvibes-sdk 0.33.38 behavior
|
|
11
|
+
- 0ee3b615 chore: bump @pellux/goodvibes-sdk to 0.33.38
|
|
12
|
+
- 32a813e4 chore: untrack internal deep-dive notes (moved to .goodvibes/deepdives/)
|
|
13
|
+
- c73a3fcb docs: refresh README — version badge 0.24.0, SDK-extracted tools, test count
|
|
14
|
+
- ca262d5e docs: handoff updated — 0.24.0 confirmed live on npm
|
|
15
|
+
|
|
16
|
+
## [0.24.0] — 2026-06-12
|
|
17
|
+
|
|
18
|
+
Fourth best-in-class program release: the engineering-task backlog closed, crash durability made real, and the composer brought to readline parity. Every change passed independent review before commit.
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
- Added composer editing at readline parity: coalesced undo/redo (Ctrl+Z / Ctrl+Shift+Z with cursor restoration), a 32-entry kill ring (Ctrl+K/U, Alt+D, Ctrl+Shift+Y yank, Alt+Y yank-pop with emacs invalidation semantics), Unicode word navigation (Alt+B/F), and a line-count indicator rendered inside the prompt border so footer height never jumps.
|
|
22
|
+
- Added transcript search navigation: n/N next/previous in locked search mode, an honest (wrap) marker on the match count, and the bindings documented in both help overlays.
|
|
23
|
+
- Added a SIGKILL-proof transcript journal: fsync-per-record append-only log between snapshots, with replay wired into every resume seam — command resume, Ctrl+R crash recovery, and panel resume — proven by real-seam tests.
|
|
24
|
+
- Added push notifications for long-running turns (behavior.notifyAfterSeconds): desktop and webhook delivery with metadata only — conversation text can never leak, pinned by literal and compile-time assertions.
|
|
25
|
+
- Added one-key retry from turn errors: r re-submits through the shared failover snapshot path (never a duplicate user message), m opens the model picker; the exhausted-chain notice says plainly that r reuses the same provider.
|
|
26
|
+
- Added /health term: real terminal-capability posture in the doctor surface.
|
|
27
|
+
- Added command grammar conventions enforced by a live-registry lint; settingssync/profilesync/workplan renamed to kebab-case primaries with the old names kept as aliases.
|
|
28
|
+
|
|
29
|
+
### Fixes
|
|
30
|
+
- Fixed wide-character padding in diff headers, progress rows, and panel spinners (ANSI-aware width everywhere); width-utility docs state the per-code-point contract honestly.
|
|
31
|
+
- Fixed the /pin collision by naming the session-memory command /keep; model favorites keep /pin.
|
|
32
|
+
- Deflaked the websocket reconnect test with a deadline poll.
|
|
33
|
+
|
|
34
|
+
### Internal
|
|
35
|
+
- Architecture gate detects import cycles (Tarjan SCC, proven against an injected scratch cycle) and enforces 8 directional layer rules; the conversation/system-message-router cycle is genuinely broken.
|
|
36
|
+
- Golden-frame harness pins four renderer surfaces with regen-stable committed snapshots; CI fails on a missing golden.
|
|
37
|
+
- Release pipeline: live verifier runs warn-only in validation, a release-blocking macOS smoke job covers the darwin-arm64 binaries, and release.ts runs all six gates pre-tag.
|
|
38
|
+
- Auth listener behavior pinned by 18 live tests; whole-suite single-process run verified clean (8978 tests); settings-modal split into activation/adjustment modules; CLI management helpers deduplicated.
|
|
39
|
+
- Inline terminal images (Kitty/iTerm2/sixel) explicitly canned by owner decision — images stay as [image N] slugs for identical behavior in every terminal.
|
|
40
|
+
|
|
7
41
|
## [0.23.0] — 2026-06-12
|
|
8
42
|
|
|
9
43
|
Third best-in-class program release: provider failover on the turn path, the context/compaction surface completed, the E20 export track closed, and the renderer pinned by golden frames. Every change passed independent review before commit.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/mgd34msu/goodvibes-tui/actions/workflows/ci.yml)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
[](https://github.com/mgd34msu/goodvibes-tui)
|
|
6
6
|
|
|
7
7
|
A terminal-native AI coding, operations, automation, knowledge, and integration console with a typed runtime, omnichannel surfaces, structured memory/knowledge, and a raw ANSI renderer.
|
|
8
8
|
|
|
@@ -803,7 +803,7 @@ Key commands:
|
|
|
803
803
|
- `/update`
|
|
804
804
|
- `/trust`
|
|
805
805
|
- `/bridge`
|
|
806
|
-
- `/
|
|
806
|
+
- `/profile-sync`
|
|
807
807
|
|
|
808
808
|
The setup surface is also broader than a single readiness screen:
|
|
809
809
|
|
|
@@ -848,7 +848,7 @@ GoodVibes includes an automation layer with:
|
|
|
848
848
|
- cron-like scheduled agent tasks with timezone-aware schedules, missed-run tracking, run history, and manual trigger support
|
|
849
849
|
- TUI-owned project planning with readiness gaps, one-question-at-a-time clarification, project language, decision records, task/dependency/verification metadata, and explicit execution approval
|
|
850
850
|
- planning commands with project-planning inspection, active-plan review, and mode/explain/override/status controls
|
|
851
|
-
- persistent work-plan tracking for concrete task checklists via `/
|
|
851
|
+
- persistent work-plan tracking for concrete task checklists via `/work-plan`
|
|
852
852
|
|
|
853
853
|
Key commands:
|
|
854
854
|
|
|
@@ -874,7 +874,7 @@ Key commands:
|
|
|
874
874
|
|
|
875
875
|
- `/services inspect|test|resolve|auth|auth-review|doctor|export|import`
|
|
876
876
|
- `/profiles`
|
|
877
|
-
- `/
|
|
877
|
+
- `/profile-sync`
|
|
878
878
|
- `/setup transfer export|inspect|import`
|
|
879
879
|
|
|
880
880
|
Service entries can use existing `tokenKey` fields, a SecretRef in the key field, or explicit `tokenRef` / `passwordRef` / `webhookUrlRef` / `signingSecretRef` / `publicKeyRef` / `appTokenRef` fields:
|
|
@@ -1281,7 +1281,7 @@ Those pieces cover conversation-noise routing, panel-health/performance budgets,
|
|
|
1281
1281
|
| `/git [action]` | `/g` | Git commands: status, log, diff. Opens git panel if no action given |
|
|
1282
1282
|
| `/scan` | — | Scan for local LLM servers |
|
|
1283
1283
|
| `/plan [goal]` | — | Inspect or seed TUI-owned project planning state; `panel`, `approve`, `list`, and `show <id>` are supported |
|
|
1284
|
-
| `/
|
|
1284
|
+
| `/work-plan [action]` | `/wp`, `/todo` | Open or update the persistent workspace work-plan checklist |
|
|
1285
1285
|
| `/panel [action]` | `/panels` | Panel management: open, close, list, toggle, move, focus, split, width, height |
|
|
1286
1286
|
| `/plugin [action]` | — | Manage plugins (enable/disable/reload/list) |
|
|
1287
1287
|
| `/marketplace [action]` | — | Browse curated plugin, skill, hook-pack, and policy-pack surfaces |
|
|
@@ -1333,14 +1333,23 @@ All shortcuts are customizable via `~/.goodvibes/tui/keybindings.json`. Use `/ke
|
|
|
1333
1333
|
| `Enter` | Send message |
|
|
1334
1334
|
| `Shift+Enter` | Insert newline |
|
|
1335
1335
|
| `Tab` | Toggle block collapse / path completion |
|
|
1336
|
-
| `Ctrl+U` |
|
|
1337
|
-
| `
|
|
1338
|
-
| `Ctrl+
|
|
1336
|
+
| `Ctrl+U` | Kill to start of line (push to kill ring) |
|
|
1337
|
+
| `Alt+U` | Clear entire prompt |
|
|
1338
|
+
| `Ctrl+W` | Kill word backward (push to kill ring) |
|
|
1339
|
+
| `Ctrl+K` | Kill to end of line (push to kill ring) |
|
|
1340
|
+
| `Alt+D` | Kill word forward (push to kill ring) |
|
|
1341
|
+
| `Ctrl+Shift+Y` | Yank from kill ring |
|
|
1342
|
+
| `Alt+Y` | Yank-pop (rotate kill ring, replace last yank) |
|
|
1343
|
+
| `Alt+B` | Move word backward |
|
|
1344
|
+
| `Alt+F` | Move word forward |
|
|
1339
1345
|
| `Ctrl+Z` | Undo prompt edit |
|
|
1340
1346
|
| `Ctrl+Shift+Z` | Redo prompt edit |
|
|
1341
1347
|
| `Ctrl+V` | Paste (image or text) |
|
|
1342
1348
|
| `@` | Open file picker (insert file path) |
|
|
1343
1349
|
| `?` | Open help/command picker (empty prompt) |
|
|
1350
|
+
| `r` / `m` | After a turn error: retry the turn / open the model picker (any other key dismisses) |
|
|
1351
|
+
|
|
1352
|
+
> **Note:** `Ctrl+W` uses whitespace-delimited word boundaries (readline/unix-word-rubout semantics), while `Alt+D`, `Alt+B`, and `Alt+F` use Unicode word boundaries (letters, digits, underscore).
|
|
1344
1353
|
|
|
1345
1354
|
### Navigation
|
|
1346
1355
|
|
|
@@ -1607,7 +1616,7 @@ src/
|
|
|
1607
1616
|
├── renderer/ / panels/ — raw ANSI UI, overlays, control rooms, panel workspaces
|
|
1608
1617
|
├── input/ — slash commands, keybindings, prompt/input routing
|
|
1609
1618
|
├── providers/ — native providers, compat providers, discovery, synthetic failover, model catalog
|
|
1610
|
-
├── tools/ — built-in
|
|
1619
|
+
├── tools/ — re-export of SDK-provided built-in tools plus TUI-local tool guards
|
|
1611
1620
|
├── agents/ — in-process agents, WRFC, archetypes, worktrees, reports
|
|
1612
1621
|
├── automation/ — schedules, routes, job persistence, managed automation runtime
|
|
1613
1622
|
├── channels/ / adapters/ — channel plugins, reply pipeline, delivery routing, webhook adapters
|
|
@@ -1655,7 +1664,7 @@ bun run dev
|
|
|
1655
1664
|
bun test
|
|
1656
1665
|
```
|
|
1657
1666
|
|
|
1658
|
-
|
|
1667
|
+
8,500+ tests across contract, security, release gate, runtime, renderer, panel, integration, and UX anti-regression suites. Performance budget gate runs as part of CI — the build fails if any of the 5 perf budgets (store update latency, event dispatch latency, tool execution overhead, compaction duration, startup time) are exceeded.
|
|
1659
1668
|
|
|
1660
1669
|
### Build standalone binary
|
|
1661
1670
|
|
|
@@ -1666,8 +1675,7 @@ bun run build
|
|
|
1666
1675
|
|
|
1667
1676
|
### Project structure conventions
|
|
1668
1677
|
|
|
1669
|
-
-
|
|
1670
|
-
- Tool parameter schemas live in `src/tools/<name>/schema.ts`
|
|
1678
|
+
- Built-in tool implementations and parameter schemas live in the extracted `@pellux/goodvibes-sdk` package (`@pellux/goodvibes-sdk/platform/tools`); `src/tools/` re-exports `registerAllTools` and keeps only TUI-local pieces such as the WRFC agent guard
|
|
1671
1679
|
- Tests mirror the source tree under `src/test/`
|
|
1672
1680
|
- Project runtime data such as sessions, hooks, MCP config, artifacts, and local state lives under `.goodvibes/` in the working directory
|
|
1673
1681
|
- Global TUI settings live in `~/.goodvibes/tui/settings.json`; project overrides live in `.goodvibes/tui/settings.json`
|