@pellux/goodvibes-tui 1.27.0 → 2.0.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 +125 -2
- package/README.md +7 -9
- package/bin/goodvibes +2 -2
- package/bin/launcher-support.js +8 -4
- package/docs/README.md +11 -2
- package/docs/foundation-artifacts/operator-contract.json +6403 -2347
- package/package.json +14 -25
- package/scripts/postinstall.js +35 -35
- package/src/audio/spoken-turn-model-routing.ts +1 -1
- package/src/cli/bundle-command.ts +5 -5
- package/src/cli/completions/generate.ts +1 -1
- package/src/cli/doctor.ts +3 -3
- package/src/cli/entrypoint.ts +12 -7
- package/src/cli/help.ts +4 -5
- package/src/cli/hooks-command.ts +1 -1
- package/src/cli/index.ts +1 -4
- package/src/cli/launch-auto-update.ts +59 -7
- package/src/cli/management-commands.ts +6 -6
- package/src/cli/management-utils.ts +5 -5
- package/src/cli/management.ts +7 -7
- package/src/cli/network-posture.ts +1 -1
- package/src/cli/package-verification.ts +7 -6
- package/src/cli/plugin-bundles-command.ts +1 -1
- package/src/cli/plugin-command.ts +2 -2
- package/src/cli/service-command.ts +2 -2
- package/src/cli/service-posture.ts +4 -4
- package/src/cli/status.ts +9 -8
- package/src/cli/surface-command.ts +4 -4
- package/src/cli/tui-startup.ts +12 -3
- package/src/cli-flags.ts +3 -3
- package/src/config/goodvibes-home-audit.ts +0 -2
- package/src/config/secret-config.ts +37 -5
- package/src/config/tui-extension-settings.ts +1 -1
- package/src/core/approval-alert.ts +2 -2
- package/src/core/budget-breach-notifier.ts +3 -3
- package/src/core/conversation-compaction-render.ts +1 -1
- package/src/core/conversation-line-cache.ts +1 -1
- package/src/core/conversation-render-context.ts +1 -1
- package/src/core/conversation-rendering.ts +2 -2
- package/src/core/conversation.ts +10 -10
- package/src/core/long-task-notifier.ts +2 -2
- package/src/core/memory-diagnostics-gateway.ts +1 -1
- package/src/core/scriptable-statusline.ts +1 -1
- package/src/core/session-auto-titler.ts +1 -1
- package/src/core/session-resume-core.ts +2 -2
- package/src/core/stream-event-wiring.ts +24 -44
- package/src/core/terminal-notifier.ts +3 -3
- package/src/core/turn-cancellation.ts +1 -1
- package/src/core/turn-event-wiring.ts +5 -5
- package/src/input/command-registry.ts +6 -6
- package/src/input/commands/channel-pairing.ts +1 -1
- package/src/input/commands/cluster-runtime.ts +1 -1
- package/src/input/commands/codebase-runtime.ts +1 -1
- package/src/input/commands/devices-runtime.ts +1 -1
- package/src/input/commands/hosted-runtime.ts +330 -0
- package/src/input/commands/local-setup-review.ts +1 -1
- package/src/input/commands/local-setup-transfer.ts +2 -2
- package/src/input/commands/local-setup.ts +3 -3
- package/src/input/commands/managed-runtime.ts +2 -2
- package/src/input/commands/operator-rpc.ts +24 -110
- package/src/input/commands/payment-card-intake.ts +1 -1
- package/src/input/commands/permissions-provenance.ts +2 -2
- package/src/input/commands/plugin-runtime.ts +1 -1
- package/src/input/commands/provider.ts +1 -1
- package/src/input/commands/relay-runtime.ts +18 -9
- package/src/input/commands/rewind-runtime.ts +1 -1
- package/src/input/commands/runtime-services.ts +1 -1
- package/src/input/commands/services-runtime.ts +1 -1
- package/src/input/commands/session-workflow.ts +1 -1
- package/src/input/commands/settings-sync-runtime.ts +2 -2
- package/src/input/commands/share-runtime.ts +1 -1
- package/src/input/commands/tasks-runtime.ts +145 -55
- package/src/input/commands/update-runtime.ts +31 -28
- package/src/input/commands/work-plan-runtime.ts +2 -2
- package/src/input/commands/workstream-attempts.ts +1 -1
- package/src/input/commands/workstream-runtime.ts +2 -2
- package/src/input/commands.ts +2 -0
- package/src/input/feature-unit-layout.ts +1 -1
- package/src/input/feed-context-factory.ts +3 -3
- package/src/input/handler-content-actions.ts +2 -2
- package/src/input/handler-feed-routes.ts +1 -1
- package/src/input/handler-feed.ts +3 -3
- package/src/input/handler-modal-token-routes.ts +1 -1
- package/src/input/handler-onboarding-daemon-adopt.ts +3 -2
- package/src/input/handler-onboarding.ts +1 -1
- package/src/input/handler-types.ts +2 -2
- package/src/input/handler-ui-state.ts +1 -1
- package/src/input/handler.ts +4 -4
- package/src/input/input-history.ts +1 -1
- package/src/input/onboarding/onboarding-feature-units.ts +2 -2
- package/src/input/onboarding/onboarding-runtime-status.ts +15 -1
- package/src/input/onboarding/onboarding-wizard-apply.ts +17 -8
- package/src/input/onboarding/onboarding-wizard-cloudflare-step.ts +5 -3
- package/src/input/onboarding/onboarding-wizard-external-surfaces.ts +1 -1
- package/src/input/onboarding/onboarding-wizard-types.ts +1 -1
- package/src/input/payments-config.ts +6 -6
- package/src/input/search.ts +1 -1
- package/src/input/session-picker-modal.ts +46 -0
- package/src/input/settings-modal-activation.ts +1 -1
- package/src/input/settings-modal-behavior.ts +4 -4
- package/src/input/settings-modal-commit.ts +11 -0
- package/src/input/settings-modal-data.ts +13 -80
- package/src/input/settings-modal-mutations.ts +33 -0
- package/src/input/settings-modal-secrets.ts +34 -0
- package/src/input/settings-modal-subscriptions.ts +1 -1
- package/src/input/settings-modal-types.ts +15 -1
- package/src/input/settings-modal.ts +28 -3
- package/src/input/worktree-setup-config.ts +1 -1
- package/src/main.ts +11 -9
- package/src/panels/agent-inspector-shared.ts +2 -2
- package/src/panels/base-panel.ts +2 -2
- package/src/panels/builtin/operations.ts +6 -8
- package/src/panels/builtin/session.ts +17 -0
- package/src/panels/builtin/shared.ts +5 -5
- package/src/panels/builtin-modals.ts +3 -3
- package/src/panels/confirm-state.ts +1 -1
- package/src/panels/cost-tracker-panel.ts +4 -4
- package/src/panels/diff-panel.ts +2 -2
- package/src/panels/diff-review-panel.ts +2 -2
- package/src/panels/expandable-list-panel.ts +2 -2
- package/src/panels/fleet-acts.ts +1 -1
- package/src/panels/fleet-observed-render.ts +1 -1
- package/src/panels/fleet-panel-format.ts +1 -1
- package/src/panels/fleet-panel.ts +1 -1
- package/src/panels/fleet-spawn.ts +1 -1
- package/src/panels/fleet-steer.ts +1 -1
- package/src/panels/fleet-transcript.ts +1 -1
- package/src/panels/git-panel.ts +1 -1
- package/src/panels/hosted-session-feed.ts +352 -0
- package/src/panels/hosted-session-panel.ts +221 -0
- package/src/panels/local-auth-panel.ts +3 -3
- package/src/panels/modals/devices-modal.ts +1 -1
- package/src/panels/modals/local-auth-modal.ts +1 -1
- package/src/panels/modals/pairing-modal.ts +1 -1
- package/src/panels/modals/services-modal.ts +1 -1
- package/src/panels/modals/settings-sync-modal.ts +1 -1
- package/src/panels/modals/subscription-modal.ts +1 -1
- package/src/panels/modals/work-plan-modal.ts +1 -1
- package/src/panels/notifications-panel.ts +1 -1
- package/src/panels/panel-confirm-overlay.ts +1 -1
- package/src/panels/plugins-panel.ts +2 -2
- package/src/panels/polish-core.ts +2 -2
- package/src/panels/polish-tables.ts +1 -1
- package/src/panels/polish.ts +2 -2
- package/src/panels/scrollable-list-panel.ts +3 -3
- package/src/panels/skills-panel.ts +3 -3
- package/src/panels/token-budget-panel.ts +5 -5
- package/src/panels/types.ts +1 -2
- package/src/permissions/prompt.ts +1 -1
- package/src/renderer/autocomplete-overlay.ts +1 -1
- package/src/renderer/block-actions-overlay.ts +1 -1
- package/src/renderer/bookmark-modal.ts +1 -1
- package/src/renderer/buffer.ts +1 -1
- package/src/renderer/code-block.ts +1 -1
- package/src/renderer/composer-fragments.ts +1 -1
- package/src/renderer/compositor.ts +2 -2
- package/src/renderer/config-modal.ts +1 -1
- package/src/renderer/context-inspector.ts +1 -1
- package/src/renderer/conversation-layout.ts +2 -2
- package/src/renderer/conversation-overlays.ts +1 -1
- package/src/renderer/conversation-surface.ts +2 -2
- package/src/renderer/diff-view.ts +1 -1
- package/src/renderer/diff.ts +1 -1
- package/src/renderer/file-picker-overlay.ts +1 -1
- package/src/renderer/fleet-tab-strip.ts +1 -1
- package/src/renderer/fullscreen-primitives.ts +2 -2
- package/src/renderer/fullscreen-workspace.ts +1 -1
- package/src/renderer/header-line.ts +1 -1
- package/src/renderer/help-overlay.ts +1 -1
- package/src/renderer/history-search-overlay.ts +2 -2
- package/src/renderer/layout.ts +5 -8
- package/src/renderer/markdown-inline.ts +1 -1
- package/src/renderer/markdown-table.ts +1 -1
- package/src/renderer/markdown.ts +1 -1
- package/src/renderer/mcp-workspace.ts +1 -1
- package/src/renderer/modal-factory.ts +2 -2
- package/src/renderer/model-workspace.ts +2 -2
- package/src/renderer/onboarding/onboarding-wizard.ts +1 -1
- package/src/renderer/overlay-box.ts +1 -1
- package/src/renderer/panel-composite.ts +1 -1
- package/src/renderer/panel-workspace-bar.ts +1 -1
- package/src/renderer/process-indicator.ts +1 -1
- package/src/renderer/profile-picker-modal.ts +1 -1
- package/src/renderer/search-overlay.ts +2 -2
- package/src/renderer/selection-modal-overlay.ts +1 -1
- package/src/renderer/session-picker-modal.ts +124 -3
- package/src/renderer/settings-modal-helpers.ts +2 -0
- package/src/renderer/settings-modal.ts +2 -2
- package/src/renderer/shell-surface.ts +2 -2
- package/src/renderer/system-message.ts +1 -1
- package/src/renderer/tab-strip.ts +1 -1
- package/src/renderer/theme-mode-config.ts +1 -1
- package/src/renderer/theme.ts +11 -12
- package/src/renderer/thinking.ts +1 -1
- package/src/renderer/tool-call.ts +2 -2
- package/src/renderer/tool-result-expanded-lines.ts +1 -1
- package/src/renderer/turn-injection.ts +7 -8
- package/src/renderer/ui-factory.ts +3 -3
- package/src/runtime/bootstrap-command-context.ts +4 -4
- package/src/runtime/bootstrap-command-parts.ts +5 -5
- package/src/runtime/bootstrap-core.ts +30 -30
- package/src/runtime/bootstrap-shell.ts +4 -4
- package/src/runtime/bootstrap.ts +128 -157
- package/src/runtime/client/approval-updates.ts +82 -0
- package/src/runtime/client/build-floors.ts +167 -0
- package/src/runtime/client/daemon-attach-handshake.ts +115 -0
- package/src/runtime/client/fleet-union.ts +147 -0
- package/src/runtime/client/host-service-status.ts +71 -0
- package/src/runtime/client/hosted-exit.ts +86 -0
- package/src/runtime/client/hosted-roster.ts +110 -0
- package/src/runtime/client/hosted-session-stream.ts +178 -0
- package/src/runtime/client/hosted-sessions.ts +187 -0
- package/src/runtime/client/operator-endpoint.ts +213 -0
- package/src/runtime/client/spine-adoption.ts +99 -0
- package/src/runtime/cloudflare-control-plane.ts +1 -1
- package/src/runtime/context-accounting-source.ts +1 -1
- package/src/runtime/context.ts +2 -2
- package/src/runtime/conversation-rewind-port.ts +42 -14
- package/src/runtime/daemon-attach-notices.ts +55 -19
- package/src/runtime/diagnostics/panels/ops.ts +1 -1
- package/src/runtime/disposal-wiring.ts +4 -24
- package/src/runtime/index.ts +119 -105
- package/src/runtime/install-self-check-startup.ts +2 -2
- package/src/runtime/interaction-seams.ts +1 -1
- package/src/runtime/knowledge-services.ts +8 -2
- package/src/runtime/legacy-daemon-migration.ts +15 -3
- package/src/runtime/legacy-daemon-reconcile.ts +3 -2
- package/src/runtime/memory-spine-transport.ts +37 -267
- package/src/runtime/notification-dispatch.ts +2 -2
- package/src/runtime/onboarding/apply.ts +2 -2
- package/src/runtime/onboarding/derivation.ts +2 -2
- package/src/runtime/onboarding/markers.ts +2 -2
- package/src/runtime/onboarding/progress.ts +2 -2
- package/src/runtime/onboarding/snapshot.ts +1 -1
- package/src/runtime/onboarding/state.ts +2 -2
- package/src/runtime/onboarding/types.ts +2 -2
- package/src/runtime/orchestrator-core-services.ts +1 -1
- package/src/runtime/path-shadow-startup.ts +28 -221
- package/src/runtime/power-keepawake-remote.ts +3 -2
- package/src/runtime/process-lifecycle.ts +2 -2
- package/src/runtime/provider-fallback.ts +10 -66
- package/src/runtime/recovery-autosave.ts +1 -1
- package/src/runtime/recovery-offer-wiring.ts +39 -23
- package/src/runtime/recovery-prompt.ts +31 -17
- package/src/runtime/relay-reachability-bridge.ts +53 -42
- package/src/runtime/release-artifacts.ts +2 -1
- package/src/runtime/runtime-services-types.ts +82 -35
- package/src/runtime/services.ts +305 -300
- package/src/runtime/session-resume-liveness-confirm.ts +1 -1
- package/src/runtime/ui-services.ts +7 -6
- package/src/runtime/update-check.ts +23 -43
- package/src/runtime/workspace-checkpointing.ts +1 -1
- package/src/runtime/wrfc-persistence.ts +2 -2
- package/src/shell/ui-openers.ts +30 -7
- package/src/utils/clipboard.ts +1 -1
- package/src/verification/verification-ledger.ts +10 -8
- package/src/version.ts +1 -1
- package/bin/goodvibes-daemon +0 -90
- package/src/cli/config-overrides.ts +0 -267
- package/src/cli/endpoints.ts +0 -109
- package/src/cli/parser.ts +0 -395
- package/src/cli/redaction.ts +0 -170
- package/src/cli/types.ts +0 -84
- package/src/cluster/commands.ts +0 -382
- package/src/cluster/remote-daemon-target.ts +0 -225
- package/src/cluster/render.ts +0 -268
- package/src/config/atomic-write.ts +0 -70
- package/src/config/credential-availability.ts +0 -122
- package/src/config/goodvibes-home.ts +0 -149
- package/src/config/index.ts +0 -88
- package/src/config/provider-model.ts +0 -23
- package/src/config/read-versioned.ts +0 -228
- package/src/core/alert-gating.ts +0 -67
- package/src/core/consolidation-receipt.ts +0 -41
- package/src/core/focus-tracker.ts +0 -41
- package/src/core/history.ts +0 -45
- package/src/core/memory-status.ts +0 -118
- package/src/core/orchestrator.ts +0 -7
- package/src/core/pairing-devices.ts +0 -49
- package/src/core/pairing-handoff.ts +0 -101
- package/src/core/pairing-offers.ts +0 -83
- package/src/core/pairing-origin.ts +0 -78
- package/src/core/rewind-turn-anchors.ts +0 -311
- package/src/core/session-recovery.ts +0 -210
- package/src/core/stable-host.ts +0 -171
- package/src/core/transcript-journal.ts +0 -503
- package/src/daemon/cli.ts +0 -641
- package/src/daemon/handlers/context.ts +0 -29
- package/src/daemon/handlers/contracts.ts +0 -77
- package/src/daemon/handlers/credentials.ts +0 -139
- package/src/daemon/handlers/drafts/draft-store.ts +0 -427
- package/src/daemon/handlers/drafts/index.ts +0 -17
- package/src/daemon/handlers/drafts/register.ts +0 -331
- package/src/daemon/handlers/errors.ts +0 -18
- package/src/daemon/handlers/inbox/cursor-store.ts +0 -457
- package/src/daemon/handlers/inbox/index.ts +0 -284
- package/src/daemon/handlers/inbox/mapping.ts +0 -192
- package/src/daemon/handlers/inbox/poller.ts +0 -212
- package/src/daemon/handlers/inbox/provider-adapter.ts +0 -156
- package/src/daemon/handlers/inbox/providers/discord.ts +0 -252
- package/src/daemon/handlers/inbox/providers/email.ts +0 -152
- package/src/daemon/handlers/inbox/providers/imap-client.ts +0 -300
- package/src/daemon/handlers/inbox/providers/route-util.ts +0 -24
- package/src/daemon/handlers/inbox/providers/slack.ts +0 -263
- package/src/daemon/handlers/index.ts +0 -117
- package/src/daemon/handlers/register.ts +0 -168
- package/src/daemon/handlers/remote/backends/cloud-terminal.ts +0 -142
- package/src/daemon/handlers/remote/backends/docker.ts +0 -79
- package/src/daemon/handlers/remote/backends/index.ts +0 -40
- package/src/daemon/handlers/remote/backends/local-process.ts +0 -113
- package/src/daemon/handlers/remote/backends/process-runner.ts +0 -127
- package/src/daemon/handlers/remote/backends/ssh.ts +0 -125
- package/src/daemon/handlers/remote/backends/types.ts +0 -97
- package/src/daemon/handlers/remote/dispatcher.ts +0 -181
- package/src/daemon/handlers/remote/index.ts +0 -119
- package/src/daemon/handlers/remote/peer-registry.ts +0 -357
- package/src/daemon/handlers/remote/service.ts +0 -191
- package/src/daemon/handlers/routing/inbox-bridge.ts +0 -71
- package/src/daemon/handlers/routing/index.ts +0 -261
- package/src/daemon/handlers/routing/route-store.ts +0 -319
- package/src/daemon/handlers/routing/routing-resolver.ts +0 -75
- package/src/daemon/handlers/sqlite-store.ts +0 -278
- package/src/daemon/handlers/triage/index.ts +0 -57
- package/src/daemon/handlers/triage/integration.ts +0 -213
- package/src/daemon/handlers/triage/pipeline.ts +0 -274
- package/src/daemon/handlers/triage/scorer.ts +0 -287
- package/src/daemon/handlers/triage/tagger/discord.ts +0 -187
- package/src/daemon/handlers/triage/tagger/imap.ts +0 -384
- package/src/daemon/handlers/triage/tagger/index.ts +0 -184
- package/src/daemon/handlers/triage/tagger/shared.ts +0 -70
- package/src/daemon/handlers/triage/tagger/slack.ts +0 -69
- package/src/daemon/handlers/triage/types.ts +0 -50
- package/src/daemon/lifecycle.ts +0 -41
- package/src/daemon/provision-wake-model.ts +0 -81
- package/src/daemon/safe-serve.ts +0 -61
- package/src/daemon/send/channels.ts +0 -200
- package/src/daemon/send/command.ts +0 -332
- package/src/daemon/send/composition.ts +0 -99
- package/src/daemon/send/failure-text.ts +0 -93
- package/src/daemon/send/inert-text.ts +0 -225
- package/src/daemon/send/stdin.ts +0 -24
- package/src/daemon/service-commands.ts +0 -329
- package/src/export/cost-utils.ts +0 -319
- package/src/input/selection.ts +0 -135
- package/src/plugins/loader.ts +0 -15
- package/src/renderer/bottom-bar.ts +0 -58
- package/src/renderer/conversation-tree.ts +0 -228
- package/src/runtime/agent-graph-composition.ts +0 -78
- package/src/runtime/channel-composition.ts +0 -46
- package/src/runtime/cluster-composition.ts +0 -124
- package/src/runtime/cluster-group-composition.ts +0 -284
- package/src/runtime/code-index-services.ts +0 -167
- package/src/runtime/daemon-handler-composition.ts +0 -76
- package/src/runtime/device-posture-composition.ts +0 -110
- package/src/runtime/durability-housekeeping.ts +0 -183
- package/src/runtime/durability-services.ts +0 -155
- package/src/runtime/embedded-service-factories.ts +0 -58
- package/src/runtime/feature-settings.ts +0 -154
- package/src/runtime/fleet-needs-input-push.ts +0 -70
- package/src/runtime/fleet-services.ts +0 -41
- package/src/runtime/idle-power-services.ts +0 -85
- package/src/runtime/mail-composition.ts +0 -65
- package/src/runtime/memory-fold.ts +0 -55
- package/src/runtime/operator-token-cleanup.ts +0 -109
- package/src/runtime/path-shadow.ts +0 -418
- package/src/runtime/perf/panel-health-monitor.ts +0 -18
- package/src/runtime/provider-optimizer-wiring.ts +0 -55
- package/src/runtime/reachability-notice.ts +0 -100
- package/src/runtime/remote-execution-composition.ts +0 -62
- package/src/runtime/session-liveness-marker.ts +0 -257
- package/src/runtime/session-pointer-surface.ts +0 -22
- package/src/runtime/session-storage-services.ts +0 -41
- package/src/runtime/surface-feature-flags.ts +0 -96
- package/src/runtime/terminal-output-guard.ts +0 -235
- package/src/runtime/trust/workspace-registration.ts +0 -192
- package/src/runtime/trust/workspace-trust.ts +0 -229
- package/src/runtime/ui/index.ts +0 -39
- package/src/runtime/ui/model-picker/data-provider.ts +0 -182
- package/src/runtime/ui/model-picker/health-enrichment.ts +0 -231
- package/src/runtime/ui/model-picker/index.ts +0 -59
- package/src/runtime/ui/model-picker/types.ts +0 -153
- package/src/runtime/ui/provider-health/data-provider.ts +0 -244
- package/src/runtime/ui/provider-health/fallback-visualizer.ts +0 -71
- package/src/runtime/ui/provider-health/index.ts +0 -46
- package/src/runtime/ui/provider-health/types.ts +0 -146
- package/src/runtime/ui-events.ts +0 -1
- package/src/runtime/ui-read-model-helpers.ts +0 -1
- package/src/runtime/ui-read-models-observability-maintenance.ts +0 -1
- package/src/runtime/ui-read-models-observability-options.ts +0 -1
- package/src/runtime/ui-read-models-observability-remote.ts +0 -1
- package/src/runtime/ui-read-models-observability-security.ts +0 -1
- package/src/runtime/ui-read-models-observability-system.ts +0 -1
- package/src/runtime/ui-read-models-observability.ts +0 -1
- package/src/runtime/ui-service-queries.ts +0 -1
- package/src/runtime/voice-setup-services.ts +0 -98
- package/src/runtime/workstream-attempts-validation.ts +0 -77
- package/src/runtime/workstream-draft-edits.ts +0 -95
- package/src/runtime/workstream-draft-store.ts +0 -274
- package/src/runtime/workstream-draft-types.ts +0 -42
- package/src/runtime/workstream-services.ts +0 -373
- package/src/tools/index.ts +0 -1
- package/src/types/grid.ts +0 -48
- package/src/types/sql-js.d.ts +0 -15
- package/src/work-plans/work-plan-store.ts +0 -702
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,129 @@ All notable changes to GoodVibes TUI.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [2.0.1] - 2026-08-01
|
|
8
|
+
|
|
9
|
+
### Changes
|
|
10
|
+
|
|
11
|
+
- This repository's releases now carry the suite installer; the command at
|
|
12
|
+
`https://goodvibes.sh/install.sh` is unchanged.
|
|
13
|
+
|
|
14
|
+
## [2.0.0] - 2026-08-01
|
|
15
|
+
|
|
16
|
+
### Changes
|
|
17
|
+
|
|
18
|
+
- **Breaking: this build refuses to attach to a daemon older than `1.28.0`.**
|
|
19
|
+
1.28.0 is the daemon release where the daemon became its own product and
|
|
20
|
+
this terminal became a pure client of it — the session register, the
|
|
21
|
+
inbound steer queue, the fleet needs-input push and the credential writes
|
|
22
|
+
this build calls are all served there, and an older daemon answers some of
|
|
23
|
+
those and not others. Rather than run half-working against a peer it has no
|
|
24
|
+
reason to suspect, this build reads the daemon's version on every attach and
|
|
25
|
+
refuses one below its floor instead of adopting it. What a user sees: the
|
|
26
|
+
daemon status reads as an unadopted, incompatible service, and one line
|
|
27
|
+
names both versions — "`<daemon>` is running build X; this client requires
|
|
28
|
+
1.28.0 or newer — update the daemon." Refused means local-only, which this
|
|
29
|
+
app already renders honestly; no second daemon is started on the occupied
|
|
30
|
+
port. On the ordinary path nothing needs doing: a pre-split daemon (1.27.1
|
|
31
|
+
or below) is handed over to its own release line once at this app's next
|
|
32
|
+
launch (see below), and every daemon past the split updates itself hourly
|
|
33
|
+
from there, so the floor is met without anyone touching anything. If a
|
|
34
|
+
daemon still answers below 1.28.0 — auto-update turned off, or a fresh
|
|
35
|
+
manual install of an old release — re-run the suite installer
|
|
36
|
+
(`curl -fsSL https://goodvibes.sh/install.sh | sh`) to bring the daemon
|
|
37
|
+
current.
|
|
38
|
+
- The daemon is a separate product and this package stops carrying it. It was
|
|
39
|
+
built here, released here, shipped inside this npm tarball, vendored into
|
|
40
|
+
every platform package, and swapped by this app's `/update`. All of that came
|
|
41
|
+
from one repository holding two programs; the daemon has its own repository,
|
|
42
|
+
its own release line and its own npm package now. This package builds one
|
|
43
|
+
binary, ships one `bin` entry, vendors one file, and its releases carry four
|
|
44
|
+
binaries instead of eight.
|
|
45
|
+
- `npm install @pellux/goodvibes-tui` still brings the whole thing: this package
|
|
46
|
+
declares `goodvibes-daemon` as a dependency, so one install still puts both
|
|
47
|
+
commands on your PATH. What changed is that the daemon's own package places
|
|
48
|
+
the daemon's own binary — two packages each placing a copy of
|
|
49
|
+
`goodvibes-daemon` is exactly how a machine ends up with two of them.
|
|
50
|
+
- `/update apply` and `/update rollback` no longer touch the daemon binary
|
|
51
|
+
beside this one. A release of this repository publishes no daemon asset at
|
|
52
|
+
all, so a swap from here would be looking for a file that does not exist —
|
|
53
|
+
and, if one ever appeared under that name, would replace a working daemon with
|
|
54
|
+
a build from a different version line. Both commands say so in their report
|
|
55
|
+
rather than leaving a reader to wonder where the second line went. A daemon
|
|
56
|
+
built from the daemon's own repository updates itself, hourly, from its own
|
|
57
|
+
releases.
|
|
58
|
+
- **New: this app hands a pre-split daemon over to its own release line, once,
|
|
59
|
+
at launch.** A daemon shipped at 1.27.1 or below cannot do this for itself.
|
|
60
|
+
Its `update.releasesUrl` default is compiled in, not persisted — no settings
|
|
61
|
+
file carries it and no migration rewrites it — and it names this repository,
|
|
62
|
+
which no longer builds daemon binaries. Reconfiguring it to the daemon's
|
|
63
|
+
repository does not help either: its shipped updater adds the terminal binary
|
|
64
|
+
beside it to the same all-or-nothing download whenever `goodvibes` sits in the
|
|
65
|
+
install directory, which the installer guarantees, and the daemon's repository
|
|
66
|
+
publishes no terminal binary. So this app reads the version of the
|
|
67
|
+
`goodvibes-daemon` binary installed beside it and, when that binary predates
|
|
68
|
+
the split, downloads the current daemon from the daemon's own releases,
|
|
69
|
+
checksum-verifies it, swaps it with the outgoing build kept at
|
|
70
|
+
`<path>.previous`, and restarts the service — printing a receipt naming both
|
|
71
|
+
versions. It replaces that one file: not this app's binary, not the sqlite-vec
|
|
72
|
+
addon the three binaries share. A binary whose version cannot be read is never
|
|
73
|
+
swapped, a package-manager-managed daemon is never swapped in place, and once
|
|
74
|
+
the installed daemon is 1.28.0 or newer the path goes quiet permanently. The
|
|
75
|
+
existing `update.autoUpdateAtLaunch` setting turns it off along with this
|
|
76
|
+
app's own launch update; no second switch was added for one migration.
|
|
77
|
+
- The suite installer moved to the daemon's repository, where the release lane
|
|
78
|
+
that publishes it to goodvibes.sh lives. `curl -fsSL https://goodvibes.sh/install.sh | sh`
|
|
79
|
+
is unchanged and still installs everything — it now also installs the browser
|
|
80
|
+
operator surface. The `run-goodvibes` GitHub Action fetches that published
|
|
81
|
+
installer instead of running a committed second copy.
|
|
82
|
+
|
|
83
|
+
- The Cloudflare Zero Trust Tunnel route now turns on
|
|
84
|
+
`httpListener.trustCloudflare`. That route already wrote
|
|
85
|
+
`controlPlane.trustProxy` and `httpListener.trustProxy` so the login
|
|
86
|
+
rate-limiter keyed on the address the tunnel forwards — but with only
|
|
87
|
+
trustProxy set, that address comes from `X-Forwarded-For`, which a client
|
|
88
|
+
reaching the listener directly sets for itself, so it could still choose which
|
|
89
|
+
rate-limit bucket and audit-log entry it landed in. The stricter read (the
|
|
90
|
+
address comes from `CF-Connecting-IP`, accepted only from a peer inside a
|
|
91
|
+
published Cloudflare range) had no setting behind it when the wizard was
|
|
92
|
+
written and now does. The step's notice says the protection is ON for this
|
|
93
|
+
route, and still names what is not covered: the control plane has no
|
|
94
|
+
equivalent setting, so keep it reachable only through the tunnel.
|
|
95
|
+
|
|
96
|
+
- Crash-restore is the SDK's mechanism now, and this app keeps the ask.
|
|
97
|
+
`core/session-recovery.ts` is gone; `applyRecoverySnapshot` and the
|
|
98
|
+
journal-replay helpers it wrapped moved to the SDK
|
|
99
|
+
(`platform/runtime/recovery-snapshot-apply.ts`, and the
|
|
100
|
+
`transcript-journal-replay.ts` this repo had a second copy of).
|
|
101
|
+
`runtime/recovery-prompt.ts` still owns the two-step modal, and
|
|
102
|
+
`runtime/recovery-offer-wiring.ts` still owns this shell's live objects; what
|
|
103
|
+
they now hand the SDK is the user's answer. Reading a snapshot and retiring it
|
|
104
|
+
are one operation there, so this flow can no longer load one and leave it
|
|
105
|
+
behind — and a snapshot that turns out to be damaged is reported as such
|
|
106
|
+
instead of being applied as an empty conversation.
|
|
107
|
+
|
|
108
|
+
- Three config modules the daemon carried a byte-identical copy of are the
|
|
109
|
+
SDK's: `config/goodvibes-home.ts` (tree-root and daemon-home resolution),
|
|
110
|
+
`config/provider-model.ts` (`provider:model` parsing) and `config/index.ts`
|
|
111
|
+
(which was a barrel over the SDK plus two derivation helpers, both of which
|
|
112
|
+
moved). Every importer reads them from `@pellux/goodvibes-sdk/platform/config`
|
|
113
|
+
and `.../platform/providers`. One behaviour came with them: an unreadable
|
|
114
|
+
`provider.systemPromptFile` still degrades to "no configured system prompt"
|
|
115
|
+
rather than throwing, because the SDK adopted this app's version.
|
|
116
|
+
|
|
117
|
+
- The local `sql.js` ambient declaration is gone. The SDK ships the declaration
|
|
118
|
+
now, and the one file that imports `sql.js` picks it up with
|
|
119
|
+
`/// <reference types="@pellux/goodvibes-sdk/sql-js" />`.
|
|
120
|
+
|
|
121
|
+
## [1.27.0] - 2026-07-30
|
|
122
|
+
|
|
123
|
+
### Fixes
|
|
124
|
+
|
|
125
|
+
- Fixed: the daemon died without saying why. Measured against the released 1.27.0 daemon binary, in a throwaway home whose `.goodvibes/daemon/settings.json` could not be parsed: it exited 1 with zero bytes on stdout, zero bytes on stderr, and no activity log at all. It restarted and failed 77 times overnight and the only sign anything was wrong was that everything had stopped. The cause was not output buffering and not a handler that got skipped — the daemon reported the failure to the activity logger and exited, and the daemon had never given that logger a file to write to, so nothing reached a console, a journal or a log. Writing to a log object is not the same as writing to the terminal. Every place the daemon can exit before its screen is up now writes to the error stream directly, before anything else and before the exit: the startup failure itself, the flag-parse refusal, the config and endpoint override refusals, and the `cluster`, `send`, `provision-wake-model` and service subcommands. Written to the file descriptor rather than through `process.stderr`, because this program replaces `process.stderr` to keep the rendered screen clean, and because a stream write issued immediately before the process exits can still be in flight when the process stops existing. Proven the only way it can be proven — by compiling a binary and running it — against a control that pins the old shape at zero bytes, so nobody can put the silence back without a test failing.
|
|
126
|
+
- Fixed: the daemon now writes an activity log. The standalone daemon never named a log file at boot, so every line it logged for its whole lifetime went nowhere, and the flushes it performs before exiting had nothing to flush.
|
|
127
|
+
- Fixed: the interactive program's startup failure message goes to the error stream directly too, for the same reason: the guard that keeps the screen clean is exactly the thing that could swallow the one line explaining why the screen is blank.
|
|
128
|
+
- Fixed: `--daemon-home` is given the daemon's own state directory — `~/.goodvibes/daemon`, where its operator tokens, its users and its daemon settings live — instead of the home directory above it. The installer's systemd unit, the installer's macOS launch agent, the in-app install-service, and a daemon started in the background by the interactive program all named the home directory, so a daemon filed its identity one level above where every reader of it looks, and the program that started it went on reading an empty file. An already-installed service unit that carries no pinned host or port is still left alone on upgrade, so an existing install keeps the old location until its unit is regenerated.
|
|
129
|
+
|
|
7
130
|
## [1.26.0] - 2026-07-29
|
|
8
131
|
|
|
9
132
|
### Changes
|
|
@@ -203,7 +326,7 @@ Updated: @pellux/goodvibes-sdk and @pellux/goodvibes-terminal-shell to 1.11.3 (q
|
|
|
203
326
|
- 366560a0 daemon: honest startup identity and unattended legacy-unit reconcile
|
|
204
327
|
- 615d60aa installer: unify the daemon service on the canonical goodvibes.service unit
|
|
205
328
|
|
|
206
|
-
## [
|
|
329
|
+
## [2.0.0] - 2026-08-01
|
|
207
330
|
|
|
208
331
|
### Fixed
|
|
209
332
|
- Installer now creates one daemon service unit that matches the app. The curl
|
|
@@ -1135,7 +1258,7 @@ First release of the best-in-class program: a full UX-first review of the codeba
|
|
|
1135
1258
|
- 7ff4ab69 fix installed daemon service home
|
|
1136
1259
|
- 8303819d docs: document Bun global trust setup
|
|
1137
1260
|
|
|
1138
|
-
## [
|
|
1261
|
+
## [2.0.0] - 2026-08-01
|
|
1139
1262
|
|
|
1140
1263
|
---
|
|
1141
1264
|
|
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
|
GoodVibes is a terminal console for coding and operations work with an AI model. You run `goodvibes` in a project directory and get a full-screen terminal app where you talk to a model that can read and edit your files, run shell commands, search the web, and hand work off to background agents — asking your permission before anything that writes or executes. It talks to many model providers (OpenAI, Anthropic, Gemini, Bedrock, Copilot, OpenRouter and other OpenAI-compatible gateways, plus local servers like Ollama and LM Studio that it finds on startup), keeps its settings, sessions, and secrets on your own machine, and shows you the token count and running cost of every turn. Alongside the conversation, panels turn background work — running agents, git state, diffs, tokens, cost — into live control rooms.
|
|
8
8
|
|
|
@@ -23,11 +23,11 @@ Or install from the npm registry with [Bun](https://bun.sh):
|
|
|
23
23
|
|
|
24
24
|
```sh
|
|
25
25
|
bun add -g @pellux/goodvibes-tui
|
|
26
|
-
bun pm trust -g @pellux/goodvibes-tui
|
|
26
|
+
bun pm trust -g @pellux/goodvibes-tui goodvibes-daemon
|
|
27
27
|
goodvibes
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Bun blocks lifecycle scripts for untrusted global packages, so the second line lets
|
|
30
|
+
Bun blocks lifecycle scripts for untrusted global packages, so the second line lets both postinstalls run: `@pellux/goodvibes-tui`'s own, which places the TUI binary, and `goodvibes-daemon`'s — a real dependency of this package, so one install brings both commands — which places the daemon binary. No other dependency needs trusting. If you skip that step, the `goodvibes` launcher still self-heals on first run by fetching and checksum-verifying its own binary. `npm install -g @pellux/goodvibes-tui` also works when `bun` is already on `PATH`.
|
|
31
31
|
|
|
32
32
|
Then point it at a model — an environment variable is the fastest path:
|
|
33
33
|
|
|
@@ -120,7 +120,7 @@ Each row links to the page that documents it. The product's own `?` overlay and
|
|
|
120
120
|
| Session durability | Post-turn snapshots plus an fsync-per-record transcript journal replayed at every resume | [session-durability.md](docs/session-durability.md) |
|
|
121
121
|
| Planning | Conversational planning loop, project-scoped knowledge spaces, readiness evaluation, the Planning panel | [project-planning.md](docs/project-planning.md) |
|
|
122
122
|
| Sharing and export | `/share` to HTML, JSON, or Markdown with redaction, upload, and clipboard options | [share-command.md](docs/share-command.md) |
|
|
123
|
-
| Daemon and services |
|
|
123
|
+
| Daemon and services | Connecting to the standalone GoodVibes daemon, browser operator surface, background service and autostart, inbound TLS, outbound trust | [deployment-and-services.md](docs/deployment-and-services.md) |
|
|
124
124
|
| Remote access | A worked home-server setup: always-on daemon, browser access, TUI over SSH, reachability and TLS | [remote-access.md](docs/remote-access.md) |
|
|
125
125
|
| Channels and API | Slack, Discord, Telegram, Matrix, webhook and other surfaces; the shared reply pipeline; remote peers and node hosts; the control-plane HTTP and streaming API | [channels-remote-and-api.md](docs/channels-remote-and-api.md) |
|
|
126
126
|
| Voice | Live `/tts` playback, TTS and STT providers, streaming voice API | [voice-and-live-tts.md](docs/voice-and-live-tts.md) |
|
|
@@ -154,7 +154,7 @@ Edit them live with `/settings` or the fullscreen `/config` workspace rather tha
|
|
|
154
154
|
| `display.showThinking` | `false` | Show model thinking traces |
|
|
155
155
|
| `behavior.autoCompactThreshold` | `80` | Context percentage before auto-compact runs |
|
|
156
156
|
| `helper.enabled` | `false` | Route grunt work to a cheaper helper model |
|
|
157
|
-
| `daemon.enabled` | `true` |
|
|
157
|
+
| `daemon.enabled` | `true` | Spawn or adopt a detached local session daemon, bound to loopback |
|
|
158
158
|
|
|
159
159
|
The wider key table, the permission modes, and the hand-edited TUI namespaces (checkpoint root guard, scriptable statusline, session behavior, launch-time self-update) are in [docs/configuration.md](docs/configuration.md).
|
|
160
160
|
|
|
@@ -193,11 +193,10 @@ bun run dev
|
|
|
193
193
|
| Command | Does |
|
|
194
194
|
| --- | --- |
|
|
195
195
|
| `bun run dev` | Run the TUI from source |
|
|
196
|
-
| `bun run daemon` | Run the headless daemon/API host from source |
|
|
197
196
|
| `bun test` | Run the suite through the parallel per-file runner |
|
|
198
197
|
| `bun run build` | Compile `src/main.ts` into `dist/goodvibes` |
|
|
199
198
|
|
|
200
|
-
The compiled binary is the TUI entrypoint; it
|
|
199
|
+
The compiled binary is the TUI entrypoint; it adopts a running standalone GoodVibes daemon, or starts one already installed as a stopped service — it never spawns a new daemon process itself (`daemon.enabled`, on by default, loopback-bound) — and hosts the HTTP listener when `danger.httpListener` is enabled.
|
|
201
200
|
|
|
202
201
|
Tests live under `src/test/`, mirroring the source tree, and cover contract, security, release-gate, runtime, renderer, panel, integration, and anti-regression cases. Several gates run alongside them in CI: byte-exact golden renderer frames, performance budgets for startup and frame composition and line production (`scripts/perf-baseline.json`), and architecture rules for import cycles, layer boundaries, source-file size, and unused renderer exports (`scripts/check-architecture.ts`).
|
|
203
202
|
|
|
@@ -208,7 +207,7 @@ Some decisions worth knowing before you read the source:
|
|
|
208
207
|
- **In-process agents** — agents run in the same process rather than over IPC, staying isolated through scoped tool registries and namespaced state.
|
|
209
208
|
- **Typed runtime store** — a plain `zustand/vanilla` store with typed selectors and dispatch paths, reachable from agents, tools, renderer, hooks, channels, and daemon surfaces alike.
|
|
210
209
|
- **Tree-sitter and bundled language servers** — grammars for structural analysis, outlines, and AST-level edits, several embedded as WASM for instant startup; TypeScript, Python, Bash, CSS, HTML, and JSON language servers ship as dependencies, while `rust-analyzer` and `gopls` are fetched on first use with checksum verification.
|
|
211
|
-
- **Backend-first external surface** — the daemon
|
|
210
|
+
- **Backend-first external surface** — the daemon product exposes typed HTTP and gateway methods, so other clients do not reimplement runtime logic.
|
|
212
211
|
- **Crash recovery** — periodic snapshots plus an fsync-per-record append-only transcript journal, replayed at every resume seam.
|
|
213
212
|
- **Render coalescing and a per-message line cache** — same-tick render requests collapse into one composite frame, and transcript growth re-renders only the appended message instead of rebuilding the whole conversation.
|
|
214
213
|
|
|
@@ -227,7 +226,6 @@ src/
|
|
|
227
226
|
├── config/ settings layering, surface roots, secrets, credential availability
|
|
228
227
|
├── permissions/ approval cards, hunk selection, sandbox exec gate
|
|
229
228
|
├── cli/ flag parsing, management verbs, doctor, launch-time self-update
|
|
230
|
-
├── daemon/ daemon CLI, lifecycle, request handlers, service commands
|
|
231
229
|
├── tools/, mcp/, plugins/ TUI-local tool guards, MCP hot reload, plugin loader
|
|
232
230
|
├── audio/, export/ turn playback and speech routing, cost pricing and gist upload
|
|
233
231
|
├── verification/, work-plans/, widget/ live verifier and ledger, work-plan store, widget module
|
package/bin/goodvibes
CHANGED
|
@@ -21,7 +21,7 @@ if (process.platform === 'win32') {
|
|
|
21
21
|
process.exit(1);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
const artifactName = resolveArtifactName(
|
|
24
|
+
const artifactName = resolveArtifactName(process.platform, process.arch);
|
|
25
25
|
const localPlatformBuild = artifactName ? join(packageRoot, 'dist', artifactName) : null;
|
|
26
26
|
const localBuild = join(packageRoot, 'dist', 'goodvibes');
|
|
27
27
|
const vendoredBinary = artifactName ? join(packageRoot, 'vendor', artifactName) : null;
|
|
@@ -38,7 +38,7 @@ if (vendoredBinary && isExecutable(vendoredBinary)) {
|
|
|
38
38
|
run(vendoredBinary, process.argv.slice(2));
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
const platformPackageBinary = resolvePlatformPackageBinary(
|
|
41
|
+
const platformPackageBinary = resolvePlatformPackageBinary(process.platform, process.arch, packageRoot);
|
|
42
42
|
if (platformPackageBinary) {
|
|
43
43
|
run(platformPackageBinary, process.argv.slice(2));
|
|
44
44
|
}
|
package/bin/launcher-support.js
CHANGED
|
@@ -23,8 +23,8 @@ const PLATFORM_PACKAGE_NAMES = {
|
|
|
23
23
|
* trust step and no post-install download. Returns null when the package is not
|
|
24
24
|
* installed (e.g. an unsupported platform, or optional-dep resolution skipped).
|
|
25
25
|
*/
|
|
26
|
-
export function resolvePlatformPackageBinary(
|
|
27
|
-
const artifactName = resolveArtifactName(
|
|
26
|
+
export function resolvePlatformPackageBinary(platform, arch, fromDir) {
|
|
27
|
+
const artifactName = resolveArtifactName(platform, arch);
|
|
28
28
|
if (!artifactName) return null;
|
|
29
29
|
const pkgName = PLATFORM_PACKAGE_NAMES[`${platform}-${arch}`];
|
|
30
30
|
if (!pkgName) return null;
|
|
@@ -65,8 +65,12 @@ export function supportedTargetsText() {
|
|
|
65
65
|
return SUPPORTED_TARGETS.join(', ');
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
// One binary, so no artifact KIND to choose between any more: this package
|
|
69
|
+
// shipped `goodvibes-daemon` alongside `goodvibes` while one repository built
|
|
70
|
+
// both, and the daemon is its own product with its own package and its own
|
|
71
|
+
// launcher now.
|
|
72
|
+
export function resolveArtifactName(platform, arch) {
|
|
73
|
+
const prefix = 'goodvibes';
|
|
70
74
|
if (platform === 'linux' && arch === 'x64') return `${prefix}-linux-x64`;
|
|
71
75
|
if (platform === 'linux' && arch === 'arm64') return `${prefix}-linux-arm64`;
|
|
72
76
|
if (platform === 'darwin' && arch === 'x64') return `${prefix}-macos-x64`;
|
package/docs/README.md
CHANGED
|
@@ -11,7 +11,7 @@ This directory contains the current product documentation for `goodvibes-tui`.
|
|
|
11
11
|
The layered settings model, the key-settings table, permission modes and the policy/trust system, plus the TUI-owned namespaces you add by hand to settings.json: checkpoint root guard, the scriptable statusline, session behavior, and launch-time self-update.
|
|
12
12
|
|
|
13
13
|
- [Deployment and services](deployment-and-services.md)
|
|
14
|
-
TUI-only mode, compiled binary behavior,
|
|
14
|
+
TUI-only mode, compiled binary behavior, adopting or autostarting the daemon, the in-process HTTP listener, inbound TLS, outbound trust configuration, control-plane entrypoints, the service registry and secret references, profiles and setup transfer, and integration helpers.
|
|
15
15
|
|
|
16
16
|
- [Remote access: a home server setup](remote-access.md)
|
|
17
17
|
Step-by-step continuity setup: daemon on an always-on box, webui from any browser, TUI over SSH, Tailscale for reachability and TLS, validated by `goodvibes doctor`.
|
|
@@ -44,7 +44,13 @@ This directory contains the current product documentation for `goodvibes-tui`.
|
|
|
44
44
|
`/share` session export to HTML/JSON/Markdown with redaction, upload, clipboard, and open options.
|
|
45
45
|
|
|
46
46
|
- [CLI flags](cli-flags.md)
|
|
47
|
-
Global flags reference: session lifecycle (`--continue`, `--resume`, `--fork`), confirmation bypass (`-y`/`--non-interactive`), output format consolidation, `--host` alias, and all other startup flags.
|
|
47
|
+
Global flags reference: session lifecycle (`--continue`, `--resume`, `--fork`), confirmation bypass (`-y`/`--non-interactive`), output format consolidation, `--host` alias, and all other startup and command-specific flags.
|
|
48
|
+
|
|
49
|
+
- [Commands reference](commands-reference.md)
|
|
50
|
+
The generated, categorized list of every slash command, its arguments, and its description — the same list `?` renders in the product.
|
|
51
|
+
|
|
52
|
+
- [Windows support](windows.md)
|
|
53
|
+
WSL2 as the supported path today, what the native Windows beta binary can and cannot do yet, and the POSIX-assumption blockers ahead of promotion.
|
|
48
54
|
|
|
49
55
|
- [Tools and commands](tools-and-commands.md)
|
|
50
56
|
Built-in tool families and a per-tool reference, slash-command families, the full keyboard-binding reference, the agent/archetype and hook systems, MCP and plugin extensibility, and the operator, diagnostics, and workflow surfaces that tie them together.
|
|
@@ -66,3 +72,6 @@ This directory contains the current product documentation for `goodvibes-tui`.
|
|
|
66
72
|
|
|
67
73
|
- [Foundation artifacts](foundation-artifacts/README.md)
|
|
68
74
|
Checked-in operator and peer contract manifests plus canonical knowledge GraphQL and SQL artifacts for release-gate and SDK extraction work.
|
|
75
|
+
|
|
76
|
+
- [GitHub Action](github-action.md)
|
|
77
|
+
The `run-goodvibes` composite action: installing a pinned, checksum-verified release in CI and running a non-interactive command or prompt against a workspace.
|