mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Stack: #2035 → this PR ## What Group the per-agent model breakdown by `(harness, model)` instead of `model` alone, so the same model running under two different harnesses (e.g. `claude-sonnet` via `goose` vs `claude-code`) produces two distinct rows rather than collapsing into one. ## Changes **Rust / SQLite** - `agent_metric_index`: add nullable `harness TEXT` column. Schema migration M1: `ALTER TABLE ... ADD COLUMN` + delete-then-backfill rebuild so all existing rows get `harness` populated from retained `archived_events.raw_json` — no data loss; ingest and backfill share the same `from_payload` parser (frozen-plan requirement preserved). - `AgentMetricIndexRow`: parse `harness` from `AgentTurnMetricPayload.harness` (REQUIRED field per NIP-AM), write/read through all store paths (`ROW_COLUMNS`, INSERT, `row_from_sql`). - `AgentScope.models` grouping key widened from `Option<String>` to `(Option<String>, Option<String>)` i.e. `(harness, model)`. Sort tiebreak: harness ascending → model ascending, `None` last in each. - `ModelUsage` wire type: add `harness: Option<String>` field. **Frontend** - `tauriArchive.ts` / `bridge.ts`: add `harness` to `AgentUsageModel` type. - `AgentUsageFocusedView`: render `harness` as a dimmed sub-label next to each model name on breakdown rows. `null` harness (pre-migration data or unknown) renders no label — single-harness data is visually unchanged. - `agentUsage.ts` `sortModelsByKnownTotal`: tiebreak updated for compound `(harness, model)` key. **Tests** - Rust: collapse-fix test (same model / two harnesses → two rows), migration test (old-shape rows get harness populated after rebuild), harness sort coverage. - TS: `sortModelsByKnownTotal` harness tiebreak tests, same-model two-harness sort test. - E2E: `bridge.ts` fixture type updated, `agent-usage.spec.ts` harness assertion, `agent-usage-screenshots.spec.ts` shot 02 harness-label visibility check. ## Gates All green locally: - `just desktop-check` ✓ - `just desktop-typecheck` ✓ - `just desktop-build` ✓ - `just desktop-test` (3487 pass, 0 fail) ✓ - `cargo test` in `desktop/src-tauri` (1575 pass, 0 fail) ✓ --------- Signed-off-by: Will Pfleger <pfleger.will@gmail.com> Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
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