Skip to content

New Tab: steady chats list and composer chips - #20335

Merged
teamleaderleo merged 3 commits into
feat-cmux-nextfrom
leo-newtab-steady
Oct 14, 2026
Merged

teamleaderleo merged 3 commits into
feat-cmux-nextfrom
leo-newtab-steady

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Leo's New Tab bugs from cosmic-gray: the Chats list and the composer moved and changed after they first painted.

  • One clock for relative times. New Tab and All Chats read ages from a shared minute tick (clock.ts). Before, each page computed Date.now only when its snapshot changed, so two New Tabs showed the same chat as "1m" and "now".
  • One row per lane. A Claude Code transcript row is dropped when an acpmux session reports the same agentSessionId. The acpmux row keeps its name.
  • Failed, not Disconnected. A ready session whose last turn failed reads "Failed". "Disconnected" stays for a lost agent.
  • Still time column. The list's age is a fixed-width, right-aligned column of tabular figures, so the harness icon doesn't move. Rows sit on the title's and composer's edges.
  • Composer chips paint final. A new chat draws its harness's last effort and access chips (chipMemory.ts) instead of grey skeleton pills. The session's values then replace them in place. The model chip names the model the chat will start on.

Testing

Red on base (211ec6af3), green on the fix:

  • test/new-tab-steady-chats.test.tsx: same age across two New Tabs within one minute; a list fixture with both sources dedupes to one named row; Failed vs Disconnected; the age column and edge geometry.
  • test/new-tab-composer-first-frame.test.tsx: no skeleton, and the first frame's chips equal the settled chips.

Also green: 25 related New Tab and composer test files (87 tests), test/ui-rules.test.ts and bun run check.

Not done: the frame-sampled New Tab click capture on a native build. That follows separately.

Changelog

Fixed: New Tab's Chats list and composer no longer shift, duplicate lanes, or show placeholder pills while loading.

🤖 Generated with Claude Code


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


Summary by cubic

Stabilizes the New Tab's Chats list and composer so they no longer shift, duplicate lanes, or show placeholder content after first paint.

  • Relative ages now come from a shared minute clock (clock.ts), so every page shows the same age for the same chat and updates it in the same frame.
  • A Claude Code transcript row is dropped when an acpmux session reports the same agentSessionId; the acpmux row keeps its name.
  • A ready session whose last turn failed reads "Failed"; "Disconnected" stays for a lost agent.
  • The age is a fixed-width, right-aligned column of tabular figures, so the harness icon no longer moves; rows share the title's and composer's edges.
  • A new chat's composer paints its harness's last effort and access chips (via chipMemory.ts) instead of grey skeleton pills, then replaces them with the session's values. The model chip names the model the chat will start on.

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

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits October 13, 2026 17:47
Red on base: two New Tabs disagree on a chat's age, a lane shows twice
(name and transcript), a failed last turn reads Disconnected, the age
column has no fixed width, and a new chat's composer draws grey pills.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- One minute clock for every relative time (New Tab and All Chats).
- Drop transcript rows whose agent session acpmux already lists.
- A failed last turn reads Failed, not Disconnected.
- Fixed right-aligned tabular age column; rows on the title's edges.
- A new chat paints its harness's last effort and access chips, never
  grey skeleton pills, and names the model it will start on.

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

cursor Bot commented Oct 14, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: d5b38abe-8080-4510-9ffb-939a069b13bc

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…ab-steady

# Conflicts:
#	webviews/src/agent-session/acpmux/ComposerPickers.tsx
@github-actions

Copy link
Copy Markdown
Contributor

Gallery

Review in feed

453 states changed: agent-pane.transcript/long-code, agent-pane.artifact-panel/closed, agent-pane.artifact-panel/markdown, gallery.visual-media-board/all-previews, agent-pane.new-tab/calm-default, ... · 1 new state · 50 broken states · 111 play checks failed

