mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Six deterministic CI failure families closed:
Family 1 (Save-still-open: edit-agent:156/190, agent-access-warning:155):
Root cause: unlinked agents (personaId=null) generated a phantom agentCommand
write every save because the second clause of commandUpdate was checking
agentCommandOverride==null && pinned.length>0 — true for every unlinked agent
with a default runtime. The submitted agentCommand never matched the mock's
stale observe value → settlement always failed → dialog stayed open.
Fix: guard the second clause with inst.personaId!=null so unlinked agents
never generate a harness write on an untouched save.
Root cause also: mock handleUpdateManagedAgent did not persist provider,
agentCommand, harnessOverride, agentArgs, acpCommand, or parallelism.
Any submit that included provider (test 190: Anthropic + custom model)
would fail settlement because observed.provider stayed null.
Fix: extend handleUpdateManagedAgent and RawManagedAgent in e2eBridge.ts
to handle all fields that observedStateMatchesAgentInput checks, including
agent_command_override to support harnessOverride settlement.
Family 2 (model label source=global, edit-agent:318):
resolveInheritedModelLabel only handled source=="build"; source=="global"
fell through to the generic "Default (model)" label instead of calling
getDefaultLlmModelLabel which renders "Use agent defaults (model)".
Fix: add source==="global" branch.
Family 3 (test 11 provider picker visible: global-agent-config-screenshots:899):
llmProviderFieldVisible used prospectiveRuntimeId (instance harness pin,
derived from inst.agentCommand="goose") in D+I context. The D-section
provider picker is driven by the definition runtime, not the instance pin.
A runtime-less definition with a goose-pinned instance was incorrectly
exposing the provider picker.
Fix: use definitionRuntimeId in D+I context; prospectiveRuntimeId only in
pure I-only context.
Family 4 (model combobox not found: agent-provider-dropdowns:147):
Auto-seed effect set definitionRuntimeId but not selectedRuntimeId in D-only
context. useAgentEditRuntimeState derives selectedRuntime from selectedRuntimeId
which drove model discovery — a stale "custom" value left discovery unable to
resolve a runtime and the model list stayed empty.
Fix: auto-seed also calls setSelectedRuntimeId in D-only context (!inst).
Also added pickModelComboboxOption helper to edit-agent.spec.ts (uses
getByRole("button") not menuitemradio for PersonaModelCombobox items).
Family 5 (Databricks text leak: agent-provider-dropdowns:213):
Test used globalAgentConfig.model="global-databricks-model" which produced
a "Use agent defaults (global-databricks-model)" label containing "Databricks".
Fix: change test fixture to "global-openai-model".
Family 6 (saved harness not selected in definition edit: inline-custom-harness:122):
selectSavedHarness (usePendingHarnessSelection) called handleRuntimeDropdownChange
in all contexts, but in D-only context the harness dropdown is driven by
definitionRuntimeId via handleDefinitionRuntimeChange. The I-pin handler
set selectedRuntimeId, which is hidden in D-only context.
Fix: route to handleDefinitionRuntimeChange when showDef && !showInst.
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