docs mobile bottom tab base navigation - AlexandreZanata/Abastevo GitHub Wiki
Bottom tab base navigation — 2026-10-13
Task: user-requested bounded P19-T02/P20-T02 navigation correction.
Base: 8a4503c; isolated worktree because maintained dev contains another agent's edits.
Behavior contract
- B-BR-NAV-01: Every bottom-bar tap opens the selected tab's base destination: Explore → Home, Community → Community, Profile → Profile. A previously visited child must not be restored by that action.
- B-BR-NAV-02: Repeated taps at a base destination do not add duplicate entries. Existing screen Back actions and persisted application data retain their contracts.
- BUC-NAV-01: Given Home → Select location (including deeper search/location paths), tapping Explore returns to Home.
- BUC-NAV-02: Given Community → Contributions or Profile → Settings → Help, tapping the corresponding tab returns to its base.
- BUC-NAV-03: Given another tab was left on a child screen, switching back opens its base. Repeated taps and subsequent Back do not reveal that discarded child.
Scope and validation
Presentation navigation only: no domain/auth/storage/backend/dependency change. Reuse the existing Navigation Compose controller and bottom bar. Stop saving/restoring child back stacks for bottom-bar actions; keep single-top navigation and the existing graph start anchor.
Status: LOCAL_DONE Validation: PASS Integration: INTEGRATION_PENDING (dev delivery only; native execution OWED).
Executed from the isolated worktree:
ANDROID_HOME=/data/dev/android/sdk/Sdk ./gradlew :app:testDebugUnitTest --tests '*navigation.*' :app:lintDebug :app:assembleDebug :app:assembleDebugAndroidTest --no-parallel --max-workers=2 --console=plain
Result: BUILD SUCCESSFUL (3m 23s), 18 JVM navigation tests / zero failures, errors or skips (Routes 10, tab mapping 7, auth manifest 1). Android lint: zero errors/fatal issues, 222 warnings. Debug app and instrumentation APK compilation passed. Five new actual-controller/bar instrumentation cases cover location/deeper paths, Community/Profile child stacks, switching tabs, repeated taps and an initial location destination. These cases compiled but were NOT EXECUTED; native behavior remains OWED under the deferred manual/device batch. Existing JVM route tests do not prove native stack behavior.
git diff --check passed. Scoped source/test/docs review found no credentials, private data, GPS or media added. No dependency or domain change; no backend/SQL checks required.
Tested source SHA-256:
Publication: user authorized push to dev; no main merge, deployment or wiki publication in this task. Preserve the occupied checkout and all unrelated changes. Recovery: revert only this task's commit.
app/src/main/kotlin/com/anpfuel/app/navigation/AnpNavGraph.kt:188f78d6385980cb8fc99c99b908a50b616a80587b789df717c98b1a0f5f7727.app/src/main/kotlin/com/anpfuel/app/navigation/TabNavigation.kt:f1bca9648aa9d5411fbd4c3991577acc237f0947c7779cc7e498180e3afc2eee.app/src/androidTest/kotlin/com/anpfuel/app/navigation/BottomTabNavigationDeviceTest.kt:9840a395e3e7c47ca6d3032fa40382f00b3a9bbe80d167cd7bba12eb37bf1357.
Remote verified: [email protected]:AlexandreZanata/Abastevo.git (previous repository name redirects to Abastevo); push permission present. Main protection still requires strict Quick verification (GitHub Actions app 15368). No checks/merge requested or inferred for main.