Skip to content

cmux NEXT Chief pet: orbs move to the end, and a Series 2 (Arctic Fox, Violet and Gold Machine, Rose Moon) - #30494

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/chief-mascot-series-2
Nov 1, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/chief-mascot-series-2

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Leo (2026-11-01):

but anyways maybe we can make like a series 2 or something for some reason the rest of the team doesn't like the first one the orb though they all like the other ones... we can reorder them a little bit so they orb doesn't come first. idk what you think is best. obv i assume this won't switch up what they've currently selected...?

What changes

New order (the Chief Settings popover grid, Settings > Chief > Look, the schema's choices, the Swift enum and the web lists all agree):

  1. Series 1 without the orbs: Fox, Machine, Cyan Machine, Blue Machine, Moon, Blue Moon
  2. Mochi
  3. Series 2 (new): Arctic Fox (fox-arctic), Violet Machine (machine-violet), Gold Machine (machine-gold), Rose Moon (moon-rose)
  4. The orbs last: Orb, Orb Spark, Hooded Orb

Series 2 is four new colourways of Fox, Machine and Moon, the characters the team likes, made the same way Cyan Machine and Blue Moon sit beside the originals. scripts/cmux-next/art/chief_mascot_series2.py makes them from the bundled PNGs. It changes only saturated pixels in each recipe's hue bands and keeps outlines, faces and whites, so the pixel art stays crisp. It uses the stdlib only, writes both the 256 px still and the …Avatar.png, and --check reports drift. Each has its name and one-line description in all 21 locales the catalogs carry (non-English as needs_review, like their neighbours).

No grid restructure and no "Series 2" header: the grid is still 5 columns, now 14 characters plus the upload cell.

Does the reorder change anyone's selection? No

  • A choice is stored by id string, never by position. The default Chief's is home.chiefPetMascot in cmux.json; every other Chief's is in UserDefaults home.chief.mascots (participant id → character id, ChiefMascotPicks). Every old id is still a valid character, so every saved pick reads back as the same character.
  • Someone who never picked keeps Orb: HomeChiefPetSetting.defaultMascot = "orb" and ChiefPetMascot.initial = .orb are unchanged, by id.
  • Two fallbacks used to pick "the first character" for an unknown id: ChiefPetMascotGrid.select (cells.first) and the web card (CHIEF_PET_MASCOTS[0], also in ChiefsCard). Since the reorder, the first one would have been Fox. They now fall back to the default id (orb), so the reorder can't move them. ChiefPetSettingsRows.avatarURL(of:) already fell back by id.

Characters

Series 1 (top) and their Series 2 colourways (bottom): Fox → Arctic Fox, Machine → Violet Machine, Machine → Gold Machine, Moon → Rose Moon

Tests

  • New ChiefPetMascotOrderTests (CmuxNextAppTests):
    • cmux.json home.chiefPetMascot: "moon" still reads back as moon, and the popover checks it.
    • A fresh UserDefaults suite holding {"agent_scout01": "machine-blue"} under home.chief.mascots still reads back machine-blue.
    • An unset config is orb, and orb is the cell checked.
    • Every old id still parses as itself, and every character has its avatar picture.
    • The grid checks a cell by id, and an unknown id checks orb, not the first cell.
  • Updated the tests that list every character: ChiefPetTests.everySettingIdIsAMascot, the web chiefPetCard.test.tsx (plus a new saved/unknown-id case) and chiefLook.test.tsx (its count now follows the list).
  • Fleet (cmux-ci run --class light --script scripts/ci/package-test-lane.sh, step c712d2c490f98e01ab3da1ad): ChiefPetMascotOrderTests, ChiefPetPopoverPickerTests, ChiefPetMascotGridLaunchTests, ChiefAvatarUploadWiringTests, ChiefPetTests and ChiefPetSettingTests all pass, with no failures. That run used scratch ref 061380ad3cd (this head plus fix(apps): store.updates.available plural forms use %lld (base red from #30288) #30493's xcstrings fix). At this head alone (step a033f460c83c01bf6f4f77df) the test build stopped before any test on a base red that isn't this PR's: CmuxNextApps Localizable.xcstrings tr: store.updates.available, "Plural variation requires referencing the number" (from fix(apps): "1 updates available" reads "1 update available", page strings pick their plural form #30288; fix(apps): store.updates.available plural forms use %lld (base red from #30288) #30493 and Revert "fix(apps): "1 updates available" reads "1 update available", page strings pick their plural form" #30492 fix it). That file is identical at this PR's base and at today's feat-cmux-next tip.
  • Webviews, run on this host: bun test for chiefPetCard, chiefLook, chiefsCard, ChiefDock and editors (80 pass). scripts/web-lint.sh and prepush-gate.py pass. chief_mascot_series2.py --check is clean.

Observed / Not run

  • Observed: the fleet suites above, the webview tests and lints, and every generated PNG (still and avatar), checked by eye.
  • Not run: a tagged-build check of the popover. Generated settings-schema.json / docs/mdm/* are not hand-edited; the base autofix regenerates them with the new choice order and ids.

Changelog

  • Changed: The Chief pet's characters now start with Fox, Machine and Moon, and the orbs come last. Your chosen character stays the same.
  • Added: Series 2 Chief pet characters: Arctic Fox, Violet Machine, Gold Machine and Rose Moon.

Risk: normal

Agent session: agent session

🤖 Generated with Claude Code

…Violet and Gold Machine, Rose Moon)

Leo 2026-11-01: "maybe we can make like a series 2 ... the rest of the team doesn't like the first one
the orb though they all like the other ones... we can reorder them a little bit so they orb doesn't
come first ... obv i assume this won't switch up what they've currently selected...?"

The picker's order is now Series 1 without the orbs, Mochi, Series 2, then the orbs, in the Swift
enum, HomeChiefPetSetting.mascots, the schema choices and the web lists. Series 2 is four recolours
of Fox, Machine and Moon made by scripts/cmux-next/art/chief_mascot_series2.py (stdlib only; --check).

Choices are stored by id (cmux.json home.chiefPetMascot, defaults home.chief.mascots), so nobody's
pick changes. Orb stays the default by id, and the grid's and the web card's unknown-id fallback is
now the default id instead of the list's first entry, so the reorder cannot move it.

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

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

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

Review ab97774: 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=pr30494 -f ref=lane/chief-mascot-series-2 -f platform=macos -f backend_mode=local

Gallery before/after for ab97774: 16 states rendered, 10 images differ, 1372 more touched states not rendered. 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 41288797145 -R manaflow-ai/cmux -n gallery-advisory-30494-ab977744e4e23e16ceabec2c1bf27311db4d20f3 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chief-dock/mascot-fox-arctic Apple System Colors Light new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/mascot-fox-arctic Apple System Colors new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/mascot-machine-violet Apple System Colors Light new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/mascot-machine-violet Apple System Colors new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/mascot-machine-gold Apple System Colors Light new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/mascot-machine-gold Apple System Colors new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/mascot-moon-rose Apple System Colors Light new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/mascot-moon-rose Apple System Colors new 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/controls-compact Apple System Colors Light unchanged 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/controls-compact Apple System Colors unchanged 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/controls-balanced Apple System Colors Light changed 0.011% own ChiefDock.gallery.tsx
agent-pane.chief-dock/controls-balanced Apple System Colors unchanged 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/controls-large Apple System Colors Light changed 0.011% own ChiefDock.gallery.tsx
agent-pane.chief-dock/controls-large Apple System Colors unchanged 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/baseline Apple System Colors Light unchanged 0% own ChiefDock.gallery.tsx
agent-pane.chief-dock/baseline Apple System Colors unchanged 0% own ChiefDock.gallery.tsx
pages.settings/general Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general Apple System Colors unchanged 0% own ChiefPetCard.tsx
pages.settings/general-customized Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general-customized Apple System Colors unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-1 Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-1 Apple System Colors unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-2 Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-2 Apple System Colors unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-3 Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-3 Apple System Colors unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-4 Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-4 Apple System Colors unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-5 Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-5 Apple System Colors unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-6 Apple System Colors Light unchanged 0% own ChiefPetCard.tsx
pages.settings/general-group-6 Apple System Colors unchanged 0% own ChiefPetCard.tsx

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

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

CI passes on ab977744e4 (run 41288797203 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.

red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: red check: Daemon capabilities export is fresh (+4 more) is not red on the base ea7f00a; do not merge until green; see lane-rules

Default changes

This pull request changes 2 defaults at ab977744e4e2 (what everyone gets without configuring anything):

  • tunable-source.CmuxNextSettings/HomeChiefPetSetting.swift:mascots: "bff847055d6b0643fb2fac9e0edda749dca0a91fac673a6a5eb4a34c5aa7d225" -> "d4765c8da83e46e80fbfc03de55e80a87dae5bc02c85c8738e9b7024ecb9d281"
  • tunable-source.CmuxNextSettings/Schema/HomeSettingsSchema.swift:descriptors: "714f06479f7ba2a4f69893f92091364d17bcbf48d7e7e1e9635b05521cf8f2b6" -> "8255898392c8f5553de09d237b68960ab1a89a4fd1f1802194b9dc5c8fb0e5fb"

Signed off on this commit by review (subagent claude-opus-5-5 medium, post-merge).

Merge receipt: merged as 6b5daab59e3c with these defaults changed, signed off by review (subagent claude-opus-5-5 medium, post-merge).

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

Shipped in:

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 1, 2026
@teamleaderleo
teamleaderleo merged commit 6b5daab into feat-cmux-next Nov 1, 2026
131 of 139 checks passed
@teamleaderleo
teamleaderleo deleted the lane/chief-mascot-series-2 branch November 1, 2026 09:39
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium, post-merge): SHIP at ab97774

This PR merged with no review at its head, so this is an after-the-fact review. No blocking findings: saved picks decode by id, the default is still orb, and every character test reads the new order.

Follow-ups:

  • [follow-up] ChiefPetCard.tsx:~72: CHIEF_PET_DEFAULT_MASCOT, CHIEF_PET_MASCOTS and the ChiefMascot union are hand-written copies of the Swift list. Read them from settings-schema.json or add a test that compares the two.
  • [follow-up] The four new names and descriptions are needs_review in 20 locales. File a translation pass.
  • [follow-up] No CI job runs scripts/cmux-next/art/chief_mascot_series2.py --check. Add a light Linux check.

This branch was previously deployed

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