agentvibes 5.13.1 โ†’ 5.14.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.
Files changed (82) hide show
  1. package/.claude/audio/ui/CREDITS.txt +16 -16
  2. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  3. package/.claude/commands/agent-vibes-rdp.md +24 -24
  4. package/.claude/config/audio-effects.cfg.sample +52 -52
  5. package/.claude/docs/TERMUX_SETUP.md +408 -408
  6. package/.claude/github-star-reminder.txt +1 -1
  7. package/.claude/hooks/kokoro-server.py +219 -219
  8. package/.claude/hooks/kokoro-tts.py +141 -141
  9. package/.claude/hooks/party-stage-roster.py +328 -328
  10. package/.claude/hooks/play-tts-kokoro.sh +7 -2
  11. package/.claude/hooks/play-tts-ssh-remote.sh +38 -3
  12. package/.claude/hooks/requirements.txt +6 -6
  13. package/.claude/hooks/soprano-gradio-synth.py +139 -139
  14. package/.claude/hooks/translator.py +237 -237
  15. package/.claude/hooks-windows/kokoro-server.py +219 -219
  16. package/.claude/hooks-windows/kokoro-tts.py +107 -107
  17. package/.claude/hooks-windows/play-tts.ps1 +17 -0
  18. package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
  19. package/.claude/verbosity.txt +1 -1
  20. package/.clawdbot/README.md +105 -105
  21. package/CLAUDE.md +84 -176
  22. package/README.md +27 -2
  23. package/RELEASE_NOTES.md +68 -0
  24. package/WINDOWS-SETUP.md +208 -208
  25. package/bin/agent-vibes +39 -39
  26. package/bin/mcp-server.js +121 -121
  27. package/bin/test-bmad-pr +78 -78
  28. package/mcp-server/QUICK_START.md +203 -203
  29. package/mcp-server/README.md +345 -345
  30. package/mcp-server/examples/claude_desktop_config.json +11 -11
  31. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  32. package/mcp-server/examples/custom_instructions.md +169 -169
  33. package/mcp-server/install-deps.js +12 -2
  34. package/mcp-server/server.py +2111 -2085
  35. package/mcp-server/test_mcp_correctness.py +504 -504
  36. package/mcp-server/test_windows_script_parity.py +339 -339
  37. package/package.json +6 -3
  38. package/setup-ssh-receiver.ps1 +259 -0
  39. package/setup-windows.ps1 +39 -29
  40. package/src/cli/list-personalities.js +110 -110
  41. package/src/commands/bmad-voices.js +394 -394
  42. package/src/console/brand-colors.js +13 -13
  43. package/src/console/constants/personalities.js +44 -44
  44. package/src/console/tabs/agents-tab.js +14 -4
  45. package/src/console/tabs/help-tab.js +314 -314
  46. package/src/console/tabs/readme-tab.js +272 -272
  47. package/src/console/tabs/settings-tab.js +31 -6
  48. package/src/console/tabs/setup-tab.js +154 -32
  49. package/src/console/tabs/voices-tab.js +48 -6
  50. package/src/console/widgets/destroy-list.js +25 -25
  51. package/src/console/widgets/notice.js +55 -55
  52. package/src/installer/language-screen.js +31 -31
  53. package/src/installer/music-file-input.js +304 -304
  54. package/src/installer.js +91 -35
  55. package/src/services/language-service.js +47 -47
  56. package/src/services/llm-provider-service.js +4 -1
  57. package/src/services/provider-voice-catalog.js +9 -5
  58. package/src/utils/audio-format-validator.js +277 -277
  59. package/src/utils/dependency-checker.js +469 -469
  60. package/src/utils/file-ownership-verifier.js +358 -358
  61. package/src/utils/music-file-validator.js +285 -285
  62. package/src/utils/preview-list-prompt.js +144 -144
  63. package/src/utils/secure-music-storage.js +412 -412
  64. package/templates/agentvibes-receiver.ps1 +311 -0
  65. package/templates/agentvibes-receiver.sh +297 -297
  66. package/voice-assignments.json +8244 -8244
  67. package/.agentvibes/config.json +0 -17
  68. package/.agentvibes/install-manifest.json +0 -362
  69. package/.claude/config/audio-effects.cfg +0 -7
  70. package/.claude/config/audio-effects.cfg.bak-kokoro +0 -7
  71. package/.claude/config/background-music-enabled.txt +0 -1
  72. package/.claude/config/background-music-position.txt +0 -27
  73. package/.claude/config/background-music-volume.txt +0 -1
  74. package/.claude/config/background-music.cfg +0 -1
  75. package/.claude/config/background-music.txt +0 -1
  76. package/.claude/config/language.txt +0 -1
  77. package/.claude/config/personality.txt +0 -1
  78. package/.claude/config/reverb-level.txt +0 -1
  79. package/.claude/config/tts-speech-rate.txt +0 -1
  80. package/.claude/config/tts-verbosity.txt +0 -1
  81. package/.claude/hooks-windows/audio-cache-utils.ps1.user.bak +0 -119
  82. package/.claude/hooks-windows/soprano-gradio-synth.py.user.bak +0 -153
package/CLAUDE.md CHANGED
@@ -1,179 +1,87 @@
1
- # AgentVibes Development Guidelines
2
-
3
- **Version:** 3.0
4
- **Updated:** 2026-02-15
5
- **Status:** Active (Using BMAD Methodology)
6
-
7
- ## Overview
8
-
9
- AgentVibes is a Text-to-Speech system for AI assistants with personality support.
10
-
11
- ### Project Uses BMAD Methodology
12
-
13
- This project follows **BMAD (BMM - Business Model Methodology)** for all story development:
14
- - Use `/sprint-planning` to initialize sprint tracking
15
- - Use `/dev-story` for each story implementation (NOT manual commits)
16
- - `/dev-story` handles: implementation โ†’ testing โ†’ code review โ†’ auto-fixes โ†’ status updates
17
- - All stories tracked in `docs/implementation-artifacts/sprint-status.yaml`
18
- - Status updates: `ready-for-dev` โ†’ `in-progress` โ†’ `complete`
19
-
20
- **Required Reading:** See `BMAD-STORY-DEVELOPMENT.md` for complete workflow.
21
-
22
- ## Critical Rules
23
-
24
- ### โœ… MANDATORY: Use BMAD Workflow
25
- 1. **Initialize sprint:** Run `/sprint-planning` once per sprint
26
- 2. **Develop each story:** Run `/dev-story` (NOT manual coding)
27
- 3. **Never skip workflow steps** - Workflow enforces quality gates
28
- 4. **Update sprint-status.yaml** automatically via `/dev-story`
29
- 5. **Code review included** - Built into `/dev-story` workflow
30
-
31
- ### โœ… Non-Destructive Configuration Rule (MANDATORY)
32
- All code that reads, writes, or modifies user configuration MUST be non-destructive:
33
- 1. **Never delete or overwrite** existing user `.claude/` or `~/.claude/` config files (settings, voices, personalities, audio-effects.cfg) unless the user explicitly requested it
34
- 2. **Copy new files; never remove existing ones** โ€” installer adds missing files only
35
- 3. **Write hooks only when absent** โ€” `configureSessionStartHook` and similar functions check for existing hooks before writing
36
- 4. **Preserve custom entries** โ€” e.g. `audio-effects.cfg` user rows must survive an `agentvibes update`
37
- 5. **Creating directories is fine** โ€” `mkdir -p` / `{ recursive: true }` is always safe
38
- 6. Any function that could overwrite user data must have a test asserting idempotency
39
-
40
- ### โœ… Git Workflow (ONLY Outside BMAD)
41
- For changes outside story development:
42
- 1. Describe changes before acting
43
- 2. Get explicit user approval before commits/pushes
44
- 3. Test locally before pushing
45
- 4. Exception: Changes made by `/dev-story` auto-commit
46
-
47
- ## Security Requirements (SonarCloud Compliance)
48
-
49
- ### Core Security Rules (NO EXCEPTIONS)
50
- 1. **No hardcoded credentials** - Never commit API keys, passwords, tokens
51
- 2. **Validate all external input** - User input, files, environment variables
52
- 3. **Secure temp directories** - Use `$XDG_RUNTIME_DIR` or user-specific `/tmp`
53
- 4. **Verify file ownership** - Check before processing external files (uid check)
54
- 5. **Prevent path traversal** - Validate paths stay within expected directories (use `path.resolve()`)
55
- 6. **Never log sensitive data** - Mask credentials in logs
56
-
57
- ### Bash/Shell Security
58
- ```bash
59
- set -euo pipefail # REQUIRED: Always use strict mode
60
-
61
- # Secure temp with proper permissions
62
- TEMP_DIR="${XDG_RUNTIME_DIR:-/tmp}/agentvibes-$RANDOM"
63
- mkdir -p "$TEMP_DIR"; chmod 700 "$TEMP_DIR"
64
-
65
- # Verify file ownership before processing
66
- [[ $(stat -c '%u' "$file" 2>/dev/null || stat -f '%u' "$file" 2>/dev/null) == $(id -u) ]] || exit 1
67
-
68
- trap 'rm -f "$TEMP_FILE"' EXIT # Clean up: use single quotes for deferred expansion
69
-
70
- # Validate input
71
- [[ "$VALUE" =~ ^[0-9]+$ ]] || exit 1 # Only allow numbers
72
-
73
- echo "$VARIABLE" # GOOD: Quoted
74
- echo $VARIABLE # BAD: Vulnerable to word splitting
75
- ```
76
-
77
- ### JavaScript/Node.js Security
78
- ```javascript
79
- // Path safety: ALWAYS use path.resolve()
80
- const safePath = path.resolve(userInput);
81
- function isPathSafe(target, base) {
82
- const r = path.resolve(target), b = path.resolve(base);
83
- return r === b || r.startsWith(b + path.sep);
84
- }
85
-
86
- // Never log credentials - ALWAYS mask
87
- console.log('Key: ' + apiKey.substring(0, 3) + '...'); // Good
88
- console.log(`Key: ${apiKey}`); // BAD
89
-
90
- // Resource cleanup with try-finally
91
- let proc;
92
- try {
93
- proc = spawn(...);
94
- } finally {
95
- if (proc && !proc.killed) proc.kill();
96
- }
97
- ```
98
-
99
- ### Python Security
100
- ```python
101
- # Resource cleanup
102
- process = None
103
- try:
104
- process = subprocess.Popen(...)
105
- finally:
106
- if process and process.poll() is None:
107
- process.kill()
108
-
109
- # Graceful error handling
110
- try:
111
- content = path.read_text()
112
- except (PermissionError, UnicodeDecodeError, OSError) as e:
113
- print(f"Warning: {e}", file=sys.stderr)
114
- return default_value
115
- ```
116
-
117
- ## Code Quality Standards
118
-
119
- - โœ… **Error handling:** No silent failures - always handle errors explicitly
120
- - โœ… **Defensive programming:** Check preconditions and validate inputs
121
- - โœ… **Resource cleanup:** Always clean up files, processes, connections
122
- - โœ… **Race conditions:** Use file locking for shared resources
123
- - โœ… **Comments:** Security-critical code only (explain WHY, not WHAT)
124
- - โœ… **Single responsibility:** Keep functions focused and testable
125
-
126
- ## Testing Requirements
127
-
128
- - Run `npm test` before committing (REQUIRED)
129
- - Write tests for: input validation, path handling, edge cases
130
- - Code review via `/dev-story` includes test validation
131
- - Target: 80%+ code coverage for new features
132
-
133
- ## Definition of Done (Checked by /dev-story)
134
-
135
- - [ ] All tests pass (`npm test`)
136
- - [ ] No Sonar security hotspots
137
- - [ ] Code follows project patterns (project-context.md)
138
- - [ ] Credentials masked in logs
139
- - [ ] Paths validated (no traversal)
140
- - [ ] File operations safe (ownership checked)
141
- - [ ] Shell scripts use strict mode
142
- - [ ] Resources properly cleaned up
143
- - [ ] Acceptance criteria satisfied
144
-
145
- ## Story Development Workflow (REQUIRED)
146
-
147
- ### For Each Sprint:
148
- 1. Run `/sprint-planning` to initialize sprint-status.yaml
149
- 2. For each story, run `/dev-story` (handles everything)
150
- 3. Check progress anytime with `/sprint-status`
151
-
152
- ### What /dev-story Does:
153
- - Finds next ready-for-dev story
154
- - Loads story file with acceptance criteria
155
- - Implements tasks with code + tests
156
- - **Runs adversarial code review** (finds 3-10 issues)
157
- - **Auto-fixes HIGH and MEDIUM severity issues**
158
- - Validates against project-context.md
159
- - Updates sprint-status.yaml automatically
160
- - Marks story complete when all ACs satisfied
161
-
162
- **Never bypass the workflow** - it enforces all quality gates.
163
-
164
- ## Important Files
1
+ # AgentVibes โ€” Development Guidelines
2
+
3
+ **Updated:** 2026-07-06 (v5.12.x era)
4
+
5
+ ## What this is
6
+
7
+ AgentVibes (`agentvibes` on npm) gives AI coding agents a spoken voice: Claude Code hooks + MCP server + interactive TUI, with Piper/Kokoro/ElevenLabs providers, background music, per-agent BMAD voices, a remote SSH receiver, and avatar rendering. Node ESM core with **parallel bash and PowerShell runtimes** and a Python MCP server.
8
+
9
+ ## Repo map
10
+
11
+ | Path | What it is |
12
+ |------|-----------|
13
+ | `src/installer.js` + `src/installer/` | npx installer (manifest-based, non-destructive) |
14
+ | `src/console/` | blessed TUI (tabs, modals, widgets) |
15
+ | `src/services/` | config-service, provider services, **utterance-resolver.js** (single source of truth for playback plans) |
16
+ | `.claude/hooks/` + `.claude/hooks-windows/` | **Shipped product code** โ€” bash/PS1 runtime (`play-tts.sh`, `audio-processor.sh`, `bmad-speak.sh`, โ€ฆ) installed into user projects |
17
+ | `mcp-server/` | Python MCP server (`server.py`, pytest suite) |
18
+ | `templates/` | Remote receiver scripts (`agentvibes-receiver.sh`/`.ps1`) |
19
+ | `bin/` | CLI entry points (`agentvibes.js`, `resolve-utterance.js`, `mcp-server.js`) |
20
+ | `test/unit/` | node:test `.test.js` + bats `.bats` suites |
21
+ | `docs/implementation-artifacts/` | BMAD story files + `sprint-status.yaml` |
22
+ | `docs/architecture/` | Provider/system architecture docs |
23
+
24
+ **Everything under the repo's `.claude/` (hooks, personalities, commands, config) is the npm package payload.** Editing a hook here is a product change: it must pass tests, keep bash/PowerShell parity, and reach real installs via the installer (`manifestSafeCopy`) โ€” not just the dev checkout. The remote receiver additionally needs an in-place redeploy to `~/.agentvibes/` + watcher restart.
25
+
26
+ ## Architecture invariants (hard-won โ€” do not regress)
27
+
28
+ 1. **The utterance resolver is the single source of truth.** `src/services/utterance-resolver.js` reads all config once and emits a flat plan (voice, engine, transport, effects, music, speed, volume). Players consume the plan; they must NOT re-read config files directly. New playback behavior goes in the resolver + precedence table, not in a player script.
29
+ 2. **Volume defaults are 20% (`0.20`), never 70%.** Regression-tested; covered in bash, PS, and JS.
30
+ 3. **Never select TTS output by "most recent file."** Providers emit an `AV_OUTPUT:` sentinel on stdout; capture the exact filename and fail loudly on synthesis failure. The `ls -t` heuristic is retired.
31
+ 4. **Kokoro voices force the kokoro engine** (an `af_*`/`am_*` voice with a piper ENGINE column = silence). The resolver encodes this; keep it.
32
+ 5. **Bash/PowerShell parity.** Any change to `play-tts.sh` needs the mirror change in `play-tts.ps1` (and vice versa), plus the contract-test matrix (`AVI-S8.7`) kept green. Note the historical env-flag split: bash reads `AGENTVIBES_NO_PLAYBACK`, PS reads `AGENTVIBES_NO_PLAY` โ€” set both.
33
+ 6. **Receiver settings are keyed by project** (TTS `--project-dir` basename namespaces scene/avatar/voice). Don't wipe `glb-scenes.json` โ€” it holds calibration.
34
+ 7. **SSH senders must never force `-p 22`** โ€” it overrides `~/.ssh/config` alias ports and silently drops TTS.
35
+
36
+ ## Non-Destructive Configuration Rule (MANDATORY)
37
+
38
+ All code touching user `.claude/` or `~/.claude/` config must be non-destructive. This is enforced by real machinery โ€” use it:
39
+
40
+ - `manifestSafeCopy()` in `src/installer.js` copies via an install manifest and refuses to clobber user-modified files. New installed files go through it.
41
+ - `configureSessionStartHook()` and friends write hooks **only when absent**.
42
+ - Never delete/overwrite user settings, voices, personalities, or `audio-effects.cfg`; custom entries must survive `agentvibes update`. A settings.json parse error must not wipe the file.
43
+ - Any function that could overwrite user data needs an idempotency test (see `test/unit/installer-config-safety.test.js`, `install-manifest.test.js`).
44
+
45
+ ## Development workflow
46
+
47
+ Hybrid, in practice:
48
+
49
+ - **BMAD for planning and tracking.** Epics/stories live in `docs/implementation-artifacts/` with `sprint-status.yaml` actively maintained. Use `/sprint-planning`, `/create-story`, `/dev-story` for story-shaped work; update `sprint-status.yaml` when a story changes state.
50
+ - **Implementation happens on feature branches and git worktrees** (many active: `feat/*`, `fix/*`, worktrees like `AgentVibes-musetalk`, `AgentVibes-outfit-swap`), merged to `master`. Direct fixes, agent-driven implementation, and adversarial code-review passes are all normal โ€” `/dev-story` is a tool, not a gate on every commit.
51
+ - **Adversarial code review before merging significant work** (see the `fix(review): โ€ฆ` commits); HIGH/MEDIUM findings get fixed, not deferred.
52
+ - Get explicit user approval before commits/pushes for non-story work. Paul doesn't code โ€” do the work end-to-end via scripts; give estimates in AI time.
53
+
54
+ ## Testing
55
+
56
+ - `npm test` โ†’ `scripts/run-tests.sh`: syntax check โ†’ bats suite โ†’ `node --test` with c8 coverage. **Required before committing.**
57
+ - The runner suppresses TTS audio globally (marker file `~/.agentvibes-tests-running` + `AGENTVIBES_SUPPRESS_AUDIO` + both no-play flags). Opt in to audio with `AGENTVIBES_TEST_AUDIO=true`.
58
+ - Python: `pytest` in `mcp-server/` (`test_server.py`, `test_mcp_correctness.py`, `test_windows_script_parity.py`).
59
+ - CI: `test.yml`, `test-windows.yml`, `test-macos*.yml`, `sonarcloud.yml`, `codeql.yml`, `publish.yml`.
60
+ - New regressions become permanent tests (contract-test matrix pattern) โ€” a bug fixed without a test will come back.
61
+
62
+ ## Releases โ€” use the `/release` skill
63
+
64
+ `/release` runs the managed workflow with human checkpoints: pre-flight (coverage must pass, secret scan), version-bump recommendation, drafted RELEASE_NOTES.md + README "NEW IN" section + 8-language translations (`docs/i18n/`), then `npm version` โ†’ push โ†’ `gh release create` โ†’ optional `npm publish`, each gated on explicit approval.
65
+
66
+ - **`package.json` is the single source of truth for version.** The README badge is auto-updated by `scripts/sync-readme-version.js` via the npm `version` hook โ€” never hand-edit it.
67
+ - **`npm publish` packs the working tree, not the git tag.** Run the pack-contents test (`test/unit/npm-pack-contents.test.js`) and never publish from a dirty tree.
68
+ - Alpha flow is normal: ship `x.y.z-alpha.N` while iterating, then promote to stable.
69
+
70
+ ## Security (project-specific, enforced by tests)
71
+
72
+ - **User-supplied file paths** (custom music, config) go through the validator chain: `path.resolve()`, containment check, magic-number format validation, UID ownership check (see `audio-format-validator`, `file-ownership-verifier` and the 180-case traversal suite).
73
+ - **Hooks/shell scripts use `set -euo pipefail`**, quoted expansions, and `trap` cleanup of temp files.
74
+ - **Never display or log secrets** โ€” no API keys/tokens in chat, logs, commits, or example data (real SSH ports/aliases were once scrubbed from tests; don't reintroduce them). Mask credentials (`key.substring(0,3) + '...'`).
75
+ - Clean up spawned processes (`try/finally` kill in JS, `finally: process.kill()` in Python) โ€” the TUI spawns preview processes constantly.
76
+ - SonarCloud runs on CI after push; it can't run locally.
77
+
78
+ ## Key references
165
79
 
166
80
  | File | Purpose |
167
81
  |------|---------|
168
- | `CLAUDE.md` | Development standards (this file) |
169
- | `BMAD-STORY-DEVELOPMENT.md` | How to use BMAD methodology |
170
- | `project-context.md` | Project-specific patterns (if exists) |
171
- | `docs/epics.md` | All epics and stories |
172
- | `docs/implementation-artifacts/sprint-status.yaml` | Sprint progress tracking |
173
- | `_bmad/core/tasks/workflow.xml` | BMAD execution engine (read-only) |
174
-
175
- ## References
176
-
177
- - **BMAD Methodology:** See `/sprint-planning`, `/dev-story`, `/sprint-status` workflows
178
- - **Security Standards:** [SonarCloud Rules](https://rules.sonarsource.com/javascript/type/Security_Hotspot), [OWASP Top 10](https://owasp.org/www-project-top-ten/)
179
- - **Bash Best Practices:** [Shellharden](https://github.com/anordal/shellharden/blob/master/how_to_do_things_safely_in_bash.md)
82
+ | `docs/implementation-artifacts/sprint-status.yaml` | Live sprint/story state |
83
+ | `docs/architecture/provider-system.md` | Provider architecture |
84
+ | `BMAD-STORY-DEVELOPMENT.md` | BMAD story workflow reference |
85
+ | `AGENTS.md` | TTS protocol for AI agents using AgentVibes |
86
+ | `.claude/skills/release/SKILL.md` | Release workflow |
87
+ | `docs/feature-platform-matrix.md` | What works on which platform |
package/README.md CHANGED
@@ -58,7 +58,17 @@ New here? The [**Quick Start guide**](docs/quick-start.md) walks you through you
58
58
 
59
59
  ---
60
60
 
61
- ## ๐Ÿ†• Your voices everywhere (v5.13.0)
61
+ ## ๐Ÿ†• Reliable setup and complete audio previews (v5.14.0)
62
+
63
+ Includes all changes from 5.13.2, which was not published to npm.
64
+
65
+ - **Setup completes on macOS and Linux** โ€” installing Piper and downloading voices now runs correctly on a fresh machine, resolving a long-standing first-install issue.
66
+ - **Preview plays your complete mix** โ€” voice, reverb/effects and background music together, so previews reflect how your agent will actually sound.
67
+ - **Updates preserve your customisations** โ€” edited hook scripts are backed up with a timestamp before any file is replaced.
68
+ - **Clearer audio destination** โ€” Settings shows **Local** in green and **Remote** in red.
69
+ - **Correct preview engine** โ€” previews use the selected voice's own engine and identify it; Windows and macOS voices work over remote previews.
70
+
71
+ ### v5.13.0 โ€” Your voices everywhere
62
72
 
63
73
  Pick the voices built into **Windows** or **Mac** and hear them wherever you're listening โ€” even when your agents run on another computer. Plus a friendly heads-up chime so you always know sound is coming.
64
74
 
@@ -215,6 +225,21 @@ Running a full BMAD agent team? **Every agent gets its own distinct voice**, aut
215
225
 
216
226
  ---
217
227
 
228
+ ## ๐Ÿ”ฌ Reserved for future enhancements
229
+
230
+ You may notice a few dormant hooks in `.claude/hooks/` (`forward-to-avatar.sh`) and small
231
+ gated blocks inside `play-tts.sh` / `play-tts.ps1` referencing a "TalkingHead avatar" and a
232
+ `config/talking-head-enabled.txt` flag. These are **not an active feature** โ€” there's no
233
+ avatar UI shipped in this package. They're scaffolding for an in-development, browser-based
234
+ avatar receiver that isn't merged yet, checked in early so that project has a stable
235
+ client-side delivery contract to build against.
236
+
237
+ Everything about this is inert by default: the enable-flag file doesn't exist until you
238
+ create it yourself, and every code path is short-circuited behind that check before it does
239
+ anything (no new network calls, no behavior change) for every current install.
240
+
241
+ ---
242
+
218
243
  ## ๐Ÿ“š Documentation
219
244
 
220
245
  | Guide | |
@@ -233,7 +258,7 @@ Running a full BMAD agent team? **Every agent gets its own distinct voice**, aut
233
258
 
234
259
  ## About
235
260
 
236
- **AgentVibes** ยท v5.13.1 ยท Licensed under [Apache-2.0](LICENSE)
261
+ **AgentVibes** ยท v5.14.0 ยท Licensed under [Apache-2.0](LICENSE)
237
262
 
238
263
  Built by **Paul Preibisch** โ€” [@997Fire on X](https://x.com/997Fire) ยท [agentvibes.org](https://agentvibes.org) ยท [github.com/paulpreibisch/AgentVibes](https://github.com/paulpreibisch/AgentVibes)
239
264
 
package/RELEASE_NOTES.md CHANGED
@@ -1,5 +1,73 @@
1
1
  # AgentVibes Release Notes
2
2
 
3
+ ## v5.14.0 โ€” Reliable setup and complete audio previews
4
+
5
+ **Released:** 2026-07-19 ยท `npm install agentvibes@latest`
6
+
7
+ This release focuses on two things: getting AgentVibes installed correctly on every platform, and making the Preview button an accurate representation of how your agent will actually sound. It also includes everything from 5.13.2, which was tagged but never published to npm.
8
+
9
+ ### Setup now completes properly on macOS and Linux
10
+
11
+ Installing Piper and downloading voices now runs correctly on a fresh macOS or Linux machine. Previously these steps could report a failure without having run, which left new users without a working voice engine and no clear way forward. This was a long-standing issue affecting first-time installs specifically โ€” if you gave up on setup previously, it is worth another try.
12
+
13
+ Related: several setup scripts are now stored in the correct line-ending format, so they execute properly on macOS and Linux.
14
+
15
+ ### Preview plays your complete audio mix
16
+
17
+ The Preview button now plays exactly what your agent will sound like: your selected **voice**, any **reverb or audio effects**, and your **background music**, mixed together.
18
+
19
+ Two cases previously played an incomplete mix. Hermes agent previews omitted background music entirely, and on Windows the music track was dropped whenever ffmpeg โ€” the component that mixes music with speech โ€” was unavailable. Both are resolved, and if ffmpeg is missing you now receive a clear message identifying it rather than silently reduced audio.
20
+
21
+ ### Your customisations survive updates
22
+
23
+ If you have edited any of the hook scripts AgentVibes installs, updating now preserves your work. Your version is copied to a timestamped backup before any file is replaced:
24
+
25
+ ```
26
+ play-tts.ps1.user.bak.20260719-143052
27
+ ```
28
+
29
+ Each update creates its own backup, so earlier versions remain recoverable. On Windows, update coverage extended from 8 scripts to all 25.
30
+
31
+ ### Audio destination is clearer at a glance
32
+
33
+ Settings now colour-codes where your audio plays: **Local** in green, **Remote** in red. This makes it immediately obvious when audio is being routed to another machine.
34
+
35
+ ### Voice previews use the correct engine
36
+
37
+ Previewing a voice now uses that voice's own engine rather than the global setting, and identifies which engine you are hearing. Windows and macOS system voices work correctly through remote previews, and the Windows voice list now shows only voices that can actually be selected.
38
+
39
+ ### Windows remote audio
40
+
41
+ Sending audio from a Windows machine to another computer no longer alters file paths in transit, which previously prevented background music from reaching the receiver.
42
+
43
+ ### Package and quality
44
+
45
+ The published package no longer includes unnecessary files, and everything the application references is now present. The full test suite passes on Windows, macOS and Linux from a clean checkout, with new regression tests covering the preview behaviour described above.
46
+
47
+ ---
48
+
49
+ ## ๐Ÿ”ง v5.13.2 โ€” Cleaner installs, smoother setup
50
+
51
+ **Released:** 2026-07-17 ยท on `latest` โ€” `npm install agentvibes@latest`
52
+
53
+ ### ๐ŸŽ›๏ธ You start with the default settings, ready to make your own
54
+
55
+ Fresh installs now begin clean, with the built-in defaults for voice, background music, and personality โ€” so it's your setup from the very first run.
56
+
57
+ ### ๐Ÿง Mac and Linux setup works properly
58
+
59
+ A few of the scripts that set things up were saved in a Windows format that Mac and Linux can't read, so they'd stop before doing anything. They're in the right format now. Installing Piper and downloading voices work on a fresh Mac or Linux machine again.
60
+
61
+ ### ๐Ÿ”Š Your voice choice sticks
62
+
63
+ The settings file that remembers which voice goes with which engine could be read slightly wrong, so your engine choice quietly got ignored. Fixed โ€” what you pick is what you get.
64
+
65
+ ### ๐Ÿ“ฆ A smaller, tidier download
66
+
67
+ The package no longer carries files it never needed. Everything the app tells you to run is now actually included.
68
+
69
+ ---
70
+
3
71
  ## ๐Ÿ”ง v5.13.1 โ€” Windows updates that actually update
4
72
 
5
73
  **Released:** 2026-07-16 ยท on `latest` โ€” `npm install agentvibes@latest`