@pellux/goodvibes-tui 2.0.12 → 2.0.14

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,53 @@ All notable changes to GoodVibes TUI.
4
4
 
5
5
  ---
6
6
 
7
+ ## [2.0.14] - 2026-08-15
8
+
9
+ ### Changes
10
+
11
+ - **A subscription sign-in from this terminal now reaches the whole platform**
12
+ (platform runtime 2.0.17): ChatGPT/Codex sessions move to the shared tier,
13
+ so the daemon that runs the turns uses the login you just completed instead
14
+ of whatever stale session its own store held.
15
+ - **Conversations through strict OpenAI-compatible gateways work again**
16
+ (platform runtime 2.0.17): the edit tool's schema declared a union with
17
+ `oneOf`, which gateways like abacus RouteLLM now reject wholesale — every
18
+ turn through such a provider failed with "Extra inputs are not permitted"
19
+ regardless of the prompt. The union is `anyOf` now, verified live through
20
+ this terminal against the gateway that surfaced it, and pinned by a
21
+ wire-compatibility test across every tool schema the platform ships.
22
+ - **Typing can no longer summon a system authentication prompt over the
23
+ screen** (platform runtime 2.0.17): on hosts whose polkit rules require
24
+ authentication for the keep-awake sleep inhibitor — typical for tmux/SSH
25
+ sessions the login manager does not count as an active seat — systemd's
26
+ interactive auth agent was registered on the controlling terminal and
27
+ painted "authentication is required to inhibit system sleep" over the UI
28
+ on every submitted message. The inhibitor is now requested with
29
+ `--no-ask-password`; refusal is silent and the platform runs without it.
30
+ `power.inhibitWhileWorking: false` remains the full opt-out.
31
+ - Bundled daemon floor moves to 1.28.19, which carries both fixes.
32
+
33
+ ## [2.0.13] - 2026-08-08
34
+
35
+ ### Changes
36
+
37
+ - **Spoken output reads prose, not markdown** (platform runtime 2.0.14):
38
+ formatting marks are stripped before synthesis — bold and italic markers,
39
+ heading hashes, link syntax, list bullets, table pipes — and fenced code
40
+ blocks are announced ("Code block omitted.") instead of read character by
41
+ character.
42
+ - **Post-wake capture ends when you stop talking, on real microphones**
43
+ (platform runtime 2.0.14): the silence floor follows the room through the
44
+ capture (a headset's automatic gain control no longer holds the microphone
45
+ open), and breath ticks shorter than `voice.wake.speechRetriggerMs` (new
46
+ setting, default 150 ms) no longer restart the silence countdown. A natural
47
+ pause under `voice.wake.silenceStopMs` still never cuts you off, and the
48
+ floor can never rise into your voice.
49
+ - **Every completed wake capture leaves a receipt** in the voice diagnostics:
50
+ starting and final floor, stop reason, duration, and absorbed bursts.
51
+ - Bundled daemon floor moves to 1.28.17, which carries the same capture and
52
+ spoken-output behavior.
53
+
7
54
  ## [2.0.12] - 2026-08-07
8
55
 
9
56
  ### 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-2.0.12-blue.svg)](https://github.com/mgd34msu/goodvibes-tui)
5
+ [![Version](https://img.shields.io/badge/version-2.0.14-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": "2.0.13"
6
+ "version": "2.0.17"
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": "2.0.12",
3
+ "version": "2.0.14",
4
4
  "description": "Terminal-native GoodVibes client for coding, operations, knowledge and channel workflows — a pure client of the GoodVibes daemon.",
5
5
  "type": "module",
6
6
  "main": "src/main.ts",
@@ -95,11 +95,11 @@
95
95
  "@anthropic-ai/bedrock-sdk": "^0.29.1",
96
96
  "@anthropic-ai/sdk": "^0.92.0",
97
97
  "@ast-grep/napi": "^0.42.0",
98
- "@pellux/goodvibes-sdk": "2.0.13",
99
- "@pellux/goodvibes-terminal-shell": "2.0.13",
98
+ "@pellux/goodvibes-sdk": "2.0.17",
99
+ "@pellux/goodvibes-terminal-shell": "2.0.17",
100
100
  "bash-language-server": "^5.6.0",
101
101
  "fuse.js": "^7.1.0",
102
- "@pellux/goodvibes-daemon": "1.28.16",
102
+ "@pellux/goodvibes-daemon": "1.28.19",
103
103
  "graphql": "^16.13.2",
104
104
  "jszip": "^3.10.1",
105
105
  "node-edge-tts": "^1.2.10",
@@ -32,6 +32,7 @@ import {
32
32
  encodeWavPcm16,
33
33
  resolveManagedWakePaths,
34
34
  resolveWakeModelFiles,
35
+ recordVoiceDiagnostic,
35
36
  resolveWakeRuntimeSettings,
36
37
  retainedClipFileName,
37
38
  utteranceToAudioArtifact,
@@ -238,6 +239,10 @@ export function wireWakeRuntime(deps: WakeRuntimeDeps): WakeRuntime {
238
239
  settings,
239
240
  openCapture: deps.openCapture,
240
241
  ...(deps.createNoiseSuppression !== undefined ? { createNoiseSuppression: deps.createNoiseSuppression } : {}),
242
+ // Every completed capture leaves a receipt (floor, stop reason, timings)
243
+ // in the shared voice diagnostics, so "it kept listening" is a number,
244
+ // not a mystery.
245
+ recordDiagnostic: (entry) => recordVoiceDiagnostic(deps.managedRoot, entry),
241
246
  createEngine: createWakeEngineFactory({
242
247
  assetDirectory: deps.assetDirectory,
243
248
  embeddingPath: paths.embeddingPath,
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 = '2.0.12';
9
+ let _version = '2.0.14';
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