rdmsm4x-changelog-20260926-0305-rtty-524-friendly-launch-suppression
RTTy 524: friendly launch suppresses the dashboard; iCloud initial check moved to the menu-bar lifecycle (TASK-20260926-05, resolved).
[2026-09-26 03:04:40 EDT · rdmsm4x] · claude@rdmsm4x/15a3570e · started 02:58:05 EDT, finished 03:05 EDT
Branch grok/524-friendly-launch (from
grok/524-settings-polish @ aa58e0a), pushed to
backup only. Worktree
/Users/richh/dev/_scratch/rtty-524-friendly-launch-20260926
— clean after commit.
| Commit | What |
|---|---|
f80004e |
feat(launch): friendly mode suppresses the dashboard at launch; iCloud check moves to the menu-bar lifecycle |
a4c254e |
docs(features): launch.friendly-panel-first row (64 →
65) and Layer 3 matrix boundary |
What changed
- iCloud check off
DashboardView.taskin bothSources/RTTy/App/RTTyApp.swiftandApps/RTTyStandard/App/RTTyStandardApp.swift.MenuBarStatusItemApplicationLifecycle(shared,Sources/RTTy/Views/MenuBarStatusItemController.swift) now runscheckInitialICloudSettingsIfNeeded()once per store ininstallIfReady(), right afterstartMonitoring, i.e. afterapplicationDidFinishLaunching, with no window. It is an injectable init parameter (checkInitialCloudSettings:) likestartMonitoring. - Suppression: the dashboard
WindowGroupin both entry points carries.defaultLaunchBehavior(store.dashboardLaunchPolicy.sceneLaunchBehavior).RTTyDashboardLaunchPolicy.resolve(alwaysOpenFullMode:)→.suppressedin friendly mode,.presentedwith Always open in full mode. It lives in the shared controller file together with theObservationStore.dashboardLaunchPolicyextension. - No new Standard source files, so no trust-chain
re-pin. The Standard project graph lists the paths but not their content
(TASK-16 edited
RTTyStandardApp.swiftwithout a re-pin). The closure tests below pass. - FEATURES.md: new row
launch.friendly-panel-first(Both) cites the 5 new tests;pinnedRowCount64 → 65. BothFEATURE_MATRIX.mdcopies: the Layer 3 row's boundary now describes the suppression and what it still does not prove.
Tests (counts + rcs)
- New
Tests/RTTyTests/FriendlyLaunchTests.swift(XCTest, 5 cases): friendly launch → suppressed; full mode → presented, including across relaunch; a source guard on both entry points (modifier present,checkInitialICloudSettingsIfNeededabsent); the lifecycle runs the check exactly once, only after launch; the default lifecycle adopts a newer iCloud copy with noDashboardView. - Mutation: removing the lifecycle call made
FriendlyLaunchTestsfail 3 assertions, rc 1. Restored. - Related suites
(
FriendlyLaunch|MenuBarLabelRendering|FeatureInventory|RTTySettingsTransaction|FriendlyVerdictPresentation): 109 executed, 0 failures, rc 0. - Full native
swift test --disable-swift-testing, rc 0 (native-full.log,native-full.rc): RTTyTests 1337, 8 skipped, 0 failures (baseline at aa58e0a was 1332, so +5) · RTTyPrivilegedCaptureTests 71 · LatencyCoreTests 426. python3 script/check_feature_inventory.py --static→ 65 rows, rc 0.swift_testing_runner_policy_test.shrc 0 ·standard_pbx_source_closure_test.pyrc 0 ·standard_candidate_closure_test.pyrc 0 ·git diff --checkrc 0.- Standard unsigned compile:
xcodebuild -scheme RTTyStandard -destination platform=macOS,arch=arm64 CODE_SIGNING_ALLOWED=NO build→ BUILD SUCCEEDED, 202 compile lines, rc 0 (standard-build.log). - RTTyTests test-file count 111 → 112 (+
FriendlyLaunchTests.swift).
Left open (not done in this run)
- Installed-build / gate step 8 visual acceptance: nobody has launched a real build and watched the dashboard stay closed. This was out of scope for a headless run.
- Window restoration:
.defaultLaunchBehavior(.suppressed)does not override SwiftUI state restoration. If the dashboard was open at quit, macOS may restore it. That may be fine, since the user left it open, but it has not been measured. If the PRD wants a strictly panel-first launch, add.restorationBehavior(.disabled)to the dashboard scene in friendly mode. - The Dock-icon reopen path with no windows has not been exercised; SwiftUI's default opens the WindowGroup.
- Intel suite and the full
qa_release.shwere not run (out of scope; the 522 freeze holds). check_feature_inventory.pylog mode (native + Intel logs) runs at gate stage 3. Only--staticwas run here.
Undo
git -C ~/dev/_scratch/rtty-524-friendly-launch-20260926 revert a4c254e f80004e
(branch only exists on backup; nothing merged).