Files
buzz/desktop
Duncan a0309cdbd3 fix(acp): treat channel_full as transient; fix legacy-key retirement with colon-bearing sessionId
P1 (Desktop retransmit): channel_full is a queue-saturation signal emitted when
the owning read loop's queue is momentarily full. The previous code settled the
retransmit loop with 'failed' on this status, re-enabling the card for a manual
retry. The fix: treat channel_full as transient in retransmitPermissionDecision.ts
— the loop stays subscribed, the scheduler keeps firing, and the card stays
disabled until the loop either receives 'sent'/'already_decided' (acked) or the
deadline expires (expired/fail-closed). The owning loop's first-wins dedup
tolerates duplicate deliveries once the queue drains. Authoritative routing
refusals (no_active_turn, channel_closed, no_channel) still settle 'failed'.
NIP-AO.md updated to describe channel_full as transient rather than listing it
among the four failure statuses. Stale lib.rs and permission-request-card.tsx
comments updated to match.

P2 MINOR (legacy key colon safety): retireLivePermissionCardsForTurn cleaned up
pendingPermissions legacy keys via positional split(':') at index 2, assuming
sessionId never contains ':'. ACP SessionId is an unrestricted string. Fix:
match by the item's turnId field (which already carries the authoritative
identity) rather than parsing the key. No key-format change; existing entries
continue to be cleaned up correctly, and colon-bearing session identities no
longer leave stale legacy keys.

Tests: retransmitPermissionDecision.test.mjs split into channel_full-stays-active
(+2 tests: keeps loop/resends until acked; expires cleanly at deadline) and
authoritative-statuses-fail (3 statuses, unchanged contract).
agentSessionTranscript.test.mjs adds colon-in-sessionId regression test.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-09-01 20:04:27 -04:00
..
…

Buzz

Desktop chat shell with:

  • Tauri + React + TypeScript + Vite
  • Tailwind CSS
  • shadcn/ui-ready shared components
  • Biome (lint/format/check)
  • Feature-driven frontend structure

Scripts

  • pnpm dev - run the web frontend
  • pnpm tauri dev - run the desktop app
  • pnpm build - typecheck and build frontend
  • pnpm typecheck - TypeScript checks
  • pnpm lint - Biome lint
  • pnpm format - Biome format (write)
  • pnpm check - Biome check

Structure

  • src/shared - reusable app-wide code (ui, lib, styles)
  • src/features - feature modules (vertical slices)
  • src/app - top-level app composition