@pellux/goodvibes-tui 1.22.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ All notable changes to GoodVibes TUI.
4
4
 
5
5
  ---
6
6
 
7
+ ## [1.23.0] - 2026-07-26
8
+
9
+ ### Changes
10
+
11
+ - Fixed: a work request sent over Telegram (or Google Chat, Signal, WhatsApp, telephony, iMessage, Microsoft Teams, BlueBubbles, Mattermost, Matrix, or Home Assistant) produced a proposal that could never be shown. The daemon asked for your agreement on a channel it had no way to send on, so you saw nothing and the work waited on an answer to a question that was never posed. Proposals now go out on every surface the gate covers.
12
+ - Fixed: the daemon discarded every log line it produced. Its activity log had no destination, so a rejected bot token, a surface that could not start, and a reply with nowhere to go all left no trace anywhere. The log now has a home before anything else starts, which is why the failures above were invisible until now.
13
+ - Fixed: an inbound message that landed in an already-running session started work immediately no matter how the conversation gate was configured. The gate's settings now reach the daemon, which is the process that receives the message.
14
+ - Fixed: a channel surface that was switched on but could not start said nothing. It now reports which surface, why it cannot start, and what would fix it.
15
+ - Fixed: conversation-gate settings edited from the TUI or the agent were written to that client's own settings file, which the daemon never reads, so they changed nothing. They now live with the daemon and existing values are moved there on first start, with a record of exactly what moved.
16
+
7
17
  ## [1.22.0] - 2026-07-26
8
18
 
9
19
  ### Changes
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.22.0-blue.svg)](https://github.com/mgd34msu/goodvibes-tui)
5
+ [![Version](https://img.shields.io/badge/version-1.23.0-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
 
@@ -3,7 +3,7 @@
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "1.15.0"
6
+ "version": "1.16.1"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-tui",
3
- "version": "1.22.0",
3
+ "version": "1.23.0",
4
4
  "description": "Terminal-native GoodVibes product for coding, operations, automation, knowledge, channels, and daemon-backed control-plane workflows.",
5
5
  "type": "module",
6
6
  "main": "src/main.ts",
@@ -106,8 +106,8 @@
106
106
  "@anthropic-ai/vertex-sdk": "^0.16.0",
107
107
  "@ast-grep/napi": "^0.42.0",
108
108
  "@aws/bedrock-token-generator": "^1.1.0",
109
- "@pellux/goodvibes-sdk": "1.15.0",
110
- "@pellux/goodvibes-terminal-shell": "1.15.0",
109
+ "@pellux/goodvibes-sdk": "1.16.1",
110
+ "@pellux/goodvibes-terminal-shell": "1.16.1",
111
111
  "bash-language-server": "^5.6.0",
112
112
  "fuse.js": "^7.1.0",
113
113
  "graphql": "^16.13.2",
@@ -133,10 +133,10 @@
133
133
  "typescript": "^5.9.3"
134
134
  },
135
135
  "optionalDependencies": {
136
- "@pellux/goodvibes-tui-linux-x64": "1.22.0",
137
- "@pellux/goodvibes-tui-linux-arm64": "1.22.0",
138
- "@pellux/goodvibes-tui-darwin-x64": "1.22.0",
139
- "@pellux/goodvibes-tui-darwin-arm64": "1.22.0"
136
+ "@pellux/goodvibes-tui-linux-x64": "1.23.0",
137
+ "@pellux/goodvibes-tui-linux-arm64": "1.23.0",
138
+ "@pellux/goodvibes-tui-darwin-x64": "1.23.0",
139
+ "@pellux/goodvibes-tui-darwin-arm64": "1.23.0"
140
140
  },
141
141
  "trustedDependencies": [],
142
142
  "overrides": {
@@ -382,6 +382,7 @@ export function createRuntimeServices(options: RuntimeServicesOptions): RuntimeS
382
382
  routeBindings,
383
383
  agentStatusProvider: agentManager,
384
384
  messageSender: agentMessageBus,
385
+ conversationGateConfig: configManager, // without this the gate runs on DEFAULTS: an inbound message landing in a live session takes the handover and starts work whatever conversationGate.mode/gatedSurfaces say
385
386
  });
386
387
  sessionBroker.setContinuationRunner(async ({ task, input }) => {
387
388
  const record = agentManager.spawn({
@@ -544,8 +545,7 @@ export function createRuntimeServices(options: RuntimeServicesOptions): RuntimeS
544
545
  bindProviderOptimizerFeatureFlag(featureFlags, providerOptimizer);
545
546
  applyProviderOptimizerConfigMode(configManager, providerOptimizer);
546
547
  const sessionMemoryStore = new SessionMemoryStore();
547
- const sessionLineageTracker = new SessionLineageTracker();
548
- const sessionChangeTracker = new SessionChangeTracker();
548
+ const sessionLineageTracker = new SessionLineageTracker(); const sessionChangeTracker = new SessionChangeTracker();
549
549
  const planManager = new ExecutionPlanManager(workingDirectory);
550
550
  const adaptivePlanner = new AdaptivePlanner();
551
551
  const idempotencyStore = new IdempotencyStore();
package/src/version.ts CHANGED
@@ -6,7 +6,7 @@ import { join } from 'node:path';
6
6
  // The prebuild script updates the fallback value before compilation.
7
7
  // Uses import.meta.dir (Bun) to locate package.json relative to this file,
8
8
  // which is correct regardless of the process working directory.
9
- let _version = '1.22.0';
9
+ let _version = '1.23.0';
10
10
  try {
11
11
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', 'package.json'), 'utf-8'));
12
12
  // Only trust a version read from OUR OWN package.json. A Bun single-file