Skip to content

cmux-next: Feed kinds, inbox controls and GitHub actions draw registry icons - #17951

Closed
azooz2003-bit wants to merge 7 commits into
feat-cmux-nextfrom
azooz-migration/17620-op-next-icons-7
Closed

azooz2003-bit wants to merge 7 commits into
feat-cmux-nextfrom
azooz-migration/17620-op-next-icons-7

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Seventh PR of the icon registry lane (after #17538, #17558, #17582, #17583, #17593 and #17597). The Feed showed each item's kind with SF Symbols at the font size of its text, plus SF labels on GitHub actions, prompt summaries and the inbox header. The Feed now draws them from the cmux icon registry, with one semantic name per meaning, at the row size of the text beside them. Because of #17597, they land on whole pixels.

Kind glyphs (FeedGlyph.icon(for:)):

Item Was (SF) Now (registry)
Notice from an integration arrow.triangle.pull integration
Notice from a server or VM server.rack machine.remote
Notice from an automation gearshape.2 automation
System notice with a terminal terminal terminal
Other notices bell notification
Approve: command terminal terminal
Approve: edit pencil.line action.edit
Approve: network network network
Approve: install shippingbox package
Approve: tool or custom wrench.and.screwdriver tools
Question text.bubble agent.question
Choice list.bullet feed.choice
Confirm checkmark.circle action.confirm
Sign in person.badge.key account.signin
Passkey person.badge.key.fill account.passkey
Review doc.text.magnifyingglass action.review
Input rectangle.and.pencil.and.ellipsis feed.input
File doc.badge.plus file.new
Handoff hand.raised agent.handoff
Custom square.grid.2x2 feed.custom

The glyph box is iconRowSize(textSize) (11 → 13, 12 → 14, 15 → 18). The frame stays size + 6.

Other converted call sites:

Surface Was (SF) Now (registry)
PosterLine this-Mac mark laptopcomputer machine.local
FeedInboxHeader connection tabs arrow.triangle.pull, tray brand.github, inbox
FeedInboxHeader add connection plus action.add
FeedInboxHeader search magnifyingglass search
FeedInboxHeader filter menu line.3.horizontal.decrease, .circle.fill when filtered filter, Line or Solid when filtered
FeedInboxHeader refresh arrow.clockwise action.reload
FeedToast close xmark 9 pt action.close at iconFloor
FeedEmptyState, inbox placeholder tray inbox.empty
FeedMenubarView open Feed arrow.up.forward.app app.open.external
FeedApproveControls scope menu chevron.up.chevron.down 8 pt control.popup at iconFloor
FeedInboxView snooze menu moon.zzz action.snooze
FeedGitHubActions branch, checks, error arrow.triangle.branch, checkmark.circle/xmark.circle, exclamationmark.triangle git.branch, status.success/status.error, status.warning
FeedGitHubActions buttons arrow.up.right, arrow.down.to.line, sparkles, checkmark, exclamationmark.bubble link.external, git.branch, agent.chat.new, action.confirm, action.review
FeedAnswerControls closed line checkmark, minus.circle status.success, action.remove
FeedPromptSummary checklist, origin, attachment circle, lock, doc.text list.bullet.item, security.lock, file.text

Menu labels (filter, scope, snooze) draw NSImage.icon template images rather than the canvas-backed Icon. AppKit renders menu labels and keeps images but drops custom views, so a canvas could leave the control blank.

Not converted: mark-all-read keeps checkmark.circle. action.confirm means approve, and the pack has no mark-read icon yet. FeedTunables.section keeps its symbol string because TunableSection takes one.

Testing

Red commit a1b1873 adds FeedRegistryIconTests; the fix follows. The red run failed to compile on base (FeedGlyph has no member icon or side).

  • Approve-command, integration, system and server items name terminal, integration, notification and machine.remote.
  • A glyph's box is iconRowSize of its text size.

scripts/verify-local.py --affected: feature-flags passed; package-groups fails on base's cmux.xcworkspace grouping, as on earlier PRs in this lane.

Changelog

Changed: Feed items, inbox controls and GitHub actions use the cmux icon set at the size of their text

Demo Video

Fleet builds of base (96f7421) and the fix (ba71143), on a capture mini (1x display), with the Feed opened from the Window menu. The mini has no Feed items, so the captures show the header and the empty state. The two runs came up in different appearances (light before, dark after).

Before After
before after

Empty-state tray at 8x (before left, after right): empty zoom

The first after build drew the tray at a 20 pt box. A pack drawing inks about two thirds of its box, so the tray was 14 px wide against the SF tray's 23. The empty states now use 32 and 44 pt boxes, and the tray inks 24 px wide.

Checklist

  • Behavior changes have added or updated tests, or Testing says why not
  • UI change with no new or changed user-facing strings; localization not affected

🤖 Generated with Claude Code


Migrated from #17620 after correcting the PR author identity. The original head commit f443cc9 is preserved.


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


Summary by cubic

Feed items, inbox controls, and GitHub actions now draw their icons from the cmux registry instead of SF Symbols, with one semantic icon per meaning at the row size of the text beside them. CmuxNextFeed adds a CmuxNextIcons dependency, and new tests verify the mappings and glyph sizing.

  • Menu labels (filter, scope, snooze) render template NSImages since AppKit drops custom SwiftUI icon canvases in menus.
  • Empty-state trays use 32 and 44 pt boxes because registry packs ink about two thirds of their box, keeping them visually equal to the 20 and 27 pt SF Symbols they replaced.
  • Mark-all-read and FeedTunables.section keep their SF symbols because the registry lacks matching icons and TunableSection takes a symbol string.

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

Review in cubic Turn on auto-fix

teamleaderleo and others added 7 commits October 6, 2026 11:25
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Feed items show their kind with one registry name per meaning at the row
size of their text. Menu labels draw template NSImages because AppKit
renders them and drops canvases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FeedGlyph.swift held four top-level types, one over the god-file limit.

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

cursor Bot commented Oct 6, 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 6, 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: d9343891-1a32-4f2a-a3d7-78ae6e310bcd

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
  • Autopilot · 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.

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Not verified: macOS jobs did not run: compile and app tests were skipped on f443cc97bd; ci-status is green without them.

CI passes on f443cc97bd (run 37527110135 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

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.

@azooz2003-bit
azooz2003-bit deleted the azooz-migration/17620-op-next-icons-7 branch October 6, 2026 20:56
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.

2 participants