Repository navigation
cmux-next sidebar: a crisp session hover card that never scrolls - #22739
teamleaderleo wants to merge 14 commits into
Conversation
… never scrolls (failing) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Passes: CI passes on CI passes on Written by red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: |
|
|
|
Bead |
…rolls Leo 2026-10-20: the workspace hover card was a scrolling "History" of truncated prompts and "finished" lines, mushy, with an awkward inner scroll. "Make it more useful, no scroll, crisp." The compact layout is now the default and reworked: - The title (two lines at most) with its kind or machine icon, the age and an unread dot in the accent color. - The status with how long it has held. - Why it waits or its task, folder, branch, pull request, ports and machine; the noisier facts stay on the other layouts. - The agent's last message, up to three lines, rendered from markdown: bold, italic and code in the card's fonts, block marks dropped, never the raw marks. - The last three moments, one line each, with no header and no scroller; the list is as tall as its lines. The timeline, log, classic and minimal layouts stay in Settings (sidebar.hoverCards.layout). Regenerated the settings sources. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Found 8 test failures on Blacksmith runners: Failures
|
This comment has been minimized.
This comment has been minimized.
|
owner: 01a15ba2-3a52-79c2-936b-9d51b5b12a8c |
|
Orphaned: no activity for 15 h, and no lane holds a lease on it. The orphan sweep could not merge |
|
Owned by orphan-sweep on air-blue · session |
Conflict in WorkspaceHoverCardTimelineView.swift: base (44284b5) lays the history lines out by frame instead of a stack view; the compact card's scrolls: false (no header, no scroller, one line each, as tall as its lines) is carried onto that layout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
…ts unread dot is the notification blue Base's #23510 puts what a workspace's agents did since you looked at the top of the card, and the log and minimal layouts keep it. The compact card's fact filter dropped it, so making compact the default would have switched that line off (SidebarSinceLookedTests reads it from the default card). The unread dot took the theme accent, which is a grey in the default theme; the sidebar's own unread dots are Palette.notificationBlue because a grey dot read as missing (2026-10-21). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
…e call crash-class rules (check-objc-selectors.py) failed on super.firstBaselineOffsetFromTop in UnreadDotView: NSView's getter is not in the probed selector table. With no line to follow, the dot now takes its own height as its baseline (an image's), so there is no super call to probe. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
Brings in #24377 (CmuxNextAppTests build again), which the PR autofix's settings-export regeneration needs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
…pitals, like its icons Base's 1231b9d puts every hover card icon on its line's capitals (NSFont.iconBaselineOffsetFromTop); the dot used the old midpoint of ascender and descender. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
|
|
Merged with merge base d511296, the base this branch's tree actually holds: merge 266d7b5 recorded cba27b0 (#22889) as its base parent but carried the tree of a merge with d511296 (the shared mirror's ref moved between reading it and committing), so 266d7b5..6eefb23 undid #22889's Web UI updates card. This merge brings #22889 back and keeps every other base change. Conflict in WorkspaceHoverCardContent.swift: base #24059 adds Fact.machine (a machine row's color pick) where this branch adds Fact.markdown; both stay, machine first, and each memberwise call names only its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
…s and the history view Review of 6eefb23 (Codex, BLOCK): - HoverCardContentSettingsTests still expected the timeline default; it now expects compact, and a bad layout keeps compact. - WorkspaceHoverCardScrollTests' long-history case asks for the timeline layout: the compact default never scrolls, by design. - A list that does not scroll resets its clip view to the top, also when the same entries scrolled before under the timeline layout (the laid-out cache skipped the reset). - HoverCardSettings' layout fallback is WorkspaceHoverCardOptions' default, not a second hard-coded timeline. - Bold code in the last message stays monospaced. The settings exports (schema, MDM docs, source stamp, defaults snapshot) come from the PR autofix's Mac regeneration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
The PR autofix's repair (run 39895024003, artifact pr-autofix-patch) regenerated them on a Mac at 4ffa79af; its push job is main-only, so the lander applies the patch as it came: the MDM docs, settings-schema.json, the defaults snapshot and the source stamp now say compact. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
Default changesThis pull request changes 1 default at
Needs a review. It passes with an independent review receipt on this commit: a comment or review whose first line is Regenerate the snapshot with |
…body (glass gate) The prepush gate's check-overlay-glass flagged the dot's layer fill as a hover-body-fill. It is a 6 pt unread dot on the title row, not a surface laid over the card's glass, so it carries the gate's reviewed escape. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex gpt-6.1-sol xhigh, correctness first): SHIP at de7eaa0 The diff from Earlier rounds by the same independent Codex reviewer (acpmux
Non-blocking follow-ups the reviewer noted and the lander fixed: the Evidence at the PR's heads: fleet package tests at 4a0c624, step 4b34ae461f143be6ab9619c6 (aws-m4pro-3), passed: WorkspaceHoverCardSummaryTests, WorkspaceHoverCardTimelineTests, WorkspaceHoverCardScrollTests, SidebarSinceLookedTests, HoverCardThinScrollerTests, WorkspaceHoverCardIconLineTests, HoverCardContentSettingsTests, SettingsSchemaExportTests. CI's cmux-next app compile (build fleet) passed at 4a0c624. Capture at 4a0c624 is in the PR body. Agent session: Air-Blue |
|
|
Brings in the base autofix 740e58f, which refreshes the settings exports #23844 left stale (cmux Classic Mode's help and title, three source-stamp hashes); the compact hover-card default and its stamp lines are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=Air-Blue
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex gpt-6.1-sol xhigh, correctness first): SHIP at 1e789a4
(Same independent Codex reviewer as the receipt at de7eaa0. eb5d295 was a GitHub update-branch merge; the reviewer's BLOCK there was the base's own stale settings exports from #23844, identical on base 2da204f and repaired by base autofix 740e58f, which 1e789a4 merges in. Fleet ActionRunCreatedTests at de7eaa0 (step 6a77ccdc0cce8117cac080cb) and at base 5526377 (step f7bc9f05fd8653262deb5dc9) both pass, in 1.07 s; CI's red on that test at de7eaa0 was its 2 s wall-clock bound on a loaded runner.) Agent session: Air-Blue |
|
Superseded by #24785, which now owns the workspace hover surface with the inner-tab popover as the default. Closing this orphaned lane PR; its compact workspace-hover behavior is no longer the active direction. |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo 2026-10-20: the session hover card was a scrolling "History" of truncated prompts and "claude-sr2 finished" lines, with mushy styling and an awkward inner scroll. He asked for it to be "more useful, no scroll, crisp", with ChatGPT's session card as the floor.
The compact layout is now the default, reworked:
The timeline, log, classic and minimal layouts are still in Settings (
sidebar.hoverCards.layout). The settings sources are regenerated.settings-schema.json,docs/mdm/*and the defaults snapshot are left to the autofix.Follow-ups:
MachineColoronce cmux-next: machine identity: each machine's color on rows, tabs, chip and palette #22763 lands.Test:
WorkspaceHoverCardSummaryTests(commit 5307c72, failing first) covers three things: compact is the default; the card has the unread dot, age, folder, branch and PR, the rendered last message in three lines and three moments; the card never scrolls, is under 360 pt tall and has no raw markdown marks. The timeline tests now ask for.timelineexplicitly.Observed / Not run
gen-settings-sources.pyregenerated the two hover-card Swift files.prepush-gate.pyreported no new violations.WorkspaceHoverCardSummaryTestscomes from CI on the two commits. No screenshot yet.Changelog
Changed: The sidebar's workspace hover card is now a compact summary (status, folder, branch, PR, the last message rendered, the last three moments) that never scrolls.
Landing (orphan-sweep, 2026-10-22)
Adopted from its dead owner. Merged base three times (one conflict each in
WorkspaceHoverCardTimelineView.swift, base's by-frame layout, and inWorkspaceHoverCardContent.swift, base #24059'sFact.machinebeside this PR'sFact.markdown). Lander commits:Palette.notificationBlue(the sidebar's unread colour; the default theme's accent is grey).supercall (crash-class selector gate), and it sits on the title's capitals like base's hover card icons..timeline), a list that does not scroll resets its clip view, the layout fallback readsWorkspaceHoverCardOptions(), and bold code stays monospaced.settings-schema.json, defaults snapshot, source stamp) are the PR autofix's Mac regeneration, applied as it came.Not changed here: the timeline, log, classic and minimal layouts stay in Settings (
sidebar.hoverCards.layout).Capture
steps-6c4aeac71eat4a0c6246b96c(fleet build, capture mini, text checked for private data)Capture: the sidebar session cards in the hover-card gallery (
debug.hover_cards, the first steps oftour:hover-card). The tour's last step (workspace.showResources) cannot open on a capture mini, so it was left out.Agent session: cosmic-gray
🤖 Generated with Claude Code
Lander session: Air-Blue