screen-locker/stronglift_replacement/workout_app/lib/screens
Krzysztof kuhy Rudnicki d31b488311
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
Tests / test (3.10) (push) Has been cancelled
Tests / test (3.11) (push) Has been cancelled
Tests / test (3.12) (push) Has been cancelled
Tests / lock-popup-safety (push) Has been cancelled
release-apk / release (APK) (push) Has been cancelled
Add the Firebase connect UI, and stop dropping pushes from a Firebase-only phone
The last app on the list. The Firebase backend has been wired up since the
cutover commit, but nothing ever called saveAccount(), so openFirebase() read
an account that was never written, returned null every time, and the app
quietly synced over GitHub forever -- on real hardware, whatever the tests
said. Settings now has a Firebase section that stores the account and signs
in immediately, so a wrong password shows on screen instead of as a silent
no-op later; a rejected sign-in clears the account rather than leaving it
half-stored.

The worse half was in workout_sync_service. push(), pushManual() and the
read path each began `if (!settings.isConfigured) return;` -- true only when
a **GitHub token** exists. The MirrorStore that makes Firebase primary was
built *after* that check, so a phone connected to Firebase alone silently
dropped every workout it logged and reported no history, with no error
anywhere. Once the GitHub mirror is retired that would be every device. All
three now accept either backend.

UI follows the same shape as the other apps: GitHub demoted into "Advanced
(GitHub mirror)" (with the PAT fallback folded in, rather than two sibling
"Advanced" disclosures), and a connected account rendered as read-only text
with a Disconnect button instead of an empty-looking form.

The keystore accessors are injectable, like firebaseFactory already was, so
the connect/reject/disconnect branches are testable without a platform
channel. 302 tests pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017FH32BgGQbQLDstBhR26Xa
2026-08-05 10:11:09 +02:00
..
history_screen.dart workout_app: warm-tint the unified-design-system palette 2026-07-22 21:08:45 +02:00
home_screen.dart workout_app: warm-tint the unified-design-system palette 2026-07-22 21:08:45 +02:00
manual_workout_screen.dart workout_app: warm-tint the unified-design-system palette 2026-07-22 21:08:45 +02:00
settings_screen.dart Add the Firebase connect UI, and stop dropping pushes from a Firebase-only phone 2026-08-05 10:11:09 +02:00
workout_screen.dart workout_app: warm-tint the unified-design-system palette 2026-07-22 21:08:45 +02:00