Add daily streak system and normalize bundle id to com.airkjw.blockseasons

Pure advanceStreak (1-day grace none, milestone flags at 3/7/14/30),
persisted in the save blob; StreakNotifier advances on every finished
attempt; home screen flame chip and milestone snackbar. Fix flutter
create's camelCased iOS bundle id and underscored Android application
id to the agreed lowercase form before any store registration.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 17:25:39 +09:00
parent 7bc26447f7
commit 607278928b
14 changed files with 271 additions and 15 deletions
+14 -3
View File
@@ -1,10 +1,21 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:block_seasons/app.dart';
import 'package:block_seasons/data/save_repository.dart';
import 'package:block_seasons/state/providers.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
testWidgets('home screen shows title and play button', (tester) async {
await tester.pumpWidget(const BlockSeasonsApp());
SharedPreferences.setMockInitialValues({});
final repo = SaveRepository(await SharedPreferences.getInstance());
await tester.pumpWidget(
ProviderScope(
overrides: [saveRepositoryProvider.overrideWithValue(repo)],
child: const BlockSeasonsApp(),
),
);
await tester.pumpAndSettle();
expect(find.text('Block Seasons'), findsOneWidget);