Skip to content

gallery: expired harness sign-in states (Harness health notice, Settings Agents) (carry #27742) - #28834

Merged
teamleaderleo merged 13 commits into
feat-cmux-nextfrom
lane/carry-27742
Oct 31, 2026
Merged

teamleaderleo merged 13 commits into
feat-cmux-nextfrom
lane/carry-27742

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Update: #27742 itself landed on feat-cmux-next (64943fa) with the expired sign-in fix. After a base merge, this PR adds only two gallery states for that fix: agent-pane.harness-health-notice / sign-in-expired and Settings agents-harness-sign-in-expired (the Settings capture asked for in review).

Carries #27742 (its lane is gone): the original commits and their authorship are kept, merged with current feat-cmux-next, plus gallery before/after stills for each surface it changes.

What this carry adds

Before / After

No stills: Leo, 2026-10-31: "WE DON'T NEED SCREENSHOTS, JUST LET ME TRY THE STUFF OUT." The gallery state sign-in-expired (Harnesses) and the Settings expired-sign-in state show it.


Original description (#27742)

Fixes an internal report: harness readiness should never claim a verified sign-in it does not have.

Since #26658, acpmux's _acpmux/harness/health reports auth: "expired" when a check or probe says the credential expired. Every webview consumer of that row only knew "signedOut", so an expired sign-in:

  • showed Ready with a Start Chat button on the Harnesses page;
  • drew no Log In line above the composer;
  • was not dimmed in the model picker (signedOutHarnesses), so a pick started a chat that failed on its first turn;
  • gave Settings > Agents no badge and no row note.

Now expired needs a login everywhere signedOut does. The Harnesses row shows Sign In, and after Sign In it keeps waiting while the check still says expired. The chat line reads the existing "Your sign-in expired. Sign in again to continue." with Log In. The picker dims the harness, and Settings badges Agents and marks the row (data-harness-auth="expired", with the existing "Signed out" text). The native host already passes auth through unchanged (SettingsHarnesses.swift, readHarnessHealth), so this is webview-only. unknown and absent health are unchanged.

Changelog

Fixed: a harness whose sign-in expired no longer shows as Ready; it offers Sign In / Log In like a signed-out one.

Testing

Command: cd webviews && bun test src/agent-session/acpmux/HarnessHealthNotice.test.tsx test/harnesses-page.test.tsx test/signed-out-harness.test.tsx src/pages/settings/harnessesCard.test.tsx

Observed / Not run

  • Red, test-only commit 73a7c90ac3d7972c8a41de2c1a8115c0c65f0299 (on base 760ac107c6bc5bb422613bba3bff77c833964e27, plus the "expired" type literal): 4 failing (the four new tests), 34 passing: run 40979542776.
  • Green at head 3e4c9433747be3b13b40195162dfc5d298b13a73: 38 passing, 0 failing: run 40987332498. The fix commit dcf5aedc was green too: run 40979841785.
  • scripts/web-lint.sh passed.
  • Gallery: new HarnessesScreen state sign-in-expired (Claude Code expired → Sign In; Codex signed out; Grok ready). Its fixture now names a login for every harness, as acpmux does (review finding: without one the expired row fell back to Ready). It does not exist at the base, so there is no before for it; the before is the same row reading Ready.
  • Not run: a live daemon with a genuinely expired Claude or Codex credential.

risk: normal (webview display and picker gating of an existing health value; no protocol, daemon or native change).

#27742 closes once this lands.

Agent session: agent session

🤖 Generated with Claude Code

teamleaderleo and others added 8 commits October 30, 2026 00:20
Red: since acpmux reports auth "expired" (#26658), the Harnesses page
shows Ready, the chat shows no Log In, the model picker does not dim it
and Settings > Agents shows no badge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-c46713109b72034b1840
acpmux's harness health reports auth "expired" (#26658); the Harnesses
page, the chat's Log In line, the model picker's signed-out list and
Settings > Agents only knew "signedOut", so an expired sign-in read as
Ready. Each now treats expired as needing a login.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-c46713109b72034b1840
…cpmux does

Without one the expired row fell back to Ready (review finding).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-c46713109b72034b1840
…boarding-a-expired-auth

# Conflicts:
#	webviews/src/agent-session/acpmux/harnesses/HarnessesScreen.gallery.tsx
#	webviews/test/signed-out-harness.test.tsx
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
A `sign-in-expired` state beside `signed-out` in the harness health
notice, so the gallery shows the chat line this PR adds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
`agents-harness-sign-in-expired`: Codex's sign-in expired, so Agents
gets its badge and the row says Signed out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
Its row was below the fold, and the base build could not mount the
state (it waited for the expired marker). It now waits for the row and
focuses its Check button, which both sides have.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
@blacksmith-sh

blacksmith-sh Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)/
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 351e3f7: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr28834 -f ref=lane/carry-27742 -f platform=macos -f backend_mode=local

Gallery before/after for e9de6c2: 16 states rendered, 7 images differ, 1295 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41215742873 -R manaflow-ai/cmux -n gallery-advisory-28834-e9de6c2bbc1ea6a564832a3ebf82c1ba13fd5e1d (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.harness-health-notice/sign-in-expired Apple System Colors Light new 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/sign-in-expired Apple System Colors new 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/signed-out Apple System Colors Light unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/signed-out Apple System Colors unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/outdated Apple System Colors Light unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/outdated Apple System Colors unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/updating Apple System Colors Light changed 0.0131% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/updating Apple System Colors changed 0.0124% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/updated Apple System Colors Light unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/updated Apple System Colors unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/restart-after-turn Apple System Colors Light unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/restart-after-turn Apple System Colors unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/update-failed Apple System Colors Light changed 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/update-failed Apple System Colors unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/dismissed Apple System Colors Light unchanged 0% own HarnessHealthNotice.gallery.tsx
agent-pane.harness-health-notice/dismissed Apple System Colors unchanged 0% own HarnessHealthNotice.gallery.tsx
pages.settings/agents-harness-sign-in-expired Apple System Colors Light new 0% own settings.gallery.ts
pages.settings/agents-harness-sign-in-expired Apple System Colors new 0% own settings.gallery.ts
pages.settings/general Apple System Colors Light unchanged 0% own settings.gallery.ts
pages.settings/general Apple System Colors unchanged 0% own settings.gallery.ts
pages.settings/general-customized Apple System Colors Light unchanged 0% own settings.gallery.ts
pages.settings/general-customized Apple System Colors unchanged 0% own settings.gallery.ts
pages.settings/general-group-1 Apple System Colors Light unchanged 0% own settings.gallery.ts
pages.settings/general-group-1 Apple System Colors unchanged 0% own settings.gallery.ts
pages.settings/general-group-2 Apple System Colors Light unchanged 0% own settings.gallery.ts
pages.settings/general-group-2 Apple System Colors unchanged 0% own settings.gallery.ts
pages.settings/general-group-3 Apple System Colors Light unchanged 0% own settings.gallery.ts
pages.settings/general-group-3 Apple System Colors unchanged 0% own settings.gallery.ts
pages.settings/general-group-4 Apple System Colors Light unchanged 0% own settings.gallery.ts
pages.settings/general-group-4 Apple System Colors unchanged 0% own settings.gallery.ts
pages.settings/general-group-5 Apple System Colors Light unchanged 0% own settings.gallery.ts
pages.settings/general-group-5 Apple System Colors unchanged 0% own settings.gallery.ts

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

web and size checks: green

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at ebfd968

No blocking findings.

Visual verdict: The expired-sign-in states are clear and readable in both themes and fit alongside ChatGPT or Claude. Before/after comparisons show no introduced clipping, overlap, or layout regression.

@teamleaderleo teamleaderleo removed the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

cmux-bot approves ebfd968: an independent review passed this exact head (next-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Handing off to ux-owner, which carries this to the finish. Open: it conflicts with feat-cmux-next (merge base; that also clears the stale Default cursor red). The body still says STILLS_PLACEHOLDER: run 41165136637's gallery artifact has agent-pane.harness-health-notice/sign-in-expired and agent-pane.harnesses/sign-in-expired at head, plus harnesses/this-mac before/after. Then a fresh exact-head review.

harnessRows: base's rule (no answer is Checking; Ready only on a
signedIn answer) kept, with this branch's expired sign-in going to Sign
In through needsLogin. The gallery host keeps both base's authMissing
and this branch's expired fixtures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
@cursor

cursor Bot commented Oct 31, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review at 351e3f7 came back BLOCK on three visual findings. All three are in code this PR does not change, and the reviewer notes that "these issues also appear in base screenshots":

  1. Repeated Install buttons, harnesses/HarnessesScreen.tsx:408. This PR changes only one line in that file: the post-sign-in recheck now uses needsLogin, so an expired sign-in counts the same as signed out. The per-row buttons are base's layout.
  2. Two Log In actions, QuickModelMenu.tsx:905. This PR doesn't touch QuickModelMenu.tsx or modelPicker.css (git diff origin/feat-cmux-next...HEAD -- webviews/src/agent-session/acpmux/QuickModelMenu.tsx is empty).
  3. Clipped expired-sign-in message, QuickModelMenu.tsx:903. Same file, also untouched here. That menu's note text comes from the session's own auth verdict, not the harness health this PR extends.

The reviewer found no functional regression in the diff. These are base findings for the model picker and Harnesses surfaces, not regressions from this PR. The P2, a Settings expired-sign-in capture, is a follow-up.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Landing at 351e3f7. Its review there said BLOCK, but only on visual findings in code this PR does not change. The reviewer called them identical to base and found no functional defect (comment 6542408748). Under the blocking rule (breaks base, loses data, security, or a regression) those findings are base follow-ups, not this PR's. Tests at this head pass.

@teamleaderleo

teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator Author

Review (the owner lane's independent review, at its land request): SHIP at 351e3f7

Recorded by lane-gh-broker from this PR's owner lane, which asked to land this exact head after its independent review. next-autoland lands it once every red is the base's; a BLOCK at this head, a HOLD line or a hold label still stops it.

#27742 landed on base (64943fa) with the expired sign-in fix itself;
the gallery host takes base's side (its login comes from the catalog).
What this branch adds now is two gallery states: the Harness health
notice's sign-in-expired and Settings > Agents' sign-in-expired.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
@teamleaderleo teamleaderleo changed the title fix(agent-pane): an expired harness sign-in offers Sign In, never Ready (carry #27742) gallery: expired harness sign-in states (Harness health notice, Settings Agents) (carry #27742) Oct 31, 2026
@teamleaderleo

teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator Author

Review (the owner lane's independent review, at its land request): SHIP at f358ed8

Recorded by lane-gh-broker from this PR's owner lane, which asked to land this exact head after its independent review. next-autoland lands it once every red is the base's; a BLOCK at this head, a HOLD line or a hold label still stops it.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent October 31, 2026 13:00 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 8d9774c

The independent SHIP at f358ed8 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (f1f9364dd6b752e3) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@teamleaderleo teamleaderleo removed the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@cursor

cursor Bot commented Oct 31, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high fast, router-review): SHIP at e9de6c2

This head is the lander's update-branch for stale guards. The full diff was reviewed (gallery entries only): no correctness findings.
Follow-ups: none

@teamleaderleo
teamleaderleo merged commit 40851b7 into feat-cmux-next Oct 31, 2026
196 of 197 checks passed
@teamleaderleo
teamleaderleo deleted the lane/carry-27742 branch October 31, 2026 16:26

This branch was previously deployed

1 inactive deployment
ci-routing-agent — e9de6c2b Deployed Oct 31, 2026 by teamleaderleo via cmux-tui tree preflight #90409
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant