cmux NEXT Chief pet: notice card is opaque, folds away, and stays off other apps
Merged
TE
15d ago+592+592+012345678901234567890123456789-19-19-01234567890123456789
Summary
The Chief pet's notice card ("New chat / Ran command" in Leo's 2026-10-20 screenshots) floated over Chrome and Edge, and the page's headline showed through it. This PR:
- Opaque glass. The capsule was bare Liquid Glass (
Glass.makePanel). It is now the overlay card (Glass.makeOverlayPanel:CardMaterialunder the glass, the solid surface under Reduce Transparency), like hover cards and popovers, so its text reads over any page. - Shows over cmux only. The card shows only while cmux is the active app. Switching to another app takes it down at once. There the pet and its badge stay, and desktop banners are the system's to show. The rail's chevron still unfolds the notices anywhere, because the person asked for them.
- Says which chat and what happened. A notice whose poster gave no title used to read as the bare tab name over a bare line ("New chat" / "Ran command"). It now reads as the tab's name plus what happened ("New chat finished", "… needs your input", "… failed"), and the detail line starts with the workspace ("workspace-74 · Ran command"). Three new strings in
ChiefPet.xcstrings(all locales). - Auto-dismiss. A new notice's card folds away after
toastSeconds(8 s). A notice that waits stays in the feed and on the badge, and the chevron unfolds it. The same content posted again (an agent's next tool call) no longer keeps the card up.
Testing
No capture: the Chief pet's panels set sharingType = .none (agent text stays out of screen shares and recordings), so a screen capture never shows the notice card. Unit tests cover the behavior instead.
CmuxNextAppTests/ChiefPetNoticeTests:untitledNoticeSaysWhichChatAndWhatHappened,cardFoldsAwayOnItsOwnAndTheBadgeStays,theSameNoticePostedAgainDoesNotKeepTheCardUp,cardShowsOverCmuxOnly.CmuxNextFloatingTests/ChiefPetTests/noticeCapsuleIsTheOpaqueOverlayCard.
Observed / Not run
- Ran
scripts/cmux-next/prepush-gate.py: no new violations. - Couldn't find where the exact "Ran command" body came from. It isn't in this repo, and it isn't in the last 256 notifications of the local session, which are all acpmux "X finished" notices. So the mapping fix covers any notice posted with no title, whichever path it took.
- CI on 65b48c9b54e: the Release compile (Xcode 26) passed.
swift test, the fast tier and generated files failed on a base test-target compile red (AgentPaneProjectRepoTests.swift:237, fixed on base by #23018), so the branch took one base merge to run the new tests.defaults-snapshotis red on base too (same diff at 2f954de51a9). - Fleet run on 43087e544 (
cmux-ci run ... package-test-lane.sh suite, step afc91a8cf254 on aws-m4pro-5): ChiefPetNoticeTests 9/9, ChiefPetTests 20/20, ChiefPetFeedTests 10/10, ChiefPetReplyTests 9/9, ChiefPetSummonTests 5/5, ChiefPetScreenTests 4/4 and ChiefPetAccessibilityTests 3/3 all passed, including every new test. The PR's ownswift testjob on that head was killed mid-run (no summary line; its reds are unrelated suites), andcmux-next checks(Script tests, Tier routing) andgenerated files(action surfaces, settings exports) are red for files this PR doesn't touch. - Not run: the new tests against the base, to watch them fail first.
- Not run locally: the Swift build and tests (no Mac builds on this machine). They run on CI and the fleet.
Changelog
Fixed: The Chief pet's notices are legible over any page, say which chat and what happened, fold away after a few seconds, and no longer float over other apps.
Agent session: cosmic-gray