@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.
Files changed (404) hide show
  1. package/CHANGELOG.md +125 -2
  2. package/README.md +7 -9
  3. package/bin/goodvibes +2 -2
  4. package/bin/launcher-support.js +8 -4
  5. package/docs/README.md +11 -2
  6. package/docs/foundation-artifacts/operator-contract.json +6403 -2347
  7. package/package.json +14 -25
  8. package/scripts/postinstall.js +35 -35
  9. package/src/audio/spoken-turn-model-routing.ts +1 -1
  10. package/src/cli/bundle-command.ts +5 -5
  11. package/src/cli/completions/generate.ts +1 -1
  12. package/src/cli/doctor.ts +3 -3
  13. package/src/cli/entrypoint.ts +12 -7
  14. package/src/cli/help.ts +4 -5
  15. package/src/cli/hooks-command.ts +1 -1
  16. package/src/cli/index.ts +1 -4
  17. package/src/cli/launch-auto-update.ts +59 -7
  18. package/src/cli/management-commands.ts +6 -6
  19. package/src/cli/management-utils.ts +5 -5
  20. package/src/cli/management.ts +7 -7
  21. package/src/cli/network-posture.ts +1 -1
  22. package/src/cli/package-verification.ts +7 -6
  23. package/src/cli/plugin-bundles-command.ts +1 -1
  24. package/src/cli/plugin-command.ts +2 -2
  25. package/src/cli/service-command.ts +2 -2
  26. package/src/cli/service-posture.ts +4 -4
  27. package/src/cli/status.ts +9 -8
  28. package/src/cli/surface-command.ts +4 -4
  29. package/src/cli/tui-startup.ts +12 -3
  30. package/src/cli-flags.ts +3 -3
  31. package/src/config/goodvibes-home-audit.ts +0 -2
  32. package/src/config/secret-config.ts +37 -5
  33. package/src/config/tui-extension-settings.ts +1 -1
  34. package/src/core/approval-alert.ts +2 -2
  35. package/src/core/budget-breach-notifier.ts +3 -3
  36. package/src/core/conversation-compaction-render.ts +1 -1
  37. package/src/core/conversation-line-cache.ts +1 -1
  38. package/src/core/conversation-render-context.ts +1 -1
  39. package/src/core/conversation-rendering.ts +2 -2
  40. package/src/core/conversation.ts +10 -10
  41. package/src/core/long-task-notifier.ts +2 -2
  42. package/src/core/memory-diagnostics-gateway.ts +1 -1
  43. package/src/core/scriptable-statusline.ts +1 -1
  44. package/src/core/session-auto-titler.ts +1 -1
  45. package/src/core/session-resume-core.ts +2 -2
  46. package/src/core/stream-event-wiring.ts +24 -44
  47. package/src/core/terminal-notifier.ts +3 -3
  48. package/src/core/turn-cancellation.ts +1 -1
  49. package/src/core/turn-event-wiring.ts +5 -5
  50. package/src/input/command-registry.ts +6 -6
  51. package/src/input/commands/channel-pairing.ts +1 -1
  52. package/src/input/commands/cluster-runtime.ts +1 -1
  53. package/src/input/commands/codebase-runtime.ts +1 -1
  54. package/src/input/commands/devices-runtime.ts +1 -1
  55. package/src/input/commands/hosted-runtime.ts +330 -0
  56. package/src/input/commands/local-setup-review.ts +1 -1
  57. package/src/input/commands/local-setup-transfer.ts +2 -2
  58. package/src/input/commands/local-setup.ts +3 -3
  59. package/src/input/commands/managed-runtime.ts +2 -2
  60. package/src/input/commands/operator-rpc.ts +24 -110
  61. package/src/input/commands/payment-card-intake.ts +1 -1
  62. package/src/input/commands/permissions-provenance.ts +2 -2
  63. package/src/input/commands/plugin-runtime.ts +1 -1
  64. package/src/input/commands/provider.ts +1 -1
  65. package/src/input/commands/relay-runtime.ts +18 -9
  66. package/src/input/commands/rewind-runtime.ts +1 -1
  67. package/src/input/commands/runtime-services.ts +1 -1
  68. package/src/input/commands/services-runtime.ts +1 -1
  69. package/src/input/commands/session-workflow.ts +1 -1
  70. package/src/input/commands/settings-sync-runtime.ts +2 -2
  71. package/src/input/commands/share-runtime.ts +1 -1
  72. package/src/input/commands/tasks-runtime.ts +145 -55
  73. package/src/input/commands/update-runtime.ts +31 -28
  74. package/src/input/commands/work-plan-runtime.ts +2 -2
  75. package/src/input/commands/workstream-attempts.ts +1 -1
  76. package/src/input/commands/workstream-runtime.ts +2 -2
  77. package/src/input/commands.ts +2 -0
  78. package/src/input/feature-unit-layout.ts +1 -1
  79. package/src/input/feed-context-factory.ts +3 -3
  80. package/src/input/handler-content-actions.ts +2 -2
  81. package/src/input/handler-feed-routes.ts +1 -1
  82. package/src/input/handler-feed.ts +3 -3
  83. package/src/input/handler-modal-token-routes.ts +1 -1
  84. package/src/input/handler-onboarding-daemon-adopt.ts +3 -2
  85. package/src/input/handler-onboarding.ts +1 -1
  86. package/src/input/handler-types.ts +2 -2
  87. package/src/input/handler-ui-state.ts +1 -1
  88. package/src/input/handler.ts +4 -4
  89. package/src/input/input-history.ts +1 -1
  90. package/src/input/onboarding/onboarding-feature-units.ts +2 -2
  91. package/src/input/onboarding/onboarding-runtime-status.ts +15 -1
  92. package/src/input/onboarding/onboarding-wizard-apply.ts +17 -8
  93. package/src/input/onboarding/onboarding-wizard-cloudflare-step.ts +5 -3
  94. package/src/input/onboarding/onboarding-wizard-external-surfaces.ts +1 -1
  95. package/src/input/onboarding/onboarding-wizard-types.ts +1 -1
  96. package/src/input/payments-config.ts +6 -6
  97. package/src/input/search.ts +1 -1
  98. package/src/input/session-picker-modal.ts +46 -0
  99. package/src/input/settings-modal-activation.ts +1 -1
  100. package/src/input/settings-modal-behavior.ts +4 -4
  101. package/src/input/settings-modal-commit.ts +11 -0
  102. package/src/input/settings-modal-data.ts +13 -80
  103. package/src/input/settings-modal-mutations.ts +33 -0
  104. package/src/input/settings-modal-secrets.ts +34 -0
  105. package/src/input/settings-modal-subscriptions.ts +1 -1
  106. package/src/input/settings-modal-types.ts +15 -1
  107. package/src/input/settings-modal.ts +28 -3
  108. package/src/input/worktree-setup-config.ts +1 -1
  109. package/src/main.ts +11 -9
  110. package/src/panels/agent-inspector-shared.ts +2 -2
  111. package/src/panels/base-panel.ts +2 -2
  112. package/src/panels/builtin/operations.ts +6 -8
  113. package/src/panels/builtin/session.ts +17 -0
  114. package/src/panels/builtin/shared.ts +5 -5
  115. package/src/panels/builtin-modals.ts +3 -3
  116. package/src/panels/confirm-state.ts +1 -1
  117. package/src/panels/cost-tracker-panel.ts +4 -4
  118. package/src/panels/diff-panel.ts +2 -2
  119. package/src/panels/diff-review-panel.ts +2 -2
  120. package/src/panels/expandable-list-panel.ts +2 -2
  121. package/src/panels/fleet-acts.ts +1 -1
  122. package/src/panels/fleet-observed-render.ts +1 -1
  123. package/src/panels/fleet-panel-format.ts +1 -1
  124. package/src/panels/fleet-panel.ts +1 -1
  125. package/src/panels/fleet-spawn.ts +1 -1
  126. package/src/panels/fleet-steer.ts +1 -1
  127. package/src/panels/fleet-transcript.ts +1 -1
  128. package/src/panels/git-panel.ts +1 -1
  129. package/src/panels/hosted-session-feed.ts +352 -0
  130. package/src/panels/hosted-session-panel.ts +221 -0
  131. package/src/panels/local-auth-panel.ts +3 -3
  132. package/src/panels/modals/devices-modal.ts +1 -1
  133. package/src/panels/modals/local-auth-modal.ts +1 -1
  134. package/src/panels/modals/pairing-modal.ts +1 -1
  135. package/src/panels/modals/services-modal.ts +1 -1
  136. package/src/panels/modals/settings-sync-modal.ts +1 -1
  137. package/src/panels/modals/subscription-modal.ts +1 -1
  138. package/src/panels/modals/work-plan-modal.ts +1 -1
  139. package/src/panels/notifications-panel.ts +1 -1
  140. package/src/panels/panel-confirm-overlay.ts +1 -1
  141. package/src/panels/plugins-panel.ts +2 -2
  142. package/src/panels/polish-core.ts +2 -2
  143. package/src/panels/polish-tables.ts +1 -1
  144. package/src/panels/polish.ts +2 -2
  145. package/src/panels/scrollable-list-panel.ts +3 -3
  146. package/src/panels/skills-panel.ts +3 -3
  147. package/src/panels/token-budget-panel.ts +5 -5
  148. package/src/panels/types.ts +1 -2
  149. package/src/permissions/prompt.ts +1 -1
  150. package/src/renderer/autocomplete-overlay.ts +1 -1
  151. package/src/renderer/block-actions-overlay.ts +1 -1
  152. package/src/renderer/bookmark-modal.ts +1 -1
  153. package/src/renderer/buffer.ts +1 -1
  154. package/src/renderer/code-block.ts +1 -1
  155. package/src/renderer/composer-fragments.ts +1 -1
  156. package/src/renderer/compositor.ts +2 -2
  157. package/src/renderer/config-modal.ts +1 -1
  158. package/src/renderer/context-inspector.ts +1 -1
  159. package/src/renderer/conversation-layout.ts +2 -2
  160. package/src/renderer/conversation-overlays.ts +1 -1
  161. package/src/renderer/conversation-surface.ts +2 -2
  162. package/src/renderer/diff-view.ts +1 -1
  163. package/src/renderer/diff.ts +1 -1
  164. package/src/renderer/file-picker-overlay.ts +1 -1
  165. package/src/renderer/fleet-tab-strip.ts +1 -1
  166. package/src/renderer/fullscreen-primitives.ts +2 -2
  167. package/src/renderer/fullscreen-workspace.ts +1 -1
  168. package/src/renderer/header-line.ts +1 -1
  169. package/src/renderer/help-overlay.ts +1 -1
  170. package/src/renderer/history-search-overlay.ts +2 -2
  171. package/src/renderer/layout.ts +5 -8
  172. package/src/renderer/markdown-inline.ts +1 -1
  173. package/src/renderer/markdown-table.ts +1 -1
  174. package/src/renderer/markdown.ts +1 -1
  175. package/src/renderer/mcp-workspace.ts +1 -1
  176. package/src/renderer/modal-factory.ts +2 -2
  177. package/src/renderer/model-workspace.ts +2 -2
  178. package/src/renderer/onboarding/onboarding-wizard.ts +1 -1
  179. package/src/renderer/overlay-box.ts +1 -1
  180. package/src/renderer/panel-composite.ts +1 -1
  181. package/src/renderer/panel-workspace-bar.ts +1 -1
  182. package/src/renderer/process-indicator.ts +1 -1
  183. package/src/renderer/profile-picker-modal.ts +1 -1
  184. package/src/renderer/search-overlay.ts +2 -2
  185. package/src/renderer/selection-modal-overlay.ts +1 -1
  186. package/src/renderer/session-picker-modal.ts +124 -3
  187. package/src/renderer/settings-modal-helpers.ts +2 -0
  188. package/src/renderer/settings-modal.ts +2 -2
  189. package/src/renderer/shell-surface.ts +2 -2
  190. package/src/renderer/system-message.ts +1 -1
  191. package/src/renderer/tab-strip.ts +1 -1
  192. package/src/renderer/theme-mode-config.ts +1 -1
  193. package/src/renderer/theme.ts +11 -12
  194. package/src/renderer/thinking.ts +1 -1
  195. package/src/renderer/tool-call.ts +2 -2
  196. package/src/renderer/tool-result-expanded-lines.ts +1 -1
  197. package/src/renderer/turn-injection.ts +7 -8
  198. package/src/renderer/ui-factory.ts +3 -3
  199. package/src/runtime/bootstrap-command-context.ts +4 -4
  200. package/src/runtime/bootstrap-command-parts.ts +5 -5
  201. package/src/runtime/bootstrap-core.ts +30 -30
  202. package/src/runtime/bootstrap-shell.ts +4 -4
  203. package/src/runtime/bootstrap.ts +128 -157
  204. package/src/runtime/client/approval-updates.ts +82 -0
  205. package/src/runtime/client/build-floors.ts +167 -0
  206. package/src/runtime/client/daemon-attach-handshake.ts +115 -0
  207. package/src/runtime/client/fleet-union.ts +147 -0
  208. package/src/runtime/client/host-service-status.ts +71 -0
  209. package/src/runtime/client/hosted-exit.ts +86 -0
  210. package/src/runtime/client/hosted-roster.ts +110 -0
  211. package/src/runtime/client/hosted-session-stream.ts +178 -0
  212. package/src/runtime/client/hosted-sessions.ts +187 -0
  213. package/src/runtime/client/operator-endpoint.ts +213 -0
  214. package/src/runtime/client/spine-adoption.ts +99 -0
  215. package/src/runtime/cloudflare-control-plane.ts +1 -1
  216. package/src/runtime/context-accounting-source.ts +1 -1
  217. package/src/runtime/context.ts +2 -2
  218. package/src/runtime/conversation-rewind-port.ts +42 -14
  219. package/src/runtime/daemon-attach-notices.ts +55 -19
  220. package/src/runtime/diagnostics/panels/ops.ts +1 -1
  221. package/src/runtime/disposal-wiring.ts +4 -24
  222. package/src/runtime/index.ts +119 -105
  223. package/src/runtime/install-self-check-startup.ts +2 -2
  224. package/src/runtime/interaction-seams.ts +1 -1
  225. package/src/runtime/knowledge-services.ts +8 -2
  226. package/src/runtime/legacy-daemon-migration.ts +15 -3
  227. package/src/runtime/legacy-daemon-reconcile.ts +3 -2
  228. package/src/runtime/memory-spine-transport.ts +37 -267
  229. package/src/runtime/notification-dispatch.ts +2 -2
  230. package/src/runtime/onboarding/apply.ts +2 -2
  231. package/src/runtime/onboarding/derivation.ts +2 -2
  232. package/src/runtime/onboarding/markers.ts +2 -2
  233. package/src/runtime/onboarding/progress.ts +2 -2
  234. package/src/runtime/onboarding/snapshot.ts +1 -1
  235. package/src/runtime/onboarding/state.ts +2 -2
  236. package/src/runtime/onboarding/types.ts +2 -2
  237. package/src/runtime/orchestrator-core-services.ts +1 -1
  238. package/src/runtime/path-shadow-startup.ts +28 -221
  239. package/src/runtime/power-keepawake-remote.ts +3 -2
  240. package/src/runtime/process-lifecycle.ts +2 -2
  241. package/src/runtime/provider-fallback.ts +10 -66
  242. package/src/runtime/recovery-autosave.ts +1 -1
  243. package/src/runtime/recovery-offer-wiring.ts +39 -23
  244. package/src/runtime/recovery-prompt.ts +31 -17
  245. package/src/runtime/relay-reachability-bridge.ts +53 -42
  246. package/src/runtime/release-artifacts.ts +2 -1
  247. package/src/runtime/runtime-services-types.ts +82 -35
  248. package/src/runtime/services.ts +305 -300
  249. package/src/runtime/session-resume-liveness-confirm.ts +1 -1
  250. package/src/runtime/ui-services.ts +7 -6
  251. package/src/runtime/update-check.ts +23 -43
  252. package/src/runtime/workspace-checkpointing.ts +1 -1
  253. package/src/runtime/wrfc-persistence.ts +2 -2
  254. package/src/shell/ui-openers.ts +30 -7
  255. package/src/utils/clipboard.ts +1 -1
  256. package/src/verification/verification-ledger.ts +10 -8
  257. package/src/version.ts +1 -1
  258. package/bin/goodvibes-daemon +0 -90
  259. package/src/cli/config-overrides.ts +0 -267
  260. package/src/cli/endpoints.ts +0 -109
  261. package/src/cli/parser.ts +0 -395
  262. package/src/cli/redaction.ts +0 -170
  263. package/src/cli/types.ts +0 -84
  264. package/src/cluster/commands.ts +0 -382
  265. package/src/cluster/remote-daemon-target.ts +0 -225
  266. package/src/cluster/render.ts +0 -268
  267. package/src/config/atomic-write.ts +0 -70
  268. package/src/config/credential-availability.ts +0 -122
  269. package/src/config/goodvibes-home.ts +0 -149
  270. package/src/config/index.ts +0 -88
  271. package/src/config/provider-model.ts +0 -23
  272. package/src/config/read-versioned.ts +0 -228
  273. package/src/core/alert-gating.ts +0 -67
  274. package/src/core/consolidation-receipt.ts +0 -41
  275. package/src/core/focus-tracker.ts +0 -41
  276. package/src/core/history.ts +0 -45
  277. package/src/core/memory-status.ts +0 -118
  278. package/src/core/orchestrator.ts +0 -7
  279. package/src/core/pairing-devices.ts +0 -49
  280. package/src/core/pairing-handoff.ts +0 -101
  281. package/src/core/pairing-offers.ts +0 -83
  282. package/src/core/pairing-origin.ts +0 -78
  283. package/src/core/rewind-turn-anchors.ts +0 -311
  284. package/src/core/session-recovery.ts +0 -210
  285. package/src/core/stable-host.ts +0 -171
  286. package/src/core/transcript-journal.ts +0 -503
  287. package/src/daemon/cli.ts +0 -641
  288. package/src/daemon/handlers/context.ts +0 -29
  289. package/src/daemon/handlers/contracts.ts +0 -77
  290. package/src/daemon/handlers/credentials.ts +0 -139
  291. package/src/daemon/handlers/drafts/draft-store.ts +0 -427
  292. package/src/daemon/handlers/drafts/index.ts +0 -17
  293. package/src/daemon/handlers/drafts/register.ts +0 -331
  294. package/src/daemon/handlers/errors.ts +0 -18
  295. package/src/daemon/handlers/inbox/cursor-store.ts +0 -457
  296. package/src/daemon/handlers/inbox/index.ts +0 -284
  297. package/src/daemon/handlers/inbox/mapping.ts +0 -192
  298. package/src/daemon/handlers/inbox/poller.ts +0 -212
  299. package/src/daemon/handlers/inbox/provider-adapter.ts +0 -156
  300. package/src/daemon/handlers/inbox/providers/discord.ts +0 -252
  301. package/src/daemon/handlers/inbox/providers/email.ts +0 -152
  302. package/src/daemon/handlers/inbox/providers/imap-client.ts +0 -300
  303. package/src/daemon/handlers/inbox/providers/route-util.ts +0 -24
  304. package/src/daemon/handlers/inbox/providers/slack.ts +0 -263
  305. package/src/daemon/handlers/index.ts +0 -117
  306. package/src/daemon/handlers/register.ts +0 -168
  307. package/src/daemon/handlers/remote/backends/cloud-terminal.ts +0 -142
  308. package/src/daemon/handlers/remote/backends/docker.ts +0 -79
  309. package/src/daemon/handlers/remote/backends/index.ts +0 -40
  310. package/src/daemon/handlers/remote/backends/local-process.ts +0 -113
  311. package/src/daemon/handlers/remote/backends/process-runner.ts +0 -127
  312. package/src/daemon/handlers/remote/backends/ssh.ts +0 -125
  313. package/src/daemon/handlers/remote/backends/types.ts +0 -97
  314. package/src/daemon/handlers/remote/dispatcher.ts +0 -181
  315. package/src/daemon/handlers/remote/index.ts +0 -119
  316. package/src/daemon/handlers/remote/peer-registry.ts +0 -357
  317. package/src/daemon/handlers/remote/service.ts +0 -191
  318. package/src/daemon/handlers/routing/inbox-bridge.ts +0 -71
  319. package/src/daemon/handlers/routing/index.ts +0 -261
  320. package/src/daemon/handlers/routing/route-store.ts +0 -319
  321. package/src/daemon/handlers/routing/routing-resolver.ts +0 -75
  322. package/src/daemon/handlers/sqlite-store.ts +0 -278
  323. package/src/daemon/handlers/triage/index.ts +0 -57
  324. package/src/daemon/handlers/triage/integration.ts +0 -213
  325. package/src/daemon/handlers/triage/pipeline.ts +0 -274
  326. package/src/daemon/handlers/triage/scorer.ts +0 -287
  327. package/src/daemon/handlers/triage/tagger/discord.ts +0 -187
  328. package/src/daemon/handlers/triage/tagger/imap.ts +0 -384
  329. package/src/daemon/handlers/triage/tagger/index.ts +0 -184
  330. package/src/daemon/handlers/triage/tagger/shared.ts +0 -70
  331. package/src/daemon/handlers/triage/tagger/slack.ts +0 -69
  332. package/src/daemon/handlers/triage/types.ts +0 -50
  333. package/src/daemon/lifecycle.ts +0 -41
  334. package/src/daemon/provision-wake-model.ts +0 -81
  335. package/src/daemon/safe-serve.ts +0 -61
  336. package/src/daemon/send/channels.ts +0 -200
  337. package/src/daemon/send/command.ts +0 -332
  338. package/src/daemon/send/composition.ts +0 -99
  339. package/src/daemon/send/failure-text.ts +0 -93
  340. package/src/daemon/send/inert-text.ts +0 -225
  341. package/src/daemon/send/stdin.ts +0 -24
  342. package/src/daemon/service-commands.ts +0 -329
  343. package/src/export/cost-utils.ts +0 -319
  344. package/src/input/selection.ts +0 -135
  345. package/src/plugins/loader.ts +0 -15
  346. package/src/renderer/bottom-bar.ts +0 -58
  347. package/src/renderer/conversation-tree.ts +0 -228
  348. package/src/runtime/agent-graph-composition.ts +0 -78
  349. package/src/runtime/channel-composition.ts +0 -46
  350. package/src/runtime/cluster-composition.ts +0 -124
  351. package/src/runtime/cluster-group-composition.ts +0 -284
  352. package/src/runtime/code-index-services.ts +0 -167
  353. package/src/runtime/daemon-handler-composition.ts +0 -76
  354. package/src/runtime/device-posture-composition.ts +0 -110
  355. package/src/runtime/durability-housekeeping.ts +0 -183
  356. package/src/runtime/durability-services.ts +0 -155
  357. package/src/runtime/embedded-service-factories.ts +0 -58
  358. package/src/runtime/feature-settings.ts +0 -154
  359. package/src/runtime/fleet-needs-input-push.ts +0 -70
  360. package/src/runtime/fleet-services.ts +0 -41
  361. package/src/runtime/idle-power-services.ts +0 -85
  362. package/src/runtime/mail-composition.ts +0 -65
  363. package/src/runtime/memory-fold.ts +0 -55
  364. package/src/runtime/operator-token-cleanup.ts +0 -109
  365. package/src/runtime/path-shadow.ts +0 -418
  366. package/src/runtime/perf/panel-health-monitor.ts +0 -18
  367. package/src/runtime/provider-optimizer-wiring.ts +0 -55
  368. package/src/runtime/reachability-notice.ts +0 -100
  369. package/src/runtime/remote-execution-composition.ts +0 -62
  370. package/src/runtime/session-liveness-marker.ts +0 -257
  371. package/src/runtime/session-pointer-surface.ts +0 -22
  372. package/src/runtime/session-storage-services.ts +0 -41
  373. package/src/runtime/surface-feature-flags.ts +0 -96
  374. package/src/runtime/terminal-output-guard.ts +0 -235
  375. package/src/runtime/trust/workspace-registration.ts +0 -192
  376. package/src/runtime/trust/workspace-trust.ts +0 -229
  377. package/src/runtime/ui/index.ts +0 -39
  378. package/src/runtime/ui/model-picker/data-provider.ts +0 -182
  379. package/src/runtime/ui/model-picker/health-enrichment.ts +0 -231
  380. package/src/runtime/ui/model-picker/index.ts +0 -59
  381. package/src/runtime/ui/model-picker/types.ts +0 -153
  382. package/src/runtime/ui/provider-health/data-provider.ts +0 -244
  383. package/src/runtime/ui/provider-health/fallback-visualizer.ts +0 -71
  384. package/src/runtime/ui/provider-health/index.ts +0 -46
  385. package/src/runtime/ui/provider-health/types.ts +0 -146
  386. package/src/runtime/ui-events.ts +0 -1
  387. package/src/runtime/ui-read-model-helpers.ts +0 -1
  388. package/src/runtime/ui-read-models-observability-maintenance.ts +0 -1
  389. package/src/runtime/ui-read-models-observability-options.ts +0 -1
  390. package/src/runtime/ui-read-models-observability-remote.ts +0 -1
  391. package/src/runtime/ui-read-models-observability-security.ts +0 -1
  392. package/src/runtime/ui-read-models-observability-system.ts +0 -1
  393. package/src/runtime/ui-read-models-observability.ts +0 -1
  394. package/src/runtime/ui-service-queries.ts +0 -1
  395. package/src/runtime/voice-setup-services.ts +0 -98
  396. package/src/runtime/workstream-attempts-validation.ts +0 -77
  397. package/src/runtime/workstream-draft-edits.ts +0 -95
  398. package/src/runtime/workstream-draft-store.ts +0 -274
  399. package/src/runtime/workstream-draft-types.ts +0 -42
  400. package/src/runtime/workstream-services.ts +0 -373
  401. package/src/tools/index.ts +0 -1
  402. package/src/types/grid.ts +0 -48
  403. package/src/types/sql-js.d.ts +0 -15
  404. 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
- ## [Unreleased]
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
- ## [Unreleased]
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
  [![CI](https://github.com/mgd34msu/goodvibes-tui/actions/workflows/ci.yml/badge.svg)](https://github.com/mgd34msu/goodvibes-tui/actions/workflows/ci.yml)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
- [![Version](https://img.shields.io/badge/version-1.27.0-blue.svg)](https://github.com/mgd34msu/goodvibes-tui)
5
+ [![Version](https://img.shields.io/badge/version-2.0.1-blue.svg)](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 the package's postinstall place the matching TUI and daemon binaries. Only `@pellux/goodvibes-tui` itself needs trusting — no dependency does. If you skip that step, the `goodvibes` launcher still self-heals on first run by fetching and checksum-verifying the binaries. `npm install -g @pellux/goodvibes-tui` also works when `bun` is already on `PATH`.
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 | TUI-only or in-process daemon, headless daemon/API host, browser operator surface, background service and autostart, inbound TLS, outbound trust | [deployment-and-services.md](docs/deployment-and-services.md) |
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` | Run the local session daemon, bound to loopback |
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 also hosts the daemon in-process (`daemon.enabled`, on by default, loopback-bound) and the HTTP listener when `danger.httpListener` is enabled.
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 and control plane expose typed HTTP and gateway methods, so other clients do not reimplement runtime logic.
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('app', process.platform, process.arch);
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('app', process.platform, process.arch, packageRoot);
41
+ const platformPackageBinary = resolvePlatformPackageBinary(process.platform, process.arch, packageRoot);
42
42
  if (platformPackageBinary) {
43
43
  run(platformPackageBinary, process.argv.slice(2));
44
44
  }
@@ -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(kind, platform, arch, fromDir) {
27
- const artifactName = resolveArtifactName(kind, platform, arch);
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
- export function resolveArtifactName(kind, platform, arch) {
69
- const prefix = kind === 'daemon' ? 'goodvibes-daemon' : 'goodvibes';
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, in-process daemon/listener hosting, source-run daemon mode, inbound TLS, outbound trust configuration, control-plane entrypoints, the service registry and secret references, profiles and setup transfer, and integration helpers.
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.