52 Commits

Author SHA1 Message Date
a2a7ffd79f feat(i18n): add FR/EN internationalization with in-app language selector
- gen-l10n setup (flutter_localizations, intl, l10n.yaml, ARB en/fr)
- localeProvider (persisted) wired into MaterialApp
- language selector in the System page (alongside the color palette)
- all user-facing strings across screens moved to AppLocalizations

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 12:13:51 +02:00
7fd122fd91 docs(code): add doc comments to all public widgets and providers
Document MyApp, MainPage, PokemonImage/Tile/TypeWidget, and the gen-filter
and theme providers/notifiers. Every public class/enum now has a /// doc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:58:29 +02:00
e93384bf71 refactor(list): split pokemon_list into sub-widgets (<150 lines)
Extract PokedexListHeader, PokedexCountBar; reuse shared ScanlineOverlay.
pokemon_list.dart 169 -> 128 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:53:27 +02:00
749314d312 refactor(system): extract system_page sub-widgets into separate files (<150 lines)
Move SystemHeader, SectionTitle, StatsGrid/StatItem and PalettePicker into
widgets/system/. system_page.dart 260 -> 80 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:51:15 +02:00
41a80f03f0 refactor(detail): split pokemon_detail into sub-widgets (<150 lines)
Extract PokemonDetailTop and PokemonStatsPanel (+ reusable _StatBar).
pokemon_detail.dart 286 -> 97 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:49:19 +02:00
bdbd2fcc6a refactor(game-over): split game_over_page into sub-widgets (<150 lines)
Extract GameOverHeader, GameOverStats (+ reusable _StatBox), HingeDivider,
GameOverActions. game_over_page.dart 338 -> 100 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:47:08 +02:00
cb9e214aa2 refactor(guess): split guess_page into focused sub-widgets (<150 lines)
Extract GuessSilhouette, GenFilterSection, LivesRow, GuessInputSection,
ScoreBoard and a shared ScanlineOverlay. guess_page.dart 440 -> 149 lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:44:55 +02:00
71f5122e74 setings and gen filter 2026-06-23 10:54:16 +02:00
d54e517ca6 chore(core): remove unused Result type (dead code)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 15:33:51 +02:00
ca77317a20 chore: remove legacy models/utils/api/database layers
Also moves stray lib/pages/quel-est-ce-pokemon.code-workspace to repo
root, and fixes two trivial test lint infos (curly_braces_in_flow_
control_structures, constant_identifier_names) to reach clean analyze.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 15:20:54 +02:00
dc7e681508 fix(presentation): recover from game-over back gesture, show final score, guard hint, constants
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 15:15:27 +02:00
e62c8a9034 refactor: wire main.dart to presentation layer
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:45:59 +02:00
2c21b80a03 refactor(presentation): guess page consumes gameProvider
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:45:20 +02:00
4ac13bd233 refactor(presentation): game over page uses repository + constant
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:43:48 +02:00
7fd6d16020 refactor(presentation): pokemon list consumes pokedexProvider
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:43:02 +02:00
d4c8936c80 refactor(presentation): main page as ConsumerWidget with nav provider
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:42:13 +02:00
439c0101f4 refactor: move UI into presentation/widgets and presentation/pages
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:41:41 +02:00
29d2c92b37 fix(presentation): resilient pokemon loading, web-safe invalidate, correct best-score persist
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:38:40 +02:00
4bca4b1ed5 feat(presentation): add game state Notifier
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:31:42 +02:00
2d87879af8 feat(presentation): add selected-tab navigation provider
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:31:16 +02:00
d531fcb2c8 feat(presentation): add pokedex AsyncNotifier provider
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:30:55 +02:00
f6a6ba2cd1 feat(presentation): add repository DI provider
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:30:30 +02:00
e3a9831ce1 feat(domain): add pure GameEngine with TDD (removes pikachu cheat)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:22:03 +02:00
0d977e5cca feat(domain): add immutable GameState
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:20:46 +02:00
6885771081 fix(data): race-safe DB open, graceful unknown types, explicit id error + fallback tests
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:18:56 +02:00
51c6ef904d feat(data): add PokemonRepository implementation + tests
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:13:06 +02:00
42bd9f7c20 feat(domain): add PokemonRepository interface
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:12:05 +02:00
cbc742b25a feat(data): add HTTP remote datasource
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:11:31 +02:00
96758f1b6b feat(data): add instance-based SQLite local datasource
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:10:25 +02:00
f2dcba0fe2 feat(data): add PokemonDto with single-source JSON parsing + tests
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:09:51 +02:00
2f051c8da6 refactor: point leaf components at domain Pokemon entity
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:57:51 +02:00
b1f67d3daa feat(presentation): add type colors helper
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:57:23 +02:00
8ca6405bc0 feat(domain): add pure Pokemon entity and PokemonType enum
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:56:59 +02:00
8f29f3578a refactor(core): keep logger pure-Dart and document Result subtypes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:55:36 +02:00
2a3f489a2d feat(core): add AppLogger
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:50:31 +02:00
6b150945fa feat(core): add sealed Result type
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:50:16 +02:00
03dbdd723d feat(core): add centralized app constants
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:49:51 +02:00
ca769dca2d chore: add flutter_riverpod and wrap app in ProviderScope
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:48:53 +02:00
4faf259aaa feat: Introduce PokemonImage component for robust image loading with fallback and shiny support, and update iOS platform to 15.0. 2026-03-20 11:23:22 +01:00
d3d3ba3586 app perfect 2026-03-20 10:42:30 +01:00
112d0136c9 feat: Implement batch insertion for Pokémon and utilize it for more efficient initial data synchronization. 2026-03-17 15:09:41 +01:00
fbf37e6861 chore: major changes 2026-03-17 14:57:39 +01:00
528cdcafef init v2 app 2026-03-17 13:26:21 +01:00
e18863cf1c feat: add frenchTypeToEnum function to map French Pokémon types to enums 2026-02-03 09:47:21 +01:00
5bd3b1f18f fix: update image URLs to use TyraDex for Pokémon sprites 2026-02-03 09:47:15 +01:00
5b1ffaede8 fix: update Pokemon API integration to use Tyradex and improve type handling 2026-02-03 09:46:51 +01:00
c7be5241a2 fix: remove unused sqflite_common import in main.dart 2026-02-03 09:46:41 +01:00
=
652eb9072f fix: android build 2026-02-02 15:01:02 +01:00
=
7a939f164a Merge branch 'main' of https://gitea.losvernos.com/guillaumev/quel-est-ce-pokemon 2026-02-02 09:47:57 +01:00
93cfaff7df refactor: update application name and description to 'Pokéguess' 2026-02-02 09:42:07 +01:00