Stage 5: History, the shared daily Streak and Reminders
- Streak computed from all complete Sessions: Grace Hour (00:00-01:00 counts for yesterday unless it is done), a Freeze per 7 Streak Days (max 2) spent automatically on a missed day (ADR 0006) - Top bar flame (grey until today is done) opening a panel with current and longest Streak, Freezes and a month calendar; 'Day N of your streak' on a fresh summary - History per Mode grouped by day, reopening each summary - Two adjustable Reminders (19:00, 22:30) scheduled 14 days ahead with flutter_local_notifications, none on a done day; permission asked after the first complete Session or from Settings - Settings: Reminders, the Player chime, exercise credits Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
971ff64117
commit
1ffe6269ea
31 files changed
+1972
-50
No files matched your search
+10
-1
@@ -10,6 +10,7 @@ import 'src/history/session_repository.dart';
|
||||
import 'src/plans/plan_repository.dart';
|
||||
import 'src/player/player_effects.dart';
|
||||
import 'src/settings/settings_controller.dart';
|
||||
import 'src/streak/reminder_scheduler.dart';
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -19,6 +20,12 @@ void main() async {
|
||||
final library = await ExerciseLibrary.load(rootBundle);
|
||||
final settings = SettingsController(SettingsService());
|
||||
await settings.loadSettings();
|
||||
final sessions = SessionRepository(db);
|
||||
final notifier = LocalNotifier();
|
||||
await notifier.init();
|
||||
final reminders = ReminderScheduler(notifier, settings, sessions);
|
||||
// Today may have been finished, or a day may have passed, since the last run.
|
||||
reminders.sync();
|
||||
|
||||
runApp(
|
||||
MultiProvider(
|
||||
@@ -26,7 +33,9 @@ void main() async {
|
||||
ChangeNotifierProvider.value(value: settings),
|
||||
Provider.value(value: library),
|
||||
Provider.value(value: PlanRepository(db)),
|
||||
Provider.value(value: SessionRepository(db)),
|
||||
Provider.value(value: sessions),
|
||||
Provider<Notifier>.value(value: notifier),
|
||||
Provider.value(value: reminders),
|
||||
Provider<PlayerEffects>(create: (_) => DevicePlayerEffects()),
|
||||
],
|
||||
child: const ZenXerciseApp(),
|
||||
|
||||
Reference in new issue
Block a user