Skip to content

Chief import sheet: footer blends with the sheet, Dot export row aligned, Import keycap spaced - #34594

Open
austinywang wants to merge 5 commits into
feat-cmux-nextfrom
feat-cmux-next-34569-chief-import-footer
Open

austinywang wants to merge 5 commits into
feat-cmux-nextfrom
feat-cmux-next-34569-chief-import-footer

Conversation

@austinywang

@austinywang austinywang commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #34569

What was wrong

The Chief "Bring your history" sheet (webviews/src/pages/import-history) had three layout defects:

  • Black footer bar. The sticky Skip/Import footer painted --cmux-surface-solid, an opaque strip over the see-through sheet (black in dark mode).
  • Misaligned Dot row. "I have a saved Dot export (.zip)" was a loose link button under the list. It had its own indent and no checkbox.
  • "Import↩". The page never loaded ui/ui.css, so DialogButton's inline-flex + gap was missing in the app and the keycap touched the label. The gallery did load it, which is why the gallery looked fine.

Fix

  • The page is a full-height flex column. Header, list and notes scroll in .history-scroll, and the footer sits below it with no background of its own, so it shows the same glass as the rest of the sheet. A hairline separates it from the list.
  • Until a Dot zip is picked, the saved Dot export is an ordinary unchecked zip row in .history-sources: same checkbox column, same "Choose export…" action as the ChatGPT and Claude zip rows. Picking replaces it with the model's real dot row (unchanged pickZip behavior).
  • main.tsx and the gallery entry import ui/ui.css, as settings, keybindings and the other dialog pages already do.

Overlap: #34550 (autodetect sources) also edits this page and drops the Dot link. It keeps the solid footer and the missing ui.css. Whichever PR lands second takes the other's footer and stylesheet changes.

Changelog

  • Fixed: The Bring your history sheet's footer blends with the sheet, the saved Dot export row lines up with the other sources, and the Import button's ↩ keycap is spaced from its label.

Tests

Regression test (committed before the fix): cd webviews && bun test test/import-history-sheet.test.tsx

  • Base (test commit alone): 2 fail, 1 pass. The Dot row is not an aligned source row, and the footer is not outside a scroll region. The passing test is the guard against a duplicate Dot row after picking, which base also meets.
  • Head: 3 pass. With src/pages/import-history/model.test.ts: 14 pass, 0 fail.

Observed / Not run

  • Ran locally: the focused bun tests above, scripts/web-lint.sh, scripts/cmux-next/prepush-gate.py.
  • Visual: tagged dev build (below).
  • Not run: the full webviews suite and the gallery advisory sweep. Those run on CI.

🤖 Generated with Claude Code


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


Summary by cubic

