Skip to content

cmux-next palette: missing return in familyRow (base compile red since #22764) - #22821

Closed
lawrencecchen wants to merge 1 commit into
feat-cmux-nextfrom
nx-palette-familyrow-return
Closed

lawrencecchen wants to merge 1 commit into
feat-cmux-nextfrom
nx-palette-familyrow-return

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Base red, priority zero. RegistryPaletteProvider+Families.swift:58 has a let and then an expression, which is not a single-expression body, so Swift needs return. Every CmuxNext package build of feat-cmux-next fails: error: missing return in static method expected to return 'PaletteItem' (cmux-ci step fe26283335be9a6c2bb2f864 on aws-m4pro-5, head of PR #22814).

Changelog

none

Observed / Not run


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


Summary by cubic

Fixes the missing return in familyRow(_:members:) that has been breaking the feat-cmux-next base since #22764. The method body has a let declaration followed by an expression, which Swift doesn't treat as a single-expression body, so it needs an explicit return. This was causing every CmuxNext package build to fail with error: missing return in static method expected to return 'PaletteItem'.

Written for commit 0a20be4. Summary will update on new commits.

View guided diff Turn on auto-fix

…#22764)

RegistryPaletteProvider+Families.swift:58: a body with a let and then an
expression is not a single-expression body, so Swift needs return. Every
CmuxNext package build on feat-cmux-next fails with 'missing return in static
method expected to return PaletteItem' (cmux-ci step fe26283335be).
@lawrencecchen lawrencecchen added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator

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

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 0a20be4: 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=pr22821 -f ref=nx-palette-familyrow-return -f platform=macos -f backend_mode=local

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

CI passes on 0a20be4c64 (run 39534207232 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, seen on other PRs that it failed on another pull request's run lately.

@teamleaderleo

Copy link
Copy Markdown
Collaborator

From the palette-audit lane, which wrote the break in #22764: this one-line return is the right fix. It is the only compile error in #22764's Release compile, swift test and fast tier logs (RegistryPaletteProvider+Families.swift:58). The tests from #22764 and #22824 (PaletteFamilyRowsTests, PaletteRankCatalogTests, PaletteMenuVocabularyTests) never compiled because of it, so this PR's swift test is their first run. If one of them goes red here, tell me and I'll fix it in a separate PR right away rather than push to yours. The generated drift red is listed as one this PR did not cause. Sorry for the red base.

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

The base already has this fix (feat-cmux-next now has return PaletteItem(). Closing as a duplicate.

@lawrencecchen
lawrencecchen deleted the nx-palette-familyrow-return branch October 21, 2026 02:51
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…ep a6c252508e25157dd685f2ee)

Regenerated by run-swift-testing-suites.sh export-settings on the fleet at
98b5e74 plus #22821's one-line base compile fix (palette code; it does not
reach the settings exports).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bab-4f26-7f80-bf66-d528ccafc751&host=cosmic-gray
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…& Pets (#21822)

* feat(next): float the Chief pet over every app

A small Chief character in a non-activating panel that joins every Space,
never takes focus, drags anywhere (its spot is kept per display and pulled
back on screen), and opens the Chief on a click. Behind the chiefPet.enabled
Debug Settings toggle, off by default, until it has a user setting.

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

* refactor(next): move the Chief pet into CmuxNextFloating

CmuxNextApp may not grow (code-quality SW14), so the pet lives in a new
CmuxNextFloating target with the floating chat's per-display frames, which it
already shares; the App keeps only the wiring and shrinks by 23 source lines.

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

* chore(next): PR autofix at 1810bb6

- regenerated Packages/macOS/CmuxNext/ci-target-graph.json

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

* fix(next): resolve the Chief pet's switch inside its module

A public default argument may only use what the file imports publicly; the
controller now takes an optional switch and reads the tunable itself.

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

* fix(next): float the full-body Chief, not Home's round avatar

The App's ChiefAvatar.png is the round cat Home draws in a disc; Leo's
references float the full-body Chief the Chief Dock uses. CmuxNextFloating now
bundles that character (ChiefPet.png, the dock's ChiefAvatar.png) as the pet's
default image.

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

* Revert "fix(next): float the full-body Chief, not Home's round avatar"

This reverts commit 2eed332.

* feat(next): the Chief pet is a pixel mascot over a glass rail

Match chief-water-reference: the Chief Dock's pixel mascot (Orb by default,
all nine bundled, scaled up with whole pixels) over a glass rail with a
compose tool, 8 pt apart. A drag anywhere but a tool moves the pet; a click
on the character or compose opens the Chief.

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

* feat(next): give the Chief pet's rail the dock's expand chevron

The rail matches chief-water-reference's capsule: compose and the chevron
(the dock's disclosure mark pointing up). The character's box is 88 x 80 pt
so the pixel mascot carries the reference pet's weight.

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

* feat(next): show agent notices over the Chief pet as a glass deck

What alerts on this Mac (a banner's rules) also shows over the pet, matching
chief-chat-source-captures d154d558: glass capsules of the references' size
(330 x 56 pt) with a bold title and one muted line and no status glyph, the
older ones peeking out below as a deck; the rail's chevron unfolds them into
a column and each capsule opens its tab. One notice per tab; identical
content never re-animates; a finished turn leaves after 8 s while a question
or failure stays, counted on the character's badge, until its tab is read.

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

* feat(next): reply to a session or the Chief from the Chief pet

A click on the pet or the rail's compose opens a reply capsule just over the
pet, the notices' size and glass, that takes the keys without activating
cmux. It starts on the newest notice: Return types the reply into that
terminal (as a notify --reply banner does) or, for an agent chat, opens the
chat in the floating chat or its tab; with no notice it messages the Chief.
Cmd-Return opens the target. The Quick Agent Chat's panel moves into
CmuxNextFloating with the rest of the floating surfaces, so the App keeps
shrinking.

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

* feat(next): turn the Chief pet on and off and pick its character in Settings

home.chiefPetEnabled (off by default) and home.chiefPetMascot (the Chief
Dock's nine pixel mascots, Orb by default) in Settings > Home > Chief Pet,
the palette's settings rows and cmux settings set replace the Debug Settings
toggle; agents may set both (looks only). The pet follows them live.

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

* fix(next): Chief pet review fixes

- Replies type into a terminal only while the notice is still its tab's
  unread notification, as a notify --reply banner's do.
- A notice read anywhere else (another client, a closed tab) leaves the pet.
- The reply menu keeps two notices with one title apart, keeps the chosen
  session across refreshes and falls back to the Chief, never to another
  session; Cmd-Return opens, other command keys stop at the box.
- Notice capsules take their press, so a click opens the tab; an agent
  chat opens its tab rather than a second copy in the floating chat.
- A finished turn dropped behind three waiting notices shows nothing.
- CmuxNextFloating no longer imports CmuxNextDaemon (the App maps the
  notification); the pet is made by the notification service, so
  AppServices and AppDelegate stay unchanged; the mascot constant is
  initial (lint); the Chief Pet settings get a card under Agents.

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

* fix(next): Chief pet labels truncate without reaching into the cell

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

* fix(next): Chief pet safety: user-only switch, agent-still-running replies, no screen sharing

- home.chiefPetEnabled is user-only: the pet puts agent output over every app
  and a reply box that types into terminals. The character stays agent-settable.
- A pet reply types only while a program still runs in the terminal's
  foreground: process-info and the paste go over one connection, back to
  back, and a bare shell refuses the reply.
- The pet, its notices and the reply box stay out of screen shares.
- The notice deck takes its size with no screen, and the deck height test
  compares CGFloats.

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

* chore(next): regenerate settings exports and Settings page strings for the Chief pet

Generated only. Settings exports from the fleet export-settings step at
2f2f1e6 (cmux-ci step 20d9ccba77afe7b51e35de31, decoded from its
BEGIN_ARTIFACT blocks), defaults snapshot from defaults_guard.py snapshot,
Settings page strings from webviews/scripts/pages/gen-strings.mjs settings.

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

* fix(next): import NotificationPolicy from CmuxNextSettings in the Chief pet test

feat-cmux-next moved NotificationPolicy into CmuxNextSettings (#21735).

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

* chore(next): regenerate settings exports for the Chief pet after the base merge

Generated only, from the fleet export-settings step at 492302f
(cmux-ci step on key chiefpet-export-settings-492302f); defaults snapshot and
Settings page strings checked fresh.

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

* feat(next): a Chief Pet settings page, after ChatGPT's Mini & Pets

Settings gets a Chief Pet category whose card previews the pet over its
rail with Show Pet / Hide Pet, then lists every character (the Chief Dock's
pixel mascots) as a card with its name and a line about it, plus None,
which hides the pet. The card draws home.chiefPetEnabled and
home.chiefPetMascot in place of their rows; search, the palette and
cmux settings still reach them.

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

* fix(next): Chief Pet settings page: kebab-case category id, row keys, tighter preview

The category is chief-pet (gallery variants and routes are lower kebab
case). The card's header and grid carry their rows' keys, so search and the
gallery's control probe land on them. The preview is 160 pt tall, nearer
ChatGPT's Mini & Pets.

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

* chore(next): regenerate settings exports for the Chief Pet page

Generated only, from the fleet export-settings step at ff4bf11 (key
chiefpet-export-settings-ff4bf11); defaults snapshot and Settings page
strings checked fresh.

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

* Chief Pet: list its card in the settings gallery and export its category

The settings gallery covers ChiefPetCard (gallery-coverage), and the settings
schema export carries the Chief Pet category the layout adds (pawprint, the
pet's group moved out of Agents). The export stamp is left for the base
autofix: feat-cmux-next's stamp is already stale against its own sources.

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

* Chief Pet card: respect managed and disconnected keys, keep the pet on a refused pick

The card replaces the two plain rows, so it now does what SettingRow does: its
buttons are disabled while disconnected or when a key is managed, and it shows
the managed reason and any refused write under the header and the grid.
Picking a character turns the pet on only when the character write succeeded.
The "no plain rows" test checked a data-key attribute nothing emits; it now
looks for a .row with the key, and fails if SectionView stops filtering them.

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

* chore(next): PR autofix at c27187b

- docs/mdm/com.manaflow.cmux.json
- docs/mdm/com.manaflow.cmux.plist
- docs/mdm/managed-preferences.md
- schemas/defaults/cmux-next.json
- schemas/settings-export/settings-schema.sources.sha256
- schemas/settings/settings-schema.json

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

* chore(next): PR autofix at b896c85

- schemas/settings-export/settings-schema.sources.sha256

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

* Settings: the Chief Pet mascots ship inlined in the page

The shipped Settings page is one self-contained index.html whose CSP allows
img-src data: only, so new URL(..., import.meta.url) art never loaded. Import
the PNGs and let the pages bundler inline them as data URLs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bab-4f26-7f80-bf66-d528ccafc751&host=cosmic-gray

* Settings Chief Pet: search lands on the card; a managed toggle leaves the characters pickable

- The card takes the route's focus: a search result for the toggle or the
  character focuses Show/Hide or the selected choice.
- With home.chiefPetEnabled managed on, the characters stay pickable when the
  mascot is editable; only a pick that must also show the pet needs the toggle.
- Catalogs and the schema export go back to base plus this PR's keys: the stale
  export dropped base rows (screenshots.*). The PR autofix regenerates the
  export with the Chief Pet category.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bab-4f26-7f80-bf66-d528ccafc751&host=cosmic-gray

* Settings Chief Pet: a search result focuses its control once, after the values arrive

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bab-4f26-7f80-bf66-d528ccafc751&host=cosmic-gray

* chore(next): PR autofix (settings exports with the Chief Pet category)

Applied from run 39517779622's pr-autofix-patch with pr-autofix-apply.sh --changed.

Autofix-Run: 39517779622
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bab-4f26-7f80-bf66-d528ccafc751&host=cosmic-gray

* cmux NEXT Settings > Chief Pet: hovering a character previews it; the chosen one is checked

As ChatGPT's picker: the preview over the rail shows the character under the pointer or
keyboard focus until it leaves, without writing anything, and the chosen card carries a check.

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

* cmux NEXT Settings > Chief Pet: test that hovering a character previews it without picking it

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

* cmux NEXT Settings > Chief Pet: a later click wins over a pick's late write; no stuck preview

Review of #21822:
- Picking a character while the pet is hidden turns it on only if no later click (None,
  Hide Pet, another pick) came while the character write was out.
- A locked grid previews nothing: a disabled card may never get its mouseleave or blur.
- The hover test builds its events with window.MouseEvent (Bun has no MouseEvent global).

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

* chore(next): settings exports for the Chief Pet page (fleet export step a6c252508e25157dd685f2ee)

Regenerated by run-swift-testing-suites.sh export-settings on the fleet at
98b5e74 plus #22821's one-line base compile fix (palette code; it does not
reach the settings exports).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bab-4f26-7f80-bf66-d528ccafc751&host=cosmic-gray

---------

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

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants