@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 +21 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +4 -4
- package/src/audio/wake-runtime.ts +5 -0
- package/src/version.ts +1 -1
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
|
[](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
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-tui",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
99
|
-
"@pellux/goodvibes-terminal-shell": "2.0.
|
|
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.
|
|
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.
|
|
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
|