Skip to content

fix(mobile): keep All Profiles on their routed environment - #2841

Merged
DoodleBears merged 2 commits into
mainfrom
codex/2782-group-profile-source
Oct 25, 2026
Merged

DoodleBears merged 2 commits into
mainfrom
codex/2782-group-profile-source

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Refs #2782 | Work claim

Task: codex/local/01a172ec-cdb4-7823-bf7d-546549ec6491.

Why the change

Allow All-environment Group and member Profiles to use their explicitly routed Computer even when an outer sheet retains another Computer's scope.

Special things to note

  • Merge risk: two-way door, revert this patch; small blast radius, mobile Profile data/actions and group notification navigation. Review source selection and same-ID isolation. No dependencies, native inputs, Host API or storage schema changes.
  • Regression: two added cases failed with the exact cross-computer refusal before the fix; all 13 focused Profile/multi-Host/notification tests pass afterward. Existing retained-source refusal tests remain green. Changed-file formatting, release fragment, feature-map and CI-plan checks pass. Broader local run: 262 files pass, 9 skip, 3 fail from missing expo-widgets and English-label assumptions under Chinese Windows; root types are blocked by local dependency resolution errors. Clean-install CI passed at 20c6ec2 (run 40236543509); screenshots-only follow-up reruns CI separately.
  • Focused physical Android regression passed at 20c6ec2. All/Profile, member Message/Back, source-isolated Host mute and background persistence passed. Source removal/pending cancellation, iOS, expanded font/accessibility, OS notification delivery and model interruption remain untested; Cloud explicitly excluded. No full-native acceptance claimed; the remaining qualifications continue after merge.

Change outline

- Group/Bot Profile reads the enclosing Host scope, then rejects a different explicit route Host
+ Group/Bot Profile resolves useHostSession(route.hostId), retaining source-loss refusal
- Group notification route carries only the group ID
+ Group notification route carries Host + group ID and scopes its screen explicitly
- SectionHeader receives a spread containing React's reserved key
+ SectionHeader receives only its display properties

The existing Host session owner resolves explicit IDs without changing the global environment filter. A colliding group ID on B cannot substitute for the routed A group. No new lifecycle or authority is introduced; this short linear fix is explained here without a separate HTML explainer.

Physical Android Before / After — Chinese, default font scale

POCO Android 16. Baseline a344c131ee77; tested source 20c6ec23b357. Native APK SHA256 4ad4f10897834f51cc72780b446c6936065df1698fe411274eb1a5adaf8cda1f was rebuilt at baseline; cumulative native inputs unchanged and fresh Metro served the tested source. Status bar cropped; synthetic QA content.

Before — dark: All -> B DM/Profile Message -> All -> A group header displays the cross-computer refusal and key warning.

Physical Android before: All group Profile incorrectly refused

After — dark: the exact path opens A's Group Profile and members.

Physical Android after: correct Group Profile, dark

After — light: same Group Profile; no light baseline was captured.

Physical Android after: correct Group Profile, light

Evidence provenance and coverage limits.

The physical-device runner also verified A member Profile -> Message opens a DM containing A's marker; system Back restores the original Group Profile. Host mute affected only A's canonical roster, leaving B's same-ID group unchanged. A custom background persisted while B stayed default. Settings were restored. The SectionHeader key warning was absent in the observed UI/Metro path. Host mute does not establish FCM or phone-only quiet settings. QA resources were released; standalone development APK restored with data/pairings retained.

Explicit Profile host IDs override retained outer sheet scope; group notification navigation keeps the same source. Avoid spreading reserved keys into section headers.

Issue: #2782

Agent-Task: codex/local/01a172ec-cdb4-7823-bf7d-546549ec6491
@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Issue: #2782

Agent-Task: codex/local/01a172ec-cdb4-7823-bf7d-546549ec6491
@DoodleBears
DoodleBears marked this pull request as ready for review October 25, 2026 21:55
@DoodleBears
DoodleBears merged commit 4140571 into main Oct 25, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant