@pellux/goodvibes-tui 1.1.0 → 1.9.0
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 +85 -21
- package/README.md +28 -18
- package/docs/foundation-artifacts/operator-contract.json +4045 -1763
- package/package.json +2 -2
- package/src/audio/spoken-turn-controller.ts +12 -2
- package/src/audio/spoken-turn-wiring.ts +2 -1
- package/src/cli/help.ts +8 -1
- package/src/cli/service-posture.ts +2 -1
- package/src/cli/status.ts +2 -1
- package/src/cli/surface-command.ts +2 -2
- package/src/core/alert-gating.ts +67 -0
- package/src/core/approval-alert.ts +72 -0
- package/src/core/budget-breach-notifier.ts +106 -0
- package/src/core/composer-state.ts +11 -3
- package/src/core/conversation-line-cache.ts +27 -3
- package/src/core/conversation-rendering.ts +90 -14
- package/src/core/conversation.ts +18 -0
- package/src/core/focus-tracker.ts +41 -0
- package/src/core/long-task-notifier.ts +33 -6
- package/src/core/stream-event-wiring.ts +20 -1
- package/src/core/system-message-noise.ts +87 -0
- package/src/core/system-message-router.ts +104 -51
- package/src/core/turn-cancellation.ts +25 -0
- package/src/core/turn-event-wiring.ts +72 -3
- package/src/daemon/cli.ts +29 -2
- package/src/daemon/handlers/register.ts +8 -1
- package/src/daemon/service-commands.ts +329 -0
- package/src/export/cost-utils.ts +36 -0
- package/src/input/autocomplete.ts +27 -1
- package/src/input/command-registry.ts +84 -5
- package/src/input/commands/checkpoint-runtime.ts +280 -0
- package/src/input/commands/codebase-runtime.ts +232 -0
- package/src/input/commands/config.ts +43 -3
- package/src/input/commands/eval.ts +1 -1
- package/src/input/commands/health-runtime.ts +10 -2
- package/src/input/commands/image-runtime.ts +112 -0
- package/src/input/commands/intelligence-runtime.ts +11 -1
- package/src/input/commands/local-auth-runtime.ts +4 -1
- package/src/input/commands/local-runtime.ts +9 -3
- package/src/input/commands/marketplace-runtime.ts +2 -2
- package/src/input/commands/memory.ts +73 -35
- package/src/input/commands/operator-panel-runtime.ts +71 -31
- package/src/input/commands/planning-runtime.ts +116 -4
- package/src/input/commands/platform-sandbox-runtime.ts +1 -6
- package/src/input/commands/plugin-runtime.ts +2 -2
- package/src/input/commands/policy-dispatch.ts +21 -0
- package/src/input/commands/provider-accounts-runtime.ts +1 -1
- package/src/input/commands/qrcode-runtime.ts +26 -6
- package/src/input/commands/recall-review.ts +35 -0
- package/src/input/commands/remote-runtime-setup.ts +5 -3
- package/src/input/commands/remote-runtime.ts +3 -3
- package/src/input/commands/runtime-services.ts +54 -13
- package/src/input/commands/services-runtime.ts +1 -1
- package/src/input/commands/session-content.ts +20 -9
- package/src/input/commands/session-workflow.ts +16 -1
- package/src/input/commands/settings-sync-runtime.ts +16 -4
- package/src/input/commands/shell-core.ts +25 -8
- package/src/input/commands/skills-runtime.ts +2 -8
- package/src/input/commands/subscription-runtime.ts +2 -2
- package/src/input/commands/test-runtime.ts +277 -0
- package/src/input/commands/websearch-runtime.ts +101 -0
- package/src/input/commands/work-plan-runtime.ts +36 -10
- package/src/input/commands/workstream-runtime.ts +488 -0
- package/src/input/commands.ts +12 -0
- package/src/input/config-modal-types.ts +175 -0
- package/src/input/config-modal.ts +592 -0
- package/src/input/feed-context-factory.ts +10 -8
- package/src/input/handler-command-route.ts +37 -20
- package/src/input/handler-content-actions.ts +17 -2
- package/src/input/handler-feed-routes.ts +74 -114
- package/src/input/handler-feed.ts +79 -27
- package/src/input/handler-interactions.ts +1 -3
- package/src/input/handler-modal-routes.ts +136 -6
- package/src/input/handler-modal-stack.ts +14 -7
- package/src/input/handler-modal-token-routes.ts +16 -49
- package/src/input/handler-onboarding-daemon-adopt.ts +149 -0
- package/src/input/handler-onboarding.ts +71 -59
- package/src/input/handler-picker-routes.ts +26 -102
- package/src/input/handler-shortcuts.ts +74 -14
- package/src/input/handler-types.ts +2 -6
- package/src/input/handler-ui-state.ts +10 -22
- package/src/input/handler.ts +12 -29
- package/src/input/keybindings.ts +23 -8
- package/src/input/model-picker-types.ts +24 -6
- package/src/input/model-picker.ts +77 -2
- package/src/input/onboarding/onboarding-runtime-status.ts +10 -1
- package/src/input/onboarding/onboarding-wizard-apply.ts +8 -1
- package/src/input/onboarding/onboarding-wizard-constants.ts +4 -1
- package/src/input/onboarding/onboarding-wizard-network-adopt.ts +136 -0
- package/src/input/onboarding/onboarding-wizard-steps.ts +9 -6
- package/src/input/onboarding/onboarding-wizard-types.ts +3 -1
- package/src/input/panel-integration-actions.ts +9 -170
- package/src/input/panel-mouse-geometry.ts +97 -0
- package/src/input/panel-paste-flood-guard.ts +86 -0
- package/src/input/selection-modal.ts +11 -0
- package/src/input/session-picker-modal.ts +44 -4
- package/src/input/settings-modal-data.ts +146 -2
- package/src/input/settings-modal-mutations.ts +6 -4
- package/src/input/settings-modal-types.ts +4 -2
- package/src/main.ts +49 -51
- package/src/panels/agent-inspector-shared.ts +2 -1
- package/src/panels/base-panel.ts +22 -1
- package/src/panels/builtin/agent.ts +21 -107
- package/src/panels/builtin/development.ts +15 -61
- package/src/panels/builtin/knowledge.ts +8 -32
- package/src/panels/builtin/operations.ts +84 -428
- package/src/panels/builtin/session.ts +21 -112
- package/src/panels/builtin/shared.ts +18 -46
- package/src/panels/builtin-modals.ts +218 -0
- package/src/panels/builtin-panels.ts +5 -0
- package/src/panels/cost-tracker-panel.ts +36 -10
- package/src/panels/diff-panel.ts +12 -43
- package/src/panels/eval-registry.ts +60 -0
- package/src/panels/fleet-deep-link.ts +31 -0
- package/src/panels/fleet-panel-format.ts +62 -0
- package/src/panels/fleet-panel-worktree-detail.ts +48 -0
- package/src/panels/fleet-panel.ts +758 -0
- package/src/panels/fleet-read-model.ts +520 -0
- package/src/panels/fleet-steer.ts +125 -0
- package/src/panels/fleet-stop.ts +153 -0
- package/src/panels/fleet-tabs.ts +230 -0
- package/src/panels/fleet-transcript.ts +356 -0
- package/src/panels/index.ts +7 -31
- package/src/panels/modals/hooks-modal.ts +187 -0
- package/src/panels/modals/keybindings-modal.ts +166 -0
- package/src/panels/modals/knowledge-modal.ts +158 -0
- package/src/panels/modals/local-auth-modal.ts +132 -0
- package/src/panels/modals/marketplace-modal.ts +218 -0
- package/src/panels/modals/memory-modal.ts +180 -0
- package/src/panels/modals/modal-surface-helpers.ts +54 -0
- package/src/panels/modals/modal-theme.ts +42 -0
- package/src/panels/modals/pairing-modal.ts +163 -0
- package/src/panels/modals/planning-modal.ts +304 -0
- package/src/panels/modals/plugins-modal.ts +174 -0
- package/src/panels/modals/policy-modal.ts +256 -0
- package/src/panels/modals/provider-health-modal.ts +136 -0
- package/src/panels/modals/remote-modal.ts +115 -0
- package/src/panels/modals/sandbox-modal.ts +150 -0
- package/src/panels/modals/security-modal.ts +217 -0
- package/src/panels/modals/services-modal.ts +179 -0
- package/src/panels/modals/settings-sync-modal.ts +142 -0
- package/src/panels/modals/skills-modal.ts +189 -0
- package/src/panels/modals/subscription-modal.ts +172 -0
- package/src/panels/modals/work-plan-modal.ts +177 -0
- package/src/panels/panel-confirm-overlay.ts +72 -0
- package/src/panels/panel-manager.ts +123 -9
- package/src/panels/polish-core.ts +38 -25
- package/src/panels/project-planning-answer-actions.ts +8 -11
- package/src/panels/skills-panel.ts +7 -51
- package/src/panels/types.ts +37 -0
- package/src/permissions/hunk-selection.ts +179 -0
- package/src/permissions/prompt.ts +216 -13
- package/src/renderer/autocomplete-overlay.ts +28 -2
- package/src/renderer/compaction-history-modal.ts +19 -3
- package/src/renderer/compaction-preview.ts +13 -2
- package/src/renderer/compaction-quality.ts +100 -0
- package/src/renderer/compositor.ts +2 -3
- package/src/renderer/config-modal.ts +95 -0
- package/src/renderer/conversation-overlays.ts +10 -17
- package/src/renderer/fleet-tab-strip.ts +56 -0
- package/src/renderer/footer-tips.ts +15 -3
- package/src/renderer/fullscreen-primitives.ts +32 -22
- package/src/renderer/git-status.ts +43 -1
- package/src/renderer/help-overlay.ts +2 -2
- package/src/renderer/layout.ts +0 -4
- package/src/renderer/markdown.ts +7 -3
- package/src/renderer/modal-factory.ts +25 -20
- package/src/renderer/model-workspace.ts +62 -4
- package/src/renderer/overlay-box.ts +21 -17
- package/src/renderer/panel-workspace-bar.ts +8 -2
- package/src/renderer/process-indicator.ts +14 -3
- package/src/renderer/selection-modal-overlay.ts +6 -1
- package/src/renderer/session-picker-modal.ts +196 -3
- package/src/renderer/settings-modal-helpers.ts +2 -0
- package/src/renderer/settings-modal.ts +7 -0
- package/src/renderer/shell-surface.ts +8 -1
- package/src/renderer/status-glyphs.ts +14 -15
- package/src/renderer/system-message.ts +15 -3
- package/src/renderer/terminal-bg-probe.ts +339 -0
- package/src/renderer/terminal-escapes.ts +20 -0
- package/src/renderer/theme-mode-config.ts +67 -0
- package/src/renderer/theme.ts +91 -1
- package/src/renderer/thinking.ts +11 -3
- package/src/renderer/tool-call.ts +15 -9
- package/src/renderer/tool-result-summary.ts +148 -0
- package/src/renderer/turn-injection.ts +133 -0
- package/src/renderer/ui-factory.ts +154 -85
- package/src/renderer/ui-primitives.ts +30 -129
- package/src/runtime/bootstrap-command-context.ts +27 -1
- package/src/runtime/bootstrap-command-parts.ts +41 -10
- package/src/runtime/bootstrap-core.ts +47 -15
- package/src/runtime/bootstrap-hook-bridge.ts +7 -0
- package/src/runtime/bootstrap-shell.ts +48 -17
- package/src/runtime/bootstrap.ts +129 -22
- package/src/runtime/code-index-services.ts +135 -0
- package/src/runtime/legacy-daemon-migration.ts +516 -0
- package/src/runtime/memory-fold.ts +26 -0
- package/src/runtime/onboarding/derivation.ts +7 -2
- package/src/runtime/onboarding/snapshot.ts +27 -1
- package/src/runtime/onboarding/types.ts +31 -1
- package/src/runtime/operator-token-cleanup.ts +82 -1
- package/src/runtime/orchestrator-core-services.ts +59 -0
- package/src/runtime/process-lifecycle.ts +3 -1
- package/src/runtime/resume-notice.ts +209 -0
- package/src/runtime/services.ts +98 -46
- package/src/runtime/session-inbound-inputs.ts +252 -0
- package/src/runtime/session-spine-transport.ts +64 -0
- package/src/runtime/terminal-output-guard.ts +15 -8
- package/src/runtime/ui-services.ts +27 -3
- package/src/runtime/workstream-services.ts +327 -0
- package/src/runtime/wrfc-persistence.ts +124 -17
- package/src/shell/blocking-input.ts +68 -4
- package/src/shell/recovery-input-helpers.ts +170 -1
- package/src/shell/ui-openers.ts +171 -26
- package/src/utils/format-duration.ts +8 -18
- package/src/utils/splash-lines.ts +1 -1
- package/src/utils/terminal-width.ts +52 -0
- package/src/version.ts +1 -1
- package/src/panels/agent-inspector-panel.ts +0 -786
- package/src/panels/approval-panel.ts +0 -252
- package/src/panels/automation-control-panel.ts +0 -479
- package/src/panels/cockpit-panel.ts +0 -481
- package/src/panels/cockpit-read-model.ts +0 -238
- package/src/panels/communication-panel.ts +0 -256
- package/src/panels/control-plane-panel.ts +0 -470
- package/src/panels/debug-panel.ts +0 -615
- package/src/panels/docs-panel.ts +0 -384
- package/src/panels/eval-panel.ts +0 -627
- package/src/panels/file-explorer-panel.ts +0 -673
- package/src/panels/file-preview-panel.ts +0 -517
- package/src/panels/hooks-panel.ts +0 -401
- package/src/panels/incident-review-panel.ts +0 -406
- package/src/panels/intelligence-panel.ts +0 -383
- package/src/panels/knowledge-graph-panel.ts +0 -515
- package/src/panels/marketplace-panel.ts +0 -399
- package/src/panels/memory-panel.ts +0 -558
- package/src/panels/ops-control-panel.ts +0 -329
- package/src/panels/ops-strategy-panel.ts +0 -321
- package/src/panels/orchestration-panel.ts +0 -465
- package/src/panels/panel-list-panel.ts +0 -566
- package/src/panels/plan-dashboard-panel.ts +0 -707
- package/src/panels/policy-panel.ts +0 -517
- package/src/panels/project-planning-panel.ts +0 -731
- package/src/panels/provider-health-panel.ts +0 -678
- package/src/panels/provider-health-tracker.ts +0 -310
- package/src/panels/provider-health-views.ts +0 -567
- package/src/panels/qr-panel.ts +0 -280
- package/src/panels/remote-panel.ts +0 -534
- package/src/panels/routes-panel.ts +0 -241
- package/src/panels/sandbox-panel.ts +0 -456
- package/src/panels/security-panel.ts +0 -447
- package/src/panels/services-panel.ts +0 -329
- package/src/panels/session-browser-panel.ts +0 -496
- package/src/panels/settings-sync-panel.ts +0 -398
- package/src/panels/subscription-panel.ts +0 -342
- package/src/panels/symbol-outline-panel.ts +0 -619
- package/src/panels/system-messages-panel.ts +0 -364
- package/src/panels/tasks-panel.ts +0 -608
- package/src/panels/thinking-panel.ts +0 -333
- package/src/panels/tool-inspector-panel.ts +0 -537
- package/src/panels/work-plan-panel.ts +0 -540
- package/src/panels/worktree-panel.ts +0 -360
- package/src/panels/wrfc-panel.ts +0 -790
- package/src/renderer/agent-detail-modal.ts +0 -466
- package/src/renderer/live-tail-modal.ts +0 -156
- package/src/renderer/process-modal.ts +0 -671
- package/src/renderer/qr-renderer.ts +0 -120
package/CHANGELOG.md
CHANGED
|
@@ -4,29 +4,93 @@ All notable changes to GoodVibes TUI.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.7.0] — 2026-07-04
|
|
8
|
+
|
|
9
|
+
The evolution release: six batched development cycles (internal 1.2.0–1.6.0, which were never published) land together as one public version. The through-line is a product that reports the truth about itself — reversible edits you can actually undo, a live fleet you can watch and steer, orchestration that runs the plan it showed you, memory that demonstrably enters the turns it claims to, and a panel surface cut down to the consoles that earn their place. Ships against @pellux/goodvibes-sdk 0.38.0.
|
|
10
|
+
|
|
11
|
+
### Reversibility and checkpoints
|
|
12
|
+
- Workspace checkpoints with `/checkpoints`, `/checkpoint`, and `/rewind`: snapshot the working tree, list snapshots newest-first, and preview-then-restore files from any checkpoint (files only — conversation history is left untouched). Backed by the SDK's `WorkspaceCheckpointManager` and wired through TUI services, with guards so an unguarded checkpoint call can no longer surface as a silent unhandled rejection.
|
|
13
|
+
- Per-hunk accept/reject for multi-edit approval prompts: when one approval covers several hunks you accept or reject each individually, and the decision is honored end-to-end instead of being all-or-nothing.
|
|
14
|
+
- `/test` runs the project test script and shows real pass/fail results, parsing both the SDK runner output and plain `bun test` output (per-test counts and the names of failing tests); the end state persists in the transcript instead of evaporating.
|
|
15
|
+
- Manual `/compact` now hands the compaction subagent the real original task and the full agent roster, so the handoff summary is accurate.
|
|
16
|
+
|
|
17
|
+
### Fleet observability, session tabs, and steering
|
|
18
|
+
- A live Fleet panel over the real SDK process/agent registry: a process tree with per-node live states, honest cost, id-anchored selection that survives list churn, and capability-gated interrupt/kill actions. It is the fast-access surface below the prompt and the home of `F2`, `Ctrl+O`, and the footer `[Enter]`.
|
|
19
|
+
- Unfocused-user alerts that actually reach you when GoodVibes is in a background terminal: budget breach, agent/chain failure, awaiting-approval, and long-task notices, gated on real terminal-focus tracking (CSI 1004) with an honest "unknown" fallback.
|
|
20
|
+
- Live transcript tabs over the conversation snapshot bridge: attach to a running agent, browse its transcript read-only (with reserved-notice honesty), detach without killing it, and see interrupted vs. killed as distinct states with a frozen elapsed clock.
|
|
21
|
+
- A steering composer with a `queued` / `consumed` / `dropped` badge: send an instruction to a running agent and see honestly whether it was picked up, with TTL and ordering guards, and the consumed signal deferred until the steered turn actually succeeds.
|
|
22
|
+
|
|
23
|
+
### Workstream orchestration
|
|
24
|
+
- `/workstream` authoring and oversight for multi-phase agent work: phases are insertable structure (float-ordinal ordering), work items flow to free capacity, and each item commits inside its own worktree through the scoped-commit machinery. The authoring view renders the real plan, so the proposal and the launched run can never disagree.
|
|
25
|
+
- Resume-prefix replay with crash-artifact reconciliation: an interrupted workstream re-queues its in-phase items on resume instead of double-running or dropping them.
|
|
26
|
+
- Budgets that refuse rather than kill, with a recovery path, and cooperative cancellation that reaches real child processes.
|
|
27
|
+
- Fleet-tree nesting for workstreams, plus pause/resume support.
|
|
28
|
+
|
|
29
|
+
### Passive memory and the code index
|
|
30
|
+
- Durable memory demonstrably enters both agent turns and the main-session turn: per-turn retrieval is budgeted (800 tokens by default, floor 95), flag-gated, and inspectable — `/recall injections` shows exactly which records would be injected for a task and why, defaulting to the main-session ring.
|
|
31
|
+
- A repo source-tree code index with honest bounds and labeling: `/codebase build`, `/codebase status`, and `/codebase search`.
|
|
32
|
+
- Compaction quality scoring and a corrected capacity-percentage in the compaction path.
|
|
33
|
+
- The model picker gained an embeddings target, so the memory index's embedding provider is selectable alongside chat models.
|
|
34
|
+
|
|
35
|
+
### The panel purge and config modals
|
|
36
|
+
- The panel surface was cut from roughly 50 panels to 6 surviving consoles — the Fleet hub plus git, diff, cost, tokens, and local-auth — with 19 configuration and review surfaces re-homed onto a single liveness-enforcing config-modal host. Heavy operator state that used to sprawl across dozens of panels now opens as a focused modal.
|
|
37
|
+
- Every retired panel id resolves honestly: old ids become aliases, modal redirects, or friendly "this moved" notices, so `/panel open <id>` and saved layouts never silently point at nothing.
|
|
38
|
+
- Live panels stay subscribed while open and now repaint while the main thread is idle, so agent, tool, and thinking updates no longer look frozen.
|
|
39
|
+
|
|
40
|
+
### Keymap and focus honesty
|
|
41
|
+
- The keymap advertises what it actually does: `Ctrl+PageUp` / `Ctrl+PageDown` move between panel tabs (`Ctrl+[` was removed — it is byte `0x1B` and collided with Escape, so it never fired reliably; `Ctrl+]` remains a next-tab chord), `Ctrl+O` and `F2` both open and focus the Fleet panel (the retired Ops Control and process modals fold into it), and `Ctrl+C` honestly advertises the double-press to quit.
|
|
42
|
+
- Focus routing was fixed at the root: multi-character paste is detected per token instead of by a per-feed character-sum heuristic, and keyboard focus transfers only on an explicit request — so typed text no longer leaks into single-letter panel hotkeys.
|
|
43
|
+
|
|
44
|
+
### Control-plane truth
|
|
45
|
+
- The control plane reports real lifecycle: a `stopping…` state while a process winds down, pause↔resume (including `/schedule` jobs shown in the fleet tree), zombie reaping, and a dirty-residue commit guard so an interrupted scoped commit cannot leave stray changes behind.
|
|
46
|
+
|
|
47
|
+
### New commands
|
|
48
|
+
- `/search <query> [--limit <n>]` — search the web and render ranked results with source labels.
|
|
49
|
+
- `/imagine <prompt>` — generate an image from a prompt (distinct from `/image`, which attaches an existing image file; the two names collided and the generator was renamed).
|
|
50
|
+
- `/workstream` — author and oversee multi-phase agent workstreams.
|
|
51
|
+
- `/checkpoints`, `/checkpoint`, `/rewind` — workspace checkpoint list / create / restore.
|
|
52
|
+
- `/codebase` — build, inspect, and search the repo source-tree code index.
|
|
53
|
+
- `/test` — run the project test script and show pass/fail.
|
|
54
|
+
- `/recall injections` — inspect the memory records that would be injected for a task.
|
|
55
|
+
|
|
56
|
+
### Notable fixes
|
|
57
|
+
- Clearing a feature-flag override back to default now removes it from disk instead of persisting a redundant entry.
|
|
58
|
+
- The `paused` process state renders with its own glyph and tone in the fleet tree.
|
|
59
|
+
- Planning: dismissing a planning action no longer corrupts the project goal; the `sessions` front door opens the session picker; `/panel open` reports redirects and deleted ids honestly.
|
|
60
|
+
- `Escape` cancel-first precedence and live git-init header refresh, so a directory becomes a recognized repo without a restart.
|
|
61
|
+
|
|
62
|
+
### Internal
|
|
63
|
+
- SDK dependency 0.36.0 → 0.38.0 (through 0.37.0 / 0.37.1 / 0.37.2); foundation artifacts regenerated against the released SDK.
|
|
64
|
+
- A release-blocking gate requires the SDK pin, the lockfile resolution, and the installed package to all agree, plus a source-import sweep that fails on any non-npm SDK import — so the local-SDK development overlay can never ship.
|
|
65
|
+
- Test suite at 639 files green; coverage, performance, architecture, and eval-regression gates enforced on every cycle. Each wave was verified with the full gate block, a three-lens adversarial review, and a live tmux replay of its pillar scenarios.
|
|
66
|
+
|
|
7
67
|
## [1.1.0] — 2026-07-03
|
|
8
68
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
|
|
69
|
+
Wave 0 of the post-1.0 evolution effort: trust repairs. Every change closes a defect found by live dogfooding v1.0.0 where the product reported something other than the truth. Ships against @pellux/goodvibes-sdk 0.36.0 (same effort, SDK side).
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
- Failing commands are visible again: the SDK masked every command-level failure as "Error: Unknown error", so a red test suite was literally invisible to the model — it would honestly conclude "no failure observed" while your tests were failing. Exit code, stdout, and stderr now reach the model byte-faithfully, and long-output truncation keeps the tail (where test runners print failures) instead of the head. Verified live: the model reads a sabotaged test's actual assertion diff and fixes the right side.
|
|
73
|
+
- Agent auto-commits are scoped: a WRFC chain used to `git add --all`, sweeping your unrelated dirty files into its commit with a truncated message. Commits now include only chain-touched files, with full accurate messages, under a new policy config (`off | scoped | all`, default scoped). Verified live with bait files.
|
|
74
|
+
- Agent chains can no longer die silently: transport failures surface a reasoned failure state in the transcript and status strip, with one bounded automatic retry.
|
|
75
|
+
- Panels work during turns: Ctrl+P / F2 / the status-strip Enter were dead exactly while agents ran — the Inspector was unreachable whenever there was something to inspect. Verified live mid-chain.
|
|
76
|
+
- Panels no longer eat typed text: multi-character input routes to the composer instead of being silently consumed as single-letter panel hotkeys, and a visible focus indicator shows where keys go.
|
|
77
|
+
- Streaming honesty: a stalled provider stream now shows a real stall/reconnect indicator (with attempt counts via the SDK's new STREAM_RETRY event) instead of cycling whimsical labels over dead air — and the indicator correctly stays quiet while a tool is executing.
|
|
78
|
+
- Slash routing is deterministic: `/command` in an empty composer is always a command, never sent to the model as chat (previously state-dependent after overlay use, burning tokens on junk turns).
|
|
79
|
+
- Per-agent stats are real: the Inspector showed Tools 0 / Tokens 0 / Cost $0.00 for agents that wrote hundreds of lines; agents (including WRFC owners, which aggregate their whole chain) now report true token/tool counts, and footer counters survive session resume.
|
|
80
|
+
- Cost is honest: models missing from the old hardcoded ~16-model price table silently showed $0.00 everywhere; pricing now resolves through the SDK catalog with an explicit "unpriced" marker when unknown.
|
|
81
|
+
- Indicator truth: the footer no longer shows `hitl:balanced` alongside DANGER MODE; the effective permission posture wins.
|
|
82
|
+
- Renderer truth: subprocess stderr can no longer leak raw into the transcript and garble cells (`/diff` in a non-git dir now prints one honest sentence, not a fake diff); git repos are re-detected live after `git init` without a restart; cancelled-turn echo no longer mangles its first character.
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
- Auto-resume offer at startup when a previous session exists.
|
|
86
|
+
- `/sessions` groups subagent sessions instead of burying your real session under them.
|
|
87
|
+
- `.goodvibes/` transient state is auto-gitignored in project directories.
|
|
88
|
+
- Wider, persistent Ctrl+C exit-confirmation notice.
|
|
89
|
+
|
|
90
|
+
### Internal
|
|
91
|
+
- SDK dependency 0.35.0 → 0.36.0; foundation artifacts regenerated (new event contract entries).
|
|
92
|
+
- Local-SDK overlay dev tooling (`scripts/sdk-dev.ts link|status|restore`) with release-blocking gates in release.ts and publish-check so a local SDK can never ship.
|
|
93
|
+
- Wave verified three ways: full gate block, a 3-lens adversarial code review, and a live tmux scenario replay of the five previously-failing dogfood scenarios (all PASS).
|
|
30
94
|
|
|
31
95
|
## [1.0.0] — 2026-07-03
|
|
32
96
|
|
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
|
|
|
@@ -84,7 +84,7 @@ Typical workflows:
|
|
|
84
84
|
- ingest URLs, bookmarks, docs, spreadsheets, and artifacts into the structured knowledge system for later retrieval
|
|
85
85
|
- dispatch and review work across remote peers and node-host runners
|
|
86
86
|
|
|
87
|
-
The compiled binary is the TUI entrypoint built from `src/main.ts`.
|
|
87
|
+
The compiled binary is the TUI entrypoint built from `src/main.ts`. The daemon (`daemon.enabled`, on by default, loopback-bound) and, when `danger.httpListener` is enabled, the HTTP listener both start in-process from that same binary. `bun run daemon` uses the separate headless daemon entrypoint from source.
|
|
88
88
|
|
|
89
89
|
Inbound TLS can run in `off`, `proxy`, or `direct` mode. Direct mode defaults to the certificate files above unless explicit paths are configured. Outbound HTTPS trust uses Bun’s bundled roots by default and can be extended or replaced with custom CA files/directories for internal or enterprise endpoints. Operator auth now supports bearer headers and local session cookies across REST, SSE, and control-plane WebSocket flows.
|
|
90
90
|
|
|
@@ -157,12 +157,12 @@ The TUI now consumes the extracted `@pellux/goodvibes-sdk` (`0.34.0`) platform l
|
|
|
157
157
|
|
|
158
158
|
### Panels, Control Rooms, And Workspaces
|
|
159
159
|
- Split-pane panel system with panel picker, layout control, and keyboard-first focus behavior
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
160
|
+
- Six persistent consoles — the Fleet hub plus git, diff, cost, tokens, and local-auth — with heavier operator surfaces (providers, remote, MCP, marketplace, orchestration, tasks, intelligence, worktrees, approvals, policy, security, settings sync, and more) re-homed as configuration/review modals on a single liveness-enforcing config-modal host
|
|
161
|
+
- Retired panel ids resolve honestly through aliases, modal redirects, and "this moved" notices, so `/panel open <id>` and saved layouts never point at nothing
|
|
162
|
+
- Summary-first heavy surfaces with posture, issues, next actions, and detail regions
|
|
163
163
|
- Cross-panel actions between Explorer, Preview, and Symbols so file browsing can open previews and jump to symbol locations directly from panel focus
|
|
164
|
-
- Live panels stay subscribed while open, so agent, tool, and thinking updates
|
|
165
|
-
-
|
|
164
|
+
- Live panels stay subscribed while open and repaint while the main thread is idle, so agent, tool, and thinking updates never look frozen
|
|
165
|
+
- The Fleet panel is the live control room for running agents, workstreams, and scheduled jobs — attach/detach (detach never kills), steer, pause/resume, and capability-gated interrupt/kill — reached by `F2`, `Ctrl+O`, or the footer `[Enter]`
|
|
166
166
|
|
|
167
167
|
### Modal And Selection UX
|
|
168
168
|
- Modal stack navigation that unwinds correctly back to the slash-command menu and prior nested modals
|
|
@@ -446,7 +446,7 @@ bun run build
|
|
|
446
446
|
# outputs dist/goodvibes
|
|
447
447
|
```
|
|
448
448
|
|
|
449
|
-
`bun run build` compiles `src/main.ts` into `dist/goodvibes`. The compiled binary runs the TUI and
|
|
449
|
+
`bun run build` compiles `src/main.ts` into `dist/goodvibes`. The compiled binary runs the TUI and also hosts the daemon in-process (`daemon.enabled`, on by default) plus, when `danger.httpListener` is enabled, the HTTP listener. The default build does not produce a separate compiled daemon-only executable.
|
|
450
450
|
|
|
451
451
|
---
|
|
452
452
|
|
|
@@ -560,7 +560,7 @@ Related storage paths:
|
|
|
560
560
|
| `web.port` | `3423` | Web/browser surface port |
|
|
561
561
|
| `danger.agentRecursion` | `false` | Allow agents to spawn subagents |
|
|
562
562
|
| `danger.maxGlobalAgents` | `8` | Max simultaneous agents |
|
|
563
|
-
| `
|
|
563
|
+
| `daemon.enabled` | `true` | Run the local session daemon (loopback-bound; on by default) |
|
|
564
564
|
| `danger.httpListener` | `false` | Enable HTTP webhook listener |
|
|
565
565
|
| `tools.autoHeal` | `false` | Auto-fix syntax errors on write/edit |
|
|
566
566
|
| `tools.hooksFile` | `hooks.json` | Hook configuration file name |
|
|
@@ -587,7 +587,7 @@ Changing `service.autostart` or `service.enabled` from `/config` reconciles the
|
|
|
587
587
|
|
|
588
588
|
GoodVibes is built around routing runtime state to the right surface.
|
|
589
589
|
|
|
590
|
-
The
|
|
590
|
+
The Fleet panel is the one persistent operator control room; most other operator surfaces now open as configuration and review modals on a shared, liveness-enforcing config-modal host rather than as standing panels. The product surfaces state for:
|
|
591
591
|
|
|
592
592
|
- provider accounts and provider health
|
|
593
593
|
- local auth and local service posture
|
|
@@ -740,10 +740,11 @@ Key commands:
|
|
|
740
740
|
|
|
741
741
|
### Local daemon and HTTP listener
|
|
742
742
|
|
|
743
|
-
|
|
743
|
+
The local session daemon runs by default (`daemon.enabled`, loopback-bound); the HTTP
|
|
744
|
+
webhook listener is opt-in:
|
|
744
745
|
|
|
745
|
-
- `
|
|
746
|
-
- `danger.httpListener`
|
|
746
|
+
- `daemon.enabled` (default `true`)
|
|
747
|
+
- `danger.httpListener` (default `false`)
|
|
747
748
|
|
|
748
749
|
They are protected by local auth, which includes:
|
|
749
750
|
|
|
@@ -1265,6 +1266,9 @@ Those pieces cover conversation-noise routing, panel-health/performance budgets,
|
|
|
1265
1266
|
| `/session [action]` | `/sess` | Full session management: list, rename, resume, fork, save, info, export, search, delete |
|
|
1266
1267
|
| `/undo [file]` | `/u` | Remove last turn, or `/undo file` to revert last file write/edit |
|
|
1267
1268
|
| `/redo [file]` | — | Restore last undone turn, or `/redo file` to re-apply last reverted file |
|
|
1269
|
+
| `/checkpoints` | — | List workspace checkpoints, newest first |
|
|
1270
|
+
| `/checkpoint [label]` | — | Create a manual workspace checkpoint (forensic retention) |
|
|
1271
|
+
| `/rewind [id]` | — | Preview and restore a workspace checkpoint (files only — conversation history is unchanged) |
|
|
1268
1272
|
| `/retry [text]` | `/r` | Re-send the last user message |
|
|
1269
1273
|
| `/template` | `/tmpl` | Manage prompt templates: save, use, list, edit, delete |
|
|
1270
1274
|
| `/tools` | `/t` | List available tools |
|
|
@@ -1272,11 +1276,12 @@ Those pieces cover conversation-noise routing, panel-health/performance budgets,
|
|
|
1272
1276
|
| `/services` | `/svc` | Manage API service configurations |
|
|
1273
1277
|
| `/accounts [action]` | — | Review provider-account routes, auth posture, and repair actions |
|
|
1274
1278
|
| `/auth [action]` | — | Review auth posture and manage local service auth users/sessions |
|
|
1275
|
-
| `/
|
|
1279
|
+
| `/note [action]` | — | Session note management (pinned across context compaction): `list`, `add <text>`, `remove <id>` |
|
|
1276
1280
|
| `/keep <text>` | — | Pin text to session memory; survives context compaction |
|
|
1277
1281
|
| `/memory-sync [action]` | `/memsync` | Durable memory export/import and bundle exchange: `export <path> [scope]`, `import <path>` |
|
|
1278
|
-
| `/recall [action]` | `/rc` | Durable knowledge and memory substrate: capture, review, explain, export, import, and handoff |
|
|
1282
|
+
| `/recall [action]` | `/rc`, `/memory`, `/mem` | Durable knowledge and memory substrate: capture, review, explain, inspect `injections`, export, import, and handoff |
|
|
1279
1283
|
| `/knowledge [action]` | `/know`, `/kb` | Structured knowledge graph: ingest URLs/bookmarks, inspect issues, build packets, and run consolidation jobs |
|
|
1284
|
+
| `/codebase [action]` | — | Repo source-tree code index: `build`, `status`, and `search` |
|
|
1280
1285
|
| `/context` | `/ctx` | Inspect context window usage (token breakdown per message) |
|
|
1281
1286
|
| `/next-error` | `/ne` | Jump to the next error message in the conversation |
|
|
1282
1287
|
| `/prev-error` | `/pe` | Jump to the previous error message in the conversation |
|
|
@@ -1287,6 +1292,7 @@ Those pieces cover conversation-noise routing, panel-health/performance budgets,
|
|
|
1287
1292
|
| `/scan` | — | Scan for local LLM servers |
|
|
1288
1293
|
| `/plan [goal]` | — | Inspect or seed TUI-owned project planning state; `panel`, `approve`, `list`, and `show <id>` are supported |
|
|
1289
1294
|
| `/work-plan [action]` | `/wp`, `/todo`, `/workplan` | Open or update the persistent workspace work-plan checklist |
|
|
1295
|
+
| `/workstream [action]` | — | Author and oversee multi-phase agent workstreams (orchestration engine) |
|
|
1290
1296
|
| `/panel [action]` | `/panels` | Panel management: open, close, list, toggle, move, focus, split, width, height |
|
|
1291
1297
|
| `/plugin [action]` | — | Manage plugins (enable/disable/reload/list) |
|
|
1292
1298
|
| `/marketplace [action]` | — | Browse curated plugin, skill, hook-pack, and policy-pack surfaces |
|
|
@@ -1297,6 +1303,7 @@ Those pieces cover conversation-noise routing, panel-health/performance budgets,
|
|
|
1297
1303
|
| `/wrfc` | — | Show WRFC chain status, constraint satisfaction counts, and per-constraint `[SAT]`/`[UNS]`/`[UNV]` breakdown |
|
|
1298
1304
|
| `/health [action]` | — | Unified runtime health review and repair entry point |
|
|
1299
1305
|
| `/guidance [action]` | — | Contextual operational guidance without cluttering the conversation |
|
|
1306
|
+
| `/test [pattern]` | — | Run the project test script and show pass/fail results |
|
|
1300
1307
|
| `/remote [action]` | — | Distributed peer, node-host contract, work-queue, and artifact control room |
|
|
1301
1308
|
| `/sandbox [action]` | — | Isolation presets, doctor/probe, sessions, and QEMU setup flows |
|
|
1302
1309
|
| `/setup [action]` | — | First-run readiness, services, sandbox, transfer bundles, and deep links |
|
|
@@ -1310,6 +1317,8 @@ Those pieces cover conversation-noise routing, panel-health/performance budgets,
|
|
|
1310
1317
|
| `/keybindings` | `/kb` | List current keyboard bindings and their config file path |
|
|
1311
1318
|
| `/schedule [action]` | `/sched` | Manage scheduled agent tasks (cron): add, list, remove, enable, disable, run |
|
|
1312
1319
|
| `/image <path>` | `/img` | Attach an image file to the next message |
|
|
1320
|
+
| `/imagine <prompt>` | — | Generate an image from a prompt |
|
|
1321
|
+
| `/search <query>` | — | Search the web and render ranked results with source labels (`--limit <n>`) |
|
|
1313
1322
|
| `/paste` | `/clip` | Pull supported text or image data directly from the system clipboard into the prompt |
|
|
1314
1323
|
| `/refresh-models` | — | Refresh model catalog, benchmarks, and token limits |
|
|
1315
1324
|
| `/notify [action]` | `/ntf` | Manage webhook notifications (ntfy.sh): add, remove, list, clear, test |
|
|
@@ -1388,12 +1397,13 @@ All shortcuts are customizable via `~/.goodvibes/tui/keybindings.json`. Use `/ke
|
|
|
1388
1397
|
| Key | Action |
|
|
1389
1398
|
|-----|--------|
|
|
1390
1399
|
| `Ctrl+P` | Toggle panel sidebar |
|
|
1391
|
-
| `
|
|
1392
|
-
| `Ctrl+
|
|
1400
|
+
| `F2` | Open and focus the Fleet panel |
|
|
1401
|
+
| `Ctrl+]` / `Ctrl+PageDown` | Next panel tab |
|
|
1402
|
+
| `Ctrl+PageUp` | Previous panel tab |
|
|
1393
1403
|
| `Alt+1`…`Alt+9` | Jump to panel tab 1–9 |
|
|
1394
1404
|
| `Ctrl+X` | Close the focused panel |
|
|
1395
1405
|
| `Ctrl+Shift+X` | Close all panels |
|
|
1396
|
-
| `Ctrl+O` | Open the Ops Control
|
|
1406
|
+
| `Ctrl+O` | Open and focus the Fleet panel (formerly Ops Control) |
|
|
1397
1407
|
| `Ctrl+G` | Toggle focus between split panes |
|
|
1398
1408
|
|
|
1399
1409
|
### System
|