[CMUX Next] Chief pet: a Chief Pet settings page like ChatGPT's Mini & Pets

Merged
TE
16d ago
+2567-13

Summary

Leo asked for nicer Chief pet settings, like ChatGPT's Mini & Pets page. This adds a Chief Pet category to Settings for the floating pet that landed in #21738. One card draws the page:

  • Header: a one-line description, plus Show Pet / Hide Pet, which toggles home.chiefPetEnabled (ChatGPT's "Show mini").
  • Preview: the chosen pet over its rail (compose and the chevron), as it floats on screen. It's dimmed while the pet is hidden.
  • Pets: a grid of cards, one per character (the Chief Dock's nine pixel mascots from Codex), each with its art, name and a line about it, plus None. Clicking a character picks it and shows the pet. None hides the pet and keeps the character for next time. The chosen card is outlined and checked.
  • Hover preview: hovering or focusing a character shows it in the preview over the rail until the pointer or focus leaves, without writing anything (as ChatGPT's picker does).

How you find the pet:

  • The pet is off by default (home.chiefPetEnabled defaults to false in base; this PR doesn't change that). Leo couldn't find it in the nightly, so it now has its own sidebar entry, Settings > Chief Pet, and Show Pet there turns it on. Picking any character also shows it.

How it fits the Settings page:

  • The card draws the category's two rows (home.chiefPetEnabled, home.chiefPetMascot) instead of their plain toggle and menu. This works the same way the Backdrops card draws its rows.
  • Like a plain row, the card's buttons are disabled while Settings is disconnected or a key is managed, and it shows the managed reason or a refused write. Picking a character turns the pet on only if saving the character worked.
  • Search, the palette's settings rows and cmux settings still reach both keys. The card's header and grid carry their row keys, so search results land on them.
  • The category id is chief-pet, in kebab case for routes and gallery variants. Its sidebar symbol is a new pawprint icon.

What's different from ChatGPT's page:

  • No shortcut chip: ChatGPT's ⌥Space shows and focuses the pet. A global show-pet key isn't part of this PR, and ⌥Space would conflict with Start Agent's opt-in system-wide key.
  • No Create pet.
  • No Customize button.

Screenshots

These are the real page, rendered from this branch by the Settings gallery (pages.settings → chief-pet, chief-pet-customized) in headless Chromium at 1000 × 795 pt @2x. That's the same 2000 × 1590 px as Leo's ChatGPT screenshot.

Pet on (Orb Spark):
on

Pet off (None):
off

Leo's ChatGPT reference was pasted in chat and isn't saved anywhere I can reach, so it isn't placed beside these.

Testing

  • chiefPetCard.test.tsx (new) covers (hover preview test added by the adopting lane; CI runs it, not run locally):
    • None and all nine characters show, with None chosen while the pet is off;
    • the plain rows aren't drawn again below the card (checked against .row[data-row-key], so it fails if the filter breaks);
    • picking a character shows the pet with it;
    • None hides the pet but keeps the character;
    • Show Pet / Hide Pet toggle the pet and keep the character;
    • hovering a character previews it without picking it.
  • categories.test.ts now lists chief-pet among the approved categories, since Leo asked for this page.
  • editors.test.tsx checks that the card draws both rows.
  • After merging feat-cmux-next: chiefPetCard, categories, editors and search tests pass, run per file. gallery-coverage now covers ChiefPetCard; its remaining gaps are base components.
  • vp lint and vp fmt are clean on the changed files.
  • gen-strings --check passes.
  • The settings schema export carries the Chief Pet category. The export stamp is stale on feat-cmux-next itself, so it's left for the base autofix to regenerate.

Localization: there are 16 new strings in 20 locales:

  • the category title;
  • the card's lede, Show/Hide, Pets, None and its help;
  • nine character descriptions.

The character names reuse #21738's settings.choice.chiefPetMascot.*.

Changelog

Added: Settings > Chief Pet shows a preview of the floating pet, shows or hides it, and picks its character from a grid of nine

Adopted from the stopped Chief subagent a11 (claimed with pr-owner); base merged and the hover preview and check added.

Agent session: cosmic-gray

🤖 Generated with Claude Code