Skip to content

feat(agents): Harnesses status card in Settings (slice 2/5, stacked on #272) - #277

Merged
salman1993 merged 10 commits into
mainfrom
harness-setup-2-card
Sep 28, 2026
Merged

salman1993 merged 10 commits into
mainfrom
harness-setup-2-card

Conversation

@salman1993

@salman1993 salman1993 commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Slice 2/5 of the Harnesses work. #272 (docs) has merged; this PR now targets main.

Changes

  • Settings › Agents gets a Harnesses card with three rows:
    • Buzz Agent: Ready (bundled).
    • Goose: Ready or CLI needed. The Install button comes in slice 3.
    • Pi: Ready, CLI needed or Adapter needed.
  • The card has an ACP tooltip. When Pi isn't Ready, it shows copyable npm install -g commands for Pi and buzz-pi-acp.
  • Check again calls control.refresh() → agent_control_snapshot, which re-runs native executable detection (harness_options()) on every snapshot. Nothing needs to be reopened.
  • The native harnessOptions now include a status field. Pi reports CLI needed when pi or node is missing, and Adapter needed when buzz-pi-acp is missing. available means status == "ready".
  • The Add and Edit dialogs replace the "reopen the desktop app" hint with Open Harnesses in Settings. Both profile editor entry points now open the same Settings card and close their editor after navigation succeeds. If there are unsaved edits, the dialog says that opening Settings discards them.

Checks

Run on 5b4b02e9:

  • pnpm check passes. cargo fmt --check passes. cargo clippy -p buzz-foundation --all-targets -D warnings passes.
  • cargo test for src-tauri --lib: 79 passed, 3 ignored.
  • Vitest for AgentSettings and AgentsPage: 58 passed.
  • tests/browser/agent-control.spec.mjs in Chromium and WebKit: 38 passed.
  • Full Vitest: 3916 passed, 3 failed. The failures are PluginImport, MessageRow and ProfileAgentIdentity. They were inherited from the base, and docs: define Harnesses setup and global agent defaults #272's CI fails on the same three tests. Approved PR test: repair three baseline Vitest failures #276 fixes all three and has green CI.

Run on 6a02b2bf:

  • bin/pnpm check passes. The focused ProfileRuntime.test.tsx file passes (5 tests).
  • Added one browser case for the optional ?settings mentions fixture. It verifies the Vite fixture entry point renders both composer and preference without a page error; this module mounts at import, outside the TypeScript source check. Chromium and WebKit pass (2 tests). No browser cases were removed. Before this fix, AgentSettings rendered without its required control prop, so the fixture threw.
  • The new mounted profile test covers both profile editor entry points, the dirty-draft warning, and navigation failure and success.
  • CI on this head: JavaScript failed only the three baseline tests covered by test: repair three baseline Vitest failures #276 (3,917 others passed). Browser measurements exceeded the Beta warm-switch ceiling by 0.8 ms (200.8 ms vs. <200 ms) in an unchanged flow. Rust and tool integration passed; browser journeys are still running.

Integration update on 2b7761ef:

  • Merged current main and resolved the mentions fixture conflict, keeping the Harnesses Settings mount and the new nonmember admission fixture.
  • bin/pnpm typecheck, focused Vitest (72 tests), and tests/browser/mentions.spec.mjs in Chromium and WebKit (8 tests) passed. The repository pre-push group passed (547 related tests and design checks).
  • Hosted CI, including JavaScript, Rust and tool integration, Chromium/WebKit journeys, browser measurements, DCO and static checks, passed on this head.

Not verified

The native app wasn't launched. UI checks use fixtures only.

Generated with Codex

Signed-off-by: Salman Mohammed <smohammed@squareup.com>
Signed-off-by: Salman Mohammed <smohammed@squareup.com>
Signed-off-by: Salman Mohammed <smohammed@squareup.com>
@salman1993
salman1993 marked this pull request as ready for review September 25, 2026 18:30
@salman1993
salman1993 requested review from a team, comp615 and wesbillman as code owners September 25, 2026 18:30
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-25T18:34:11.909997Z 5b4b02e Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Star Lord automated source review (via Wes's account)

Reviewed head 5b4b02e94666f5cfaa803367c8f219a1f0401a78 against stacked base 49000442cab1c59e748cf0d463395e7042faa7a6 (also the merge-base).

Two actionable integration findings are attached inline: one missing setup route from supported profile editors (P2), and one browser-fixture caller regression (P3). These are non-blocking review comments, not a GitHub approval or request-changes decision.

Scope: the complete 15-file diff, the approved Settings/Harnesses contract, native detection and snapshot callers, controller refresh/error handling, Settings composition, Add/Edit and profile-editor entry points, and the changed test sources. The existing snapshot path re-runs executable detection; installation, global defaults and restart-on-save remain later slices, not requirements added by this review.

Validation: source-only inspection of pinned Git objects; isolated source copies were byte-checked against the head, with no dirty worktree inputs. No tests, builds, installs, PR-code execution, app launches or live native workflows were performed. The author's reported test results were not independently verified, and current CI/runtime/packaged behavior is not established by this review. Requested regression checks in the comments remain unrun.

Comment thread src/bundled/agents/AgentHarnessEditor.tsx
Comment thread src/app/AgentSettings.tsx

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Carl, an automated reviewer, commenting via Wes’s GitHub account.

Changes requested: complete the supported Edit → Harnesses setup route. Reviewed head 5b4b02e94666f5cfaa803367c8f219a1f0401a78 against stacked base/merge-base 49000442cab1c59e748cf0d463395e7042faa7a6, with independent UI and native-detection review.

  • P2, merge criterion: I independently verified the existing profile-editor finding. Wire both production profile editor entry points to Settings → Agents, deliberately close their editor on successful navigation, and cover those routes plus the dirty-draft warning. These companion panels can remain mounted over Settings; merely adding the callback is insufficient. This is completion of the approved Edit-dialog behavior, not a request for another setup subsystem.
  • P3, non-blocking: The existing mentions-fixture caller regression is also verified. It affects the optional ?settings fixture mode, not the production Settings caller or current browser journeys.

The app-owned refresh/status path, older-host fallback, and Agents-page Add/Edit navigation are coherent in source. No installer, defaults, or restart machinery is required in this slice.

Validation: complete 15-file diff and responsible callers reviewed; git diff --check passed for the pinned range. Hosted CI run 36170869214 checked merge 54f9158 (head into the stated base): 3,916 Vitest passes and the same three failures addressed by #276 (PluginImport, ProfileAgentIdentity, MessageRow); Rust/tool integration and Chromium/WebKit journeys passed. No local tests, installs, builds, native launches, or live setup were run. No screenshot/generated review artifacts were added in the diff. This is not approval or a claim of CI-green/native workflow validation.

Signed-off-by: Salman Mohammed <smohammed@squareup.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Star Lord automated source follow-up (via Wes's account)

No actionable findings in this follow-up. The two previous findings are addressed in the reviewed source:

  • Profile editor → Harnesses: ProfilePanel.tsx:118–120 supplies the existing Settings → Agents navigation to both profile entry points. ProfileAgentRuntime.tsx:103–111 and ProfileRuntime.tsx:185–193 deliberately close the editor only on an opened result. The reused editor retains its dirty-draft warning, and the new mounted regression covers both routes, failed navigation retaining the dialog, and successful closure.
  • Settings-enabled mentions fixture: tests/fixtures/mentions.tsx:31,275–276 supplies one stable browser/unavailable controller to AgentSettings. The added browser case exercises the real Vite fixture entry point with ?settings, checking that the composer and preference render without a page error. One browser case added; none removed.

Pinned scope: head 6a02b2bf5bbfceccd568000ee4518e520b5f7beb; stacked base/merge-base 49000442cab1c59e748cf0d463395e7042faa7a6. Reviewed the complete six-file follow-up from previously reviewed 5b4b02e94666f5cfaa803367c8f219a1f0401a78, its production profile/plugin and navigation callers, and controller/Settings fixture integration. Installers, global defaults and restart-on-save remain later slices, not new requirements here.

Validation limits: source-only; pinned extracts byte/blob/SHA256 verified, no dirty source inputs, and read-only git diff --check passed against both base and prior head. Tests were read, not executed; no builds, installs, native launches or live workflows were run. The author's local results were not independently reproduced.

One read-only CI snapshot at 2026-09-25 19:53 UTC, reported for this exact head: JavaScript and Browser measurements failed; both WebKit journey shards were in progress; Chromium shards, Rust/tool integration and DCO passed; Windows was skipped. Failure causes were not independently diagnosed, and CI was not waited on or polled. This review does not establish CI-green or native/runtime acceptance.

Non-blocking COMMENT only—not approval, dismissal of prior reviews, or merge authorization.

codex and others added 5 commits September 25, 2026 19:09
Signed-off-by: OpenAI Codex <codex@openai.com>
Signed-off-by: OpenAI Codex <codex@openai.com>
Signed-off-by: Salman Mohammed <smohammed@squareup.com>
Signed-off-by: Salman Mohammed <smohammed@squareup.com>
Signed-off-by: Salman Mohammed <smohammed@squareup.com>
Base automatically changed from harness-setup-1-docs to main September 26, 2026 13:46
Signed-off-by: OpenAI Codex <codex@openai.com>
@salman1993
salman1993 merged commit 59d9d6f into main Sep 28, 2026
14 checks passed
@salman1993
salman1993 deleted the harness-setup-2-card branch September 28, 2026 00:37
zrmarley added a commit that referenced this pull request Sep 28, 2026
…ad-on-send

* origin/main: (58 commits)
  Keep profile avatar cutouts transparent and align the header gutter (#319)
  Restore sidebar status icons beside names (#316)
  docs(mentions): specify portable mention rules (#343)
  fix(agents): wait for native host operations (#331)
  Simplify channel templates and report setup failures accurately (#318)
  feat(agents): Harnesses Goose install (slice 3/5) (#279)
  feat(agents): Harnesses status card in Settings (slice 2/5, stacked on #272) (#277)
  Fix timer operation ownership and stabilize timing regressions (#317)
  Restore cached workspace before relay startup (#311)
  test(browser): wait for the app's own quota cooldown before retrying (#284)
  docs: define Harnesses setup and global agent defaults (#272)
  Make mention choices consistent and stable (#258)
  Discover saved relay agents without changing the page (#224)
  feat: add persistent dev log levels and relay traffic summaries (#306)
  Polish inline message reactions and previews (#213)
  feat(identity): add native macOS import, creation and backup (#308)
  fix(status): reopen a Today status as Today near 16:00 (#275)
  test: use current navigation for GIF send roundtrip (#309)
  Fix composer focus when selecting channels and DMs (#307)
  fix: retire mention searches after chips and refuted prose (#303)
  ...

# Conflicts:
#	src/features/messages/MessageComposer.test.tsx
#	src/features/messages/MessageComposer.tsx
johnmatthewtennant pushed a commit that referenced this pull request Sep 28, 2026
* origin/main: (45 commits)
  Use Blue 11 links with Blue 3 hover and explicit contrast exceptions (#322)
  perf(messages): index the emoji catalog for reaction lookups (#333)
  Polish search palette and add conversation search (#340)
  Use step-ten avatar colors with contrasting outlines (#320)
  Keep profile avatar cutouts transparent and align the header gutter (#319)
  Restore sidebar status icons beside names (#316)
  docs(mentions): specify portable mention rules (#343)
  fix(agents): wait for native host operations (#331)
  Simplify channel templates and report setup failures accurately (#318)
  feat(agents): Harnesses Goose install (slice 3/5) (#279)
  feat(agents): Harnesses status card in Settings (slice 2/5, stacked on #272) (#277)
  Fix timer operation ownership and stabilize timing regressions (#317)
  Restore cached workspace before relay startup (#311)
  test(browser): wait for the app's own quota cooldown before retrying (#284)
  docs: define Harnesses setup and global agent defaults (#272)
  Make mention choices consistent and stable (#258)
  Discover saved relay agents without changing the page (#224)
  feat: add persistent dev log levels and relay traffic summaries (#306)
  Polish inline message reactions and previews (#213)
  feat(identity): add native macOS import, creation and backup (#308)
  ...

Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>

# Conflicts:
#	src/bundled/agents/AgentCard.tsx
#	src/bundled/agents/AgentsPage.tsx
johnmatthewtennant pushed a commit that referenced this pull request Sep 28, 2026
* origin/main: (36 commits)
  Delay message timestamp tooltips by 500 ms (#321)
  Use Blue 11 links with Blue 3 hover and explicit contrast exceptions (#322)
  perf(messages): index the emoji catalog for reaction lookups (#333)
  Polish search palette and add conversation search (#340)
  Use step-ten avatar colors with contrasting outlines (#320)
  Keep profile avatar cutouts transparent and align the header gutter (#319)
  Restore sidebar status icons beside names (#316)
  docs(mentions): specify portable mention rules (#343)
  fix(agents): wait for native host operations (#331)
  Simplify channel templates and report setup failures accurately (#318)
  feat(agents): Harnesses Goose install (slice 3/5) (#279)
  feat(agents): Harnesses status card in Settings (slice 2/5, stacked on #272) (#277)
  Fix timer operation ownership and stabilize timing regressions (#317)
  Restore cached workspace before relay startup (#311)
  test(browser): wait for the app's own quota cooldown before retrying (#284)
  docs: define Harnesses setup and global agent defaults (#272)
  Make mention choices consistent and stable (#258)
  Discover saved relay agents without changing the page (#224)
  feat: add persistent dev log levels and relay traffic summaries (#306)
  Polish inline message reactions and previews (#213)
  ...

Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>

# Conflicts:
#	src/bundled/agents/AgentEditor.tsx
#	src/bundled/profiles/ProfileAgentIdentity.test.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants