Repository navigation
base red: the Needs you banners and the system notifier move out of the App (#32213 app_lines) - #32438
Merged
Conversation
…he App (#32213 app_lines) Fixes the tip arch red from #32213 (c9835aa): it added 278 CmuxNextApp lines. A new CmuxNextNotifications target now holds: - AttentionBanners: the Needs you banner rules #32213 put in a NotificationCenterService extension (marks changed, launch reconciliation, the policy arrival and decision, Show). The service is its host (AttentionBannerHost) and keeps only the app's facts: its machines, windows and the marked-tab list. - DesktopNotifier (with its incognito strings), whose attention category and retained-banner read #32213 added, and the notification permission types it answers `notifications.status` / `notifications.request` with. NotificationsControl's control methods stay in the App. Behavior is the same; the strings move with their code in every locale. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lawrencecchen
temporarily deployed
to
ci-routing-agent
November 2, 2026 16:02 — with
GitHub Actions
Inactive
Contributor
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Shipped in:
|
…generator The inventory is a generated file no manifest lists, so a pull request that edits it is red in "cmux-next no new generated files". Its freshness has no check, and it is already stale on the base. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lawrencecchen
temporarily deployed
to
ci-routing-agent
November 2, 2026 16:11 — with
GitHub Actions
Inactive
lawrencecchen
temporarily deployed
to
ci-routing-agent
November 2, 2026 16:11 — with
GitHub Actions
Inactive
Contributor
Author
|
Review (claude-review-subagent): SHIP at 9a043f9 Reviewed read-only: 4a1c444..9a043f9 against the culprit c9835aa. 9a043f9 differs from 8522f32 only in plans/cmux-next/swift-linux-inventory.md, and that file is again the same as the base. So the fleet compile (adc1765dc79f44a33cc2147a) and the 9 suites (856dfeed60965ef8eca2b27f) at 8522f32 cover the head's Swift. Findings (none blocking):
|
lawrencecchen
added a commit
that referenced
this pull request
Nov 3, 2026
…ic red since 25c69ee (#33986) * swift-logic-classes: classify the false counts of the tip's swift-logic red since 25c69ee The tip watcher's swift_logic_lines row has been red since 2026-11-02 05:38Z (last green 25c69ee: 415218). Part of the rise is not new Swift logic: declarations whose reviewed row did not follow a module move, and view, strings, tunables and debug code that the default rule counts in full because no row lists it. This commit corrects the table only (no code change). Each row carries its reason. - 24 rows follow their declaration's module move (class, shares and reason kept): DesktopNotifier and NotificationPermission* to CmuxNextNotifications (#32438), LinkHintController to CmuxNextBrowser (#32537), FirstFrameGate, LinkDragItem, LinkDropPlan, StaticURL, PageInstallCounter, AgentDialogLine, NewTabLayoutChoice, RunningPrograms, AgentChatMute, CloudAppOp*, PaneFullWidthTabs, PaneTabBarChoices, WindowRegistryStore. LOGIC rows stay LOGIC. - 3 stale rows follow a move that also changed the kind (enum to struct): WhatsNewTunables, NewTabTunables, NotificationPermissionStrings; the stale CloudMoveStrings enum row is replaced by its struct. - 48 new PLATFORM rows: the vertical tab list's AppKit drawing, pointer, accessibility and pane extensions (#32127; its row layout math, VerticalTabListLayout, stays counted), Core Animation avatar looks (#33395), view hosts (BrowserPageBars, TerminalStatusLabel, SidebarContainerView+PaneReach, AgentPaneView+MoveCover), the person click check of consent prompts, the glyph bitmap cache, the thin Swift side of the Rust Cloud start rules (CloudStartCore), the at-cap dialog spec, localized strings, Debug Settings tunables, and DEBUG, bench or DEV playground and fixture code. Not changed: every real rise stays counted (for example NativeDeviceEnrollment, NativeCloudLinkChild, GitHubConnections, VerticalTabListLayout, DisplayBackdropBinding, CreationInputBuffer); REWRITE R-SWIFT-MIRRORS names the wave that removes each. The green reference 415218 is not changed. swift_logic_lines at 2b3d7cd (python3 -I scripts/cmux-next/ swift-logic-lines.py --rev 2b3d7cd --json, then with --table of this commit): 431786 -> 427957 (-3829). mirror_lines 71688 unchanged. table_rows_missing 36 -> 8 (stale rows of deleted declarations); table_rows_invalid 0. scripts/cmux-next/tests/test_swift_logic_lines.py: 16 tests OK. * swift-logic-classes: the review's three rows count their rules; reasons say what the code is Review of #33986 (FIX at cb155fb, comment 6610083921): three rows put a rule under PLATFORM. Each now counts it: - RefusalStrings+Spaces: MIXED 0/46. Its spaceDelete (lines 14-19) is a Swift copy of the daemon's own rule (cmux-tui-core state/room_delete.rs:148 and personal_mutations.rs:241: the default room cannot be deleted), so its share is MIRROR and it counts in mirror_lines; the localized strings stay platform. - TerminalStatusLabel: MIXED 65/0. Lines 17-23, 46-47, 49-76 and 88-131 (81 of 125) are the reveal-wait state machine. - LinkHintController: MIXED 35/0. #32537 moved and rewrote it; who gets each key while the page answers (hold, release, replay marks, key kinds, the 500 ms answer bound, outcome handling: about 87 of 251 lines) is logic for REWRITE R-INPUT. Text: the reasons of the strings and tunables rows say what the code is and cite the table's own precedent rows, not a "table rule" no document has; the AgentPaneView #1 row of AgentPaneView+MoveCover describes the Chromium move it holds; LinkHintStrings moved to its own file, not to another module; CloudStartCore's reason names its one hand-copied fallback line. Three stale rows follow their moved code: PersonalGroupLifecycle (LOGIC, now a struct in CmuxNextAppCore), the NSResponder extension (PLATFORM, now in CmuxNextFocusUI), and DiffTabReuse (LOGIC, now enum DiffTabChange and an extension of DiffOpenSource in CmuxNextDiff; both rows LOGIC). swift_logic_lines at 2b3d7cd with this table: 428126 (base table 431786; the first version of this PR 427957); mirror_lines 71694. At feat f07e8d9: 433351 -> 429651. table_rows_missing 5, invalid 0; scripts/cmux-next/tests/test_swift_logic_lines.py: OK. * swift-logic-classes: LinkHintController counts the key routing its reason names; textInputHasKeyboard is listed Re-review of #33986 (FIX at 791c494, comment 6611048817): - LinkHintController: MIXED 35/0 -> 57/0. The reason already named hold, release, replay marks, key kinds, the answer bound and outcome handling as logic; those are lines 22-24, 28-31, 34-35, 45-46, 52-77, 79-85, 98-105, 107-130, 132-140, 142-149, 180-200, 202-210 and 217-237: 144 of 251 lines. The reason now lists them. - extension NSWindow in CmuxNextFocusUI/TypedTextInput.swift (#31865): new LOGIC row. textInputHasKeyboard is the rule which input has the person's keyboard; the view-shaped default (an NSWindow extension) counted its 13 lines as 0. - Reasons cite repository facts only (crates, files, PRs), not plan names outside the repository; the strings rows no longer quote a row count that changes. swift_logic_lines at 2b3d7cd with this table: 428194 (base table 431786). At feat f07e8d9: 429719. mirror_lines 71694 / 71698. table_rows_missing 5, invalid 0. scripts/cmux-next/tests/ test_swift_logic_lines.py: OK.
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the tip arch red from #32213 (c9835aa, the agent banner): over its parent it added
app_lines+278 to CmuxNextApp. After #32414 lands (the #32127 fix), this is the one rise left on the tip.Takes back #32213: only where its code lives. Its Needs you banner rules leave the App for a package; the feature stays the same for the person.
The lines #32213 put in the App are mostly wiring that has to stay, so its rules move together with the system notifier they post through. A new
CmuxNextNotificationstarget (layerui) holds:AttentionBanners: the Needs you banner rules cmux NEXT: a banner with Show for a tab an agent marked (carry of #24345) #32213 wrote as aNotificationCenterServiceextension (a changed mark list posts or withdraws banners, the launch reconciliation of an earlier launch's banners, the policy arrival and decision, Show).NotificationCenterServiceis itsAttentionBannerHostand keeps only what the App knows: its machines, windows and the marked-tab list.DesktopNotifier(and its incognito strings), whose attention category and retained-banner read cmux NEXT: a banner with Show for a tab an agent marked (carry of #24345) #32213 added, and the permission types it answersnotifications.status/notifications.requestwith.NotificationsControl's control methods stay in the App.The strings move with their code, every locale included (the App catalogs only lose those keys). Tests now call
service.attention.…instead of the oldservice.attention…methods.Testing
python3 scripts/cmux-next/arch-ratchet.py --base c9835aa239ce^ --head 9a043f986d2:app_lineswas +193 on the base tip (cmux NEXT: a banner with Show for a tab an agent marked (carry of #24345) #32213 alone: +278); with this PR it is -324. This commit alone isapp_lines-517. No other row rises.python3 scripts/cmux-next/prepush-gate.py: no new violations.arch_rules/layer_gate.py: ok.scripts/lint-ios-package-conventions.sh: ok.scripts/lint-xcstrings.pyon the three changed catalogs: passed.cmux-ci compile-check --ref 8522f32f328 --app: passed at 8522f32 (job adc1765dc79f44a33cc2147a).package-test-lane.sh suite Packages/macOS/CmuxNext ...): all 9 suites passed at 8522f32 (job 856dfeed60965ef8eca2b27f, aws-m4pro-8): AttentionBannerTests 11 tests, AttentionSnapshotTests 8, AttentionTabsTests, AgentPaneAttentionTabsTests 5, DesktopNotifierSystemCenterTests 5, IncognitoSurfacesTests, NotificationBannerContentTests, NotificationPreviewTests, NotificationsControlTests.The head 9a043f9 differs from 8522f32 only in
plans/cmux-next/swift-linux-inventory.md, put back to the base content (a generated file the "no new generated files" guard refuses in a PR; no check needs it current). The fleet runs above therefore cover the head's Swift.Observed / Not run
Observed: the ratchet and gate runs, the fleet app compile, and the fleet suites above (#32213's own: AttentionBannerTests, AttentionSnapshotTests, AttentionTabsTests, AgentPaneAttentionTabsTests; and the moved notifier's: DesktopNotifierSystemCenterTests, IncognitoSurfacesTests, NotificationBannerContentTests, NotificationPreviewTests, NotificationsControlTests). Not run: a tagged build with a real Needs you banner and its Show button. That path is read, not run.
Changelog
none
Proof
No capture: no UI change; code moves between targets and keeps its behavior.