let-them-talk 4.3.0 → 5.2.5

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
@@ -1,582 +1,640 @@
1
- # Changelog
2
-
3
- ## [4.3.0] - 2026-03-17
4
-
5
- ### Major — 3D Hub Game World, World Builder, Jukebox
6
-
7
- Built by a 5-agent team (Architect, Builder, Tester, Optimizer, Protocol) working in parallel.
8
-
9
- ### Added — 3D Hub Game Features
10
- - **World Builder** — Press B in player mode to open builder panel. 16 placeable assets across 5 categories (structural, furniture, decor, tech, lighting). Grid snap, ghost preview, R to rotate, right-click delete, Ctrl+Z undo. Draggable panel, works in fullscreen.
11
- - **Jukebox** — Wurlitzer 1015-style jukebox in bar area with neon glow animation. Press E to interact. 4 playlist selector with YouTube popup player. Music persists while exploring.
12
- - **Minimap** — 140px radar overlay showing agent positions (color-coded by status) and player location. Only visible in fullscreen mode.
13
- - **Controls HUD** — Press H to toggle keybind reference panel. Auto-shows for 4 seconds on world entry.
14
- - **Fullscreen** — Dashboard fullscreen button now fullscreens only the 3D Hub (game mode), not the entire page.
15
-
16
- ### Added — Character Intelligence
17
- - **Emotion system** 11 emotion presets (happy, frustrated, thinking, excited, surprised, etc.) with auto-triggers from message content. Temporary face expression changes with auto-revert.
18
- - **Social visits** — Idle agents randomly walk to other agents' desks to chat (max 2 concurrent walks).
19
- - **Glance reactions** — Sitting agents turn heads toward speakers when messages are sent.
20
- - **Head nods** — Periodic nod animation when being visited by another agent.
21
- - **Auto coffee break** — Sleeping agents walk to rest area, return to desk when active again.
22
- - **Non-blocking input overlay** — Replaced browser prompt() dialogs with styled HTML overlay for click commands.
23
-
24
- ### Added — Dashboard
25
- - **Respawn button** One-click respawn for dead agents. Generates resume prompt from recovery snapshot + profile + tasks + recent history.
26
- - **Respawn API** `GET /api/agents/:name/respawn-prompt` endpoint with full context generation.
27
- - **World Builder API** `GET /api/world-layout` + `POST /api/world-save` for persistent world placements.
28
- - **3D-only fullscreen** Fullscreen targets 3D container when on 3D Hub tab.
29
-
30
- ### Fixed
31
- - **Manager chair spawn** — Stand-up now places player in front of desk (toward door), preventing wall collision.
32
- - **CSRF on 3D Hub** Added X-LTT-Request header to all office module POST requests (builder save, command menu actions).
33
- - **Respawn endpoint validation** Agent name validated (alphanumeric, max 20 chars) to prevent path traversal.
34
- - **Builder lazy-load** — Dynamic import() with silent failure prevents builder issues from breaking 3D Hub.
35
- - **Jukebox popup orphan** Module-scoped reference survives overlay dismiss/reopen cycles.
36
- - **Builder drag listener leak** — Stored refs removed in hidePanel().
37
- - **Jukebox prompt cleanup** dismissJukebox() called in office3dStop().
38
-
39
- ### Security
40
- - npm audit: 0 vulnerabilities
41
- - CSRF protection verified on all mutating endpoints
42
- - Input validation on all user-facing API parameters
43
- - No hardcoded secrets or sensitive data in shipped package
44
-
45
- ## [4.2.0] - 2026-03-17
46
-
47
- ### Major — Team Intelligence, Dashboard Upgrade, Performance
48
-
49
- Built by a 4-agent team (Architect, Tester, Protocol, Builder) working in parallel.
50
-
51
- ### AddedTeam Automation
52
- - **Auto-escalation** blocked tasks auto-broadcast `[ESCALATION]` to team after 5 minutes. File-based dedup via `task.escalated_at` field (cross-process safe). Clears on unblock.
53
- - **Stand-up meetings** config-driven periodic team check-ins (`standup_interval_hours` in config.json). File-based dedup, 5+ agent gate. Broadcasts task summary with in-progress/blocked/done counts.
54
- - **Quality gates** — `update_task(done)` auto-broadcasts `[REVIEW NEEDED]` (from v4.1.0, now with auto-escalation integration).
55
-
56
- ### Added Agent Intelligence
57
- - **Workload metrics** — reputation tracks `task_times[]` (completion seconds), leaderboard shows `avg_task_time_sec` per agent.
58
- - **Smarter suggest_task** caps at 3 in-progress tasks ("finish first"), suggests blocked tasks when no pending ones, workload-aware.
59
- - **KB hints in listen_group** batch messages checked against KB keys, returns `kb_hints` with relevant entries.
60
- - **Thread reply context** — `listen_group` includes `_reply_context` preview of parent message for threaded replies.
61
- - **Decision overlap hints** — `send_message` checks content against logged decisions, returns `_decision_hint` to prevent re-debating.
62
- - **Auto-status board** — `update_task` auto-writes `_status` to agent workspace ("Working on: X"). `list_agents` includes `current_status` field.
63
-
64
- ### Added — Dashboard
65
- - **Agent intent display** dashboard shows what each agent is currently working on (from workspace `_status`)
66
- - **Channel badges** — messages show colored `#channel` badges
67
- - **Channel filter bar** horizontal scrollable tabs to filter messages by channel
68
- - **Channel history merging** — `/api/history` merges channel-specific + general history files
69
- - **`/api/channels` endpoint** — channel list with member counts for dashboard
70
- - **`/api/decisions` endpoint** — decision log display in dashboard
71
- - **Decision log UI** — chronological cards with topic, decision, reasoning, author
72
-
73
- ### Improved — Performance & Safety
74
- - **Escalation dedup fix** replaced in-memory `_escalatedTasks` Set with file-based `task.escalated_at` field (cross-process safe for 10 agents)
75
- - **Dashboard current_status API** — `/api/agents` includes workspace `_status` for agent intent board
76
-
77
- ## [4.1.0] - 2026-03-17
78
-
79
- ### AddedAgent Reliability & Intelligence
80
-
81
- - **Auto-recovery (crash resume)** — when an agent's process dies, the server snapshots its state (active tasks, locked files, channels, workspace keys, last 5 messages) to `recovery-{name}.json`. When a replacement registers with the same name, the snapshot is included in the register response with instructions to resume, not restart. 1-hour TTL, auto-deletes after load.
82
- - **Quality gates** `update_task(id, "done")` auto-broadcasts `[REVIEW NEEDED]` to all alive agents. Teams get automatic review cycles without manually calling `request_review()`.
83
- - **Decision overlap hints** — `send_message` in group mode checks content against existing logged decisions. Returns `_decision_hint` if a related decision exists, preventing teams from re-debating settled topics.
84
- - **Enhanced `check_messages`**now returns rich summary: `senders`, `addressed_to_you`, `preview`, `urgency` level. The proactive counterpart to the enhanced nudge.
85
-
86
- ### Fixed
87
- - **Recovery lock notes** — snapshot correctly labels locked files as `locked_files_released` with note that locks were auto-released.
88
-
89
- ## [4.0.0] - 2026-03-17
90
-
91
- ### Major Release10-Agent Free Group Mode
92
-
93
- Massive scaling overhaul designed, implemented, and audited by a 3-agent team (Architect, Tester, Protocol). 12 changes, 3 bugs caught during collaborative code review.
94
-
95
- ### AddedScaling (4 features)
96
- - **Scaled context** — `listen_group` context window scales with team size: `min(50, max(20, agentCount * 5))`. 3 agents = 20 messages, 10 agents = 50.
97
- - **Send-after-listen enforcement** — agents must call `listen_group()` between sends. Prevents message storms. Addressed agents get 2 sends per cycle, others get 1.
98
- - **Response budget** max 2 unaddressed sends per 60 seconds. Time-based reset. Hint (not error) when depleted.
99
- - **Smart context with priority partitions** Bucket A (addressed messages, sacred, always included), Bucket B (channel messages, capped), Bucket C (chronological, fills remaining). Total guaranteed <= contextSize.
100
-
101
- ### Added Agent Awareness (3 features)
102
- - **Enhanced nudge** — every non-listen tool response now includes sender names, addressed count, and message preview: `"URGENT: 3 messages waiting (2 addressed to you): 2 from Architect, 1 from Protocol. Latest: 'Need your review...'"`
103
- - **Idle detection** — `listen_group()` returns `idle: true` after 60s with no messages, with proactive `work_suggestions`, task suggestions, and instructions. Agents auto-find work instead of blocking forever.
104
- - **Enhanced `check_messages`** — now returns rich summary: `senders`, `addressed_to_you`, `preview`, `urgency` level. The proactive counterpart to the passive nudge.
105
-
106
- ### Added — Organization
107
- - **Task-channel auto-binding** with 5+ agents in group mode, `create_task` auto-creates `#task-{id}` channels. Assignees auto-join on claim. Channels auto-delete on task completion. Naturally splits 10-agent noise into focused sub-teams.
108
-
109
- ### ImprovedPerformance
110
- - **Cached reads** — `getAgents()` (1.5s TTL), `getChannelsData()` (3s TTL), `getTasks()` (2s TTL) with write-through invalidation. Eliminates ~70% redundant disk I/O.
111
- - **Compact JSON writes** — removed pretty-print (`null, 2`) from all internal JSON writes. 2-3x less I/O overhead.
112
- - **Optimized agent status** — removed O(N) `getUnconsumedMessages` scan per agent in `listen_group` status computation.
113
- - **Dashboard SSE race fix** — `Array.from()` before Set iteration prevents skipped clients during concurrent connect/disconnect.
114
- - **Dashboard SSE heartbeat** 30s keepalive prevents dead connection accumulation and proxy timeouts.
115
- - **Dashboard file watcher cleanup** — old watcher properly closed on LAN toggle, prevents memory leaks.
116
- - **Dashboard watcher filter** — only triggers on `.json`/`.jsonl` files, ignores lock files and temp files.
117
-
118
- ### AddedSafety
119
- - **Collection caps** — tasks (1000), workflows (500), votes (500), reviews (500), dependencies (1000), branches (100), channels (100). Prevents DoS via unbounded growth.
120
- - **Input type validation** — `reply_to` and `channel` parameters type-checked as strings in `send_message`.
121
- - **Channel name validation fix** — error message corrected from "1-30 chars" to "1-20 chars" to match `sanitizeName()`.
122
-
123
- ## [3.10.0] - 2026-03-17
124
-
125
- ### AddedDynamic Guide with Progressive Disclosure
126
- - **`buildGuide()`** replaces hardcoded guide in register() and get_guide(). Returns only rules relevant to the current system state.
127
- - **Tiered rules:** Tier 0 (listen after every action), Tier 1 (core behavior), Tier 2 (group mode features), Tier 2b (channels), Tier 3 (large teams 5+)
128
- - **User-customizable:** `.agent-bridge/guide.md` for project-specific rules
129
- - 2-agent direct mode = 5 rules. 10-agent group with channels = 12 rules.
130
-
131
- ## [3.9.1] - 2026-03-17
132
-
133
- ### Added
134
- - **Per-channel cooldown** — uses channel member count instead of total agents. 2-member #backend = 1s, regardless of 10 in #general
135
- - **`cooldown_applied_ms`** diagnostic field in send_message response showing exact cooldown applied
136
- - **`channel` field** in send_message response when sending to a channel
137
-
138
- ### Fixed
139
- - Task race condition`update_task` rejects claiming tasks already in_progress by another agent
140
-
141
- ## [3.9.0] - 2026-03-17
142
-
143
- ### Added — Channels & Split Cooldown
144
-
145
- - **`join_channel(name, description?)`**create or join a channel for sub-team communication
146
- - **`leave_channel(name)`** — leave a channel (can't leave #general, empty channels auto-delete)
147
- - **`list_channels()`** list all channels with members, message counts, membership status
148
- - **`send_message` channel parameter** — send to specific channel (`channel-{name}-messages.jsonl`)
149
- - **`listen_group` reads all subscribed channels** merges messages from general + channel files, sorted by timestamp
150
- - **Channel validation** — sending to nonexistent channel returns error with hint to create it
151
- - **Ghost member cleanup** heartbeat auto-removes dead agents from channel membership
152
- - **#general auto-created** — `members: ["*"]` (everyone), uses existing messages.jsonl for backward compat
153
- - **Split cooldown (reply_to-based)** fast lane (500ms) for addressed agents, slow lane (max 2000, N*1000) for unaddressed, incentivizes threading
154
-
155
- ### Fixed
156
- - Task race condition `update_task` now rejects claiming a task already in_progress by another agent, auto-assigns on claim
157
-
158
- ## [3.8.0] - 2026-03-16
159
-
160
- ### ChangedGroup Conversation Overhaul
161
-
162
- Redesigned from the ground up based on 3-agent collaborative testing and design session.
163
-
164
- **Single-write group messages (O(1) instead of O(N)):**
165
- - `send_message` in group mode now writes ONE message with `to: "__group__"` instead of N copies per agent
166
- - `broadcast` in group mode also uses single `__group__` write
167
- - Old O(N) auto-broadcast loop completely removed
168
- - Result: with 6 agents, a message now creates 1 write instead of 6. A broadcast round that previously created 30 writes now creates 6.
169
-
170
- **`addressed_to` field + `should_respond` hints:**
171
- - `send_message(to="AgentName")` in group mode stores `addressed_to: ["AgentName"]` on the `__group__` message
172
- - `listen_group` response includes `addressed_to_you: true/false` and `should_respond: true/false` per message
173
- - Hint-based, not enforcedagents can still respond when they have valuable input
174
- - No `addressed_to` = everyone should respond (backwards compatible)
175
-
176
- **Adaptive cooldown:**
177
- - Cooldown now scales with team size: `max(500ms, N * 500ms)` where N = alive agent count
178
- - 2 agents = 1s, 3 agents = 1.5s, 6 agents = 3s, 10 agents = 5s
179
- - Explicit `group_cooldown` config still respected if set
180
-
181
- **Shorter stagger:**
182
- - Deterministic stagger reduced from 0-3000ms to 500-1500ms
183
- - Same agent always gets the same delay (hash-based)
184
-
185
- **Alive-only garbage collection:**
186
- - `autoCompact` for `__group__` messages only checks alive agents for consumed tracking
187
- - Dead agents no longer block message compaction forever
188
- - Dead agents catch up via `get_compressed_history()` which reads history.jsonl (never compacted)
189
-
190
- **Own-message filtering:**
191
- - Agents no longer see their own `__group__` messages in `listen_group` batches
192
- - Own messages are auto-consumed on sight
193
- - Own messages still visible in `context` array for reference
194
-
195
- ### Added — 3D World: Player Mode & Improvements
196
- - **Player character** — users can spawn as a controllable character in the 3D Hub
197
- - **Spectator camera improvements**refined controls and speed
198
- - **Environment updates** — campus environment refinements
199
-
200
- ## [3.7.0] - 2026-03-16
201
-
202
- ### Added — Agent Ecosystem (20 new tools, 52 total)
203
-
204
- **Tier 1Critical Infrastructure:**
205
- - **`get_briefing()`** — full project onboarding in one call: agents, tasks, decisions, KB, locked files, progress, project file tree
206
- - **`lock_file(path)` / `unlock_file(path?)`**exclusive file editing with auto-release on agent death
207
- - **`log_decision(decision, reasoning?, topic?)` / `get_decisions(topic?)`**persistent decision log, prevents re-debating
208
- - **Agent recovery on rejoin** — `register()` returns active tasks, workspace keys, recent messages for returning agents
209
-
210
- **Tier 2 Quality of Life:**
211
- - **`kb_write(key, content)` / `kb_read(key?)` / `kb_list()`** shared team knowledge base (any agent reads/writes)
212
- - **Event hooks** — auto-fires system messages on `agent_join`, `task_complete`, `all_tasks_done`, `dependency_met`
213
- - **`update_progress(feature, percent, notes)` / `get_progress()`** — feature-level progress tracking with overall %
214
- - **`get_compressed_history()`**auto-compresses old messages into summary segments, keeps recent verbatim
215
- - **`listen_group()` now blocks indefinitely** — no more timeout, agents never drop out
216
-
217
- **Tier 3 — Advanced Collaboration:**
218
- - **`call_vote(question, options)` / `cast_vote(vote_id, choice)` / `vote_status(vote_id?)`** team voting with auto-resolve when all vote
219
- - **`request_review(file, desc)` / `submit_review(review_id, status, feedback)`** — code review pipeline with approve/changes_requested
220
- - **`declare_dependency(task_id, depends_on)` / `check_dependencies(task_id?)`** task dependency tracking with auto-notify on resolve
221
- - **`get_reputation(agent?)` / `suggest_task()`** — agent reputation tracking (auto-detects strengths), task suggestions based on skills
222
- - **Auto-reputation tracking** global hook tracks every action (messages, tasks, reviews, decisions, KB writes) without manual calls
223
-
224
- ### Fixed
225
- - **Monitor screens stay red** when agent stops listening — persistent color state instead of 300ms flash
226
- - **"NOT LISTENING" warning** shown prominently on desk monitor canvas
227
- - **Status color logic** — green = listening, red = active but not listening, yellow = sleeping, dim = dead
228
-
229
- ## [3.6.2] - 2026-03-16
230
-
231
- ### AddedMessage Awareness System
232
- - **Sender gets busy status** — `send_message` and `broadcast` tell you when recipients are working (not listening) so you know messages are queued
233
- - **Pending message nudge** — every non-listen tool call checks for unread messages and tells the agent to call `listen_group()` soon
234
- - **Message age tracking** — `listen_group` shows `age_seconds` per message and `delayed: true` flag for messages older than 30s
235
- - **Agent status in batch** `listen_group` returns `agents_status` map showing who is `listening` vs `working`
236
- - **listen_group retry** timeout now returns `retry: true` with explicit instruction to call again immediately
237
- - **next_action field** — successful `listen_group` response tells agent to call `listen_group()` again after responding
238
- - **Ctrl key removed from camera** — no longer moves camera down (Q/E only)
239
-
240
- ### Added 3D World: Campus Environment & Navigation
241
- - **Campus environment** new outdoor environment option with buildings, paths, green spaces
242
- - **Navigation system** — pathfinding for agents to walk around obstacles instead of through walls
243
- - **Door animations** — manager office door slides open when agents approach, closes when they leave
244
- - **Roof visibility** roof hides when camera is above ceiling height
245
-
246
- ## [3.6.1] - 2026-03-16
247
-
248
- ### Fixed
249
- - **3D Hub black screen on page load** — the office module loads asynchronously, but the initial `switchView('office')` fired before `office3dStart` was defined. Added auto-start at end of module so the 3D Hub loads immediately on refresh.
250
-
251
- ## [3.6.0] - 2026-03-16
252
-
253
- ### Added — Managed Conversation Mode
254
-
255
- - **`set_conversation_mode("managed")`** structured turn-taking for 3+ agent teams, prevents broadcast storms
256
- - **`claim_manager()`**claim the manager role (first caller wins, auto-election fallback)
257
- - **`yield_floor(to, prompt?)`** — manager-only: give an agent permission to speak (directed, round-robin `__open__`, or close `__close__`)
258
- - **`set_phase(phase)`** — manager-only: move team through discussion → planning → execution → review with auto-instructions to all agents
259
- - **Floor enforcement** — `send_message`, `broadcast`, `handoff`, and `share_file` all block non-floor-holders with actionable error messages
260
- - **Auto-advance turns** floor returns to manager after directed responses; round-robin advances to next alive agent automatically
261
- - **Manager disconnect recovery** — heartbeat detects dead manager within 10-30s, notifies all agents to re-elect
262
- - **Dead turn-holder detection** heartbeat detects dead agents holding the floor and resets it
263
- - **Managed mode in `listen_group()`** — returns `managed_context`, `should_respond`, and `instructions` to guide agent behavior
264
- - **`managed` template**4-agent team (Manager, Designer, Coder, Tester) with structured prompts
265
- - **`managed-team` conversation template**dashboard-launchable version
266
- - **Dashboard Docs tab** — in-dashboard documentation with full tool reference, managed mode guide, architecture, version history
267
- - **Dashboard managed mode badge** — header shows current phase and floor status when managed mode is active
268
-
269
- ### Added3D World Improvements
270
-
271
- - **Spectator camera** free-fly WASD + mouse camera replacing OrbitControls, no distance limits, Shift for fast movement, Q/E up/down
272
- - **6 new hairstyles** curly, afro, bun, braids, mohawk, wavy
273
- - **6 new eye styles** — surprised, angry, happy, wink, confident, tired
274
- - **5 new mouth styles** — grin, frown, smirk, tongue, whistle
275
- - **6 outfit types** hoodie, suit, dress, lab coat, vest, jacket with color customization
276
- - **3 body types** — default, stocky, slim (scale multipliers on torso/legs/arms)
277
- - **5 gesture animations** — wave, think, point, celebrate, stretch with idle gesture system
278
- - **New furniture** — bookshelf (random colored books), wall TV (animated dashboard with agent stats, scrolling ticker, clock), arcade machine (cabinet + screen + joystick + buttons), floor lamp (warm point light), area rug
279
- - **Agent behavior** — realistic conversation distance (1.8m), listener turns toward speaker, broadcast triggers wave gesture, task completion triggers celebrate
280
- - **3D Hub** — renamed from "Office", now default tab on page load
281
- - **Speed slider** — camera speed control in toolbar (1-20)
282
-
283
- ### Added3D Virtual Office (v1 foundation from previous session)
284
-
285
- - **Modular 3D engine** — 14 ES modules under `office/`
286
- - **Expanded office** — 28x16 floor with right wing, dividing wall, LOUNGE archway
287
- - **Dressing room** — mirror, raised platform, privacy partitions, coat hooks
288
- - **Rest area** — beanbags, circular rug, side table, warm ambient lighting
289
- - **Click-to-command**Dressing Room, Go Rest, Back to Work, Edit Profile
290
- - **Character designer** — 5-tab panel with live 3D rotating preview
291
- - **Accessory system** — glasses, headwear, neckwear with color customization
292
- - **Mod system infrastructure** — GLB/GLTF pipeline with validation
293
-
294
- ### Security
295
- - **Config file lock** — `config.json` read-modify-write operations now use file-based locking (same pattern as `agents.json`)
296
- - **Reserved name blocklist** — `__system__`, `__all__`, `__open__`, `__close__`, `system` cannot be registered as agent names
297
- - **Mode change protection** — only the manager can switch away from managed mode
298
- - **Floor enforcement on all message paths** `handoff` and `share_file` now enforce managed mode floor control
299
- - **Branch-aware system messages** — floor/phase notifications sent to recipient's branch, not sender's
300
- - **Phase history cap** — limited to 50 entries to prevent config.json bloat
301
- - `/office/*` and `/mods/*` static routes with path traversal protection
302
- - Mod file type allowlist blocks all executable formats
303
- - GLB magic bytes validation (server + client)
304
-
305
- ### Removed
306
- - ~1,100 lines of dead 2D isometric office code
307
-
308
- ## [3.5.0] - 2026-03-15
309
-
310
- ### Added — Group Conversation Mode
311
- - **`set_conversation_mode("group")`**enables free multi-agent collaboration with auto-broadcast
312
- - **`listen_group()`** — batch message receiver with random stagger (1-3s) to prevent simultaneous responses
313
- - Returns ALL unconsumed messages + last 20 messages of context + hints about silent agents
314
- - Auto-broadcast in group mode: every message is shared with all agents automatically
315
- - Cooldown enforcement: agents must wait 3s between sends to maintain conversation flow
316
- - Cascade prevention: broadcast copies don't trigger further broadcasts
317
- - MCP tools: 27 29
318
-
319
- ### AddedDashboard Features
320
- - **Notification panel** — bell icon with badge count, dropdown event feed (agent online/offline, listening status changes)
321
- - **Agent leaderboard**performance scoring (0-100) with responsiveness, activity, reliability, collaboration dimensions
322
- - **Cross-project search** — "All Projects" toggle in search bar, searches across all registered projects
323
- - **Animated replay export** — Export conversation as self-playing HTML file with typing animations and play/pause controls
324
- - **Ollama integration** — `npx let-them-talk init --ollama` auto-detects Ollama, creates bridge script for local models
325
-
326
- ### Fixed — PID & Registration Integrity
327
- - Registration file locking with try/finally (prevents race conditions when multiple agents register simultaneously)
328
- - PID stale detection uses `last_activity` with 30s threshold (prevents false "alive" from Windows PID reuse)
329
- - Lock file cleaned up on process exit
330
- - Dashboard inject/nudge snapshots project context at click time (prevents wrong-project race)
331
-
332
- ### Security
333
- - `toolHandoff` and workflow auto-handoff now check `canSendTo` permissions
334
- - `lastSentAt` updated in `toolBroadcast` (prevents cooldown bypass)
335
- - `config.json` added to both server and dashboard reset cleanup
336
- - Auto-broadcast respects `canSendTo` per recipient
337
-
338
- ## [3.4.4] - 2026-03-15
339
-
340
- ### Fixed
341
- - Add project now accepts any existing directory (removed requirement for package.json or .git)
342
- - Init safely backs up corrupted .mcp.json and settings.json before overwriting
343
-
344
- ### Changed
345
- - Removed plugin references from website and docs
346
- - Website updated with security features (LAN auth token, CSRF, CSP)
347
-
348
- ## [3.4.3] - 2026-03-15
349
-
350
- ### RemovedPlugin System
351
- - Removed the entire plugin system (`vm.runInNewContext` sandbox, plugin CLI commands, dashboard plugin UI)
352
- - **Why:** Plugins were an unnecessary attack surface. Node.js `vm` is not a security sandbox — plugins could escape and execute arbitrary OS commands. CLI terminals (Claude Code, Gemini, Codex) have their own extension systems, making our plugins redundant.
353
- - `npx let-them-talk plugin` now shows a deprecation notice
354
- - MCP tools reduced from 27 + plugins to 27 (all core tools remain)
355
- - ~200 lines of code removed from server.js, cli.js, dashboard.js, dashboard.html
356
-
357
- ## [3.4.2] - 2026-03-15
358
-
359
- ### Security CSRF Protection
360
- - Required `X-LTT-Request` custom header on all POST/PUT/DELETE requests
361
- - `lttFetch` wrapper in dashboard automatically includes the header
362
- - Malicious cross-origin pages cannot set custom headers without CORS preflight approval
363
- - Removed wildcard `Access-Control-Allow-Origin: *` in LAN mode — now uses explicit trusted origins only
364
- - Empty Origin/Referer no longer auto-trusted requires custom header as minimum protection
365
-
366
- ### Security LAN Auth Token
367
- - Auto-generated 32-char hex token when LAN mode is enabled
368
- - Token required for all non-localhost requests (via `?token=` query param or `X-LTT-Token` header)
369
- - Token included in QR code URL phone scans and it just works
370
- - Token displayed in phone access modal with explanation
371
- - New token generated each time LAN mode is toggled on
372
- - Token persists across server restarts via `.lan-token` file
373
- - Localhost access never requires a token
374
-
375
- ### Security Content Security Policy
376
- - CSP header added to dashboard HTML response
377
- - `script-src 'unsafe-inline'` for inline handlers, blocks `eval()` and external scripts
378
- - `connect-src 'self'` restricts API calls to same origin
379
- - `font-src`, `style-src`, `img-src` scoped to required sources only
380
-
381
- ### Fixed
382
- - CSRF brace imbalance that trapped GET handlers inside POST-only block
383
- - LAN token not forwarded from phone URL to API calls and SSE
384
- - Redundant nested origin check collapsed to single condition
385
-
386
- ## [3.4.1] - 2026-03-15
387
-
388
- ### Added
389
- - **File-level mutex** — in-memory promise queue per file for serializing edit/delete operations
390
- - **Agent permissions enforcement** — `canSendTo()` checks in `send_message` and `broadcast`, `can_read` filtering in `get_history` and message delivery
391
- - **Read receipts** auto-recorded when agents consume messages, visible as agent-initial dots under messages in dashboard
392
-
393
- ### Security
394
- - HTTP 500 responses now return generic error instead of raw `err.message` (prevents filesystem path leaks)
395
- - `/api/discover` changed from GET to POST (now under CSRF protection)
396
- - `workspace_read`/`workspace_list` validate agent name parameter with regex
397
- - `get_history` filters results by agent's `can_read` permissions
398
- - `read_receipts.json` and `permissions.json` added to both MCP and dashboard reset cleanup
399
- - Dashboard workspace API regex aligned with server (`[a-zA-Z0-9_-]`)
400
-
401
- ### Fixed
402
- - `toolWaitForReply` missing `markAsRead` calls (read receipts not recorded)
403
- - `toolBroadcast` bypassing permission checks entirely
404
- - `toolReset` not cleaning up `permissions.json` and `read_receipts.json`
405
-
406
- ## [3.4.0] - 2026-03-15
407
-
408
- ### AddedDashboard Features
409
- - **Stats Tab** per-agent message counts, avg response time, peak hours, 24-hour activity chart, conversation velocity. Keyboard shortcut `6`.
410
- - **Compact View**toggle button in search bar. Hides avatars, inlines timestamps, reduces padding. Persists to localStorage.
411
- - **Message Edit** edit any message via hover action. Full edit history tracked, "edited" badge displayed.
412
- - **Message Delete** delete dashboard/system messages with confirmation dialog.
413
- - **Copy Message** clipboard button on message hover to copy raw content.
414
- - **JSON Export** — new export format alongside HTML and Markdown.
415
- - **Kanban Drag-and-Drop** — drag task cards between columns (pending/in_progress/done/blocked).
416
- - **SSE Auto-Reconnect** — exponential backoff (1s→30s), yellow "Reconnecting..." indicator, polling fallback.
417
- - **Conversation Templates** 4 built-in multi-agent workflow templates (Code Review Pipeline, Debug Squad, Feature Development, Research & Write) in the Launch tab with copyable agent prompts.
418
-
419
- ### Added API Endpoints
420
- - `PUT /api/message` edit a message (with edit history)
421
- - `DELETE /api/message` — delete a message (dashboard/system only)
422
- - `GET /api/conversation-templates`list conversation templates
423
- - `POST /api/conversation-templates/launch` — get template agent prompts
424
- - `GET /api/stats` analytics data (per-agent stats, velocity, hourly distribution)
425
- - `GET/POST /api/permissions` agent permission management
426
-
427
- ### AddedCLI Commands
428
- - `npx let-them-talk msg <agent> <text>` send a message from CLI
429
- - `npx let-them-talk status` show active agents and message counts
430
-
431
- ### Changed Premium UI Redesign
432
- - Deeper dark palette with blue undertones (#080b12 background)
433
- - Inter font from Google Fonts with anti-aliased rendering
434
- - Glassmorphism header with backdrop-filter blur
435
- - Gradient accent system (blue→purple) on buttons, active tabs, send button
436
- - Refined shadow system (sm/md/lg) with colored glows
437
- - Focus rings on all inputs
438
- - Smoother transitions (0.2-0.25s) with lift effects on hover
439
- - Glass effects on modals and popups
440
- - Inset shadows on code blocks
441
- - Thinner scrollbars with transparent tracks
442
-
443
- ### Fixed
444
- - Task notes crash when `notes` array undefined
445
- - Message edit always rewrites messages.jsonl regardless of match
446
- - Permissions API accepted arbitrary fields (now whitelisted)
447
- - Task status accepted any string (now validated against whitelist)
448
- - Reset button ignored active project in multi-project mode
449
- - Edit modal missing error handler on network failure
450
- - CLI msg command accepted invalid agent names
451
- - Copy-to-clipboard double-escaped HTML entities in template prompts
452
- - Duplicate deleteMessage function shadowing
453
-
454
- ## [3.3.2] - 2026-03-14
455
-
456
- ### Changed
457
- - License changed from MIT to Business Source License 1.1 (BSL)
458
- - Added SECURITY.md with vulnerability disclosure policy
459
- - Added CHANGELOG.md to published npm package
460
- - Added .npmignore for cleaner package distribution
461
- - Version synced across all files (server, CLI, dashboard)
462
-
463
- ## [3.0.0] - 2026-03-14
464
-
465
- ### Added — Agent Profiles
466
- - New tool: `update_profile` (display_name, avatar, bio, role)
467
- - 12 built-in SVG robot avatar icons with hash-based defaults
468
- - Profiles auto-created on register, persist across restarts
469
- - Profile data shown in dashboard (avatars, role badges, profile popup)
470
-
471
- ### AddedAgent Workspaces
472
- - 3 new tools: `workspace_write`, `workspace_read`, `workspace_list`
473
- - Per-agent key-value storage (50 keys max, 100KB per value)
474
- - Agents can read anyone's workspace, write only their own
475
- - Dashboard "Workspaces" tab with collapsible accordion UI
476
-
477
- ### Added — Workflow Automation
478
- - 3 new tools: `create_workflow`, `advance_workflow`, `workflow_status`
479
- - Multi-step pipelines with auto-handoff to step assignees
480
- - Dashboard "Workflows" tab with horizontal pipeline visualization
481
- - Dashboard can advance/skip workflow steps
482
-
483
- ### AddedConversation Branching
484
- - 3 new tools: `fork_conversation`, `switch_branch`, `list_branches`
485
- - Fork at any message point with isolated branch history
486
- - All message tools branch-aware (backward compatible main branch uses existing files)
487
- - Branch tabs in dashboard
488
-
489
- ### AddedPlugin System
490
- - Dynamic tool loading from `plugins/*.js` files
491
- - Sandboxed execution with 30s timeout
492
- - CLI: `npx let-them-talk plugin add/list/remove/enable/disable`
493
- - Dashboard plugin cards with enable/disable toggles
494
-
495
- ### Changed
496
- - MCP tools: 17 27 + dynamic plugins
497
- - Dashboard tabs: 2 4 (Messages, Tasks, Workspaces, Workflows)
498
- - Branch-aware history API (`?branch=` query param)
499
- - Version bump across all files (server, dashboard, CLI, package.json)
500
-
501
- ## [2.5.0] - 2026-03-14
502
-
503
- ### Added
504
- - Task management system: `create_task`, `update_task`, `list_tasks` tools
505
- - Kanban board in dashboard (Messages/Tasks toggle)
506
- - Agent stats panel (sent/received/avg response time per agent)
507
- - Shareable HTML export (/api/export endpoint)
508
- - Export dropdown (HTML + Markdown formats)
509
- - Conversation bookmarks (star messages, localStorage)
510
- - Sound notification toggle (Web Audio API)
511
- - Typing indicator for processing agents
512
- - Connection quality display (SSE latency)
513
- - Date separators between message groups
514
- - Message grouping for consecutive same-sender messages
515
- - Project auto-discover (scan nearby folders)
516
- - Copy-to-clipboard prompts in onboarding
517
- - Dynamic tab title with message count
518
- - Dashboard footer with version
519
-
520
- ### Security
521
- - Path traversal fix in `share_file` (restricted to project dir)
522
- - Path traversal fix in `?project=` param (validate against registered projects)
523
- - 1MB message size limit on send/broadcast/handoff
524
- - 1MB request body limit on dashboard POST endpoints
525
- - XSS fix in HTML export (escape agent names)
526
- - CORS restricted to localhost only (was wildcard)
527
- - Dashboard binds to 127.0.0.1 only (was 0.0.0.0)
528
- - Registration guard on `reset` tool
529
- - Removed absolute file paths from share_file responses
530
-
531
- ## [2.3.0] - 2026-03-14
532
-
533
- ### Added
534
- - `handoff` tool for structured work delegation
535
- - `share_file` tool for sending file contents between agents
536
- - `broadcast` tool for messaging all agents at once
537
- - `get_summary` tool for conversation recaps
538
- - Server-Sent Events for real-time dashboard updates
539
- - `fs.watch()` on data directory with debounced SSE push
540
- - Graceful SSE fallback to polling
541
- - Handoff message rendering (purple banner)
542
- - File share message rendering (file icon + size)
543
-
544
- ## [2.1.0] - 2026-03-14
545
-
546
- ### Added
547
- - Multi-agent support (any name, not just A/B)
548
- - `list_agents` tool with alive/dead status
549
- - `listen` tool (blocks indefinitely, never times out)
550
- - Conversation threading (`reply_to` + auto `thread_id`)
551
- - Message acknowledgments (`ack_message` tool)
552
- - Heartbeat system (10s interval, `last_activity` tracking)
553
- - Agent status: active/sleeping/dead with idle time
554
- - Listening status tracking (`listening_since`)
555
- - Auto-compact messages.jsonl when >500 lines
556
- - Auto-archive conversations before reset
557
- - Context hints when conversation exceeds 50 messages
558
- - Dead recipient warnings in `send_message`
559
- - Message sequence numbers for ordering
560
- - `pending_count` and `agents_online` in delivery responses
561
- - 4 agent templates: pair, team, review, debate
562
- - CLI: `npx let-them-talk templates` command
563
- - CLI: `--template` flag for guided setup
564
- - Multi-CLI support: Claude Code, Gemini CLI, Codex CLI
565
- - `AGENT_BRIDGE_DATA_DIR` env var in MCP config
566
-
567
- ### Fixed
568
- - Heartbeat timer `.unref()` to prevent zombie processes
569
- - Process exit cleanup (deregister agent on exit)
570
- - Re-registration cleanup (old name removed)
571
- - Stale byte offset recovery on file truncation
572
-
573
- ## [2.0.0] - 2026-03-14
574
-
575
- ### Added
576
- - Initial release
577
- - MCP server with stdio transport
578
- - 6 tools: register, send_message, wait_for_reply, check_messages, get_history, reset
579
- - Web dashboard with real-time monitoring
580
- - Message injection from dashboard
581
- - Dark theme UI with markdown rendering
582
- - `.mcp.json` project-level configuration
1
+ # Changelog
2
+
3
+ ## [5.1.0] - 2026-03-19
4
+
5
+ ### Major — True Autonomy Engine + Team Intelligence + Scale to 100
6
+
7
+ Built by a 4-agent team (Backend, Protocol, Tester, Coordinator) + Advisor agent, working autonomously.
8
+
9
+ ### Added — Autonomy Engine (v5.0)
10
+ - **get_work** — 9-level priority waterfall: workflow step > messages > unclaimed tasks > help requests > reviews > blocked tasks > 30s listen > prep work > idle
11
+ - **verify_and_advance** — confidence-gated auto-advancement (>=70 auto, 40-69 flag, <40 help)
12
+ - **start_plan** — one-click autonomous plan launch with parallel step activation
13
+ - **retry_with_improvement** — 3-attempt retry with KB skill accumulation, team escalation
14
+ - **Parallel workflow steps** — dependency graph with `depends_on`, `findReadySteps` resolver
15
+ - **Autonomous mode** — proactive work loop guide, tiered cooldowns (0ms handoffs), 30s listen cap, relaxed send limits
16
+
17
+ ### AddedTeam Intelligence
18
+ - **Auto-role assignment** — lead/quality/implementer/monitor/advisor roles based on team size
19
+ - **Quality Lead** — always-on checker with dedicated guide, review-retry loop, auto-approve after 2 rounds
20
+ - **Monitor Agent** — system health overseer at 10+ agents: idle detection, circular escalation detection, auto-intervention, failover
21
+ - **Advisor Agent** — strategic thinker at 5+ agents: reads all work, gives ideas, challenges assumptions
22
+ - **Self-continuation** — agents never ask user, find next work automatically
23
+ - **Smart prompt distribution** — auto-generates workflows from natural language prompts
24
+
25
+ ### AddedAdvanced Autonomy (10 features)
26
+ - Task-level circuit breaker (blocked_permanent after 3 agent failures)
27
+ - Quality Lead instant failover (highest reputation auto-promoted)
28
+ - Context inheritance on escalation (full failure history)
29
+ - Agent circuit breaker (consecutive_rejections tracking, auto-demotion)
30
+ - Dynamic role fluidity (workload-based rebalancing)
31
+ - Skill-based task routing (agent affinity scoring)
32
+ - Work stealing (idle agents claim from busy agents)
33
+ - Checkpointing (resumable work via workspace snapshots)
34
+ - Retrospective learning (aggregate failure pattern analysis)
35
+ - Backpressure signal (queue depth warnings)
36
+
37
+ ### AddedScale to 100 Agents
38
+ - Per-agent heartbeat files (zero write contention)
39
+ - Cooldown cap (3s max regardless of agent count, 0ms for handoffs)
40
+ - Byte-offset message reads (O(new_messages) not O(all))
41
+ - Exponential backoff on file locks (1ms-500ms, not 50ms busy-wait)
42
+ - isPidAlive cache (5s TTL, saves 10K syscalls/sec)
43
+ - SSE debounce (heartbeat files filtered, 2s debounce)
44
+ - Task keyword cache (30s TTL)
45
+ - Sticky roles (no churn on agent reconnect)
46
+ - Zero cooldown for channel messages + handoffs in autonomous mode
47
+
48
+ ### Added — Dashboard & CLI
49
+ - **Plan execution view** progress bar, step cards, confidence, controls (pause/stop/skip/reassign)
50
+ - **Monitor health panel** — agent health grid, intervention log, system metrics
51
+ - **`npx let-them-talk run "prompt" --agents N`** one-command autonomous execution
52
+ - **npm test** wires v5 test suite (158+ tests on every run)
53
+ - Updated conversation templates (autonomous format with depends_on)
54
+
55
+ ### Stats
56
+ - server.js: 6,200+ lines, 62+ tools
57
+ - 175+ automated tests, 0 fail
58
+ - 5 conversation templates (autonomous format)
59
+ - Built in ~2 hours by autonomous agent team
60
+
61
+ ## [4.3.0] - 2026-03-17
62
+
63
+ ### Major — 3D Hub Game World, World Builder, Jukebox
64
+
65
+ Built by a 5-agent team (Architect, Builder, Tester, Optimizer, Protocol) working in parallel.
66
+
67
+ ### Added3D Hub Game Features
68
+ - **World Builder** — Press B in player mode to open builder panel. 16 placeable assets across 5 categories (structural, furniture, decor, tech, lighting). Grid snap, ghost preview, R to rotate, right-click delete, Ctrl+Z undo. Draggable panel, works in fullscreen.
69
+ - **Jukebox**Wurlitzer 1015-style jukebox in bar area with neon glow animation. Press E to interact. 4 playlist selector with YouTube popup player. Music persists while exploring.
70
+ - **Minimap**140px radar overlay showing agent positions (color-coded by status) and player location. Only visible in fullscreen mode.
71
+ - **Controls HUD** — Press H to toggle keybind reference panel. Auto-shows for 4 seconds on world entry.
72
+ - **Fullscreen** — Dashboard fullscreen button now fullscreens only the 3D Hub (game mode), not the entire page.
73
+
74
+ ### AddedCharacter Intelligence
75
+ - **Emotion system** — 11 emotion presets (happy, frustrated, thinking, excited, surprised, etc.) with auto-triggers from message content. Temporary face expression changes with auto-revert.
76
+ - **Social visits** — Idle agents randomly walk to other agents' desks to chat (max 2 concurrent walks).
77
+ - **Glance reactions** — Sitting agents turn heads toward speakers when messages are sent.
78
+ - **Head nods** — Periodic nod animation when being visited by another agent.
79
+ - **Auto coffee break** Sleeping agents walk to rest area, return to desk when active again.
80
+ - **Non-blocking input overlay** — Replaced browser prompt() dialogs with styled HTML overlay for click commands.
81
+
82
+ ### AddedDashboard
83
+ - **Respawn button** — One-click respawn for dead agents. Generates resume prompt from recovery snapshot + profile + tasks + recent history.
84
+ - **Respawn API** — `GET /api/agents/:name/respawn-prompt` endpoint with full context generation.
85
+ - **World Builder API** — `GET /api/world-layout` + `POST /api/world-save` for persistent world placements.
86
+ - **3D-only fullscreen** — Fullscreen targets 3D container when on 3D Hub tab.
87
+
88
+ ### Fixed
89
+ - **Manager chair spawn** — Stand-up now places player in front of desk (toward door), preventing wall collision.
90
+ - **CSRF on 3D Hub** — Added X-LTT-Request header to all office module POST requests (builder save, command menu actions).
91
+ - **Respawn endpoint validation** — Agent name validated (alphanumeric, max 20 chars) to prevent path traversal.
92
+ - **Builder lazy-load** — Dynamic import() with silent failure prevents builder issues from breaking 3D Hub.
93
+ - **Jukebox popup orphan** Module-scoped reference survives overlay dismiss/reopen cycles.
94
+ - **Builder drag listener leak** — Stored refs removed in hidePanel().
95
+ - **Jukebox prompt cleanup** dismissJukebox() called in office3dStop().
96
+
97
+ ### Security
98
+ - npm audit: 0 vulnerabilities
99
+ - CSRF protection verified on all mutating endpoints
100
+ - Input validation on all user-facing API parameters
101
+ - No hardcoded secrets or sensitive data in shipped package
102
+
103
+ ## [4.2.0] - 2026-03-17
104
+
105
+ ### Major — Team Intelligence, Dashboard Upgrade, Performance
106
+
107
+ Built by a 4-agent team (Architect, Tester, Protocol, Builder) working in parallel.
108
+
109
+ ### AddedTeam Automation
110
+ - **Auto-escalation** — blocked tasks auto-broadcast `[ESCALATION]` to team after 5 minutes. File-based dedup via `task.escalated_at` field (cross-process safe). Clears on unblock.
111
+ - **Stand-up meetings** — config-driven periodic team check-ins (`standup_interval_hours` in config.json). File-based dedup, 5+ agent gate. Broadcasts task summary with in-progress/blocked/done counts.
112
+ - **Quality gates** — `update_task(done)` auto-broadcasts `[REVIEW NEEDED]` (from v4.1.0, now with auto-escalation integration).
113
+
114
+ ### AddedAgent Intelligence
115
+ - **Workload metrics** — reputation tracks `task_times[]` (completion seconds), leaderboard shows `avg_task_time_sec` per agent.
116
+ - **Smarter suggest_task** — caps at 3 in-progress tasks ("finish first"), suggests blocked tasks when no pending ones, workload-aware.
117
+ - **KB hints in listen_group** — batch messages checked against KB keys, returns `kb_hints` with relevant entries.
118
+ - **Thread reply context** `listen_group` includes `_reply_context` preview of parent message for threaded replies.
119
+ - **Decision overlap hints** — `send_message` checks content against logged decisions, returns `_decision_hint` to prevent re-debating.
120
+ - **Auto-status board** — `update_task` auto-writes `_status` to agent workspace ("Working on: X"). `list_agents` includes `current_status` field.
121
+
122
+ ### Added — Dashboard
123
+ - **Agent intent display** — dashboard shows what each agent is currently working on (from workspace `_status`)
124
+ - **Channel badges** — messages show colored `#channel` badges
125
+ - **Channel filter bar** horizontal scrollable tabs to filter messages by channel
126
+ - **Channel history merging** `/api/history` merges channel-specific + general history files
127
+ - **`/api/channels` endpoint** channel list with member counts for dashboard
128
+ - **`/api/decisions` endpoint** decision log display in dashboard
129
+ - **Decision log UI** chronological cards with topic, decision, reasoning, author
130
+
131
+ ### Improved Performance & Safety
132
+ - **Escalation dedup fix** — replaced in-memory `_escalatedTasks` Set with file-based `task.escalated_at` field (cross-process safe for 10 agents)
133
+ - **Dashboard current_status API** — `/api/agents` includes workspace `_status` for agent intent board
134
+
135
+ ## [4.1.0] - 2026-03-17
136
+
137
+ ### Added — Agent Reliability & Intelligence
138
+
139
+ - **Auto-recovery (crash resume)**when an agent's process dies, the server snapshots its state (active tasks, locked files, channels, workspace keys, last 5 messages) to `recovery-{name}.json`. When a replacement registers with the same name, the snapshot is included in the register response with instructions to resume, not restart. 1-hour TTL, auto-deletes after load.
140
+ - **Quality gates** — `update_task(id, "done")` auto-broadcasts `[REVIEW NEEDED]` to all alive agents. Teams get automatic review cycles without manually calling `request_review()`.
141
+ - **Decision overlap hints** — `send_message` in group mode checks content against existing logged decisions. Returns `_decision_hint` if a related decision exists, preventing teams from re-debating settled topics.
142
+ - **Enhanced `check_messages`** — now returns rich summary: `senders`, `addressed_to_you`, `preview`, `urgency` level. The proactive counterpart to the enhanced nudge.
143
+
144
+ ### Fixed
145
+ - **Recovery lock notes** snapshot correctly labels locked files as `locked_files_released` with note that locks were auto-released.
146
+
147
+ ## [4.0.0] - 2026-03-17
148
+
149
+ ### Major Release10-Agent Free Group Mode
150
+
151
+ Massive scaling overhaul designed, implemented, and audited by a 3-agent team (Architect, Tester, Protocol). 12 changes, 3 bugs caught during collaborative code review.
152
+
153
+ ### AddedScaling (4 features)
154
+ - **Scaled context** — `listen_group` context window scales with team size: `min(50, max(20, agentCount * 5))`. 3 agents = 20 messages, 10 agents = 50.
155
+ - **Send-after-listen enforcement** — agents must call `listen_group()` between sends. Prevents message storms. Addressed agents get 2 sends per cycle, others get 1.
156
+ - **Response budget**max 2 unaddressed sends per 60 seconds. Time-based reset. Hint (not error) when depleted.
157
+ - **Smart context with priority partitions** — Bucket A (addressed messages, sacred, always included), Bucket B (channel messages, capped), Bucket C (chronological, fills remaining). Total guaranteed <= contextSize.
158
+
159
+ ### Added — Agent Awareness (3 features)
160
+ - **Enhanced nudge** every non-listen tool response now includes sender names, addressed count, and message preview: `"URGENT: 3 messages waiting (2 addressed to you): 2 from Architect, 1 from Protocol. Latest: 'Need your review...'"`
161
+ - **Idle detection** — `listen_group()` returns `idle: true` after 60s with no messages, with proactive `work_suggestions`, task suggestions, and instructions. Agents auto-find work instead of blocking forever.
162
+ - **Enhanced `check_messages`** now returns rich summary: `senders`, `addressed_to_you`, `preview`, `urgency` level. The proactive counterpart to the passive nudge.
163
+
164
+ ### Added Organization
165
+ - **Task-channel auto-binding** — with 5+ agents in group mode, `create_task` auto-creates `#task-{id}` channels. Assignees auto-join on claim. Channels auto-delete on task completion. Naturally splits 10-agent noise into focused sub-teams.
166
+
167
+ ### Improved Performance
168
+ - **Cached reads** `getAgents()` (1.5s TTL), `getChannelsData()` (3s TTL), `getTasks()` (2s TTL) with write-through invalidation. Eliminates ~70% redundant disk I/O.
169
+ - **Compact JSON writes** — removed pretty-print (`null, 2`) from all internal JSON writes. 2-3x less I/O overhead.
170
+ - **Optimized agent status** — removed O(N) `getUnconsumedMessages` scan per agent in `listen_group` status computation.
171
+ - **Dashboard SSE race fix** — `Array.from()` before Set iteration prevents skipped clients during concurrent connect/disconnect.
172
+ - **Dashboard SSE heartbeat** 30s keepalive prevents dead connection accumulation and proxy timeouts.
173
+ - **Dashboard file watcher cleanup** old watcher properly closed on LAN toggle, prevents memory leaks.
174
+ - **Dashboard watcher filter** — only triggers on `.json`/`.jsonl` files, ignores lock files and temp files.
175
+
176
+ ### Added — Safety
177
+ - **Collection caps** tasks (1000), workflows (500), votes (500), reviews (500), dependencies (1000), branches (100), channels (100). Prevents DoS via unbounded growth.
178
+ - **Input type validation** `reply_to` and `channel` parameters type-checked as strings in `send_message`.
179
+ - **Channel name validation fix** error message corrected from "1-30 chars" to "1-20 chars" to match `sanitizeName()`.
180
+
181
+ ## [3.10.0] - 2026-03-17
182
+
183
+ ### Added Dynamic Guide with Progressive Disclosure
184
+ - **`buildGuide()`** — replaces hardcoded guide in register() and get_guide(). Returns only rules relevant to the current system state.
185
+ - **Tiered rules:** Tier 0 (listen after every action), Tier 1 (core behavior), Tier 2 (group mode features), Tier 2b (channels), Tier 3 (large teams 5+)
186
+ - **User-customizable:** `.agent-bridge/guide.md` for project-specific rules
187
+ - 2-agent direct mode = 5 rules. 10-agent group with channels = 12 rules.
188
+
189
+ ## [3.9.1] - 2026-03-17
190
+
191
+ ### Added
192
+ - **Per-channel cooldown** uses channel member count instead of total agents. 2-member #backend = 1s, regardless of 10 in #general
193
+ - **`cooldown_applied_ms`** diagnostic field in send_message response showing exact cooldown applied
194
+ - **`channel` field** in send_message response when sending to a channel
195
+
196
+ ### Fixed
197
+ - Task race condition`update_task` rejects claiming tasks already in_progress by another agent
198
+
199
+ ## [3.9.0] - 2026-03-17
200
+
201
+ ### Added — Channels & Split Cooldown
202
+
203
+ - **`join_channel(name, description?)`** — create or join a channel for sub-team communication
204
+ - **`leave_channel(name)`**leave a channel (can't leave #general, empty channels auto-delete)
205
+ - **`list_channels()`** — list all channels with members, message counts, membership status
206
+ - **`send_message` channel parameter**send to specific channel (`channel-{name}-messages.jsonl`)
207
+ - **`listen_group` reads all subscribed channels**merges messages from general + channel files, sorted by timestamp
208
+ - **Channel validation** — sending to nonexistent channel returns error with hint to create it
209
+ - **Ghost member cleanup** — heartbeat auto-removes dead agents from channel membership
210
+ - **#general auto-created** — `members: ["*"]` (everyone), uses existing messages.jsonl for backward compat
211
+ - **Split cooldown (reply_to-based)** fast lane (500ms) for addressed agents, slow lane (max 2000, N*1000) for unaddressed, incentivizes threading
212
+
213
+ ### Fixed
214
+ - Task race condition `update_task` now rejects claiming a task already in_progress by another agent, auto-assigns on claim
215
+
216
+ ## [3.8.0] - 2026-03-16
217
+
218
+ ### ChangedGroup Conversation Overhaul
219
+
220
+ Redesigned from the ground up based on 3-agent collaborative testing and design session.
221
+
222
+ **Single-write group messages (O(1) instead of O(N)):**
223
+ - `send_message` in group mode now writes ONE message with `to: "__group__"` instead of N copies per agent
224
+ - `broadcast` in group mode also uses single `__group__` write
225
+ - Old O(N) auto-broadcast loop completely removed
226
+ - Result: with 6 agents, a message now creates 1 write instead of 6. A broadcast round that previously created 30 writes now creates 6.
227
+
228
+ **`addressed_to` field + `should_respond` hints:**
229
+ - `send_message(to="AgentName")` in group mode stores `addressed_to: ["AgentName"]` on the `__group__` message
230
+ - `listen_group` response includes `addressed_to_you: true/false` and `should_respond: true/false` per message
231
+ - Hint-based, not enforced agents can still respond when they have valuable input
232
+ - No `addressed_to` = everyone should respond (backwards compatible)
233
+
234
+ **Adaptive cooldown:**
235
+ - Cooldown now scales with team size: `max(500ms, N * 500ms)` where N = alive agent count
236
+ - 2 agents = 1s, 3 agents = 1.5s, 6 agents = 3s, 10 agents = 5s
237
+ - Explicit `group_cooldown` config still respected if set
238
+
239
+ **Shorter stagger:**
240
+ - Deterministic stagger reduced from 0-3000ms to 500-1500ms
241
+ - Same agent always gets the same delay (hash-based)
242
+
243
+ **Alive-only garbage collection:**
244
+ - `autoCompact` for `__group__` messages only checks alive agents for consumed tracking
245
+ - Dead agents no longer block message compaction forever
246
+ - Dead agents catch up via `get_compressed_history()` which reads history.jsonl (never compacted)
247
+
248
+ **Own-message filtering:**
249
+ - Agents no longer see their own `__group__` messages in `listen_group` batches
250
+ - Own messages are auto-consumed on sight
251
+ - Own messages still visible in `context` array for reference
252
+
253
+ ### Added — 3D World: Player Mode & Improvements
254
+ - **Player character** — users can spawn as a controllable character in the 3D Hub
255
+ - **Spectator camera improvements** refined controls and speed
256
+ - **Environment updates** campus environment refinements
257
+
258
+ ## [3.7.0] - 2026-03-16
259
+
260
+ ### AddedAgent Ecosystem (20 new tools, 52 total)
261
+
262
+ **Tier 1Critical Infrastructure:**
263
+ - **`get_briefing()`** — full project onboarding in one call: agents, tasks, decisions, KB, locked files, progress, project file tree
264
+ - **`lock_file(path)` / `unlock_file(path?)`** exclusive file editing with auto-release on agent death
265
+ - **`log_decision(decision, reasoning?, topic?)` / `get_decisions(topic?)`**persistent decision log, prevents re-debating
266
+ - **Agent recovery on rejoin** — `register()` returns active tasks, workspace keys, recent messages for returning agents
267
+
268
+ **Tier 2 — Quality of Life:**
269
+ - **`kb_write(key, content)` / `kb_read(key?)` / `kb_list()`** shared team knowledge base (any agent reads/writes)
270
+ - **Event hooks** — auto-fires system messages on `agent_join`, `task_complete`, `all_tasks_done`, `dependency_met`
271
+ - **`update_progress(feature, percent, notes)` / `get_progress()`** feature-level progress tracking with overall %
272
+ - **`get_compressed_history()`** auto-compresses old messages into summary segments, keeps recent verbatim
273
+ - **`listen_group()` now blocks indefinitely** — no more timeout, agents never drop out
274
+
275
+ **Tier 3Advanced Collaboration:**
276
+ - **`call_vote(question, options)` / `cast_vote(vote_id, choice)` / `vote_status(vote_id?)`** team voting with auto-resolve when all vote
277
+ - **`request_review(file, desc)` / `submit_review(review_id, status, feedback)`** code review pipeline with approve/changes_requested
278
+ - **`declare_dependency(task_id, depends_on)` / `check_dependencies(task_id?)`** task dependency tracking with auto-notify on resolve
279
+ - **`get_reputation(agent?)` / `suggest_task()`** agent reputation tracking (auto-detects strengths), task suggestions based on skills
280
+ - **Auto-reputation tracking** — global hook tracks every action (messages, tasks, reviews, decisions, KB writes) without manual calls
281
+
282
+ ### Fixed
283
+ - **Monitor screens stay red** when agent stops listening persistent color state instead of 300ms flash
284
+ - **"NOT LISTENING" warning** shown prominently on desk monitor canvas
285
+ - **Status color logic** — green = listening, red = active but not listening, yellow = sleeping, dim = dead
286
+
287
+ ## [3.6.2] - 2026-03-16
288
+
289
+ ### AddedMessage Awareness System
290
+ - **Sender gets busy status** — `send_message` and `broadcast` tell you when recipients are working (not listening) so you know messages are queued
291
+ - **Pending message nudge** — every non-listen tool call checks for unread messages and tells the agent to call `listen_group()` soon
292
+ - **Message age tracking** — `listen_group` shows `age_seconds` per message and `delayed: true` flag for messages older than 30s
293
+ - **Agent status in batch** — `listen_group` returns `agents_status` map showing who is `listening` vs `working`
294
+ - **listen_group retry** — timeout now returns `retry: true` with explicit instruction to call again immediately
295
+ - **next_action field** — successful `listen_group` response tells agent to call `listen_group()` again after responding
296
+ - **Ctrl key removed from camera** — no longer moves camera down (Q/E only)
297
+
298
+ ### Added3D World: Campus Environment & Navigation
299
+ - **Campus environment** — new outdoor environment option with buildings, paths, green spaces
300
+ - **Navigation system** — pathfinding for agents to walk around obstacles instead of through walls
301
+ - **Door animations** — manager office door slides open when agents approach, closes when they leave
302
+ - **Roof visibility** roof hides when camera is above ceiling height
303
+
304
+ ## [3.6.1] - 2026-03-16
305
+
306
+ ### Fixed
307
+ - **3D Hub black screen on page load** — the office module loads asynchronously, but the initial `switchView('office')` fired before `office3dStart` was defined. Added auto-start at end of module so the 3D Hub loads immediately on refresh.
308
+
309
+ ## [3.6.0] - 2026-03-16
310
+
311
+ ### AddedManaged Conversation Mode
312
+
313
+ - **`set_conversation_mode("managed")`** structured turn-taking for 3+ agent teams, prevents broadcast storms
314
+ - **`claim_manager()`** claim the manager role (first caller wins, auto-election fallback)
315
+ - **`yield_floor(to, prompt?)`** manager-only: give an agent permission to speak (directed, round-robin `__open__`, or close `__close__`)
316
+ - **`set_phase(phase)`** — manager-only: move team through discussion planning → execution → review with auto-instructions to all agents
317
+ - **Floor enforcement** `send_message`, `broadcast`, `handoff`, and `share_file` all block non-floor-holders with actionable error messages
318
+ - **Auto-advance turns** — floor returns to manager after directed responses; round-robin advances to next alive agent automatically
319
+ - **Manager disconnect recovery** heartbeat detects dead manager within 10-30s, notifies all agents to re-elect
320
+ - **Dead turn-holder detection** — heartbeat detects dead agents holding the floor and resets it
321
+ - **Managed mode in `listen_group()`** returns `managed_context`, `should_respond`, and `instructions` to guide agent behavior
322
+ - **`managed` template** — 4-agent team (Manager, Designer, Coder, Tester) with structured prompts
323
+ - **`managed-team` conversation template** — dashboard-launchable version
324
+ - **Dashboard Docs tab** — in-dashboard documentation with full tool reference, managed mode guide, architecture, version history
325
+ - **Dashboard managed mode badge** — header shows current phase and floor status when managed mode is active
326
+
327
+ ### Added 3D World Improvements
328
+
329
+ - **Spectator camera** free-fly WASD + mouse camera replacing OrbitControls, no distance limits, Shift for fast movement, Q/E up/down
330
+ - **6 new hairstyles** curly, afro, bun, braids, mohawk, wavy
331
+ - **6 new eye styles** — surprised, angry, happy, wink, confident, tired
332
+ - **5 new mouth styles** — grin, frown, smirk, tongue, whistle
333
+ - **6 outfit types** hoodie, suit, dress, lab coat, vest, jacket with color customization
334
+ - **3 body types** default, stocky, slim (scale multipliers on torso/legs/arms)
335
+ - **5 gesture animations** wave, think, point, celebrate, stretch with idle gesture system
336
+ - **New furniture** bookshelf (random colored books), wall TV (animated dashboard with agent stats, scrolling ticker, clock), arcade machine (cabinet + screen + joystick + buttons), floor lamp (warm point light), area rug
337
+ - **Agent behavior** — realistic conversation distance (1.8m), listener turns toward speaker, broadcast triggers wave gesture, task completion triggers celebrate
338
+ - **3D Hub** — renamed from "Office", now default tab on page load
339
+ - **Speed slider** — camera speed control in toolbar (1-20)
340
+
341
+ ### Added 3D Virtual Office (v1 foundation from previous session)
342
+
343
+ - **Modular 3D engine** — 14 ES modules under `office/`
344
+ - **Expanded office** — 28x16 floor with right wing, dividing wall, LOUNGE archway
345
+ - **Dressing room** mirror, raised platform, privacy partitions, coat hooks
346
+ - **Rest area** beanbags, circular rug, side table, warm ambient lighting
347
+ - **Click-to-command** — Dressing Room, Go Rest, Back to Work, Edit Profile
348
+ - **Character designer** — 5-tab panel with live 3D rotating preview
349
+ - **Accessory system** — glasses, headwear, neckwear with color customization
350
+ - **Mod system infrastructure** GLB/GLTF pipeline with validation
351
+
352
+ ### Security
353
+ - **Config file lock** — `config.json` read-modify-write operations now use file-based locking (same pattern as `agents.json`)
354
+ - **Reserved name blocklist** `__system__`, `__all__`, `__open__`, `__close__`, `system` cannot be registered as agent names
355
+ - **Mode change protection** only the manager can switch away from managed mode
356
+ - **Floor enforcement on all message paths** — `handoff` and `share_file` now enforce managed mode floor control
357
+ - **Branch-aware system messages** — floor/phase notifications sent to recipient's branch, not sender's
358
+ - **Phase history cap** — limited to 50 entries to prevent config.json bloat
359
+ - `/office/*` and `/mods/*` static routes with path traversal protection
360
+ - Mod file type allowlist blocks all executable formats
361
+ - GLB magic bytes validation (server + client)
362
+
363
+ ### Removed
364
+ - ~1,100 lines of dead 2D isometric office code
365
+
366
+ ## [3.5.0] - 2026-03-15
367
+
368
+ ### Added Group Conversation Mode
369
+ - **`set_conversation_mode("group")`**enables free multi-agent collaboration with auto-broadcast
370
+ - **`listen_group()`** batch message receiver with random stagger (1-3s) to prevent simultaneous responses
371
+ - Returns ALL unconsumed messages + last 20 messages of context + hints about silent agents
372
+ - Auto-broadcast in group mode: every message is shared with all agents automatically
373
+ - Cooldown enforcement: agents must wait 3s between sends to maintain conversation flow
374
+ - Cascade prevention: broadcast copies don't trigger further broadcasts
375
+ - MCP tools: 27 29
376
+
377
+ ### Added Dashboard Features
378
+ - **Notification panel** bell icon with badge count, dropdown event feed (agent online/offline, listening status changes)
379
+ - **Agent leaderboard** — performance scoring (0-100) with responsiveness, activity, reliability, collaboration dimensions
380
+ - **Cross-project search** — "All Projects" toggle in search bar, searches across all registered projects
381
+ - **Animated replay export** — Export conversation as self-playing HTML file with typing animations and play/pause controls
382
+ - **Ollama integration** `npx let-them-talk init --ollama` auto-detects Ollama, creates bridge script for local models
383
+
384
+ ### Fixed PID & Registration Integrity
385
+ - Registration file locking with try/finally (prevents race conditions when multiple agents register simultaneously)
386
+ - PID stale detection uses `last_activity` with 30s threshold (prevents false "alive" from Windows PID reuse)
387
+ - Lock file cleaned up on process exit
388
+ - Dashboard inject/nudge snapshots project context at click time (prevents wrong-project race)
389
+
390
+ ### Security
391
+ - `toolHandoff` and workflow auto-handoff now check `canSendTo` permissions
392
+ - `lastSentAt` updated in `toolBroadcast` (prevents cooldown bypass)
393
+ - `config.json` added to both server and dashboard reset cleanup
394
+ - Auto-broadcast respects `canSendTo` per recipient
395
+
396
+ ## [3.4.4] - 2026-03-15
397
+
398
+ ### Fixed
399
+ - Add project now accepts any existing directory (removed requirement for package.json or .git)
400
+ - Init safely backs up corrupted .mcp.json and settings.json before overwriting
401
+
402
+ ### Changed
403
+ - Removed plugin references from website and docs
404
+ - Website updated with security features (LAN auth token, CSRF, CSP)
405
+
406
+ ## [3.4.3] - 2026-03-15
407
+
408
+ ### RemovedPlugin System
409
+ - Removed the entire plugin system (`vm.runInNewContext` sandbox, plugin CLI commands, dashboard plugin UI)
410
+ - **Why:** Plugins were an unnecessary attack surface. Node.js `vm` is not a security sandbox plugins could escape and execute arbitrary OS commands. CLI terminals (Claude Code, Gemini, Codex) have their own extension systems, making our plugins redundant.
411
+ - `npx let-them-talk plugin` now shows a deprecation notice
412
+ - MCP tools reduced from 27 + plugins to 27 (all core tools remain)
413
+ - ~200 lines of code removed from server.js, cli.js, dashboard.js, dashboard.html
414
+
415
+ ## [3.4.2] - 2026-03-15
416
+
417
+ ### SecurityCSRF Protection
418
+ - Required `X-LTT-Request` custom header on all POST/PUT/DELETE requests
419
+ - `lttFetch` wrapper in dashboard automatically includes the header
420
+ - Malicious cross-origin pages cannot set custom headers without CORS preflight approval
421
+ - Removed wildcard `Access-Control-Allow-Origin: *` in LAN mode now uses explicit trusted origins only
422
+ - Empty Origin/Referer no longer auto-trustedrequires custom header as minimum protection
423
+
424
+ ### SecurityLAN Auth Token
425
+ - Auto-generated 32-char hex token when LAN mode is enabled
426
+ - Token required for all non-localhost requests (via `?token=` query param or `X-LTT-Token` header)
427
+ - Token included in QR code URL phone scans and it just works
428
+ - Token displayed in phone access modal with explanation
429
+ - New token generated each time LAN mode is toggled on
430
+ - Token persists across server restarts via `.lan-token` file
431
+ - Localhost access never requires a token
432
+
433
+ ### Security Content Security Policy
434
+ - CSP header added to dashboard HTML response
435
+ - `script-src 'unsafe-inline'` for inline handlers, blocks `eval()` and external scripts
436
+ - `connect-src 'self'` restricts API calls to same origin
437
+ - `font-src`, `style-src`, `img-src` scoped to required sources only
438
+
439
+ ### Fixed
440
+ - CSRF brace imbalance that trapped GET handlers inside POST-only block
441
+ - LAN token not forwarded from phone URL to API calls and SSE
442
+ - Redundant nested origin check collapsed to single condition
443
+
444
+ ## [3.4.1] - 2026-03-15
445
+
446
+ ### Added
447
+ - **File-level mutex** in-memory promise queue per file for serializing edit/delete operations
448
+ - **Agent permissions enforcement** `canSendTo()` checks in `send_message` and `broadcast`, `can_read` filtering in `get_history` and message delivery
449
+ - **Read receipts** auto-recorded when agents consume messages, visible as agent-initial dots under messages in dashboard
450
+
451
+ ### Security
452
+ - HTTP 500 responses now return generic error instead of raw `err.message` (prevents filesystem path leaks)
453
+ - `/api/discover` changed from GET to POST (now under CSRF protection)
454
+ - `workspace_read`/`workspace_list` validate agent name parameter with regex
455
+ - `get_history` filters results by agent's `can_read` permissions
456
+ - `read_receipts.json` and `permissions.json` added to both MCP and dashboard reset cleanup
457
+ - Dashboard workspace API regex aligned with server (`[a-zA-Z0-9_-]`)
458
+
459
+ ### Fixed
460
+ - `toolWaitForReply` missing `markAsRead` calls (read receipts not recorded)
461
+ - `toolBroadcast` bypassing permission checks entirely
462
+ - `toolReset` not cleaning up `permissions.json` and `read_receipts.json`
463
+
464
+ ## [3.4.0] - 2026-03-15
465
+
466
+ ### Added Dashboard Features
467
+ - **Stats Tab** — per-agent message counts, avg response time, peak hours, 24-hour activity chart, conversation velocity. Keyboard shortcut `6`.
468
+ - **Compact View** toggle button in search bar. Hides avatars, inlines timestamps, reduces padding. Persists to localStorage.
469
+ - **Message Edit** edit any message via hover action. Full edit history tracked, "edited" badge displayed.
470
+ - **Message Delete** — delete dashboard/system messages with confirmation dialog.
471
+ - **Copy Message** clipboard button on message hover to copy raw content.
472
+ - **JSON Export** — new export format alongside HTML and Markdown.
473
+ - **Kanban Drag-and-Drop** drag task cards between columns (pending/in_progress/done/blocked).
474
+ - **SSE Auto-Reconnect** exponential backoff (1s→30s), yellow "Reconnecting..." indicator, polling fallback.
475
+ - **Conversation Templates** — 4 built-in multi-agent workflow templates (Code Review Pipeline, Debug Squad, Feature Development, Research & Write) in the Launch tab with copyable agent prompts.
476
+
477
+ ### Added — API Endpoints
478
+ - `PUT /api/message` edit a message (with edit history)
479
+ - `DELETE /api/message` delete a message (dashboard/system only)
480
+ - `GET /api/conversation-templates` list conversation templates
481
+ - `POST /api/conversation-templates/launch` get template agent prompts
482
+ - `GET /api/stats` — analytics data (per-agent stats, velocity, hourly distribution)
483
+ - `GET/POST /api/permissions` agent permission management
484
+
485
+ ### Added CLI Commands
486
+ - `npx let-them-talk msg <agent> <text>`send a message from CLI
487
+ - `npx let-them-talk status` — show active agents and message counts
488
+
489
+ ### ChangedPremium UI Redesign
490
+ - Deeper dark palette with blue undertones (#080b12 background)
491
+ - Inter font from Google Fonts with anti-aliased rendering
492
+ - Glassmorphism header with backdrop-filter blur
493
+ - Gradient accent system (blue→purple) on buttons, active tabs, send button
494
+ - Refined shadow system (sm/md/lg) with colored glows
495
+ - Focus rings on all inputs
496
+ - Smoother transitions (0.2-0.25s) with lift effects on hover
497
+ - Glass effects on modals and popups
498
+ - Inset shadows on code blocks
499
+ - Thinner scrollbars with transparent tracks
500
+
501
+ ### Fixed
502
+ - Task notes crash when `notes` array undefined
503
+ - Message edit always rewrites messages.jsonl regardless of match
504
+ - Permissions API accepted arbitrary fields (now whitelisted)
505
+ - Task status accepted any string (now validated against whitelist)
506
+ - Reset button ignored active project in multi-project mode
507
+ - Edit modal missing error handler on network failure
508
+ - CLI msg command accepted invalid agent names
509
+ - Copy-to-clipboard double-escaped HTML entities in template prompts
510
+ - Duplicate deleteMessage function shadowing
511
+
512
+ ## [3.3.2] - 2026-03-14
513
+
514
+ ### Changed
515
+ - License changed from MIT to Business Source License 1.1 (BSL)
516
+ - Added SECURITY.md with vulnerability disclosure policy
517
+ - Added CHANGELOG.md to published npm package
518
+ - Added .npmignore for cleaner package distribution
519
+ - Version synced across all files (server, CLI, dashboard)
520
+
521
+ ## [3.0.0] - 2026-03-14
522
+
523
+ ### Added Agent Profiles
524
+ - New tool: `update_profile` (display_name, avatar, bio, role)
525
+ - 12 built-in SVG robot avatar icons with hash-based defaults
526
+ - Profiles auto-created on register, persist across restarts
527
+ - Profile data shown in dashboard (avatars, role badges, profile popup)
528
+
529
+ ### Added Agent Workspaces
530
+ - 3 new tools: `workspace_write`, `workspace_read`, `workspace_list`
531
+ - Per-agent key-value storage (50 keys max, 100KB per value)
532
+ - Agents can read anyone's workspace, write only their own
533
+ - Dashboard "Workspaces" tab with collapsible accordion UI
534
+
535
+ ### Added Workflow Automation
536
+ - 3 new tools: `create_workflow`, `advance_workflow`, `workflow_status`
537
+ - Multi-step pipelines with auto-handoff to step assignees
538
+ - Dashboard "Workflows" tab with horizontal pipeline visualization
539
+ - Dashboard can advance/skip workflow steps
540
+
541
+ ### Added Conversation Branching
542
+ - 3 new tools: `fork_conversation`, `switch_branch`, `list_branches`
543
+ - Fork at any message point with isolated branch history
544
+ - All message tools branch-aware (backward compatible — main branch uses existing files)
545
+ - Branch tabs in dashboard
546
+
547
+ ### Added Plugin System
548
+ - Dynamic tool loading from `plugins/*.js` files
549
+ - Sandboxed execution with 30s timeout
550
+ - CLI: `npx let-them-talk plugin add/list/remove/enable/disable`
551
+ - Dashboard plugin cards with enable/disable toggles
552
+
553
+ ### Changed
554
+ - MCP tools: 17 → 27 + dynamic plugins
555
+ - Dashboard tabs: 2 4 (Messages, Tasks, Workspaces, Workflows)
556
+ - Branch-aware history API (`?branch=` query param)
557
+ - Version bump across all files (server, dashboard, CLI, package.json)
558
+
559
+ ## [2.5.0] - 2026-03-14
560
+
561
+ ### Added
562
+ - Task management system: `create_task`, `update_task`, `list_tasks` tools
563
+ - Kanban board in dashboard (Messages/Tasks toggle)
564
+ - Agent stats panel (sent/received/avg response time per agent)
565
+ - Shareable HTML export (/api/export endpoint)
566
+ - Export dropdown (HTML + Markdown formats)
567
+ - Conversation bookmarks (star messages, localStorage)
568
+ - Sound notification toggle (Web Audio API)
569
+ - Typing indicator for processing agents
570
+ - Connection quality display (SSE latency)
571
+ - Date separators between message groups
572
+ - Message grouping for consecutive same-sender messages
573
+ - Project auto-discover (scan nearby folders)
574
+ - Copy-to-clipboard prompts in onboarding
575
+ - Dynamic tab title with message count
576
+ - Dashboard footer with version
577
+
578
+ ### Security
579
+ - Path traversal fix in `share_file` (restricted to project dir)
580
+ - Path traversal fix in `?project=` param (validate against registered projects)
581
+ - 1MB message size limit on send/broadcast/handoff
582
+ - 1MB request body limit on dashboard POST endpoints
583
+ - XSS fix in HTML export (escape agent names)
584
+ - CORS restricted to localhost only (was wildcard)
585
+ - Dashboard binds to 127.0.0.1 only (was 0.0.0.0)
586
+ - Registration guard on `reset` tool
587
+ - Removed absolute file paths from share_file responses
588
+
589
+ ## [2.3.0] - 2026-03-14
590
+
591
+ ### Added
592
+ - `handoff` tool for structured work delegation
593
+ - `share_file` tool for sending file contents between agents
594
+ - `broadcast` tool for messaging all agents at once
595
+ - `get_summary` tool for conversation recaps
596
+ - Server-Sent Events for real-time dashboard updates
597
+ - `fs.watch()` on data directory with debounced SSE push
598
+ - Graceful SSE fallback to polling
599
+ - Handoff message rendering (purple banner)
600
+ - File share message rendering (file icon + size)
601
+
602
+ ## [2.1.0] - 2026-03-14
603
+
604
+ ### Added
605
+ - Multi-agent support (any name, not just A/B)
606
+ - `list_agents` tool with alive/dead status
607
+ - `listen` tool (blocks indefinitely, never times out)
608
+ - Conversation threading (`reply_to` + auto `thread_id`)
609
+ - Message acknowledgments (`ack_message` tool)
610
+ - Heartbeat system (10s interval, `last_activity` tracking)
611
+ - Agent status: active/sleeping/dead with idle time
612
+ - Listening status tracking (`listening_since`)
613
+ - Auto-compact messages.jsonl when >500 lines
614
+ - Auto-archive conversations before reset
615
+ - Context hints when conversation exceeds 50 messages
616
+ - Dead recipient warnings in `send_message`
617
+ - Message sequence numbers for ordering
618
+ - `pending_count` and `agents_online` in delivery responses
619
+ - 4 agent templates: pair, team, review, debate
620
+ - CLI: `npx let-them-talk templates` command
621
+ - CLI: `--template` flag for guided setup
622
+ - Multi-CLI support: Claude Code, Gemini CLI, Codex CLI
623
+ - `AGENT_BRIDGE_DATA_DIR` env var in MCP config
624
+
625
+ ### Fixed
626
+ - Heartbeat timer `.unref()` to prevent zombie processes
627
+ - Process exit cleanup (deregister agent on exit)
628
+ - Re-registration cleanup (old name removed)
629
+ - Stale byte offset recovery on file truncation
630
+
631
+ ## [2.0.0] - 2026-03-14
632
+
633
+ ### Added
634
+ - Initial release
635
+ - MCP server with stdio transport
636
+ - 6 tools: register, send_message, wait_for_reply, check_messages, get_history, reset
637
+ - Web dashboard with real-time monitoring
638
+ - Message injection from dashboard
639
+ - Dark theme UI with markdown rendering
640
+ - `.mcp.json` project-level configuration