@kendoo.agentdesk/agentdesk 0.29.0 → 0.29.1

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
@@ -8,6 +8,15 @@ All user-facing changes to AgentDesk. Each entry is tagged:
8
8
 
9
9
  Internal refactors, infrastructure changes, and architectural notes are not listed here.
10
10
 
11
+ ## [0.29.1] — 2026-09-20
12
+
13
+ ### Fixed
14
+ - `[Both]` Session token totals now update after each completed phase and survive cancellation, reconnects, and server restarts instead of displaying zero.
15
+
16
+ ### Changed
17
+ - `[UI]` The session feed now stays put while you're reading history: auto-scroll only follows new messages when you're already at the bottom. A "New messages" button appears otherwise, and jumps you down on click. Scroll position is preserved across session switches.
18
+ - `[UI]` The compact team bar's avatar hover now shows each agent's role, not just their name.
19
+
11
20
  ## [0.29.0] — 2026-09-20
12
21
 
13
22
  ### Fixed
package/cli/daemon.mjs CHANGED
@@ -557,7 +557,7 @@ async function confirmIncomingSession({ project, taskId, prompt, signal }) {
557
557
  return (event) => {
558
558
  // Confirmed accomplishments may arrive during cancellation teardown.
559
559
  // They do not revive the session or emit a second terminal event.
560
- if (["session:outcome", "session:workspace"].includes(event.type)) { sendBuffered(sessionId, event); return; }
560
+ if (["session:outcome", "session:workspace", "session:usage"].includes(event.type)) { sendBuffered(sessionId, event); return; }
561
561
  if (activeSessions.get(sessionId) !== activeSession) return;
562
562
  // A cancelled session already sent its terminal event; the
563
563
  // orchestrator's own unwind must not send a second one.
@@ -305,6 +305,7 @@ async function executeSession({
305
305
  totals.inputTokens += summary.inputTokens;
306
306
  totals.outputTokens += summary.outputTokens;
307
307
  totals.costUsd += summary.costUsd;
308
+ emit({ type: "session:usage", inputTokens: totals.inputTokens, outputTokens: totals.outputTokens });
308
309
 
309
310
  if (abortController.signal.aborted) { aborted = true; break; }
310
311
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kendoo.agentdesk/agentdesk",
3
- "version": "0.29.0",
3
+ "version": "0.29.1",
4
4
  "description": "AI team orchestrator for Claude Code — run collaborative agent sessions from your terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -22,7 +22,7 @@
22
22
  "server": "node server/index.mjs",
23
23
  "build": "vite build",
24
24
  "preview": "vite preview",
25
- "test": "node --test tests/server.test.mjs tests/agents.test.mjs tests/homepage.test.mjs tests/sessionUtils.test.mjs tests/tracker-url.test.mjs tests/session-preflight.test.mjs tests/access.test.mjs tests/project-ownership.test.mjs tests/random-hex.test.mjs tests/projects-registry.test.mjs tests/phase-loop.test.mjs tests/proc.test.mjs tests/crypto.test.mjs tests/dotenv.test.mjs tests/update-check.test.mjs tests/setup-helpers.test.mjs tests/project-key.test.mjs tests/tracker-project.test.mjs tests/tracker-check.test.mjs tests/config.test.mjs tests/engine-env.test.mjs tests/engine-events.test.mjs tests/engine-verdict.test.mjs tests/engine-hooks.test.mjs tests/engine-agents.test.mjs tests/session-isolation.test.mjs tests/engine-session.test.mjs tests/engine-prompts.test.mjs tests/engine-schemas.test.mjs tests/engine-claude-auth.test.mjs tests/worktrees.test.mjs tests/workspaces-api.test.mjs tests/engine-outcome.test.mjs tests/session-outcomes.test.mjs tests/outcome-hydration.test.mjs tests/mobile-outcomes.test.mjs tests/session-queue.test.mjs tests/useFollowScroll.test.mjs",
25
+ "test": "node --test tests/server.test.mjs tests/agents.test.mjs tests/homepage.test.mjs tests/sessionUtils.test.mjs tests/tracker-url.test.mjs tests/session-preflight.test.mjs tests/access.test.mjs tests/project-ownership.test.mjs tests/random-hex.test.mjs tests/projects-registry.test.mjs tests/phase-loop.test.mjs tests/proc.test.mjs tests/crypto.test.mjs tests/dotenv.test.mjs tests/update-check.test.mjs tests/setup-helpers.test.mjs tests/project-key.test.mjs tests/tracker-project.test.mjs tests/tracker-check.test.mjs tests/config.test.mjs tests/engine-env.test.mjs tests/engine-events.test.mjs tests/engine-verdict.test.mjs tests/engine-hooks.test.mjs tests/engine-agents.test.mjs tests/session-isolation.test.mjs tests/engine-session.test.mjs tests/engine-prompts.test.mjs tests/engine-schemas.test.mjs tests/engine-claude-auth.test.mjs tests/worktrees.test.mjs tests/workspaces-api.test.mjs tests/engine-outcome.test.mjs tests/session-outcomes.test.mjs tests/outcome-hydration.test.mjs tests/mobile-outcomes.test.mjs tests/session-queue.test.mjs tests/useFollowScroll.test.mjs tests/session-usage.test.mjs",
26
26
  "test:coverage": "node --test --experimental-test-coverage --test-coverage-include='cli/**' --test-coverage-include='server/**' --test-coverage-lines=60 --test-coverage-branches=62 tests/*.test.mjs",
27
27
  "lint": "eslint .",
28
28
  "lint:fix": "eslint . --fix",