Repository navigation
chore(mobile): delete dead code with no remaining UI path - #8880
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🔐 Codex Security Review
Review SummaryOverall Risk: NONE
FindingsNo concrete security, correctness, or reliability findings were identified. Notes
Generated by Codex Security Review | |
salman1993
left a comment
There was a problem hiding this comment.
🤖 Stamped by Salman's agent at his request.
002bd82 to
66141c1
Compare
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Carl, an automated reviewer, commenting via Wes’s GitHub account.
No blockers. We traced the deleted code through routes, notification routing, native method-channel handlers, providers and the legacy theme-preference migration, and found no remaining caller or user path. For example, registerBuzzPushCommunitySnapshotStrict (the only sender of syncAgeGatePushSnapshot) is called only by its own test on main, and the Dart callers of notificationAuthorizationStatus and openNotificationSettings are removed in the same diff. The 210 added lines are relocations and test repointing, with no behavior change found. CI (mobile checks, all Flutter shards, Android, Swift) is green.
Remaining gate, as the PR already says: an in-app smoke run on a device or simulator.
Remove code that is unreachable from the mobile UI and has no counterpart in buzz-app: - iOS native message menu and action surface (callers removed in #8280) - old home quick-actions launcher and ComposeMorphIcon - retired local theme/accent/scheme stack and accent picker - ProfileAvatar and MaskedAvatarBadge - push permission-status plumbing and the strict age-gate snapshot path - orphaned files, uncalled helpers and NostrFilters builders - removed-UI leftovers: invite directory providers, sign-out and rename community notifier methods, embedded settings, create-forum branches Tests that only exercised deleted code are removed or trimmed. Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Tom Brow <[email protected]>
66141c1 to
f8ea890
Compare
salman1993
left a comment
There was a problem hiding this comment.
🤖 Stamped by Salman's AI agent.
Signed-off-by: Blake McAnally <[email protected]> Co-Authored-By: Claude Opus 5.5 <[email protected]> * origin/main: (47 commits) fix(mobile): catch up unread from the newest message already seen (#8901) fix(mobile): resync read state from the last fetch, not the whole week (#8903) fix(mobile): show remote agent instructions from the registry (#8908) feat(mobile): show NIP-FI verified names (#8858) fix(mobile): keep community icons on originals and record thumbnail 404s at fetch (#8896) chore(mobile): delete dead code with no remaining UI path (#8880) fix(mobile): let slow image downloads finish (#8881) fix(mobile): show Bestie as a continuous conversation (#8890) fix(mobile): keep mention rows still and cache directory searches (#8875) Standardize mobile navigation edges (#8895) Mobile: open Solo chats with Bestie and workspace controls (#8884) feat(relay): auto-join new community members to default channels (#8594) Fix mobile unread state retaining deleted messages (#8883) fix(mobile): fill uploaded avatars on the Agents page (#8882) fix(mobile): keep avatars and images loading on slow links (#8879) fix(mobile): list the same owned agents as desktop (#8857) fix(mobile): time out relay connects that never finish the handshake (#8878) mobile: quiet agent messages and caught-up channel highlights (#8876) fix(mobile): show hosted community names consistently (#8872) fix(mobile): keep loaded timeline visible while reconnecting (#8864) ... Signed-off-by: Blake McAnally <[email protected]>
…r-grants * origin/main: (191 commits) fix(relay): refuse a second listed open channel with the same name (#8782) docs(nip-fa): make assertion lifetime issuer operator policy (#8934) fix(mobile): open the public Builderlab login the iOS bridge allows (#8914) fix(desktop): skip a starter channel the relay will never create (#8911) fix(mobile): hide the Flutter debug banner (#8915) mobile: keep a thumbnail fallback apart from a direct load of the same URL (#8913) fix(mobile): prompt Builderlab sign-in instead of labeling agents desktop-only (#8907) feat(mobile): add Buzzies and refresh agent avatar picker (#8921) fix(deps): clear RUSTSEC-2026-0433 and RUSTSEC-2026-0429 from the dependency policy (#8922) test(relay): hold the replica's second aux page and move media's DB tests (#8740) test(desktop): stop four E2E specs racing scroll settles and focus (#8743) fix(mobile): catch up unread from the newest message already seen (#8901) fix(mobile): resync read state from the last fetch, not the whole week (#8903) fix(mobile): show remote agent instructions from the registry (#8908) feat(mobile): show NIP-FI verified names (#8858) fix(mobile): keep community icons on originals and record thumbnail 404s at fetch (#8896) chore(mobile): delete dead code with no remaining UI path (#8880) fix(mobile): let slow image downloads finish (#8881) fix(mobile): show Bestie as a continuous conversation (#8890) fix(mobile): keep mention rows still and cache directory searches (#8875) ... Signed-off-by: Philip Azar <[email protected]>
Mobile stopped publishing presence on November 1. The heartbeat in `PresenceNotifier` only runs while something holds `presenceProvider`, and its last always-mounted watcher was the app-bar `ProfileAvatar`, deleted as dead code in [#8880 dead code cleanup](#8880). Since then the app sends "online" only while Settings is open, stops when Settings closes, and never sends "away" when backgrounded. Other people see a phone user as offline (or stuck on whatever Settings last sent). This keeps the provider alive from the signed-in shell, next to the other app-wide `ref.listen` keep-alives in `app.dart`. Found during a combined performance and network hunt on a physical iPhone SE running main ([bf3bdd0 GIF timing](bf3bdd0eae)): a 5-minute foreground idle window on the channel list sent no websocket events at all. ### Regressions The app goes back to its pre-#8880 traffic: one small signed kind:20001 event per minute while foregrounded, plus one on each lifecycle change. The heartbeat code is unchanged. `ref.listen` doesn't rebuild the App when presence changes. ### Validation - Added tests: `presence_shell_test.dart` pumps the signed-in `App` without opening Settings and expects an "online" presence publish. It fails without the `app.dart` change (expected `['online']`, got `[]`) and passes with it. - Full mobile suite passes (4785 tests). - Not yet done: device confirmation that heartbeats resume and "away" goes out on backgrounding. Signed-off-by: Tom Brow <[email protected]> Co-authored-by: Tom Brow <[email protected]>
Summary
Deletes mobile code that no longer has a user-reachable path and has no counterpart in buzz-app, so it is unlikely to come back for parity. Net: 104 files, about 5,500 lines removed. No intended behavior change.
NativeMessageMenu.swiftandNativeMessageActionSurface.swift, themessage/supportsMessagecoordinator branches, and the Dart selection hook. Dart stopped creating this view in #8280. The native reactions sheet in the same coordinator is kept.ComposeMorphIcon: only instantiated in tests since the nav-bar creation actions replaced them.ThemeNotifier,AccentNotifier,SchemeNotifier,adaptive_theme.dart,AccentPickerPage, the appearance-mode sheet and their helpers. These predate per-community theme sync. The legacy prefs migration incommunity_theme_preference.dartis kept.ProfileAvatarandMaskedAvatarBadge.notificationAuthorizationStatus/openNotificationSettingshandlers, plus the uncalled strict age-gate snapshot registration and its SwiftsyncAgeGatePushSnapshotpath.profile_text_edit_sheet,editor_option_button,retained_page_transition,tappable_flapping_bee,agent_model_info,community_bot_profiles,sheet_divider,success_haptic.pickAndUpload*/camera helpers inmedia_upload.dart, unusedNostrFiltersbuilders,mediaGetHeadersFor*, and about 20 other uncalled functions, providers and styles.AuthNotifier.signOutandremoveActiveCommunityForSignOut(the Sign out row is gone),renameCommunity,HomePage.profilePageBuilder/SettingsPage.embedded, and the create-forum branches of the create-channel sheet. Forum viewing is unchanged.Tests that only covered deleted code are removed. Tests of surviving code that used deleted helpers as drivers were repointed to the surviving API.
An audit of
mobile/androidfound no dead Kotlin, resources, manifest entries or Gradle dependencies, so Android code is unchanged.Validation
flutter analyze: no issues.just mobile-checkis clean (format and analyze), andjust mobile-testpasses (4,070 passed, 35 skipped, 0 failed, plus the push-unconfigured and secp256k1 suites).dart format: clean.just mobile-build-androidbuilds the debug APK, and./gradlew :app:testDebugUnitTestpasses.build-for-testingsucceeds and BuzzPushKitswift testpasses (65 tests). In RunnerTests, 97 of 98 pass.testNativeNavigationTitleExpandsAgainAtTopfails, but it fails the same way on unmodifiedmain(acf56ff) on the same machine (Xcode 27, iPhone 17 Pro simulator), so it is not caused by this change.project.pbxprojentries for the deleted Swift files) is fixed.🤖 Generated with Claude Code