Files
buzz/desktop
Duncan 59165297d1 fix(acp): close inbound permission-decision lifecycle gap
A fire-and-forget permission_decision over the observer control channel is
lost if the harness socket is down when the decision is published, stranding
the card. Close both halves:

- Harness (buzz-acp): a retransmitted decision whose nonce was already applied
  now acks success-shaped (already_decided) via a recently-decided nonce set
  with a retention window, instead of failing no_active_turn/channel_closed.
- Desktop: a retransmit-until-acked orchestrator bounded by the card's
  expiresAt, with already_decided treated as success (never increments
  deliveryFailed). Frames without expiresAt fall back to a 300s freshness
  window from the frame timestamp.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-08-28 11:36:42 -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