← Retour aux téléchargements
# Changelog

Toutes les modifications notables du projet sont documentées ici.
Format inspiré de [Keep a Changelog](https://keepachangelog.com/fr/), versionnage voir `mobile/pubspec.yaml` (convention documentée dans `CLAUDE.md`).

## [0.15.0] — 2026-07-27

### Ajouté
- **Sous-wishlists** : range tes envies dans des groupes nommés (ex: "Envies EDH", "Prochain achat"), calqué sur les sous-collections déjà existantes — créer/renommer/supprimer, filtrer la wishlist par groupe, déplacer une carte entre groupes ou vers "non rangée" depuis sa fiche.

### Corrigé
- **Deck fraîchement créé qui plantait à l'ouverture** : les statistiques d'un deck sans carte non-terrain renvoyaient un champ mal encodé côté serveur (tableau JSON au lieu d'objet), ce qui faisait planter l'écran de détail immédiatement après la création. Le deck était bien créé malgré l'erreur affichée.

## [0.14.0] — 2026-07-26

### Ajouté
- **Import de decklist dans un deck** : nouveauté complète (n'existait pas du tout) — colle une decklist ("1 Sol Ring" par ligne, compatible Moxfield/Archidekt/MTGO/Arena), ligne vide = séparateur sideboard, propose de désigner un commandant après import si le format l'exige.
- **Recherche floue à l'import** (collection et decks) : les fautes de frappe/variations mineures de nom sont désormais résolues via l'index trigram déjà en place, au lieu d'échouer silencieusement en "carte introuvable".
- Cartes recto-verso listées par leur seule face avant (convention d'export courante) désormais résolues correctement.

### Notes
Chantier M5 volontairement scindé : cette passe couvre la famille "decklists texte" (import) + l'amélioration de la résolution de nom. Restent délibérément non traités : les 4 profils CSV nommés (Manabox/Moxfield/Archidekt/Deckbox) + mappeur générique, l'export multi-format (xlsx/ods), et la refonte visuelle de l'écran Import/Export — scope trop large pour une seule passe, mieux vaut livrer une tranche solide et testée que de tout entamer à moitié.

## [0.13.0] — 2026-07-26

### Ajouté
- **Compteur de vie multijoueur (2 à 6 joueurs)** : accessible depuis l'écran Decks. Configuration (nombre de joueurs, vie de départ, deck optionnel par joueur pour l'artwork du commandant en fond), écran de jeu avec joueurs en périphérie (rangée du haut orientée à 180°) et zone centrale partagée (lancer de dé "Qui commence ?", reset de partie).
- **Dégâts de commandant** : sous-compteur par adversaire, cumul affiché sur chaque carte joueur, élimination automatique à 21 dégâts d'un même commandant (règle MTG) — répercute aussi la vie totale du joueur.

## [0.12.0] — 2026-07-26

### Ajouté
- **Statistiques de deck** : courbe de mana, répartition couleurs/types, CMC moyen (terrains exclus, convention deckbuilding standard) — affichées avec des graphiques (fl_chart) sur la fiche détail, recalculées à chaque ajout/retrait de carte.
- **Export de decklist** : bouton sur la fiche détail, copie la decklist au format standard (`QTY Nom de carte`, compatible Cardmarket/MTGO) dans le presse-papier.

## [0.11.0] — 2026-07-26

### Ajouté
- **Validation multi-formats des decks** : règles de structure par format (taille, singleton, sideboard, commandant) dans `config/mtg_formats.php` plutôt qu'en dur, service de validation dédié, cohérence de couleur du commandant vérifiée. Endpoint `GET /formats` pour peupler dynamiquement le sélecteur de format côté app (10 formats : Standard, Pioneer, Modern, Legacy, Vintage, Commander, Oathbreaker, Brawl, Pauper, Premodern).

## [0.10.0] — 2026-07-26

### Ajouté
- **Gestion de decks réactivée et rendue utilisable** : écran d'ajout de carte (recherche + maindeck/sideboard/commandant), jusque-là totalement absent malgré un backend fonctionnel. Validation de deck (légalité, taille, limite de copies avec exceptions terrains de base et cartes à copies illimitées type Relentless Rats).

### Corrigé
- Création de deck : le format envoyé par défaut ("Commander") ne correspondait à aucune valeur acceptée côté backend — échouait systématiquement dès le premier essai.
- Le flag "possédée" des cartes d'un deck pouvait refléter l'état d'un autre utilisateur (état statique non réinitialisé sur cette route).
- La bannière de validation du deck attendait un format de réponse différent de celui réellement renvoyé par le backend.

## [0.9.0] — 2026-07-23

### Ajouté
- **Vérification d'email** : lien de vérification envoyé à l'inscription (système natif Laravel `MustVerifyEmail`), bannière discrète sur l'accueil tant que l'email n'est pas vérifié avec bouton pour renvoyer. Aucune route n'est bloquée par défaut — purement informatif. Les comptes créés via Google sont automatiquement considérés vérifiés.

## [0.8.0] — 2026-07-23

### Ajouté
- **Tiroir de filtres enrichi** : type de carte et édition (sélecteurs avec recherche), texte de règles, coût de mana/force/endurance (min-max), mode couleur (au moins/exactement/sous-ensemble) — tous les critères avancés sont désormais accessibles via l'interface plutôt qu'en syntaxe texte.

### Retiré
- La syntaxe de recherche façon Scryfall dans le champ texte (t:, o:, c:, cmc, etc.) — remplacée par les contrôles dédiés du tiroir de filtres, plus simples d'accès.

## [0.7.0] — 2026-07-23

### Ajouté
- **Suppression en masse dans la collection** : mode sélection multiple (appui long pour activer), avec choix entre "Retirer 1 exemplaire" et "Tout supprimer" quand une carte sélectionnée a plusieurs exemplaires.

## [0.6.0] — 2026-07-18

### Ajouté
- **Recherche façon Scryfall** : le champ de recherche accepte désormais `t:`, `o:`, `c:`/`id:`, `cmc`/`mv`, `pow`/`tou`, `r:`, `f:`, `s:`, `-exclusion`, `OR`, combinables (ex : `t:creature c:r cmc<=3`). Bouton d'aide (?) pour découvrir la syntaxe.
- **Sélecteur d'impression** dans la liste/grille de collection (grand tiroir) pour ajouter/retirer précisément la bonne édition d'une carte à impressions multiples, sans passer par la fiche détail.

### Corrigé
- La bascule rapide (liste/grille) pouvait ajouter la mauvaise impression au lieu de retirer celle réellement possédée.
- La barre de navigation ne ramenait pas toujours à l'écran racine de l'onglet (ex : rester bloqué sur Sous-collections en tapant "Collection").
- Écran opaque sans rien d'affiché sur plusieurs popups de confirmation (suppression, déconnexion...) — largeur minimale imposée par le thème global en conflit avec la mise en page des boutons de dialogue.

## [0.5.0] — 2026-07-16

### Ajouté
- **Connexion avec Google** : bouton "Continuer avec Google" sur l'écran de connexion, crée automatiquement le compte à la première connexion. Le token Google est revérifié côté serveur avant de faire confiance à l'email.

## [0.4.0] — 2026-07-16

### Ajouté
- **Mot de passe oublié** : demande d'un code à 6 chiffres par email depuis l'écran de connexion, puis réinitialisation du mot de passe avec ce code (valable 30 minutes). Déconnecte automatiquement toutes les sessions existantes par sécurité.

## [0.3.1] — 2026-07-10

### Corrigé
- Cartes importées invisibles dans Collection tant que l'app n'était pas relancée (cache local de pagination non réinitialisé après un import en masse).

## [0.3.0] — 2026-07-10

### Ajouté
- **Import/export en masse de la collection**, pensé pour accepter le format le plus large possible : CSV avec en-tête (Moxfield, Deckbox, Manabox, Archidekt...), CSV sans en-tête, decklist Arena/MTGO (`4 Lightning Bolt (M10) 146`), ou simple liste de noms.
- **Sélection directe d'un fichier** `.csv`/`.txt` pour l'import — pas besoin de copier-coller le contenu à la main (toujours possible en repli).
- Export CSV de toute la collection, copiable en un tap.
- L'impression est résolue automatiquement (set + numéro si fournis, sinon la moins chère disponible) et les quantités s'additionnent à ce qui est déjà possédé — jamais de perte de données sur un import répété.
- Accessible depuis Collection via une nouvelle icône dédiée.

### Corrigé
- Nom de l'APK release incluant la version (`card_tracker-X.Y.Z-release.apk`) pour distinguer facilement les builds envoyés aux testeurs.

## [0.2.0] — 2026-07-09

Clôture du jalon M1 (Collection & Wishlist) : sous-collections avec répartition d'exemplaires, traduction FR/EN, vue plein écran par impression, et un nettoyage complet de l'ergonomie.

### Ajouté
- **Sous-collections** : ranger les cartes possédées dans des groupes nommés, avec création à la volée et filtre dédié.
- **Répartition d'exemplaires multiples** entre sous-collections — une impression peut désormais avoir plusieurs copies réparties (ex : 2 dans « Deck A », 2 non rangées) au lieu d'une seule appartenance globale.
- **Vue plein écran** avec zoom, accessible depuis chaque impression d'une carte (pas seulement l'impression par défaut).
- **Traduction FR/EN** du texte de carte, en overlay sur la vue plein écran (interroge Scryfall à la demande, pas de stockage local).
- **Vue grille sur l'écran Recherche** (déjà disponible sur Collection) — bascule liste/grille identique aux deux écrans.
- Le **mode de vue (liste/grille)** est mémorisé séparément par écran (Collection, Recherche) et survit au redémarrage de l'app.

### Modifié
- Interface épurée : barres d'en-tête redondantes avec la barre de navigation retirées sur les 5 écrans principaux (Accueil, Collection, Recherche, Wishlist, Decks) — compteurs et actions repositionnés dans le corps de page.
- Tuiles liste/grille réduites à l'essentiel (image, nom, actions) — couleurs, rareté, prix et nombre d'éditions renvoyés sur la fiche détail.
- Import Scryfall : exclusion des layouts non jouables (Art Series, jetons, emblèmes) qui généraient des doublons de cartes sans texte ni traduction possible.

### Corrigé
- Ajout/retrait d'une carte de la collection reflété immédiatement dans la liste, sans redémarrage ni saut de défilement.
- Traduction FR introuvable pour certaines cartes : Scryfall exige des en-têtes HTTP absents des requêtes, et l'impression choisie n'était pas toujours celle disposant d'une traduction.
- Message d'erreur de connexion illisible (exception brute affichée) remplacé par le message clair renvoyé par le serveur.
- Prix minimum réellement affiché sur les tuiles (au lieu du prix de la première impression par date de sortie).
- Limitation de débit (`throttle`) sur les routes d'authentification.
- `backend/.env.docker` n'est plus suivi par git (source de conflits à chaque déploiement serveur).

### Performance
- Cache Docker du build backend : la couche `composer install` n'est plus reconstruite à chaque déploiement quand les dépendances n'ont pas changé (~5 minutes → ~5 secondes sur build inchangé).

### Documentation
- Ajout d'un README de présentation du projet, corrections des informations périmées dans `SETUP.md`.

## [0.1.0] — 2026-07-07

- Renommage complet du projet (Dragon Tracker → CardTracker), le scope couvrant toutes les cartes MTG et non plus seulement les dragons.
- Socle initial : API Laravel (catalogue Scryfall, collection, wishlist) + application Flutter (recherche, collection, wishlist, decks).
- Adoption de la convention de versionnage alpha (`MAJOR` reste `0`).