feat: start at Season 1, add menu/season_001 BGM tracks, settings build tag
- activeSeason now returns the first season (Season 1 'First Bloom') so a new player starts at spring instead of the newest season. - Bundle the owner-picked CC0 tracks menu.mp3 + season_001.mp3 (BGM now audible). - Settings footer shows 'v1.0.0 (build 3)' so test builds are identifiable. 180 tests green, analyze clean.
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -76,9 +76,12 @@ final seasonRefreshProvider = FutureProvider<bool>(
|
||||
(ref) => ref.read(contentRepositoryProvider).refresh(),
|
||||
);
|
||||
|
||||
/// The season players land in by default: the newest available.
|
||||
/// (availableSeasons is sorted by seasonId ascending.)
|
||||
SeasonPack activeSeason(List<SeasonPack> seasons) => seasons.last;
|
||||
/// The season players land in by default: Season 1, the start of the journey,
|
||||
/// so a new player experiences the content in order rather than being dropped
|
||||
/// into the newest season. (availableSeasons is sorted by seasonId ascending,
|
||||
/// so `.first` is Season 1.) A season selector to reach later seasons is a
|
||||
/// planned follow-up.
|
||||
SeasonPack activeSeason(List<SeasonPack> seasons) => seasons.first;
|
||||
|
||||
final streakProvider = NotifierProvider<StreakNotifier, StreakState>(
|
||||
StreakNotifier.new,
|
||||
|
||||
@@ -76,6 +76,16 @@ class SettingsScreen extends ConsumerWidget {
|
||||
title: Text(l10n.restorePurchases),
|
||||
onTap: () => iap.restorePurchases(),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
Center(
|
||||
child: Text(
|
||||
'Block Seasons · v1.0.0 (build 3)',
|
||||
style: TextStyle(
|
||||
color: Colors.white.withValues(alpha: 0.4),
|
||||
fontSize: 12,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -51,9 +51,9 @@ void main() {
|
||||
expect(repo.calls, 1);
|
||||
});
|
||||
|
||||
test('activeSeason picks the newest by id', () {
|
||||
test('activeSeason starts at Season 1 (first by id)', () {
|
||||
final p1 = _pack('season_001');
|
||||
final p2 = _pack('season_002');
|
||||
expect(activeSeason([p1, p2]).seasonId, 'season_002');
|
||||
expect(activeSeason([p1, p2]).seasonId, 'season_001');
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user