mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
The probe accepted every structurally deserializable 2xx as Nip98Authorized and forwarded whatever role/source strings arrived, without requiring status == "ok", authMode == "nip98", a recognized non-null role/source, canAct == true, or canStaff == (role == operator). A token-mode, error-status, or role/capability-mismatched body reaching the authenticated retry authorized the console and could expose Staffing against a relay that denied it — a fail-open network-boundary classification. The unauthenticated 200 branch matched authMode alone. Add typed ProbeRole/ProbeSource enums (closed vocabularies) and two validators on ProbeWire: authorized_principal returns the typed principal only when the complete nip98 invariant holds; is_coherent_disabled gates the disabled branch on the full disabled-mode shape. Both call sites fail closed to NotAdminApi otherwise. parse_probe stays pure structural deserialization with Serde's unknown-field tolerance for forward compatibility. Route FeedbackStatusControl mutation failures through toast.error(adminErrorMessage(e)) like the other three handlers, so a relay error envelope no longer renders as raw JSON inline. Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
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 frontendpnpm tauri dev- run the desktop apppnpm build- typecheck and build frontendpnpm typecheck- TypeScript checkspnpm lint- Biome lintpnpm 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