Skip to content

cmux NEXT: draggable Session Info cards and shared edge treatments - #26720

Closed
teamleaderleo wants to merge 69 commits into
feat-cmux-nextfrom
si-session-info-cards
Closed

teamleaderleo wants to merge 69 commits into
feat-cmux-nextfrom
si-session-info-cards

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Status: Session Info cards, edge fade, and running-row shimmer await Astra review and gallery verification.

Leo asked for “separate rounded cards” in Session Info that “can be clicked and dragged to reorder,” with the order persisted per user and keyboard reordering accessible. This stacked PR keeps the floating panel and existing contents, adds native handle drag plus Arrow-Up/Arrow-Down movement, and persists the section order.

Leo also asked for “subtle but nice but integrated” blur fading at the sticky Outputs and Session Info headers. The shared ui-scroll-edge-fade CSS component uses the foundations token contract (--cmux-scroll-edge-band: 16px, --cmux-scroll-edge-blur: 8px, --cmux-scroll-edge-opacity: 0.82) with reduced-transparency solid fallback and no scroll JavaScript. Gallery variants cover subtle, balanced (chosen), and roomy treatments.

Leo clarified the running treatment: “the thinking shimmer works like that, and then the session reel, it asks for it to also have that. I like that. Although I think it could maybe be a bit slower on the session info region.” Session Info task and server rows now use the existing shared cmux-wave shimmer with a slower 2.4s chosen duration; 2.0s and 3.0s alternatives are in the gallery. The tray remains on its existing 1.6s wave.

Gallery evidence: agent-pane.chat-inspector variants cards-balanced, edge-balanced, and wave-balanced (with quiet/roomy spacing, subtle/roomy edge, and 2.0s/3.0s wave alternatives). Before/after captures are generated from the gallery states for light and dark review.

Scroll-edge captures (base before vs this PR after; real rendered Outputs rows at scroll 0 and scrolled, light and dark):

Before — feat-cmux-next

before Outputs scroll 0 light

before Outputs scrolled light

before Outputs scroll 0 dark

before Outputs scrolled dark

After — 93fef04f80cd6538b3746526cc61c6e28befd568

after Outputs scroll 0 light

after Outputs scrolled light

after Outputs scroll 0 dark

after Outputs scrolled dark

Persistence now uses a stamped string-list value (@cmux-order/v1/<time>/<writer> plus the section IDs) in native settings and the local fallback. Every pane applies only newer revisions; RPC acknowledgements never apply order payloads and clear only the matching fallback stamp. The native config-file actor compares and publishes atomically. Native file-watcher edits, including an edit retaining an old stamp or deleting the key, become a fresh stamped order (deletion becomes a stamped default) and reach open panes; a newer stamped peer write is accepted without restamping, while stale writes restore the held value. Reset All writes a newer stamped default, so delayed writes cannot restore the old order. Legacy arrays remain readable.

Validation:

  • 153 focused webview tests passed (783 expectations), including card persistence/drag/keyboard, edge rendering, task shimmer rows, and summary/Inspector regressions.
  • bun run typecheck, check:fixed-waits, check:layers, and check:design-tokens pass.
  • Latest revision: 31 focused persistence/card/dead-click tests and 7 browser geometry/transparency tests pass. Full scripts/web-lint.sh passes; typecheck covers 2,903 files.
  • Rejected native writes retain the stamped local order across reloads; local storage is cleared only when its matching stamp is confirmed. Sticky headers become opaque only after scrolling; linked and plain Sources share the 8px icon gap.
  • The four valid base captures and four after captures are retained; visuals are unchanged by the watcher-only fix.
  • Exact-head native suite passed at aa01c65396a2f41df8692e6db57e4d4b277c0737 in fleet receipt 38c4e496516c0a7cde1ab102: InspectorOrderRevisionTests, AgentPaneDisplaySettingTests, and ResetAllRetiredKeysTests all passed.

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


Summary by cubic

