@pellux/goodvibes-tui 2.0.12 → 2.0.13

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,27 @@ All notable changes to GoodVibes TUI.
4
4
 
5
5
  ---
6
6
 
7
+ ## [2.0.13] - 2026-08-08
8
+
9
+ ### Changes
10
+
11
+ - **Spoken output reads prose, not markdown** (platform runtime 2.0.14):
12
+ formatting marks are stripped before synthesis — bold and italic markers,
13
+ heading hashes, link syntax, list bullets, table pipes — and fenced code
14
+ blocks are announced ("Code block omitted.") instead of read character by
15
+ character.
16
+ - **Post-wake capture ends when you stop talking, on real microphones**
17
+ (platform runtime 2.0.14): the silence floor follows the room through the
18
+ capture (a headset's automatic gain control no longer holds the microphone
19
+ open), and breath ticks shorter than `voice.wake.speechRetriggerMs` (new
20
+ setting, default 150 ms) no longer restart the silence countdown. A natural
21
+ pause under `voice.wake.silenceStopMs` still never cuts you off, and the
22
+ floor can never rise into your voice.
23
+ - **Every completed wake capture leaves a receipt** in the voice diagnostics:
24
+ starting and final floor, stop reason, duration, and absorbed bursts.
25
+ - Bundled daemon floor moves to 1.28.17, which carries the same capture and
26
+ spoken-output behavior.
27
+
7
28
  ## [2.0.12] - 2026-08-07
8
29
 
9
30
  ### 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.13-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.14"
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.13",
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.14",
99
+ "@pellux/goodvibes-terminal-shell": "2.0.14",
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.17",
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.13';
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