Diff page and renders (the run's gallery-pr artifact)

State Before · after
agent-pane.transcript/long-code (Apple System Colors, chromium)
agent-pane.transcript/long-code (Apple System Colors, chromium)
agent-pane.artifact-panel/closed (Apple System Colors, chromium)
agent-pane.artifact-panel/markdown (Apple System Colors, webkit)
gallery.visual-media-board/all-previews (Apple System Colors Light, chromium)
agent-pane.transcript/long-code (Apple System Colors, webkit)

447 more on the diff page.

Live preview (follows this branch; start it with scripts/gallery-live.sh up <branch> from an hq checkout):

  • agent-pane.transcript/long-code: /wt/leo-newtab-steady/?entry=agent-pane.transcript#/agent-pane.transcript/long-code
  • agent-pane.artifact-panel/closed: /wt/leo-newtab-steady/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/closed
  • agent-pane.artifact-panel/markdown: /wt/leo-newtab-steady/?entry=agent-pane.artifact-panel#/agent-pane.artifact-panel/markdown
  • gallery.visual-media-board/all-previews: /wt/leo-newtab-steady/?entry=gallery.visual-media-board#/gallery.visual-media-board/all-previews
  • agent-pane.new-tab/calm-default: /wt/leo-newtab-steady/?entry=agent-pane.new-tab#/agent-pane.new-tab/calm-default
  • agent-pane.new-tab/from-location: /wt/leo-newtab-steady/?entry=agent-pane.new-tab#/agent-pane.new-tab/from-location
  • 160 more on the diff page

Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):

  • agent-pane.artifact-panel/markdown (Apple System Colors, webkit): play: no element for button "Open preview"
  • gallery.visual-media-board/all-previews (Apple System Colors Light, chromium): step 1 click button "Pause previews": layout shift 0.0002 (limit 0) · step 2 click button "Play previews": layout shift 0.0002 (limit 0) · play: waitFor did not hold within 5000 ms
  • agent-pane.new-tab/typed-red-duplicates (Apple System Colors Light, chromium): step 1 type "red": layout shift 0.0226 (limit 0.02)
  • agent-pane.new-tab/typed-red-duplicates (Apple System Colors, chromium): step 1 type "red": layout shift 0.0226 (limit 0.02)
  • agent-pane.new-tab/typed-tab-match (Apple System Colors, chromium): step 1 type "release": 1 frame(s) over 33 ms (longest 66.7 ms)
  • agent-pane.dictation/hide (Apple System Colors Light, chromium): play: no element for menuitem "Hide Dictation Button"
  • 580 more on the diff page

633 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes.

6259 unchanged · base 590b908 · head b5e8a8d

@teamleaderleo
teamleaderleo merged commit c51570f into feat-cmux-next Oct 14, 2026
109 checks passed
@teamleaderleo
teamleaderleo deleted the leo-newtab-steady branch October 14, 2026 01:50
@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/38499173113 at 7754a18 failed: cmux-next Release compile (Xcode 26).
Those jobs last passed at 692a326. This pull request is one of 3 merged since: #20335, #20324, #20336.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

teamleaderleo added a commit that referenced this pull request Oct 14, 2026
…on (Lawrence: "we lost effort") (#20577)

* test(webviews): a new chat names its starting effort before its session reports

Lawrence 2026-10-14, "we lost effort": the New Tab composer showed the model
chip alone. Red (local Chromium play on this base logic): chips = model only,
waitFor did not hold.

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

* fix(cmux-next): a new chat's effort chip names the level acpmux starts it on

Before a chat's session reports its options, the effort chip drew only a
level a previous chat on that harness had remembered (#20335), so a fresh
profile or harness showed the model chip alone. It now falls back to
_acpmux/harnesses start.effort (Opus 5.5 starts at Medium).

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

* chore(next): PR autofix at 00b5e94

- vp fmt webviews/test/ime-composition-keys.test.ts
- vp fmt webviews/test/new-tab-omnibar-pointer.test.ts

Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/38567486409

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: cmux-autofix[bot] <cmux-autofix[bot]@users.noreply.github.com>
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.

1 participant