Skip to content

fix(next): drop the notify subtitle parameter #23286 made dead, and the comment describing it - #23320

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cmux/notify-workspace-subtitle
Oct 21, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
cmux/notify-workspace-subtitle

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Two PRs fixed the same base compile break by opposite routes within an hour, and the one that landed second (mine) left a dead parameter and a comment that is now false. This removes both.

What happened

d168615bffca0 ("cmux notify --workspace ws_… scopes the notification and its clear to that workspace") passed subtitle: to post, which had no such parameter, so CmuxNextApp did not compile. Two lanes fixed it:

They merged cleanly, because one touches the call site and the other the declaration, and base compiles and the test passes. But the two fixes are alternatives, and #23286's won: nothing passes subtitle: any more.

What this removes

-                      sound: String?, subtitle: String? = nil, program: ProgramStatusNotification? = nil,
+                      sound: String?, program: ProgramStatusNotification? = nil, headline: String? = nil,
-                headline: headline, posterSubtitle: subtitle ?? notification.shownSubtitle,
+                headline: headline, posterSubtitle: notification.shownSubtitle,
  • The parameter has no caller: git grep "subtitle:" in that file now finds only the declaration and the unrelated desktop.post(subtitle:). So subtitle ?? notification.shownSubtitle always took the right-hand side.
  • The doc comment I added with it said a tab-less banner "keeps the poster's headline as the title and names its workspace there". Under fix(next): workspace notification banner compiles against the where/what banner (base compile red) #23286 that is simply not what the code does — the workspace is the title. A false comment attached to a parameter nobody calls is the part actually worth deleting.

After this, post's signature is identical to its pre-feature form and the formatter call is byte-for-byte what it was, so #23286's design stands alone.

It also closes a gap a review found in my version

An independent review of #23281 found that routing the workspace name through subtitle: put it in the poster-owned slot, so when the poster supplied its own subtitle the workspace was named nowhere:

--subtitle workspace title subtitle
(none) build Deploy done build
api build Deploy done api — workspace unnamed

Reachable, not theoretical: cmux-tui/spec/cli.md:558 allows --subtitle with --workspace. I had planned a follow-up that joined the two. #23286's route makes that unnecessary — the workspace is the title, so it is always named, and the poster's subtitle joins the headline (Deploy done · api) through the [state, poster].joined(" · ") the formatter already uses. Keeping the better design and deleting mine is the smaller change.

Verification

Observed / Not run

Observed: the gate above; git grep for every subtitle: in the file (declaration + the unrelated desktop.post only); the formatter's two branches read line by line (NotificationBannerFormatter.content), confirming workspaceName non-nil ⇒ title is the workspace and the subtitle is [state, poster].joined(" · "); git log establishing that #23286 landed before #23281.

Not run: no Swift compiled or run on this host (big-red); this change removes a defaulted parameter with no callers, so no fleet lane was dispatched for it. I did not run the app and took no captures.

Captures

No capture: this deletes an uncalled parameter and a comment, and changes no banner any person can see. Every banner's title, subtitle and body come from the same NotificationBannerFormatter.content call with the same arguments before and after — the removed subtitle ?? always resolved to notification.shownSubtitle, which is what it now reads directly. The banner behavior a capture would show is #23286's, already asserted by WorkspaceNotificationArrivalTests on base.

Changelog

none

🤖 Generated with Claude Code

Agent session: big-red


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


Summary by cubic

Removes the subtitle: parameter from NotificationCenterService.post and the doc comment describing it, which PR #23286 made dead by routing workspace notifications through the existing workspaceName: parameter instead. The parameter had no callers, so the subtitle ?? notification.shownSubtitle fallback always resolved to the right-hand side; the comment described behavior no longer true under #23286's design. After this change, post's signature returns to its pre-feature form and the formatter call matches what it was before the conflicting fixes, leaving #23286's design standing alone.

Written for commit 98327b6. Summary will update on new commits.

View guided diff Turn on auto-fix

…ent that described it

#23281 and #23286 fixed the same base compile break (`d168615bffca0` passed
`subtitle:` to `post`, which had no such parameter) by opposite routes, and
#23286 landed first:

- #23286 changed the caller to pass the existing `workspaceName:`, so the
  formatter takes its workspace branch — banner title `build`, subtitle
  `Deploy done` — and flipped `WorkspaceNotificationArrivalTests` to match.
- #23281 (mine, 58 minutes later) gave `post` the `subtitle:` parameter the
  original caller had asked for.

They merged without a conflict, because they touch different lines, and the
result compiles and passes. But nothing passes `subtitle:` any more, so the
parameter is dead and `subtitle ?? notification.shownSubtitle` always takes the
right-hand side. Worse, the doc comment I added with it says a tab-less banner
"keeps the poster's headline as the title and names its workspace there", which
is no longer what this code does at all: #23286's caller makes the workspace the
title. A false comment on a parameter no one calls is the part worth removing.

`post`'s signature is now identical to its pre-feature form, and the formatter
call is byte-for-byte what it was. #23286's design stands on its own.

It also closes, by a better route than I had planned, the gap an independent
review of #23281 found in that design: with `subtitle:` the workspace went into
the poster-owned subtitle slot, so `cmux notify --workspace ws_x --subtitle api`
(both flags are allowed together, cmux-tui/spec/cli.md:558) named the workspace
nowhere. Under #23286 the workspace is the title, so it is always named, and the
poster's subtitle joins the headline as `Deploy done · api`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cb8-bbf0-7010-8d04-f9f2c0cb55df&host=big-red
@teamleaderleo teamleaderleo added the risk:low Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by chat-open-perf-6c on big-red · session

@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 98327b6: 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=pr23320 -f ref=cmux/notify-workspace-subtitle -f platform=macos -f backend_mode=local

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

CI passes on 98327b63ff (run 39589468285 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 Author

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

@teamleaderleo
teamleaderleo merged commit a4cbe2b into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the cmux/notify-workspace-subtitle branch October 21, 2026 11:45
@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant