Skip to content

feat: FEAT-212 Profile navigation migration: state machine β†’ React Navigation#128

Merged
MP2EZ merged 2 commits into
developmentfrom
feat/FEAT-212-profile-nav-migration
Jun 2, 2026
Merged

feat: FEAT-212 Profile navigation migration: state machine β†’ React Navigation#128
MP2EZ merged 2 commits into
developmentfrom
feat/FEAT-212-profile-nav-migration

Conversation

@MP2EZ
Copy link
Copy Markdown
Owner

@MP2EZ MP2EZ commented Jun 2, 2026

Closes FEAT-212 (FEAT-203 Slice 4).

Replaces ProfileScreen's hand-rolled currentScreen state machine β€” and the depth-2 showCloudBackup / selectedDocument sub-machines β€” with a nested React Navigation stack (ProfileStackNavigator). Native back-chevron headers replace SubMenuHeader's βœ• (resolves audit finding M3); iOS swipe-back works.

Crisis overlay re-host (FEAT-203 Β§5.1 CB-1..CB-7, AS-6): CollapsibleCrisisButton moved from inside ProfileScreen to the navigator wrapper (sibling above the stack) so it covers every Profile route including depth-2. Frozen props preserved (mode="standard", testID="crisis-profile", position="right"); onNavigate uses root navigation (CrisisResources is a root modal).

Crisis sign-off: crisis agent GO (planning pass + implementation review).

On-device validation: extended crisis-button-reachability.yaml run on iPhone 16 Plus against this build β€” crisis-profile β†’ crisis-resources-screen asserted from menu + 5 depth-1 routes + depth-2 LegalDocument, all COMPLETED (exit 0).

Jest: new profile-stack-navigator.test.tsx pins frozen crisis props + root-nav wiring; full precommit green (typecheck, accessibility 64, crisis-detection 82, unit 377).

πŸ€– Generated with Claude Code

MP2EZ and others added 2 commits June 1, 2026 19:20
Replace ProfileScreen's hand-rolled currentScreen state machine β€” and the
depth-2 showCloudBackup / selectedDocument sub-machines inside
PrivacyDataScreen / LegalDocumentsListScreen β€” with a nested React
Navigation stack (ProfileStackNavigator). Each former subscreen is now a
real route with native back-chevron headers (resolves audit finding M3)
and iOS swipe-back.

Crisis overlay re-host (FEAT-203 Β§5.1 CB-1..CB-7, AS-6 β€” crisis-agent
sign-off: GO): CollapsibleCrisisButton moves from inside ProfileScreen to
the navigator wrapper as a sibling above the stack, so it covers every
Profile route including depth-2. Frozen props preserved (mode="standard",
testID="crisis-profile", position="right"); onNavigate uses the root
navigation since CrisisResources is a root-stack modal.

- New ProfileStackNavigator + AboutBeingScreen (gated placeholder route,
  preserves FEAT-209 H2 "About Being." gating)
- Subscreens drop SubMenuHeader/onReturn -> native header + goBack
- Privacy->CloudBackup and Legal->LegalDocument become pushed routes;
  LegalDocument takes a serializable documentType param
- Profile tab repoints to ProfileStackNavigator (headerShown:false)
- Extend crisis-button-reachability.yaml: assert crisis-profile ->
  crisis-resources-screen from menu + 5 depth-1 routes + depth-2
  LegalDocument (CloudBackup depth-2 is cloud_sync-dark, pinned by jest)
- New jest test pins frozen crisis props + root-nav onNavigate wiring
- Update affected tests for the route model

πŸ€– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…profile-nav-migration

# Conflicts:
#	app/src/features/profile/screens/AccountSettingsScreen.tsx
@MP2EZ MP2EZ merged commit b13b287 into development Jun 2, 2026
22 checks passed
@MP2EZ MP2EZ deleted the feat/FEAT-212-profile-nav-migration branch June 2, 2026 06:43
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