mirror of
https://github.com/kuhyx/screen-locker.git
synced 2026-11-10 19:27:15 +01:00
The rest banner used to be inserted into the column only while a break ran, so its arrival took height from the exercise list, shifted every tile down and pushed the last one into scroll range. The strip is now a permanently reserved 64 dp slot (muted "Rest / 00:00" while idle, Skip keeps its space), the list is a non-scrolling column that scales down as a whole if it would not fit (0.96 on the Pixel 6a with four tiles, pinned by a widget test at the phone's logical size with the status bar simulated), and the activity is locked to portrait. Verified on the real phone: only the tapped circle's pixels change when a rest starts. Verifying that needed a workout screen that today's already-logged workout did not offer, so the app gained a `sandbox` product flavor beside `daily`: com.kuhy.workout_app.sandbox installs side by side with its own data, refuses every network connection at the socket layer, starts no LAN server for the PC to pull from, keeps its /sdcard files beside the daily build's, wears a red SANDBOX ribbon, and offers a SANDBOX section in Settings (wipe, mark today not done, rest length in seconds). MainActivity answers the flavor and carries a `WorkoutSandbox` logcat trace of every tap, break, save and navigation. On Linux the same mode is WORKOUT_SANDBOX=1, driven under Xvfb by scripts/run_sandbox_xvfb.sh. CI builds --flavor daily; .phone-deploy-flavor tells phone_deploy.sh the same. Set circles and the home icon buttons carry semantics labels so they can be addressed by element (and by screen readers). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YbBZqUaNWyhHYfzz6zGC7q |
||
|---|---|---|
| .. | ||
| backup_service_session.dart | ||
| backup_service.dart | ||
| break_clock.dart | ||
| break_intent_queue.dart | ||
| break_intent_store.dart | ||
| break_notification_text.dart | ||
| break_service_controller.dart | ||
| break_service_port_flutter.dart | ||
| break_service_port.dart | ||
| break_task_handler.dart | ||
| firebase_backend_desktop.dart | ||
| firebase_backend_google.dart | ||
| firebase_backend.dart | ||
| foreground_break_client_flutter.dart | ||
| foreground_break_client.dart | ||
| github_device_auth.dart | ||
| google_platform_io.dart | ||
| google_platform_web.dart | ||
| google_platform.dart | ||
| google_sign_in_backend.dart | ||
| http_server_service.dart | ||
| lock_mode.dart | ||
| progression_sync_service_pull.dart | ||
| progression_sync_service_push.dart | ||
| progression_sync_service_session.dart | ||
| progression_sync_service.dart | ||
| storage_service_backup.dart | ||
| storage_service_exercises.dart | ||
| storage_service_sandbox.dart | ||
| storage_service_schema.dart | ||
| storage_service_sessions.dart | ||
| storage_service.dart | ||
| sync_device_id.dart | ||
| sync_service.dart | ||
| sync_settings.dart | ||
| sync_state_factory.dart | ||
| sync_status.dart | ||
| workout_sync_service_read.dart | ||
| workout_sync_service.dart | ||
| workout_sync_session.dart | ||