Fixes the Chief "Bring your history" sheet (#34569): the footer no longer paints an opaque strip over the see-through sheet, the saved Dot export row aligns with the other sources, and the Import button's ↩ keycap is spaced from its label.

Bug Fixes

  • The sticky footer painted a solid background; the list now scrolls in its own region above a footer that shows the same glass as the rest of the sheet.
  • The saved Dot export was a loose link outside the list; it's now an ordinary unchecked zip row, and picking it replaces it with the real Dot row. The pick stays available while sources are detected.
  • The Dot row's Choose action names the source for screen readers, not the placeholder sentence.
  • The page now loads ui/ui.css, so the DialogButton keycap no longer touches the Import label, and it reads one step quieter than the label.

Note: PR #34550 (autodetect sources) also edits this page and changes the Dot row and footer; whichever lands second takes the other's changes.

Written for commit c554e08. Summary will update on new commits.

View guided diff Turn on auto-fix

austinywang and others added 2 commits November 3, 2026 18:00
…4569)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…igned row, Import keycap spaced (#34569)

- The footer painted --cmux-surface-solid as a sticky strip, an opaque black bar over the
  see-through sheet. The list now scrolls in its own region above a footer that paints nothing.
- The saved Dot export link sat outside the list with its own indent and no checkbox. It is now
  an ordinary unchecked zip row (checkbox column, Choose export action) until picked.
- The page never loaded ui/ui.css, so DialogButton's inline-flex gap was missing and the keycap
  touched the label (Import↩). main.tsx and the gallery entry load it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@austinywang austinywang added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 4, 2026
- The Dot placeholder's Choose action names the source for VoiceOver, not the placeholder sentence.
- Picking a Dot zip stays available while local sources are detected, as the old link allowed.
- The Import/Skip keycap reads one step quieter than its label (--ui-fg-2 is not defined on a
  page button).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@austinywang

Copy link
Copy Markdown
Contributor Author

Correctness review (subagent), head ca5ca0b → resolved in f0271e7

No blocking findings. Layout checked: the 100vh column, cards, compact and narrow layouts; the only other renderer is the gallery frame. The ui/ui.css side effects are .ui-* rules plus :root variables. React keys and focus survive the placeholder → real Dot row swap, and a cancelled pick keeps the placeholder.

# Finding Severity Resolution
1 The Choose action on the Dot placeholder read "Choose a I have a saved Dot export (.zip)" to VoiceOver low Fixed: the aria label names the source (history.source.dot)
2 The placeholder was disabled during detection, but the old link was not low Fixed: it is disabled only while importing, undoing or picking, as before
3 .ui-keyhint uses --ui-fg-2, which is undefined on a page button, so the keycap took the label's full color low (visual) Fixed: .history-button .ui-keyhint inherits the color at 0.7 opacity
4 jsdom can't assert the keycap gap or the see-through footer, which are CSS medium (test gap) Kept as is: the test guards the structure (aligned Dot row, footer outside the scroll region). The CSS is verified on the tagged dev build 34569-chief-import-footer

My own check: diff re-read at the head; bun test test/import-history-sheet.test.tsx src/pages/import-history/model.test.ts gives 14 pass; prepush-gate shows no new violations. The web-lint reds that remain (test/transcript-spacing-kinds.test.ts TS2304, a changelog/updateSurfaces.css token) are in files this PR doesn't touch.

@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

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

Review f0271e7: 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=pr34594 -f ref=feat-cmux-next-34569-chief-import-footer -f platform=macos -f backend_mode=local

Passes: CI passes on c554e08a0a.

CI passes on c554e08a0a (run 41775109549 attempt 3).

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

web and size checks: green

Gallery before/after for c554e08: 9 states rendered, 18 images differ. 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 41775109329 -R manaflow-ai/cmux -n gallery-advisory-34594-c554e08a0a25aa0c18f30e435f2a7ffe13680575 (then read gallery-review.json)

States
State Theme Status Diff Picked by
pages.import-history/list Apple System Colors changed 9.77% own ImportHistory.gallery.tsx
pages.import-history/list Apple System Colors Light changed 9.75% own ImportHistory.gallery.tsx
pages.import-history/cards Apple System Colors Light changed 1.59% own ImportHistory.gallery.tsx
pages.import-history/cards Apple System Colors changed 1.43% own ImportHistory.gallery.tsx
pages.import-history/compact Apple System Colors changed 19.7% own ImportHistory.gallery.tsx
pages.import-history/compact Apple System Colors Light changed 19.7% own ImportHistory.gallery.tsx
pages.import-history/nothing-detected Apple System Colors changed 9.76% own ImportHistory.gallery.tsx
pages.import-history/nothing-detected Apple System Colors Light changed 9.74% own ImportHistory.gallery.tsx
pages.import-history/detecting Apple System Colors changed 9.76% own ImportHistory.gallery.tsx
pages.import-history/detecting Apple System Colors Light changed 9.74% own ImportHistory.gallery.tsx
pages.import-history/importing Apple System Colors changed 5.08% own ImportHistory.gallery.tsx
pages.import-history/importing Apple System Colors Light changed 5.06% own ImportHistory.gallery.tsx
pages.import-history/done Apple System Colors Light changed 2.7% own ImportHistory.gallery.tsx
pages.import-history/done Apple System Colors changed 2.51% own ImportHistory.gallery.tsx
pages.import-history/error Apple System Colors changed 2.48% own ImportHistory.gallery.tsx
pages.import-history/error Apple System Colors Light changed 2.46% own ImportHistory.gallery.tsx
pages.import-history/paste-summary Apple System Colors Light changed 2% own ImportHistory.gallery.tsx
pages.import-history/paste-summary Apple System Colors changed 1.75% own ImportHistory.gallery.tsx

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

@austinywang

Copy link
Copy Markdown
Contributor Author

Dev build and runtime check, head f0271e7

  • Fleet build d60b7f4db38d69482d9b599e, tag 34569-chief-import-footer (local backend), published to the Tag Opener.
  • I launched the build in the background and opened "Bring your history" (chief.importMemories), which opens the import-history page tab. I then loaded this branch's page, with the mock provider, in the dev build's own browser tab and read its computed layout:
    • .history-footer background: rgba(0, 0, 0, 0). The footer paints nothing, so the sheet shows through instead of a black bar.
    • Import button column-gap: 6.5px, so ↩ no longer touches "Import".
    • Checkbox x positions: 10 rows at 16 px, including "I have a saved Dot export (.zip)".
  • No still image: the app refuses automated screenshots of its browser tab ("Only a person in cmux can run this action"). A window capture of the background-launched app came back unpainted. The gallery-compare host (cmux-lawrence) and the capture minis are not reachable from this Mac. The visual check is pending a person opening the tag.

@blacksmith-sh

blacksmith-sh Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Found 8 test failures on Blacksmith runners:

Failures

Test View Logs
test/composer-permission-pill.test.ts/composer-permission-pill.test View Logs
test/composer-permission-pill.test.ts/composer-permission-pill.test View Logs
test/model-pick-prompt-focus.test.ts/model-pick-prompt-focus.test View Logs
test/model-pick-prompt-focus.test.ts/model-pick-prompt-focus.test View Logs
test/new-tab-live-resize.test.ts/new-tab-live-resize.test View Logs
test/new-tab-live-resize.test.ts/new-tab-live-resize.test View Logs
test/new-tab-live-resize.test.ts/new-tab-live-resize.test View Logs
test/new-tab-live-resize.test.ts/new-tab-live-resize.test View Logs

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

@cursor

cursor Bot commented Nov 4, 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.

@austinywang

Copy link
Copy Markdown
Contributor Author

Brought current with feat-cmux-next, head c554e08

PR: #34594 · owner: austinywang · agent: Claude (Opus 5.5) · base feat-cmux-next @ 91e3753 · head c554e08

  • Two plain merges of origin/feat-cmux-next (181ce64, then c554e08), no conflicts and no force push. The PR's own diff is unchanged: the same 5 import-history files, +191 −53. That's why the earlier correctness review, resolved in f0271e7, still covers it.
  • Focused test on the merged head: bun test test/import-history-sheet.test.tsx passed 3 of 3.
  • Fleet dev build 54d7411cdce60f49e9569e87 of c554e08, tag 34569-chief-import-footer, published to the HQ Tag Opener, direct backend https://cmux-dev-backend-1.tail137216.ts.net:4221/. The earlier build ee65c58a98675cb4ba9e83db of 181ce64 is superseded.

Non-green checks on this head, classified

Check Class Note
tooling-tests (on 181ce64) base red bench/replayLogs.test.ts outside the type-check roots. Fixed on base by #34695, merged in with c554e08.
react-apps-base-check (3) (on f0271e7) base red transcript-spacing-kinds after() helper. Fixed on base by #34577, merged in.
backend-migrations / plan infra git fetch disconnect (curl 92). Rerun is green.
gallery visual evidence (advisory) / comment infra GitHub API rate limit. Rerun.
react-apps-base-check (4) / react-apps-check / Web status flake, not this change new-tab-live-resize.test.ts › webkit cards page: an 8px card-edge jump on WebKit resize frames. The test serves src/agent-session/acpmux through vite.config.acpmux-pane.mjs and loads nothing under src/pages/import-history. Other webkit resize cases in the same job flipped between pass and fail across attempts. Rerun. The other 3 reds in that shard are red on base too.

Merge freeze check: exit 0. Not merged; ready for review.

cmux-bot Bot pushed a commit that referenced this pull request Nov 6, 2026
…per (#36831)

* Bring your history: Chats and Memories toggles, sources one level deeper

Leo (2026-11-05): "why isn't it just import memories and chats? ... import
clone chats, import clone memory, and then you can go deeper if you want".

The first view is now one list of two groups, Chats and Memories, each a
switch covering every detected source in it, with a one-line summary of what
it brings. Each group's Sources disclosure opens the per-source rows (checkbox,
mark, title, path or file under it, Choose export / Paste a summary), sorted
alphabetically in the page language. "Found on this Mac" labels are gone.

The header, list and notes share one scroll region above the footer, so no
card is clipped under a fixed header. The footer paints no band, only a
hairline, with the live status between Skip and Import; the keycap is spaced
and one step quieter (approach from #34594 by austinywang). Type and spacing
use the shared scale (heading, body, detail, caption; 4-32 steps).

Every source, the paste flow, Find exports, Undo and the credentials note
stay. Regression: test/import-history-groups.test.tsx, 5 fail on base and
5 pass on head; model.test.ts 18 pass.

Co-authored-by: Austin Wang <austinwang115@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-c5293b061743fb106b9f

* Bring your history: label source controls, group switch on only when all are

The source checkbox and the paste box keep their aria-labels (vp lint
control-has-associated-label, red on fast gates). The group switch is on only
when every available source in it is selected, so a partial group turns fully
on in one click (router-review F1 at 5a034ba).

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

* Bring your history: disclosure chevron on the motion scale

The chevron turn used var(--cmux-motion-quick, 120ms); the fallback is off the
motion scale (quick is 80ms), which test/motion-scale.test.ts refuses. Use the
token without a fallback, as ui/controls.css does.

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

---------

Co-authored-by: Austin Wang <austinwang115@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — c554e08a Deployed Nov 4, 2026 by austinywang via wait for same-key tree publisher #109586
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