Turns Session Info's fixed section blocks into separate rounded glass cards users reorder by dragging a keyboard-focusable six-dot handle or pressing Arrow-Up/Arrow-Down, with the order persisted through a hidden native setting edited by dragging the cards themselves. Adds a shared CSS-only blur fade for the sticky Outputs and Session Info headers, and slows the running-row shimmer in Session Info to a calm 2.4s while the tray keeps its 1.6s wave.

  • The shared ui-scroll-edge-fade component is driven by the --cmux-scroll-edge-* tokens, needs no scroll listeners, reveals only after a card's own content scrolls, stays hidden while its disclosure is folded, and falls back to a solid reduced-transparency surface.
  • The handle is an accessible drag handle; dragging never toggles a section, and keyboard reordering moves the focused card among the visible cards, skipping sections hidden by a layout variant.
  • The order is a natural string list whose first member carries a Lamport timestamp and writer identity, so the config actor publishes the newest order and a delayed write or file-watcher reload cannot overwrite a newer persisted one; a local fallback survives rejected writes and reloads, and Reset All clears both. The hidden setting is fully localized in the catalog.
  • Task entry animations keep their fade-in from the top while running rows shimmer, so new tasks still stand out.
  • The original glance, rules, and groups layouts remain in the gallery, along with subtle, balanced (shipped), and roomy variants for cards, edge, and wave.
  • Verified by more than 150 focused webview tests plus native revision-parser unit tests, and by typecheck, layer, fixed-wait, and design-token checks.

Written for commit 9a8b0d0. Summary will update on new commits.

View guided diff Turn on auto-fix

Agent session: agent session

…session-info

# Conflicts:
#	webviews/src/agent-session/acpmux/direct.ts
#	webviews/src/agent-session/acpmux/inspector/ChatInspector.gallery.tsx
…es-ui-work

# Conflicts:
#	webviews/src/agent-session/acpmux/direct.ts
#	webviews/src/agent-session/acpmux/subagents/subagentFold.ts
#	webviews/src/agent-session/acpmux/summary/SummaryBody.tsx
#	webviews/src/agent-session/acpmux/summary/sessionSummary.ts
#	webviews/src/agent-session/acpmux/summary/transcriptPullRequests.ts
…es-parser

# Conflicts:
#	webviews/test/transcript-pull-requests.test.ts
…es-ui-work

# Conflicts:
#	webviews/src/agent-session/acpmux/inspector/ChatInspector.tsx
#	webviews/src/agent-session/acpmux/summary/SummaryBody.tsx
#	webviews/src/agent-session/acpmux/summary/SummaryCard.tsx
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

For awareness: Leo (2026-10-29) asked for Session Info to be "LITERALLY … THE EXACT SAME … AS BEFORE BUT NOW YOU CAN … CLICK AND DRAG TO REARRANGE". #27291 does only that: hover-revealed six-dot handles in the existing left padding, drag or Up/Down Arrow to reorder within each block, order kept per user in localStorage, and a Chromium pixel test that the panel is byte-identical before any hover. No card restyle, edge blur or shimmer. #27268 reverts #26988's summary card. This PR stays open with its owner.

Base automatically changed from si-changes-session-info to feat-cmux-next October 29, 2026 11:29
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 29, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-ov2nsv created for this PR by the cmux coordinator.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high fast, review-router; run by a backlog lander, relayed): BLOCK at aa01c65

  • P1: the inspector order native setting is disconnected from the UI and localStorage.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

For awareness: #29021 builds Session Info drag reordering across all sections (one order, migrated from the per-block key, animated lift and slide, keyboard kept). It keeps sections boxless (session-panel.md), so it doesn't use this PR's cards. It credits this PR's approach.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Orphaned: no activity for 13 h, and no lane holds a lease on it. The orphan sweep could not merge feat-cmux-next in: conflicts in Packages/macOS/CmuxNext/Sources/CmuxNextSettings/Localizable.xcstrings, Packages/macOS/CmuxNext/Sources/CmuxNextSettings/Schema/AgentPaneDisplaySettingsSchema.swift, docs/mdm/com.manaflow.cmux.plist, docs/mdm/managed-preferences.md, schemas/defaults/cmux-next.json, schemas/settings/settings-schema.json, web/data/next-docs/settings-reference.generated.json, webviews/src/agent-session/acpmux/App.tsx and 19 more. Listed for a lane to resolve.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Superseded by the current feat-cmux-next Session Info implementation. #29021 already landed the boxless drag reordering; #31741 landed the Session Info edge fade; and #31752 landed the slower Session Info shimmer. The native inspector-order setting in this branch is disconnected from the UI/localStorage and is obsolete on the current native Session Info tree, so this PR is closed rather than rebased into redundant work.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — aa01c653 Deployed Oct 28, 2026 by teamleaderleo via wait for same-key tree publisher #71891
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