<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
        <title>IsoTactica · Devblog</title>
        <link>https://devblog.isotactica.mynewit.com</link>
        <description>Journal du développement d'IsoTactica · MMORPG isométrique tour-par-tour</description>
        <language>fr</language>
        <atom:link xmlns:atom="http://www.w3.org/2005/Atom" href="https://devblog.isotactica.mynewit.com/rss.xml" rel="self" type="application/rss+xml"/>

        <item>
            <title>IsoTactica v0.00.046</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.046</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.046</guid>
            <pubDate>Thu, 07 May 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du mode `--export-map-contributor-import-template` a `IsoTactica.AssetPipeline` pour generer `docs/maps/dev_world_contributor_pack_v001/import_patch_template_v001.json`. · Ajout du mode `--validate-map-contributor-import-patch` et de l'option `--map-contributor-import-patch-input` pour valider un patch JSON de contributions maps avant toute integration runtime. · Le validateur verifie `targetPackId`, `dryRun`, cartes ciblees, coordonnees `24x24`, IDs non conflictuels, assets de palette, props, ressources, interactifs, portes et listes de cellules a bloquer/liberer.

### Notes
- Ajout du mode `--export-map-contributor-import-template` a `IsoTactica.AssetPipeline` pour generer `docs/maps/dev_world_contributor_pack_v001/import_patch_template_v001.json`.
- Ajout du mode `--validate-map-contributor-import-patch` et de l'option `--map-contributor-import-patch-input` pour valider un patch JSON de contributions maps avant toute integration runtime.
- Le validateur verifie `targetPackId`, `dryRun`, cartes ciblees, coordonnees `24x24`, IDs non conflictuels, assets de palette, props, ressources, interactifs, portes et listes de cellules a bloquer/liberer.
- Documentation du template et de la validation patch dans `tools/README.md` et le README du pack contributeur maps.
- Validation locale de tranche : build `IsoTactica.AssetPipeline` OK, export template patch OK, validation patch OK avec 1 carte exemple, 1 prop, 1 ressource, 1 interactif, 1 cellule bloquee et 1 cellule liberee.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.045</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.045</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.045</guid>
            <pubDate>Wed, 06 May 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du mode `--plan-map-contributor-import` a `IsoTactica.AssetPipeline` pour preparer l'import futur du pack contributeur maps sans modifier les JSON runtime. · Ajout de l'option `--map-contributor-import-plan-output` pour rediriger le rapport Markdown de dry-run. · Generation de `docs/maps/dev_world_contributor_pack_v001/import_plan_v001.md` et `docs/maps/dev_world_contributor_pack_v001/import_plan_v001.json` avec 12/12 cartes pretes structurellement, 0 carte bloquee, grille `24x24` et statut des placeholders contributeur.

### Notes
- Ajout du mode `--plan-map-contributor-import` a `IsoTactica.AssetPipeline` pour preparer l'import futur du pack contributeur maps sans modifier les JSON runtime.
- Ajout de l'option `--map-contributor-import-plan-output` pour rediriger le rapport Markdown de dry-run.
- Generation de `docs/maps/dev_world_contributor_pack_v001/import_plan_v001.md` et `docs/maps/dev_world_contributor_pack_v001/import_plan_v001.json` avec 12/12 cartes pretes structurellement, 0 carte bloquee, grille `24x24` et statut des placeholders contributeur.
- Ajout du menu Unity Editor `IsoTactica/Cartes/Planifier import pack contributeur maps` et du bouton `Plan import` dans l'editeur de cartes dev.
- Ajout d'un test Unity EditMode qui couvre le Markdown, le JSON et l'export disque du plan d'import contributeur.
- Documentation du dry-run dans `tools/README.md` et dans le README du pack contributeur maps.
- Validation locale de tranche : build `IsoTactica.AssetPipeline` OK, `--plan-map-contributor-import` OK, `--validate-map-contributor-pack` OK, `--validate-content` OK, tests partages et launcher OK, Unity EditMode 7/7, Unity PlayMode 13/13 ; Docker/PostgreSQL reste bloque par le daemon Docker Windows arrete dans la session courante.
- Ajout de `docs/playtests/local_map_contributor_import_plan_v001.md` pour consigner le dry-run d'import du pack contributeur maps.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.044</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.044</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.044</guid>
            <pubDate>Tue, 05 May 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· `--isotactica-visual-smoke` charge maintenant une preview locale de `WorldScene` avec la clairiere dev `24x24`, sans serveur, avant de capturer le PNG. · Ajout de `PackagedVisualSmokePreviewFactory` pour produire un `world.snapshot` local representatif : map `world_0_0`, joueur `UnityDev-01`, ressources, interactifs, sorties cardinales et contexte de carte monde 3x3. · Ajout de `WorldScenePresenter.RenderSnapshot` pour permettre au bootstrap de rendre explicitement un snapshot de preview package.

### Notes
- `--isotactica-visual-smoke` charge maintenant une preview locale de `WorldScene` avec la clairiere dev `24x24`, sans serveur, avant de capturer le PNG.
- Ajout de `PackagedVisualSmokePreviewFactory` pour produire un `world.snapshot` local representatif : map `world_0_0`, joueur `UnityDev-01`, ressources, interactifs, sorties cardinales et contexte de carte monde 3x3.
- Ajout de `WorldScenePresenter.RenderSnapshot` pour permettre au bootstrap de rendre explicitement un snapshot de preview package.
- Extension des tests Unity PlayMode pour couvrir l'activation de preview monde et la structure du snapshot de clairiere.
- Validation finale de tranche : Unity PlayMode 13/13, Unity EditMode 6/6, build Windows dev OK, capture packagee monde OK en `1920x1080` avec sortie code `0`, `1358` couleurs echantillonnees et `4095/4096` samples visibles.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.044-dev` avec 235 fichiers packages ; `Assembly-CSharp.dll` hashe vers `93A291E327C7D602CB7FF8B0DA9BFC370793CC6511E9C637E6A762F0D2F10143` et `data.unity3d` hashe vers `8AB5C2D9F7F2EE2E3F275FAE0A0E743F45CA7DA7D4763BABED040610F19277FA`.
- Ajout de `docs/playtests/local_packaged_world_preview_smoke_v001.md` pour consigner le smoke visuel package qui rend la map au lieu de l'ecran de demarrage.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.043</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.043</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.043</guid>
            <pubDate>Mon, 04 May 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout d'un mode de smoke visuel au client Unity package via `--isotactica-screenshot`, `--isotactica-screenshot-delay`, `--isotactica-visual-smoke` et `--isotactica-quit-after-screenshot`. · Le bootstrap client capture maintenant une image apres chargement du player, cree le dossier cible si besoin, verifie l'ecriture du PNG et peut quitter automatiquement avec un code de succes ou d'erreur. · Ajout de tests Unity PlayMode pour proteger le parseur d'arguments de smoke visuel, en respectant le style de tests par reflection de l'assembly `Assembly-CSharp`.

### Notes
- Ajout d'un mode de smoke visuel au client Unity package via `--isotactica-screenshot`, `--isotactica-screenshot-delay`, `--isotactica-visual-smoke` et `--isotactica-quit-after-screenshot`.
- Le bootstrap client capture maintenant une image apres chargement du player, cree le dossier cible si besoin, verifie l'ecriture du PNG et peut quitter automatiquement avec un code de succes ou d'erreur.
- Ajout de tests Unity PlayMode pour proteger le parseur d'arguments de smoke visuel, en respectant le style de tests par reflection de l'assembly `Assembly-CSharp`.
- Validation finale de tranche : Unity PlayMode 11/11, Unity EditMode 6/6, build Windows dev OK, capture packagee visible OK en `1920x1080` avec sortie code `0`.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.043-dev` avec 235 fichiers packages ; `Assembly-CSharp.dll` hashe vers `F6A471F6D9083AF0C0245CB7807E8EB4167BA565928492A51CDDAB51A85DA1A7` et `data.unity3d` hashe vers `97F6E564970E8E228C7D316209F733EBA2CD758A148290693871F54A98567BF8`.
- Ajout de `docs/playtests/local_packaged_visual_smoke_v001.md` pour consigner la capture automatique du client package et la limite des lancements caches qui produisent un PNG noir dans l'environnement courant.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.042</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.042</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.042</guid>
            <pubDate>Sun, 03 May 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du mode `--validate-map-contributor-pack` a `IsoTactica.AssetPipeline` pour verifier le README, le manifest JSON, les 12 fiches maps, la grille `24x24`, les IDs de cartes et les 37 assets de palette du pack contributeur. · Ajout de l'option `--map-contributor-pack-input` pour valider un pack depuis un autre dossier. · Ajout du menu Unity Editor `IsoTactica/Cartes/Valider pack contributeur maps`, du bouton `Valider pack` dans l'editeur de cartes dev et de la validation `DevMapEditorData.ValidateMapContributorPack`.

### Notes
- Ajout du mode `--validate-map-contributor-pack` a `IsoTactica.AssetPipeline` pour verifier le README, le manifest JSON, les 12 fiches maps, la grille `24x24`, les IDs de cartes et les 37 assets de palette du pack contributeur.
- Ajout de l'option `--map-contributor-pack-input` pour valider un pack depuis un autre dossier.
- Ajout du menu Unity Editor `IsoTactica/Cartes/Valider pack contributeur maps`, du bouton `Valider pack` dans l'editeur de cartes dev et de la validation `DevMapEditorData.ValidateMapContributorPack`.
- Ajout d'une couverture Unity EditMode qui exporte puis valide le pack contributeur maps genere.
- Validation finale de tranche : export pack contributeur OK, validation pack contributeur CLI OK, validation contenu CLI OK, tests partages 37/37, tests launcher 8/8, launcher `--check-only` OK, Unity EditMode 6/6 et Unity PlayMode 8/8.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.042-dev` avec 249 fichiers packages ; `Assembly-CSharp.dll` hashe vers `9F9D7F6489233CAAC8F368F2A122103290A41C392D71A50564C22A7CCD600267`, `globalgamemanagers` hashe vers `5566BC41E8F067599C352A75C1A546DEDCB3769B338ED6025FCB7F19835E9373` et `level0` hashe vers `525126DFE61065C9EBB8B0F015100BD6C798E0A482BCDD7BA9B9B6D73DDC84E4`.
- Ajout de `docs/playtests/local_map_contributor_pack_validation_v001.md` pour consigner la validation CLI et Unity Editor du pack contributeur maps.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.041</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.041</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.041</guid>
            <pubDate>Sat, 02 May 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du mode `--export-map-contributor-pack` a `IsoTactica.AssetPipeline` pour generer un pack de specs maps en francais depuis les cartes authorees. · Ajout de l'option `--map-contributor-pack-output` pour rediriger ce pack vers un autre dossier. · Generation de `docs/maps/dev_world_contributor_pack_v001/README.md`, `docs/maps/dev_world_contributor_pack_v001/map_authoring_pack_v001.json` et 12 fiches Markdown sous `docs/maps/dev_world_contributor_pack_v001/cartes/`.

### Notes
- Ajout du mode `--export-map-contributor-pack` a `IsoTactica.AssetPipeline` pour generer un pack de specs maps en francais depuis les cartes authorees.
- Ajout de l'option `--map-contributor-pack-output` pour rediriger ce pack vers un autre dossier.
- Generation de `docs/maps/dev_world_contributor_pack_v001/README.md`, `docs/maps/dev_world_contributor_pack_v001/map_authoring_pack_v001.json` et 12 fiches Markdown sous `docs/maps/dev_world_contributor_pack_v001/cartes/`.
- Ajout du menu Unity Editor `IsoTactica/Cartes/Exporter pack contributeur maps` et du bouton `Pack maps` dans l'editeur de cartes dev.
- Documentation du mode CLI de pack contributeur dans `tools/README.md`.
- Validation finale de tranche : export pack contributeur CLI et Unity Editor OK, validation contenu CLI OK, tests partages 37/37, tests launcher 8/8, launcher `--check-only` OK, Unity EditMode 5/5 et Unity PlayMode 8/8.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.041-dev` avec 249 fichiers packages ; `Assembly-CSharp.dll` hashe vers `9F9D7F6489233CAAC8F368F2A122103290A41C392D71A50564C22A7CCD600267`, `globalgamemanagers` hashe vers `8A799334040374D45D6EBBFA26C1CF213FBACAD06E838A12CADCE5BA0495D511` et `level0` hashe vers `525126DFE61065C9EBB8B0F015100BD6C798E0A482BCDD7BA9B9B6D73DDC84E4`.
- Ajout de `docs/playtests/local_map_contributor_pack_cli_v001.md` pour consigner la generation du pack contributeur maps.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.040</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.040</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.040</guid>
            <pubDate>Fri, 01 May 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du mode `--export-map-authoring-index` a `IsoTactica.AssetPipeline` pour generer `docs/maps/dev_world_authoring_index_v001.md` sans ouvrir Unity. · Ajout de l'option `--map-authoring-index-output` pour rediriger l'export d'index vers un autre fichier. · Documentation du mode CLI d'index authoring dans `tools/README.md`.

### Notes
- Ajout du mode `--export-map-authoring-index` a `IsoTactica.AssetPipeline` pour generer `docs/maps/dev_world_authoring_index_v001.md` sans ouvrir Unity.
- Ajout de l'option `--map-authoring-index-output` pour rediriger l'export d'index vers un autre fichier.
- Documentation du mode CLI d'index authoring dans `tools/README.md`.
- Validation locale : `dotnet build --no-restore tools/IsoTactica.AssetPipeline` reussit et `IsoTactica.AssetPipeline --export-map-authoring-index` regenere l'index avec 12 cartes, 9 cartes monde et 3 interieurs.
- Validation finale de tranche : tests launcher 8/8, tests partages 37/37, validation contenu CLI OK, Unity EditMode 4/4 et Unity PlayMode 8/8 apres reouverture de l'Editor.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.040-dev` avec 235 fichiers packages ; `Assembly-CSharp.dll` hashe vers `9F9D7F6489233CAAC8F368F2A122103290A41C392D71A50564C22A7CCD600267` et `data.unity3d` hashe vers `C0015F41997317E9C7D8717EC0C4ED705DE27A5D2FDF4BADEF5D9AB7B283CC97`.
- Ajout de `docs/playtests/local_asset_pipeline_authoring_index_cli_v001.md` pour consigner l'export d'index authoring par CLI.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.039</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.039</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.039</guid>
            <pubDate>Thu, 30 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de l'export Unity `IsoTactica/Cartes/Exporter index authoring monde dev`, qui genere `docs/maps/dev_world_authoring_index_v001.md` depuis les JSON authorés. · L'editeur de cartes expose maintenant le bouton `Index maps` pour produire l'index sans ouvrir chaque fichier JSON a la main. · L'index resume les 12 cartes chargees, dont les 9 cartes monde et 3 interieurs, avec coordonnees, voisins, transitions, ressources, interactifs et props.

### Notes
- Ajout de l'export Unity `IsoTactica/Cartes/Exporter index authoring monde dev`, qui genere `docs/maps/dev_world_authoring_index_v001.md` depuis les JSON authorés.
- L'editeur de cartes expose maintenant le bouton `Index maps` pour produire l'index sans ouvrir chaque fichier JSON a la main.
- L'index resume les 12 cartes chargees, dont les 9 cartes monde et 3 interieurs, avec coordonnees, voisins, transitions, ressources, interactifs et props.
- Ajout du test Unity EditMode `WorldAuthoringIndexMarkdownCoversMapsAndInteriors` pour proteger la couverture de cet export.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.039-dev` avec 235 fichiers packages ; `Assembly-CSharp.dll` hashe vers `9F9D7F6489233CAAC8F368F2A122103290A41C392D71A50564C22A7CCD600267` et `data.unity3d` hashe vers `937E83CBFAE07D2E3DF4C455C57BD3E90B15788D775BE9897F6EB5DF0F0F0034`.
- Ajout de `docs/playtests/local_unity_authoring_index_build_v001.md` pour consigner l'export d'index, les validations Unity et le build de cette tranche.
- Validation locale de tranche : Unity EditMode 4/4, Unity PlayMode 8/8, tests partages 37/37, tests launcher 8/8 et validation contenu CLI OK.
- Ajout de `docs/playtests/local_packaged_client_headless_boot_v001.md` pour consigner un smoke de demarrage headless du client package ; le processus quitte en code `0`, mais le journal Unity n'a pas pu etre recupere dans l'environnement courant.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.038</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.038</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.038</guid>
            <pubDate>Wed, 29 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de `DevMapEditorData.ValidateEditorPresetContracts`, qui verifie que les presets ressources, interactifs et rencontres de l'editeur de cartes restent adosses a la palette de props. · L'editeur de cartes ajoute maintenant ces controles aux avertissements de validation, afin de reperer directement les props absents, presets vides ou ressources sans visuel avant export. · Ajout du test Unity EditMode `EditorPresetContractsStayBackedByPaletteAndCatalog`, qui protege les 12 presets ressources, les 7 presets interactifs et les presets de rencontres issus du catalogue.

### Notes
- Ajout de `DevMapEditorData.ValidateEditorPresetContracts`, qui verifie que les presets ressources, interactifs et rencontres de l'editeur de cartes restent adosses a la palette de props.
- L'editeur de cartes ajoute maintenant ces controles aux avertissements de validation, afin de reperer directement les props absents, presets vides ou ressources sans visuel avant export.
- Ajout du test Unity EditMode `EditorPresetContractsStayBackedByPaletteAndCatalog`, qui protege les 12 presets ressources, les 7 presets interactifs et les presets de rencontres issus du catalogue.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.038-dev` avec 235 fichiers packages ; `Assembly-CSharp.dll` hashe vers `9F9D7F6489233CAAC8F368F2A122103290A41C392D71A50564C22A7CCD600267` et `data.unity3d` hashe vers `70D24E441A3F10D920BA4E1D7C73E7D6CD06BCB05863134866F65E3CF128BAAF`.
- Ajout de `docs/playtests/local_unity_editor_preset_validation_build_v001.md` pour consigner les validations Unity, le build Windows dev et la verification launcher de cette tranche.
- Validation locale de tranche : Unity EditMode 3/3, Unity PlayMode 8/8, tests partages 37/37, tests launcher 8/8 et validation contenu CLI OK.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.037</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.037</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.037</guid>
            <pubDate>Tue, 28 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de trois recettes cataloguees pour exploiter davantage les ressources deja placees sur les cartes dev : `flax_field_bandage`, `driftwood_repair_plank` et `clay_route_seal`. · Ajout des objets `crafted_flax_bandage`, `crafted_driftwood_plank` et `crafted_clay_route_seal` dans `items_v001.json`, avec `Bandelette de Lin` utilisable en combat pour un soin leger. · Ajout de `interior_village_house_01` et `interior_village_house_02`, deux interieurs `24x24` pour les portes de maisons deja placees sur la carte village.

### Notes
- Ajout de trois recettes cataloguees pour exploiter davantage les ressources deja placees sur les cartes dev : `flax_field_bandage`, `driftwood_repair_plank` et `clay_route_seal`.
- Ajout des objets `crafted_flax_bandage`, `crafted_driftwood_plank` et `crafted_clay_route_seal` dans `items_v001.json`, avec `Bandelette de Lin` utilisable en combat pour un soin leger.
- Ajout de `interior_village_house_01` et `interior_village_house_02`, deux interieurs `24x24` pour les portes de maisons deja placees sur la carte village.
- Synchronisation des miroirs Unity `Resources/Crafting` et `Resources/Items`, plus extension du fallback serveur pour garder ces recettes disponibles si les catalogues JSON sont absents.
- Extension des tests shared pour verifier 11 recettes, 27 objets, les nouvelles references de ressources secondaires et les effets d'objet associes.
- Ajout du test shared `VillageHouseInteriorsValidateAndLinkBack`, qui valide les deux interieurs villageois, leur dressing minimal, leur sortie retour et leurs portes exterieures correspondantes.
- Extension de `IsoTactica.AssetPipeline --validate-content` pour verifier que chaque `stationKind` de recette existe comme interactable place sur une carte authorée.
- Extension de `IsoTactica.AssetPipeline --validate-content` pour verifier les `useEffects` des objets : effet supporte, scope `combat`, montant positif et restriction aux consommables.
- Extension de `IsoTactica.AssetPipeline --validate-content` pour verifier que chaque prop pose sur les cartes reference un asset de `dev_prop_palette_v001.json` et que chaque `spriteResource` de palette existe dans Unity `Resources/Sprites`.
- Extension de `IsoTactica.AssetPipeline --validate-content` pour verifier la reciprocite des voisins, les coordonnees monde attendues et la presence d'une transition retour entre cartes connectees.
- Extension de `IsoTactica.AssetPipeline --validate-content` pour verifier que les portes ciblent exactement une carte ou un interieur existant.
- Ajout de `docs/playtests/local_content_validation_cli_v005.md` pour consigner la validation contenu avec les nouveaux totaux.
- Ajout de `docs/playtests/local_village_house_interior_smoke_v001.md` apres une fumee WebSocket en memoire validant la transition village -> interieur de maison -> retour village dans le flux complet deux clients.
- Reconstruction du client de developpement Windows et regeneration de `build/updates/dev/manifest.json` en `0.00.037-dev` avec 235 fichiers packages ; `Assembly-CSharp.dll` hashe vers `9F9D7F6489233CAAC8F368F2A122103290A41C392D71A50564C22A7CCD600267` et `data.unity3d` hashe vers `44AC2ECE1F8435E7546B5405E1A09D37CD77607F937AD78D015DC2D6D4171F58`.
- Ajout de `docs/playtests/local_unity_build_manifest_v001.md` pour consigner les tests Unity EditMode/PlayMode, le build Windows dev et la verification launcher du manifest `0.00.037-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.036</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.036</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.036</guid>
            <pubDate>Mon, 27 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Extension de `IsoTactica.AssetPipeline --validate-content` pour charger `classes_v001.json` et valider les references entre classes et sorts de depart. · Le validateur verifie les metadonnees de classe, l'unicite des sorts de depart, l'existence des sorts references et leur appartenance a la classe attendue. · La sortie de validation contenu affiche maintenant le nombre de classes couvertes.

### Notes
- Extension de `IsoTactica.AssetPipeline --validate-content` pour charger `classes_v001.json` et valider les references entre classes et sorts de depart.
- Le validateur verifie les metadonnees de classe, l'unicite des sorts de depart, l'existence des sorts references et leur appartenance a la classe attendue.
- La sortie de validation contenu affiche maintenant le nombre de classes couvertes.
- Ajout de `docs/playtests/local_content_validation_cli_v004.md` pour consigner la validation contenu avec couverture des classes.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.035</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.035</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.035</guid>
            <pubDate>Sun, 26 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Extension de `IsoTactica.AssetPipeline --validate-content` pour charger `npcs_v001.json` et valider les references PNJ vers cartes, interactables de carte, quetes, boutiques et chemins `Sprites/`. · La sortie de validation contenu affiche maintenant le nombre de PNJ couverts. · Ajout de `docs/playtests/local_content_validation_cli_v003.md` pour consigner la validation contenu avec couverture PNJ.

### Notes
- Extension de `IsoTactica.AssetPipeline --validate-content` pour charger `npcs_v001.json` et valider les references PNJ vers cartes, interactables de carte, quetes, boutiques et chemins `Sprites/`.
- La sortie de validation contenu affiche maintenant le nombre de PNJ couverts.
- Ajout de `docs/playtests/local_content_validation_cli_v003.md` pour consigner la validation contenu avec couverture PNJ.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.034</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.034</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.034</guid>
            <pubDate>Sat, 25 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Extension de `IsoTactica.AssetPipeline --validate-content` pour comparer les catalogues traites `assets/processed` avec leurs miroirs Unity `Resources` byte par byte. · La validation CLI couvre maintenant 10 miroirs Unity : cartes monde, recettes, objets, sorts, classes, ennemis, rencontres, quetes, boutiques et PNJ. · Ajout de `docs/playtests/local_content_validation_cli_v002.md` pour consigner la validation contenu avec couverture des miroirs Unity.

### Notes
- Extension de `IsoTactica.AssetPipeline --validate-content` pour comparer les catalogues traites `assets/processed` avec leurs miroirs Unity `Resources` byte par byte.
- La validation CLI couvre maintenant 10 miroirs Unity : cartes monde, recettes, objets, sorts, classes, ennemis, rencontres, quetes, boutiques et PNJ.
- Ajout de `docs/playtests/local_content_validation_cli_v002.md` pour consigner la validation contenu avec couverture des miroirs Unity.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.033</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.033</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.033</guid>
            <pubDate>Fri, 24 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du mode `--validate-content` a `IsoTactica.AssetPipeline`, qui valide les cartes monde/interieur et les catalogues traites sans generer d'assets. · La validation CLI verifie les cartes via `MapValidationRules`, les voisins/transitions, les ressources vers catalogue d'objets, les recettes, boutiques, quetes, rencontres, ennemis, sorts, GUIDs de combattants, renforts, effets de terrain et objectifs tactiques. · Documentation de la commande dans `tools/README.md` pour fournir un check contenu simple avant les futurs exports de l'editeur de maps.

### Notes
- Ajout du mode `--validate-content` a `IsoTactica.AssetPipeline`, qui valide les cartes monde/interieur et les catalogues traites sans generer d'assets.
- La validation CLI verifie les cartes via `MapValidationRules`, les voisins/transitions, les ressources vers catalogue d'objets, les recettes, boutiques, quetes, rencontres, ennemis, sorts, GUIDs de combattants, renforts, effets de terrain et objectifs tactiques.
- Documentation de la commande dans `tools/README.md` pour fournir un check contenu simple avant les futurs exports de l'editeur de maps.
- Validation locale reussie : 10 cartes, 24 objets, 8 recettes, 1 boutique, 1 quete, 1 rencontre, 4 ennemis et 3 sorts.
- Ajout de `docs/playtests/local_content_validation_cli_v001.md` pour consigner cette validation outil.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.032</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.032</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.032</guid>
            <pubDate>Thu, 23 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du test shared `EncounterReferencesStayValid`, qui verifie les references entre quetes, rencontres, ennemis, sorts et ancres de rencontre placees sur les cartes monde. · Le garde-fou valide les IDs uniques des ennemis, rencontres et sorts, les recompenses de quete positives, les GUIDs de combattants authores et les sorts d'effet d'ouverture/terrain/renfort. · Les objectifs tactiques doivent maintenant cibler un ennemi effectivement present dans la rencontre via ennemi principal, spawn ou renfort authoré.

### Notes
- Ajout du test shared `EncounterReferencesStayValid`, qui verifie les references entre quetes, rencontres, ennemis, sorts et ancres de rencontre placees sur les cartes monde.
- Le garde-fou valide les IDs uniques des ennemis, rencontres et sorts, les recompenses de quete positives, les GUIDs de combattants authores et les sorts d'effet d'ouverture/terrain/renfort.
- Les objectifs tactiques doivent maintenant cibler un ennemi effectivement present dans la rencontre via ennemi principal, spawn ou renfort authoré.
- Mise a jour de `tools/README.md` pour documenter la suite shared comme validation contenu authorable en attendant un outil CLI dedie.
- La suite shared passe maintenant a 36 tests reussis sur 36.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.031</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.031</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.031</guid>
            <pubDate>Wed, 22 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du test shared `CatalogReferencesStayValid`, qui verifie les IDs uniques des catalogues objets, recettes, quetes et boutiques. · Le nouveau garde-fou valide que les ingredients et sorties de craft pointent vers des objets existants, que les types de sortie correspondent au catalogue d'objets et que les quantites restent positives. · Le meme controle verifie que les boutiques vendent uniquement des objets existants, utilisent des couts positifs et ne referencent que des quetes connues avec un statut supporte.

### Notes
- Ajout du test shared `CatalogReferencesStayValid`, qui verifie les IDs uniques des catalogues objets, recettes, quetes et boutiques.
- Le nouveau garde-fou valide que les ingredients et sorties de craft pointent vers des objets existants, que les types de sortie correspondent au catalogue d'objets et que les quantites restent positives.
- Le meme controle verifie que les boutiques vendent uniquement des objets existants, utilisent des couts positifs et ne referencent que des quetes connues avec un statut supporte.
- La suite shared passe maintenant a 35 tests reussis sur 35.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.030</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.030</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.030</guid>
            <pubDate>Tue, 21 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du test launcher `UpdaterDownloadsHttpFilesAndWritesLocalManifest`, qui demarre un serveur HTTP loopback statique, charge un manifest via `ManifestLoader.LoadFromUriAsync`, telecharge deux fichiers client par `LauncherUpdater`, verifie SHA-256, cache manifest/version et progression de fin. · La suite launcher passe a 8 tests reussis sur 8 et couvre maintenant le chemin distant HTTP en plus du chemin local fichier. · Mise a jour de la roadmap launcher : la validation end-to-end contre une source de mise a jour distante est couverte localement ; le restant principal de phase launcher reste la coque Avalonia finale.

### Notes
- Ajout du test launcher `UpdaterDownloadsHttpFilesAndWritesLocalManifest`, qui demarre un serveur HTTP loopback statique, charge un manifest via `ManifestLoader.LoadFromUriAsync`, telecharge deux fichiers client par `LauncherUpdater`, verifie SHA-256, cache manifest/version et progression de fin.
- La suite launcher passe a 8 tests reussis sur 8 et couvre maintenant le chemin distant HTTP en plus du chemin local fichier.
- Mise a jour de la roadmap launcher : la validation end-to-end contre une source de mise a jour distante est couverte localement ; le restant principal de phase launcher reste la coque Avalonia finale.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.029</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.029</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.029</guid>
            <pubDate>Mon, 20 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de `willow_waymarker` / `Jalon de Saule`, une recette de bucheron niveau 2 consommant `resource_willow_wood` a l'`Etabli de bois`. · Ajout de `crafted_willow_waymarker` / `Jalon de Saule` au catalogue d'objets comme objet cle de progression non consommable. · Synchronisation des miroirs Unity `Resources/Crafting/crafting_recipes_v001.json` et `Resources/Items/items_v001.json` avec les catalogues traites.

### Notes
- Ajout de `willow_waymarker` / `Jalon de Saule`, une recette de bucheron niveau 2 consommant `resource_willow_wood` a l'`Etabli de bois`.
- Ajout de `crafted_willow_waymarker` / `Jalon de Saule` au catalogue d'objets comme objet cle de progression non consommable.
- Synchronisation des miroirs Unity `Resources/Crafting/crafting_recipes_v001.json` et `Resources/Items/items_v001.json` avec les catalogues traites.
- Extension du fallback serveur de recettes et d'objets pour conserver le `Jalon de Saule` si les catalogues JSON sont absents.
- Extension des tests partages pour verifier 8 recettes, 24 objets, la recette `willow_waymarker` et son item de sortie.
- Extension de la fumee WebSocket deux clients pour recolter le saule tendre du marais, craft le `Jalon de Saule` apres le deblocage bucheron niveau 2 et verifier sa persistance.
- Ajout de `docs/playtests/local_willow_waymarker_smoke_v001.md` pour consigner cette validation protocole.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.028</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.028</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.028</guid>
            <pubDate>Sun, 19 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du menu Unity Editor `IsoTactica/Apercu/Capturer QA visuelle 1920x1080` pour generer une capture propre de la tranche jouable a la resolution de base `1920x1080`. · La capture rend `WorldScene` depuis la `Main Camera`, masque temporairement les panneaux debug qui recouvrent la carte, conserve la legende d'apercu et ecrit `Assets/Screenshots/visual_qa_playable_slice_1920x1080_v001.png`. · Ajout du test Unity EditMode `PlayableSlicePreviewEditModeTests.VisualQaCaptureProducesNonBlank1920x1080Png`, qui regenere la capture, verifie le PNG, ses dimensions `1920x1080` et un contenu visuel non uniforme.

### Notes
- Ajout du menu Unity Editor `IsoTactica/Apercu/Capturer QA visuelle 1920x1080` pour generer une capture propre de la tranche jouable a la resolution de base `1920x1080`.
- La capture rend `WorldScene` depuis la `Main Camera`, masque temporairement les panneaux debug qui recouvrent la carte, conserve la legende d'apercu et ecrit `Assets/Screenshots/visual_qa_playable_slice_1920x1080_v001.png`.
- Ajout du test Unity EditMode `PlayableSlicePreviewEditModeTests.VisualQaCaptureProducesNonBlank1920x1080Png`, qui regenere la capture, verifie le PNG, ses dimensions `1920x1080` et un contenu visuel non uniforme.
- Extension des tests launcher avec `ProjectVersionDocsStayAligned`, qui verifie l'alignement `CHANGELOG.md` / `README.md` / `appsettings.json` / docs launcher et documente explicitement tout retard temporaire du manifest dev.
- Extension des tests launcher avec `UnityVisibleTextLabelsStayFrench`, qui empeche le retour des anciens libelles visibles anglais dans `WorldScene`, `Phase1SceneBuilder` et `PlayableSlicePreview`.
- Traduction en francais des libelles statiques visibles de `WorldScene` et des defaults `Phase1SceneBuilder` encore en anglais.
- Ajout de `docs/playtests/local_unity_visual_qa_1920x1080_editmode_v001.md` pour consigner la validation visuelle automatisee.
- Ajout de `docs/playtests/local_visual_qa_version_smoke_v001.md` apres une fumee WebSocket deux clients en memoire sur serveur `0.00.028`, couvrant deplacements, transitions, recolte/craft multi-metiers, combat, boutique, consommables et presence live.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.027</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.027</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.027</guid>
            <pubDate>Sat, 18 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout d'une suite Unity EditMode `IsoTactica.Client.EditModeTests` pour couvrir les outils Editor sans les coupler directement aux classes internes. · Ajout du test `DevMapEditorDataEditModeTests.LinkedWorldMapDraftCreatesValidatedReciprocalNeighbor`, qui verifie qu'une carte voisine generee depuis `world_0_0` vers `north` produit `world_0_-1`, reste en 24x24, ajoute voisin/transition retour et passe `ValidateMap` sans probleme. · Validation Unity EditMode via MCP : 1 test execute, 1 reussi, 0 echec.

### Notes
- Ajout d'une suite Unity EditMode `IsoTactica.Client.EditModeTests` pour couvrir les outils Editor sans les coupler directement aux classes internes.
- Ajout du test `DevMapEditorDataEditModeTests.LinkedWorldMapDraftCreatesValidatedReciprocalNeighbor`, qui verifie qu'une carte voisine generee depuis `world_0_0` vers `north` produit `world_0_-1`, reste en 24x24, ajoute voisin/transition retour et passe `ValidateMap` sans probleme.
- Validation Unity EditMode via MCP : 1 test execute, 1 reussi, 0 echec.
- Ajout de `docs/playtests/local_unity_map_editor_neighbor_editmode_v001.md` pour consigner cette couverture permanente.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.027-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.026</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.026</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.026</guid>
            <pubDate>Fri, 17 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout d'un flux `Creer + lier` dans l'editeur de cartes dev : un bouton de carte voisine manquante genere un JSON `world_x_y` 24x24 adjacent au lieu de rester simplement grise. · La creation de carte voisine ajoute la transition sortante sur la carte courante, sauvegarde la carte source, cree la carte cible avec voisin et transition de retour, puis charge la nouvelle carte dans l'editeur. · Ajout de helpers `DevMapEditorData` pour construire les IDs/chemins de cartes monde et generer une carte adjacente coherente avec la convention HG/ouest, HD/nord, BD/est, BG/sud.

### Notes
- Ajout d'un flux `Creer + lier` dans l'editeur de cartes dev : un bouton de carte voisine manquante genere un JSON `world_x_y` 24x24 adjacent au lieu de rester simplement grise.
- La creation de carte voisine ajoute la transition sortante sur la carte courante, sauvegarde la carte source, cree la carte cible avec voisin et transition de retour, puis charge la nouvelle carte dans l'editeur.
- Ajout de helpers `DevMapEditorData` pour construire les IDs/chemins de cartes monde et generer une carte adjacente coherente avec la convention HG/ouest, HD/nord, BD/est, BG/sud.
- Validation Unity Editor par execution MCP : generation de `world_0_-1` depuis `world_0_0`, coordonnees `0,-1` et `0` probleme de validation.
- Ajout de `docs/playtests/local_unity_map_editor_neighbor_create_v001.md` pour consigner la validation editeur.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.026-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.025</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.025</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.025</guid>
            <pubDate>Thu, 16 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Correction du flux `route.shop.purchase` Unity pour remettre `IsRouteShopPurchaseInFlight` a `false` avant les notifications UI d'achat accepte ou refuse. · Ajout d'un refresh local de `WorldSnapshotChanged` a la fin du flux boutique afin que le panneau PNJ ne reste pas bloque sur le libelle `Achat` apres une reponse. · Le bouton boutique PNJ tient maintenant compte de l'etat de quete `route_relay_badge:purchased` au moment du clic, pas seulement de l'objet en inventaire, pour eviter de reproposer le badge avant la trousse.

### Notes
- Correction du flux `route.shop.purchase` Unity pour remettre `IsRouteShopPurchaseInFlight` a `false` avant les notifications UI d'achat accepte ou refuse.
- Ajout d'un refresh local de `WorldSnapshotChanged` a la fin du flux boutique afin que le panneau PNJ ne reste pas bloque sur le libelle `Achat` apres une reponse.
- Le bouton boutique PNJ tient maintenant compte de l'etat de quete `route_relay_badge:purchased` au moment du clic, pas seulement de l'objet en inventaire, pour eviter de reproposer le badge avant la trousse.
- Renommage du handler interne Unity en `BuyNextRouteShopItem` pour refleter l'enchainement Badge -> Trousse -> Fiole -> Charme.
- Extension de la couverture Unity PlayMode avec un test dedie au deblocage du bouton boutique apres completion d'achat ; suite portee a 8 tests reussis sur 8.
- Ajout de `docs/playtests/local_unity_route_shop_completion_playmode_v001.md` pour consigner cette validation.
- Reconstruction du client Windows dev et regeneration de `build/updates/dev/manifest.json` en `0.00.025-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.024</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.024</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.024</guid>
            <pubDate>Wed, 15 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Extension du panneau PNJ Unity pour afficher les quatre achats de la `Boutique du Relais` : `Badge de Relais`, `Trousse du Relais`, `Fiole de Garde` et `Charme de Garde`. · Le bouton d'achat Unity enchaine maintenant les achats authorises `route_relay_badge` -> `route_healer_kit` -> `route_focus_vial` -> `route_guard_charm`, au lieu de s'arreter apres la trousse. · Ajout du libelle d'effet `grant_guard` dans `ItemCatalogLookup`, avec suffixe `Garde -2 degats` pour l'inventaire et la selection de consommable.

### Notes
- Extension du panneau PNJ Unity pour afficher les quatre achats de la `Boutique du Relais` : `Badge de Relais`, `Trousse du Relais`, `Fiole de Garde` et `Charme de Garde`.
- Le bouton d'achat Unity enchaine maintenant les achats authorises `route_relay_badge` -> `route_healer_kit` -> `route_focus_vial` -> `route_guard_charm`, au lieu de s'arreter apres la trousse.
- Ajout du libelle d'effet `grant_guard` dans `ItemCatalogLookup`, avec suffixe `Garde -2 degats` pour l'inventaire et la selection de consommable.
- Correction du statut runtime `inventory.use` Unity pour afficher la garde defensive au lieu de traiter tout effet non-PA comme un soin PV.
- Extension de la couverture Unity PlayMode pour verifier la boutique complete, le statut Fiole/Charme et le libelle `Charme de Garde (Garde -2 degats)`.
- Ajout de `docs/playtests/local_unity_route_guard_charm_ui_playmode_v001.md` pour consigner la validation UI.
- Reconstruction du client Windows dev et regeneration de `build/updates/dev/manifest.json` en `0.00.024-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.023</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.023</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.023</guid>
            <pubDate>Tue, 14 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de `route_guard_charm` / `Charme de Garde` au catalogue d'objets comme consommable de combat appliquant `grant_guard` pour poser une garde d'ancre sur la case du joueur. · Extension de `route_guard_shop` / `Boutique du Relais` avec un quatrieme achat authorise par catalogue, coute `1` `route_marks` et verrouille par `routes_guard_stabilize:completed`. · Ajout de la resolution serveur de la garde d'ancre pendant les tours ennemis : les attaques sur la case protegee produisent le log `guard_absorb` et reduisent les degats.

### Notes
- Ajout de `route_guard_charm` / `Charme de Garde` au catalogue d'objets comme consommable de combat appliquant `grant_guard` pour poser une garde d'ancre sur la case du joueur.
- Extension de `route_guard_shop` / `Boutique du Relais` avec un quatrieme achat authorise par catalogue, coute `1` `route_marks` et verrouille par `routes_guard_stabilize:completed`.
- Ajout de la resolution serveur de la garde d'ancre pendant les tours ennemis : les attaques sur la case protegee produisent le log `guard_absorb` et reduisent les degats.
- Synchronisation des miroirs Unity `Resources/Items/items_v001.json` et `Resources/Shops/shops_v001.json` avec les catalogues traites, plus fallback serveur equivalent.
- Extension des tests partages et du smoke deux clients pour valider l'achat, la persistance, l'usage combat, la consommation et la reduction de degats du `Charme de Garde`.
- Ajout de `docs/playtests/local_route_guard_charm_smoke_v001.md` pour consigner la fumee protocole de cette tranche.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.023-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.022</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.022</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.022</guid>
            <pubDate>Mon, 13 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Traduction en francais des libelles `report.Pass(...)` du smoke deux clients afin que les rapports `docs/playtests/*.md` soient generes directement en FR. · Mise a jour du resume console du smoke et du texte d'aide CLI pour eviter les sorties humaines anglaises. · Extension des notes de portee generees par `SmokeReport` pour mentionner les deux renforts scriptes et les trois objectifs tactiques de `routes_guard_relay`.

### Notes
- Traduction en francais des libelles `report.Pass(...)` du smoke deux clients afin que les rapports `docs/playtests/*.md` soient generes directement en FR.
- Mise a jour du resume console du smoke et du texte d'aide CLI pour eviter les sorties humaines anglaises.
- Extension des notes de portee generees par `SmokeReport` pour mentionner les deux renforts scriptes et les trois objectifs tactiques de `routes_guard_relay`.
- Regeneration de `docs/playtests/local_second_reinforcement_smoke_v001.md` depuis le generateur corrige, sans traduction manuelle post-smoke.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.022-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.021</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.021</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.021</guid>
            <pubDate>Sun, 12 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de `enemy_porte_graine_relais` / `Porte-graine du Relais` au bestiaire de dev, avec comportement `hold_range_and_strike`, attaque `seed_bramble_spit` / `Graine mordante` et sprite combat authorise. · Extension de `routes_guard_relay` avec le renfort `relay_seedbearer_round_3`, declenche au round 3 avec effet d'ouverture `prism_bolt`. · Ajout de l'objectif tactique `cut_seedbearer_growth` / `Couper les pousses du relais`, actif des le demarrage et complete a la defaite du `Porte-graine du Relais`.

### Notes
- Ajout de `enemy_porte_graine_relais` / `Porte-graine du Relais` au bestiaire de dev, avec comportement `hold_range_and_strike`, attaque `seed_bramble_spit` / `Graine mordante` et sprite combat authorise.
- Extension de `routes_guard_relay` avec le renfort `relay_seedbearer_round_3`, declenche au round 3 avec effet d'ouverture `prism_bolt`.
- Ajout de l'objectif tactique `cut_seedbearer_growth` / `Couper les pousses du relais`, actif des le demarrage et complete a la defaite du `Porte-graine du Relais`.
- Synchronisation des miroirs Unity `Resources/Enemies/enemies_v001.json` et `Resources/Encounters/encounters_v001.json` avec les catalogues traites.
- Extension du fallback serveur pour conserver le nouveau renfort, ses stats et son objectif si les catalogues JSON sont absents.
- Extension des tests partages et du smoke deux clients pour valider les deux renforts scriptes, les trois objectifs tactiques et les logs/effects de rencontre.
- Ajout de `docs/playtests/local_second_reinforcement_smoke_v001.md` pour consigner la fumee protocole de cette tranche.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.021-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.020</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.020</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.020</guid>
            <pubDate>Sat, 11 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de `route_focus_vial` / `Fiole de Garde` au catalogue d'objets comme consommable de combat restaurant `2` PA via `restore_action_points`. · Extension de `route_guard_shop` / `Boutique du Relais` avec un troisieme achat authorise par catalogue, coute `6` `route_marks` et verrouille par `routes_guard_stabilize:completed`. · Synchronisation des miroirs Unity `Resources/Items/items_v001.json` et `Resources/Shops/shops_v001.json` avec les catalogues traites.

### Notes
- Ajout de `route_focus_vial` / `Fiole de Garde` au catalogue d'objets comme consommable de combat restaurant `2` PA via `restore_action_points`.
- Extension de `route_guard_shop` / `Boutique du Relais` avec un troisieme achat authorise par catalogue, coute `6` `route_marks` et verrouille par `routes_guard_stabilize:completed`.
- Synchronisation des miroirs Unity `Resources/Items/items_v001.json` et `Resources/Shops/shops_v001.json` avec les catalogues traites.
- Ajout du fallback serveur pour la `Fiole de Garde`, afin que le serveur garde une boutique coherente si les catalogues JSON sont absents.
- Extension du smoke deux clients : achat, persistance, rejet de doublon et utilisation combat de `route_focus_vial` apres depense de PA.
- Ajout de `docs/playtests/local_route_focus_vial_smoke_v001.md` pour consigner la fumee protocole de cette tranche.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.020-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.019</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.019</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.019</guid>
            <pubDate>Fri, 10 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout d'une couverture Unity PlayMode dediee au rendu de l'ancre de rencontre `routes_guard_relay_anchor` comme indicateur visuel `EncounterHint` sur carte authorisee. · Le snapshot de test authorise place maintenant l'ancre `kind=encounter` avec `requiredState=routes_guard_relay`, afin de verifier le meme contrat visuel que le runtime de carte. · Validation Unity PlayMode portee a 7 tests reussis sur 7, avec controle du sprite `routeworks_relay_shrine_v002` pour l'indicateur de rencontre.

### Notes
- Ajout d'une couverture Unity PlayMode dediee au rendu de l'ancre de rencontre `routes_guard_relay_anchor` comme indicateur visuel `EncounterHint` sur carte authorisee.
- Le snapshot de test authorise place maintenant l'ancre `kind=encounter` avec `requiredState=routes_guard_relay`, afin de verifier le meme contrat visuel que le runtime de carte.
- Validation Unity PlayMode portee a 7 tests reussis sur 7, avec controle du sprite `routeworks_relay_shrine_v002` pour l'indicateur de rencontre.
- Ajout de `docs/playtests/local_unity_encounter_hint_playmode_v001.md` pour consigner la validation Unity MCP de cette couverture.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.019-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.018</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.018</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.018</guid>
            <pubDate>Thu, 09 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Extension de la fumee protocole pour verifier le clic runtime sur `routes_guard_relay_anchor` apres completion de `routes_guard_stabilize`. · Le scenario valide maintenant que l'ancre de rencontre renvoie `interactable.use.rejected` avec la raison `quest_completed`, au lieu de relancer le combat depuis la carte. · Le chemin de smoke calcule une route jusqu'a l'ancre completee et prouve que le rejet passe par le meme contrat `interactable.use` que le demarrage runtime.

### Notes
- Extension de la fumee protocole pour verifier le clic runtime sur `routes_guard_relay_anchor` apres completion de `routes_guard_stabilize`.
- Le scenario valide maintenant que l'ancre de rencontre renvoie `interactable.use.rejected` avec la raison `quest_completed`, au lieu de relancer le combat depuis la carte.
- Le chemin de smoke calcule une route jusqu'a l'ancre completee et prouve que le rejet passe par le meme contrat `interactable.use` que le demarrage runtime.
- Ajout de `docs/playtests/local_runtime_encounter_anchor_reject_smoke_v001.md` pour consigner la fumee complete deux clients avec rejet de redemarrage par ancre.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.018-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.017</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.017</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.017</guid>
            <pubDate>Wed, 08 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Branchement runtime des objets interactifs `kind=encounter` : le serveur valide la portee puis demarre la rencontre indiquee par `requiredState`. · Ajout de l'ancre `routes_guard_relay_anchor` sur `world_0_0`, cellule `13,12`, pour lancer `routes_guard_relay` directement depuis la carte authorisee. · Le serveur renvoie maintenant un `combat.snapshot` en reponse a `interactable.use` quand une ancre de rencontre demarre un combat.

### Notes
- Branchement runtime des objets interactifs `kind=encounter` : le serveur valide la portee puis demarre la rencontre indiquee par `requiredState`.
- Ajout de l'ancre `routes_guard_relay_anchor` sur `world_0_0`, cellule `13,12`, pour lancer `routes_guard_relay` directement depuis la carte authorisee.
- Le serveur renvoie maintenant un `combat.snapshot` en reponse a `interactable.use` quand une ancre de rencontre demarre un combat.
- Unity accepte `combat.snapshot` comme reponse d'interaction, applique l'instantane combat et affiche un retour de statut de rencontre lancee par interaction.
- Le clic sur une cellule `encounter` passe par le meme chemin souris que les portes et ressources, avec rendu d'un indicateur visuel de rencontre sur la carte.
- Ajout d'une validation serveur des references de rencontres authorisees par les maps, afin de refuser au demarrage les ancres sans `requiredState` ou avec ID inconnu.
- Extension de la fumee protocole pour demarrer le combat `Relais de Ronce` via l'ancre de carte au lieu du seul appel direct `combat.encounter.start`.
- Ajout de `docs/playtests/local_runtime_encounter_interactable_smoke_v001.md` pour consigner le smoke complet deux clients, le demarrage de combat par interaction et les validations Unity/.NET.
- Reconstruction du client Windows dev et regeneration de `build/updates/dev/manifest.json` en `0.00.017-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.016</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.016</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.016</guid>
            <pubDate>Tue, 07 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de presets de rencontres dans l'editeur de cartes Unity : chargement du catalogue `encounters_v001.json` plus modeles de placement pour quete, embuscade de route, gardien de ressource et gardien de seuil. · Une rencontre posee cree un objet interactif `kind=encounter` sur la cellule selectionnee, avec l'ID de rencontre dans `requiredState`, sans nouvelle forme JSON de carte. · Ajout d'un navigateur filtrable `Presets rencontres`, avec miniatures reprises depuis la palette de props, boutons `Choisir` / `Poser` et option `Ajouter prop rencontre`.

### Notes
- Ajout de presets de rencontres dans l'editeur de cartes Unity : chargement du catalogue `encounters_v001.json` plus modeles de placement pour quete, embuscade de route, gardien de ressource et gardien de seuil.
- Une rencontre posee cree un objet interactif `kind=encounter` sur la cellule selectionnee, avec l'ID de rencontre dans `requiredState`, sans nouvelle forme JSON de carte.
- Ajout d'un navigateur filtrable `Presets rencontres`, avec miniatures reprises depuis la palette de props, boutons `Choisir` / `Poser` et option `Ajouter prop rencontre`.
- Ajout d'une action `Appliquer rencontre` pour transformer ou mettre a jour un objet interactif existant depuis le preset selectionne.
- La grille de l'editeur affiche maintenant `C` pour les cellules contenant une ancre de rencontre, afin de distinguer ces points des portes/interactions generiques.
- Renforcement de la validation editeur pour signaler les rencontres qui gardent le placeholder `encounter_id` ou un `requiredState` vide.
- Validation Unity cible : 5 presets de rencontres, dont 1 issu du catalogue actuel et 4 modeles, avec 9 cartes monde validees et 0 probleme detecte.
- Ajout de `docs/playtests/local_map_editor_encounter_presets_smoke_v001.md` pour consigner la compilation Unity, les tests et la validation des presets.
- Reconstruction du client Windows dev et regeneration de `build/updates/dev/manifest.json` en `0.00.016-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.015</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.015</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.015</guid>
            <pubDate>Mon, 06 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de 7 presets d'objets interactifs dans l'editeur de cartes Unity : porte vers interieur, passage vers carte, table d'herboriste, billot de taille, etabli de bois, enclume de campagne et point de quete. · Chaque preset renseigne automatiquement `kind`, nom affiche, cibles optionnelles `targetMapId` / `targetInteriorId`, et prop visuel associe quand disponible. · Ajout d'un navigateur filtrable `Presets interactifs`, avec miniatures reprises depuis la palette de props, boutons `Choisir` / `Poser` et option `Ajouter prop visuel`.

### Notes
- Ajout de 7 presets d'objets interactifs dans l'editeur de cartes Unity : porte vers interieur, passage vers carte, table d'herboriste, billot de taille, etabli de bois, enclume de campagne et point de quete.
- Chaque preset renseigne automatiquement `kind`, nom affiche, cibles optionnelles `targetMapId` / `targetInteriorId`, et prop visuel associe quand disponible.
- Ajout d'un navigateur filtrable `Presets interactifs`, avec miniatures reprises depuis la palette de props, boutons `Choisir` / `Poser` et option `Ajouter prop visuel`.
- Ajout d'actions d'edition pour appliquer le preset selectionne a un objet interactif existant sans ressaisie manuelle.
- Renforcement de la validation editeur pour signaler les portes qui gardent les placeholders `target_map_id` ou `interior_id`.
- Validation Unity cible : 7 presets interactifs, 6 props visuels references et 0 reference manquante dans `dev_prop_palette_v001.json`.
- Ajout de `docs/playtests/local_map_editor_interactable_presets_smoke_v001.md` pour consigner la compilation Unity, les tests et la validation des presets.
- Reconstruction du client Windows dev et regeneration de `build/updates/dev/manifest.json` en `0.00.015-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.014</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.014</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.014</guid>
            <pubDate>Sun, 05 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de 12 presets de ressources recoltables dans l'editeur de cartes Unity : champignons, fleurs sauvages, roseaux, bois tendre, saule tendre, bois flotte, pierre plate, minerai de fer, argile, coquillages, lin sauvage et graines. · Chaque preset renseigne automatiquement `resourceType`, `professionId`, tier, temps de respawn, nom affiche et prop visuel associe quand une ressource est posee sur une cellule. · Ajout d'un navigateur filtrable `Presets ressources`, avec miniatures reprises depuis la palette de props, boutons `Choisir` / `Poser` et option `Ajouter prop visuel`.

### Notes
- Ajout de 12 presets de ressources recoltables dans l'editeur de cartes Unity : champignons, fleurs sauvages, roseaux, bois tendre, saule tendre, bois flotte, pierre plate, minerai de fer, argile, coquillages, lin sauvage et graines.
- Chaque preset renseigne automatiquement `resourceType`, `professionId`, tier, temps de respawn, nom affiche et prop visuel associe quand une ressource est posee sur une cellule.
- Ajout d'un navigateur filtrable `Presets ressources`, avec miniatures reprises depuis la palette de props, boutons `Choisir` / `Poser` et option `Ajouter prop visuel`.
- Ajout d'actions d'edition pour appliquer le preset selectionne a une ressource existante sans ressaisie manuelle.
- Validation Unity cible : 12 presets de ressources, 12 props visuels references et 0 reference manquante dans `dev_prop_palette_v001.json`.
- Ajout de `docs/playtests/local_map_editor_resource_presets_smoke_v001.md` pour consigner la compilation Unity, les tests et la validation des presets.
- Reconstruction du client Windows dev et regeneration de `build/updates/dev/manifest.json` en `0.00.014-dev`.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.013</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.013</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.013</guid>
            <pubDate>Sat, 04 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout d'une palette visuelle dans l'editeur de cartes Unity, avec miniatures chargees depuis `spriteResource`, filtre par asset/categorie/ressource et actions `Choisir` / `Poser` pour placer rapidement les props sur la cellule selectionnee. · Extension de `MapPropPaletteAsset` avec le champ `spriteResource`, afin que `dev_prop_palette_v001.json` alimente directement les apercus sans modifier les IDs techniques des props. · Ajout d'une navigation monde dans l'editeur avec boutons `HG / Ouest`, `HD / Nord`, `BD / Est` et `BG / Sud`, plus boutons de chargement de cible/voisin et selection de sortie authorisee.

### Notes
- Ajout d'une palette visuelle dans l'editeur de cartes Unity, avec miniatures chargees depuis `spriteResource`, filtre par asset/categorie/ressource et actions `Choisir` / `Poser` pour placer rapidement les props sur la cellule selectionnee.
- Extension de `MapPropPaletteAsset` avec le champ `spriteResource`, afin que `dev_prop_palette_v001.json` alimente directement les apercus sans modifier les IDs techniques des props.
- Ajout d'une navigation monde dans l'editeur avec boutons `HG / Ouest`, `HD / Nord`, `BD / Est` et `BG / Sud`, plus boutons de chargement de cible/voisin et selection de sortie authorisee.
- Renforcement de la validation editeur pour signaler les voisins ou transitions monde absents, non reciproques ou incoherents avec les coordonnees monde cardinales.
- Localisation en francais des principaux libelles de l'editeur de cartes et des menus Unity d'aperçu restants.
- Ajout de `docs/playtests/local_map_editor_palette_flow_smoke_v001.md` pour consigner la compilation Unity, les tests PlayMode/EditMode et la validation des 37 chemins `spriteResource` de palette.
- Regeneration de `build/updates/dev/manifest.json` en `0.00.013-dev` ; cette tranche est editor-only cote client package, donc les fichiers runtime packagés restent inchanges.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.012</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.012</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.012</guid>
            <pubDate>Fri, 03 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Localisation en français des textes visibles de récompense, monnaie `route_marks`, logs de combat, usage d'objets, dégâts, déplacements, débuts de tour et messages de boutique côté serveur. · Mise à jour des catalogues quête/boutique `quests_v001.json` et `shops_v001.json`, ainsi que leurs miroirs Unity `Resources`, pour afficher `Marques de route` et des récompenses en français sans modifier les IDs techniques. · Localisation des statuts Unity restants dans `GameBootstrap`, `DevTestPanel`, `WorldChatPanel`, `InventoryPanel`, `CraftingPanel`, `WorldMapPanel` et aperçus éditeur liés à la tranche jouable.

### Notes
- Localisation en français des textes visibles de récompense, monnaie `route_marks`, logs de combat, usage d'objets, dégâts, déplacements, débuts de tour et messages de boutique côté serveur.
- Mise à jour des catalogues quête/boutique `quests_v001.json` et `shops_v001.json`, ainsi que leurs miroirs Unity `Resources`, pour afficher `Marques de route` et des récompenses en français sans modifier les IDs techniques.
- Localisation des statuts Unity restants dans `GameBootstrap`, `DevTestPanel`, `WorldChatPanel`, `InventoryPanel`, `CraftingPanel`, `WorldMapPanel` et aperçus éditeur liés à la tranche jouable.
- Mise à jour des tests partagés, du smoke WebSocket et des tests Unity PlayMode pour valider les textes français authorés, le panneau `Carte Monde` avec libellé `Sorties` et l'inventaire en `Marques de route`.
- Ajout de `docs/playtests/local_french_runtime_copy_smoke_v001.md` pour consigner la fumée complète de localisation runtime, les 33 tests partagés, les 6 tests Unity PlayMode et la reconstruction Windows dev.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.012-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.011</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.011</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.011</guid>
            <pubDate>Thu, 02 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du payload `WorldMapDiscoveryPayload` dans `world.snapshot` pour exposer les cartes monde en etats `current`, `discovered`, `adjacent` ou `unknown`. · Persistance serveur des cartes decouvertes par personnage via repository memoire et PostgreSQL, avec migration `deploy/db/migrations/004_character_map_discoveries.sql`. · Mise a jour du panneau Unity `Carte Monde` pour griser les cartes inconnues, signaler les cartes adjacentes a explorer et afficher le compteur de decouverte de la zone dev 3x3.

### Notes
- Ajout du payload `WorldMapDiscoveryPayload` dans `world.snapshot` pour exposer les cartes monde en etats `current`, `discovered`, `adjacent` ou `unknown`.
- Persistance serveur des cartes decouvertes par personnage via repository memoire et PostgreSQL, avec migration `deploy/db/migrations/004_character_map_discoveries.sql`.
- Mise a jour du panneau Unity `Carte Monde` pour griser les cartes inconnues, signaler les cartes adjacentes a explorer et afficher le compteur de decouverte de la zone dev 3x3.
- Extension du smoke WebSocket complet pour valider la decouverte initiale, la conservation des cartes visitees pendant les transitions et la persistance de decouverte lors de l'entree en interieur.
- Ajout de `docs/playtests/local_map_discovery_smoke_v001.md` pour consigner la fumee complete de decouverte de cartes, 33 tests partages reussis et builds .NET serveur/smoke reussis.
- Reconstruction du client Windows dev et regeneration de `build/updates/dev/manifest.json` en `0.00.011-dev` ; la verification launcher `--check-only` confirme que le dossier de build est a jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.010</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.010</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.010</guid>
            <pubDate>Wed, 01 Apr 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du second objectif tactique authoré `uproot_bramble_march` / `Déraciner la marche du relais` à `routes_guard_relay`, ciblant `enemy_marche_ronce_relais`. · Mise à jour des catalogues rencontre `assets/processed/encounters/encounters_v001.json` et Unity `Resources/Encounters` pour exposer deux objectifs tactiques en combat. · Mise à jour des fallbacks serveur et Unity afin que la rencontre conserve ses deux objectifs même si les catalogues JSON ne sont pas disponibles.

### Notes
- Ajout du second objectif tactique authoré `uproot_bramble_march` / `Déraciner la marche du relais` à `routes_guard_relay`, ciblant `enemy_marche_ronce_relais`.
- Mise à jour des catalogues rencontre `assets/processed/encounters/encounters_v001.json` et Unity `Resources/Encounters` pour exposer deux objectifs tactiques en combat.
- Mise à jour des fallbacks serveur et Unity afin que la rencontre conserve ses deux objectifs même si les catalogues JSON ne sont pas disponibles.
- Mise à jour de l'UI Unity pour afficher `Objectifs:` au pluriel dans le panneau PNJ et le HUD combat quand une rencontre porte plusieurs objectifs.
- Extension des tests partagés, du smoke WebSocket complet et des tests Unity PlayMode pour valider `uproot_bramble_march`, son état `active`, son log de début, son log de complétion et son affichage PNJ.
- Ajout de `docs/playtests/local_dual_tactical_objective_smoke_v001.md` pour consigner la fumée complète avec deux objectifs tactiques, 33 tests partagés réussis, build serveur, 6 tests Unity PlayMode réussis, reconstruction Windows dev et vérification launcher.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.010-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.009</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.009</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.009</guid>
            <pubDate>Tue, 31 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout du comportement bestiaire `hold_range_and_strike` pour les ennemis qui doivent tenir leur cellule et attaquer à portée au lieu d'avancer systématiquement vers le joueur. · Passage de `enemy_guette_ronce_relais` / `Guette-ronce du Relais` sur `hold_range_and_strike`, afin que le renfort du round 2 garde sa ligne et utilise `watcher_bramble_toss` / `Jet de Ronce Courte`. · Mise à jour du serveur pour transporter le `behaviorId` dans `EnemyCombatantBehavior`, valider les comportements supportés, journaliser `enemy_hold_position` et appliquer la logique de tenue de position pendant l'auto-tour ennemi.

### Notes
- Ajout du comportement bestiaire `hold_range_and_strike` pour les ennemis qui doivent tenir leur cellule et attaquer à portée au lieu d'avancer systématiquement vers le joueur.
- Passage de `enemy_guette_ronce_relais` / `Guette-ronce du Relais` sur `hold_range_and_strike`, afin que le renfort du round 2 garde sa ligne et utilise `watcher_bramble_toss` / `Jet de Ronce Courte`.
- Mise à jour du serveur pour transporter le `behaviorId` dans `EnemyCombatantBehavior`, valider les comportements supportés, journaliser `enemy_hold_position` et appliquer la logique de tenue de position pendant l'auto-tour ennemi.
- Correction du fallback serveur du bestiaire pour inclure `enemy_guette_ronce_relais`, en miroir du fallback Unity et du catalogue JSON.
- Extension des tests partagés et du smoke WebSocket complet pour valider le nouveau `behaviorId`, l'absence de déplacement du renfort, le log de ligne tenue et l'attaque `Jet de Ronce Courte`.
- Ajout de `docs/playtests/local_hold_range_enemy_behavior_smoke_v001.md` pour consigner la fumée complète avec comportement de guette, 33 tests partagés réussis, build serveur, 6 tests Unity PlayMode réussis, reconstruction Windows dev et vérification launcher.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.009-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.008</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.008</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.008</guid>
            <pubDate>Mon, 30 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de renforts authorés dans le catalogue de rencontres via `EncounterReinforcementDefinition`, avec ennemi, GUID de combattant, round de déclenchement, offset relatif, effet d'arrivée et message de log. · Ajout de `enemy_guette_ronce_relais` / `Guette-ronce du Relais` au bestiaire, avec attaque `watcher_bramble_toss` / `Jet de Ronce Courte`, portée courte et sprite combat existant. · Ajout du renfort `relay_watcher_round_2` à `routes_guard_relay` : un `Guette-ronce du Relais` arrive au round 2 avec l'effet `mist_fold` et le log `encounter_reinforcement`.

### Notes
- Ajout de renforts authorés dans le catalogue de rencontres via `EncounterReinforcementDefinition`, avec ennemi, GUID de combattant, round de déclenchement, offset relatif, effet d'arrivée et message de log.
- Ajout de `enemy_guette_ronce_relais` / `Guette-ronce du Relais` au bestiaire, avec attaque `watcher_bramble_toss` / `Jet de Ronce Courte`, portée courte et sprite combat existant.
- Ajout du renfort `relay_watcher_round_2` à `routes_guard_relay` : un `Guette-ronce du Relais` arrive au round 2 avec l'effet `mist_fold` et le log `encounter_reinforcement`.
- Mise à jour du serveur pour injecter les renforts au bon round, recalculer l'ordre de tour sans perdre le tour actif, attacher leur comportement bestiaire et empêcher la victoire tant que le renfort reste vivant.
- Mise à jour du client Unity : modèles réseau, fallbacks bestiaire/rencontre et panneau PNJ affichant `Renforts: Guette-ronce du Relais`.
- Extension des tests partagés, du smoke WebSocket complet et de la couverture Unity PlayMode pour valider le bestiaire à 3 ennemis, le champ `reinforcements`, l'arrivée au round 2, l'effet d'arrivée, le log de renfort et l'affichage PNJ.
- Ajout de `docs/playtests/local_encounter_reinforcement_smoke_v001.md` pour consigner les 33 tests partagés réussis, le smoke WebSocket complet, les 6 tests Unity PlayMode réussis, la reconstruction Windows dev et la vérification launcher.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.008-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.007</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.007</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.007</guid>
            <pubDate>Sun, 29 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout d'effets de terrain authorés dans le catalogue de rencontres via `EncounterTerrainEffectDefinition`, avec identifiant, nom affiché, sort d'effet persistant, offset relatif et message de log authoré. · Ajout de `relay_bramble_mist` / `Brume de ronce` à `routes_guard_relay`, basé sur `mist_fold`, afin que la rencontre démarre avec un effet de terrain posé autour du joueur en plus des effets d'ouverture des ennemis. · Mise à jour du serveur pour valider les effets de terrain de rencontre, résoudre leur position sur une case marchable proche du joueur, créer l'effet persistant au démarrage du combat et journaliser `encounter_terrain_effect`.

### Notes
- Ajout d'effets de terrain authorés dans le catalogue de rencontres via `EncounterTerrainEffectDefinition`, avec identifiant, nom affiché, sort d'effet persistant, offset relatif et message de log authoré.
- Ajout de `relay_bramble_mist` / `Brume de ronce` à `routes_guard_relay`, basé sur `mist_fold`, afin que la rencontre démarre avec un effet de terrain posé autour du joueur en plus des effets d'ouverture des ennemis.
- Mise à jour du serveur pour valider les effets de terrain de rencontre, résoudre leur position sur une case marchable proche du joueur, créer l'effet persistant au démarrage du combat et journaliser `encounter_terrain_effect`.
- Mise à jour du client Unity : modèles réseau, fallback de catalogue rencontre et panneau PNJ affichant maintenant `Terrain: Brume de ronce` sur la ligne de rencontre.
- Extension des tests partagés, du smoke WebSocket complet et de la couverture Unity PlayMode pour valider le champ `terrainEffects`, le troisième effet combat initial, le log de terrain et l'affichage PNJ.
- Ajout de `docs/playtests/local_encounter_terrain_effect_smoke_v001.md` pour consigner les 33 tests partagés réussis, le smoke WebSocket complet, les 6 tests Unity PlayMode réussis, la reconstruction Windows dev et la vérification launcher.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.007-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.006</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.006</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.006</guid>
            <pubDate>Sat, 28 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout d'objectifs tactiques authorés dans le catalogue de rencontres via `EncounterObjectiveDefinition`, avec état exposé dans les snapshots combat sous forme de `CombatObjectiveState`. · Ajout de l'objectif `seal_splinter_heart` / `Sceller l'éclat de relais` à `routes_guard_relay`, ciblant `enemy_eclat_ronce_relais` et portant ses textes de début/complétion depuis les données de rencontre. · Mise à jour du serveur pour journaliser `objective_started`, passer l'objectif de `active` à `completed` quand l'ennemi ciblé tombe à 0 PV, puis renvoyer l'état d'objectif dans `combat.snapshot`, `combat.spell.accepted` et `combat.turn.started`.

### Notes
- Ajout d'objectifs tactiques authorés dans le catalogue de rencontres via `EncounterObjectiveDefinition`, avec état exposé dans les snapshots combat sous forme de `CombatObjectiveState`.
- Ajout de l'objectif `seal_splinter_heart` / `Sceller l'éclat de relais` à `routes_guard_relay`, ciblant `enemy_eclat_ronce_relais` et portant ses textes de début/complétion depuis les données de rencontre.
- Mise à jour du serveur pour journaliser `objective_started`, passer l'objectif de `active` à `completed` quand l'ennemi ciblé tombe à 0 PV, puis renvoyer l'état d'objectif dans `combat.snapshot`, `combat.spell.accepted` et `combat.turn.started`.
- Mise à jour du client Unity : modèles réseau, fallback de catalogue rencontre, panneau PNJ avec ligne d'objectif et HUD combat affichant l'état d'objectif actif/terminé.
- Extension des tests partagés, du smoke WebSocket complet et de la couverture Unity PlayMode pour valider l'objectif tactique authoré, son affichage PNJ, son état combat actif, son log de complétion et sa persistance dans les payloads.
- Ajout de `docs/playtests/local_encounter_tactical_objective_smoke_v001.md` pour consigner les 33 tests partagés réussis, le smoke WebSocket complet, les 6 tests Unity PlayMode réussis, la reconstruction Windows dev et la vérification launcher.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.006-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.005</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.005</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.005</guid>
            <pubDate>Fri, 27 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Localisation du `QuestJournalPanel` : état non connecté, ligne de marques, statut de quête, état du badge et objectifs passent en français. · Ajout d'un snapshot courant interne et de `NotifyWorldSnapshotChanged` au journal de quête, afin que le panneau puisse être rafraîchi et testé comme les autres surfaces UI monde. · Extension de la couverture Unity PlayMode pour vérifier `Garde des Routes: disponible`, `Marques: 15 | Badge: absent`, l'objectif de dialogue avec le gardien puis `Badge: obtenu` après refresh d'inventaire.

### Notes
- Localisation du `QuestJournalPanel` : état non connecté, ligne de marques, statut de quête, état du badge et objectifs passent en français.
- Ajout d'un snapshot courant interne et de `NotifyWorldSnapshotChanged` au journal de quête, afin que le panneau puisse être rafraîchi et testé comme les autres surfaces UI monde.
- Extension de la couverture Unity PlayMode pour vérifier `Garde des Routes: disponible`, `Marques: 15 | Badge: absent`, l'objectif de dialogue avec le gardien puis `Badge: obtenu` après refresh d'inventaire.
- Ajout de `docs/playtests/local_quest_journal_french_ui_smoke_v001.md` pour consigner le refresh Unity, les 6 tests PlayMode réussis, la reconstruction Windows dev et la vérification launcher.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.005-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.004</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.004</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.004</guid>
            <pubDate>Thu, 26 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Localisation des libellés visibles du panneau PNJ `Garde des Routes` : boutons `Combat`/`Fermer`, statut, marques, états d'achat, verrouillage et manque de monnaie passent en français. · Localisation des statuts client de boutique du Relais dans `GameBootstrap`, afin que les messages d'achat, de refus, d'annulation et d'échec soient lisibles côté joueur. · Extension de la couverture Unity PlayMode pour verrouiller `Statut: disponible`, `Marques: 0`, `Badge: absent` et `Trousse: absent` dans le panneau PNJ.

### Notes
- Localisation des libellés visibles du panneau PNJ `Garde des Routes` : boutons `Combat`/`Fermer`, statut, marques, états d'achat, verrouillage et manque de monnaie passent en français.
- Localisation des statuts client de boutique du Relais dans `GameBootstrap`, afin que les messages d'achat, de refus, d'annulation et d'échec soient lisibles côté joueur.
- Extension de la couverture Unity PlayMode pour verrouiller `Statut: disponible`, `Marques: 0`, `Badge: absent` et `Trousse: absent` dans le panneau PNJ.
- Ajout de `docs/playtests/local_npc_panel_french_ui_smoke_v001.md` pour consigner le refresh Unity, les 6 tests PlayMode réussis, la reconstruction Windows dev et la vérification launcher.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.004-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.003</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.003</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.003</guid>
            <pubDate>Wed, 25 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Extension du smoke WebSocket pour démarrer un combat après l'achat de `route_healer_kit`, laisser les ennemis créer des PV manquants, puis consommer `Trousse du Relais` via `inventory.use`. · Validation de l'effet catalogue `heal` de `route_healer_kit` : soin plafonné à `25` PV sans overheal, consommation de la pile d'inventaire et persistance de la disparition de l'item dans `world.snapshot`. · Ajout de `docs/playtests/local_route_healer_kit_use_smoke_v001.md` pour consigner la passe locale en mémoire couvrant achat, refus doublon, usage combat et persistance post-usage.

### Notes
- Extension du smoke WebSocket pour démarrer un combat après l'achat de `route_healer_kit`, laisser les ennemis créer des PV manquants, puis consommer `Trousse du Relais` via `inventory.use`.
- Validation de l'effet catalogue `heal` de `route_healer_kit` : soin plafonné à `25` PV sans overheal, consommation de la pile d'inventaire et persistance de la disparition de l'item dans `world.snapshot`.
- Ajout de `docs/playtests/local_route_healer_kit_use_smoke_v001.md` pour consigner la passe locale en mémoire couvrant achat, refus doublon, usage combat et persistance post-usage.
- Régénération de `build/updates/dev/manifest.json` en `0.00.003-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.002</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.002</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.002</guid>
            <pubDate>Tue, 24 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Ajout de `route_healer_kit` / `Trousse du Relais` au catalogue d'objets et à `route_guard_shop` comme consommable de soin achetable pour `8` `route_marks` après complétion de `routes_guard_stabilize`. · Mise à jour du serveur et des fallbacks Unity pour traiter la boutique du Relais comme une liste d'items authorés, avec achat persistant du badge puis de la trousse et refus des doublons. · Mise à jour du panneau PNJ Unity : la ligne boutique affiche `Badge de Relais` et `Trousse du Relais`, puis le bouton d'achat sélectionne automatiquement le prochain item disponible.

### Notes
- Ajout de `route_healer_kit` / `Trousse du Relais` au catalogue d'objets et à `route_guard_shop` comme consommable de soin achetable pour `8` `route_marks` après complétion de `routes_guard_stabilize`.
- Mise à jour du serveur et des fallbacks Unity pour traiter la boutique du Relais comme une liste d'items authorés, avec achat persistant du badge puis de la trousse et refus des doublons.
- Mise à jour du panneau PNJ Unity : la ligne boutique affiche `Badge de Relais` et `Trousse du Relais`, puis le bouton d'achat sélectionne automatiquement le prochain item disponible.
- Extension du smoke WebSocket pour valider l'achat de `Trousse du Relais`, la persistance d'inventaire, le solde `route_marks` à `7` et le rejet d'un second achat.
- Reconstruction du client Windows dev et régénération de `build/updates/dev/manifest.json` en `0.00.002-dev` ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.001</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.001</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.001</guid>
            <pubDate>Mon, 23 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Extension du contrat de rencontre `routes_guard_relay` avec deux spawns ennemis authorés, placements relatifs stables et effets d'ouverture par spawn (`mist_fold` pour `Marche-ronce du Relais`, `prism_bolt` pour `Éclat-ronce du Relais`). · Ajout de `enemy_eclat_ronce_relais` au bestiaire avec attaque authorée `Piqûre d'Éclat`, stats de rang `dev_splinter` et comportement `approach_and_strike`. · Mise à jour du serveur pour gérer plusieurs ennemis dans une rencontre scriptée, stocker le comportement par combattant et auto-résoudre tous les tours ennemis avant de rendre la main au joueur.

### Notes
- Extension du contrat de rencontre `routes_guard_relay` avec deux spawns ennemis authorés, placements relatifs stables et effets d'ouverture par spawn (`mist_fold` pour `Marche-ronce du Relais`, `prism_bolt` pour `Éclat-ronce du Relais`).
- Ajout de `enemy_eclat_ronce_relais` au bestiaire avec attaque authorée `Piqûre d'Éclat`, stats de rang `dev_splinter` et comportement `approach_and_strike`.
- Mise à jour du serveur pour gérer plusieurs ennemis dans une rencontre scriptée, stocker le comportement par combattant et auto-résoudre tous les tours ennemis avant de rendre la main au joueur.
- Extension des tests partagés à 33/33 et du smoke WebSocket pour valider les deux ennemis authorés, les deux effets d'ouverture, les logs d'attaques bestiaire et la victoire contre tous les ennemis vivants.
- Ajout de `docs/playtests/local_multi_enemy_encounter_smoke_v001.md` ; il consigne le smoke local en mémoire validant la nouvelle rencontre multi-ennemis, le refresh Unity Editor et les 6 tests PlayMode réussis.
- Mise à jour du modèle client Unity de rencontre pour lire `enemySpawns`, du fallback de bestiaire pour inclure `Éclat-ronce du Relais`, et du panneau PNJ pour afficher tous les adversaires authorés de `Relais de Ronce`.
- Reconstruction du client de développement Windows et régénération de `build/updates/dev/manifest.json` en `0.00.001-dev` après la mise à jour UI de rencontre ; la vérification launcher `--check-only` confirme que le dossier de build est à jour.]]></description>
        </item>
        <item>
            <title>IsoTactica v0.00.000</title>
            <link>https://devblog.isotactica.mynewit.com/0.00.000</link>
            <guid>https://devblog.isotactica.mynewit.com/0.00.000</guid>
            <pubDate>Sun, 22 Mar 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[· Création des documents de cadrage de la Phase 0. · Sélection de l'architecture recommandée : client Unity, serveur autoritaire pur .NET, bibliothèque C# partagée, launcher Avalonia, PostgreSQL. · Définition des limites du MVP, de l'orientation réseau, du schéma de base de données initial, du pipeline d'assets et des règles d'originalité.

### Notes
- Création des documents de cadrage de la Phase 0.
- Sélection de l'architecture recommandée : client Unity, serveur autoritaire pur .NET, bibliothèque C# partagée, launcher Avalonia, PostgreSQL.
- Définition des limites du MVP, de l'orientation réseau, du schéma de base de données initial, du pipeline d'assets et des règles d'originalité.
- Ajout du `docker-compose.yml` PostgreSQL local.
- Installation des compétences Codex externes pour l'animation de personnages et la génération de sprites/cartes.
- Ajout du squelette serveur .NET multiplateforme, des modèles de déplacement partagés, du lanceur de tests local, d'un JSON de carte exemple, du Dockerfile et des scripts de développement Windows/Linux.
- Ajout de l'abstraction de repository, de la persistance de développement en mémoire, de la validation de carte partagée, de la migration SQL initiale et du smoke test WebSocket automatisé.
- Ajout du squelette client Unity de Phase 1 avec scènes boot/login/character/world, bootstrap persistant, `NetworkClient` WebSocket, flux d'authentification dev, sélection de personnage, entrée en monde et rendu de snapshot isométrique de debug.
- Ajout de la tranche monde Unity de Phase 2 avec cases isométriques cliquables, requêtes de déplacement autoritaires côté serveur, retours de déplacement accepté/refusé, marqueurs joueur/PNJ, couleurs de debug pour cases bloquées, UI de chat local et dispatch sur le thread principal pour les mises à jour de scène pilotées par le réseau.
- Ajout de la persistance PostgreSQL via `Npgsql`, du mapping local des sources NuGet, des scripts de migration répétables et de la documentation pour la passe de persistance backend post-Phase 2.
- Ajout de la première passe de présence live : Unity active les broadcasts d'arrière-plan après l'entrée en monde, le rapprochement requête/réponse ne court plus contre la boucle de réception WebSocket, et le smoke test vérifie maintenant le spawn d'un second client, les broadcasts de mouvement, le chat et le despawn.
- Réorientation de la première base artistique vers une fantasy médiévale colorée originale et rafraîchissement de la palette du monde de debug.
- Correction du chemin de carte serveur par défaut et limitation des logs serveur à la sortie console pour les exécutions locales/sandbox.
- Ajout de la première passe core/CLI du launcher avec validation de manifest, planification sûre des fichiers, vérification SHA-256, cache local manifest/version, téléchargements locaux/HTTP, support de lancement client et tests launcher.
- Ajout de `IsoTactica.AssetPipeline` et génération des premiers assets placeholder originaux de fantasy médiévale colorée : spritesheet joueur, sprite PNJ, aperçu de carte, manifest et notes de source.
- Ajout du squelette de combat tactique partagé avec état PA/PM des combattants, tours d'initiative, sorts de debug, validation portée/PA/cooldown et tests de combat partagés.
- Ajout du flux WebSocket de combat debug côté serveur et d'un panneau de test live Unity `WorldScene` pour suivre en Play Mode les vérifications de connexion, monde, déplacement, chat, lancement/refus de combat et rafraîchissement de tour.
- Ajout d'un premier HUD de combat Unity avec contrôles début/fin de tour, boutons de sorts, affichage PA/PM/tour, ciblage des sorts sur la carte, surbrillance des cases ciblables, retour de cible bloquée et rafraîchissement des PA après lancement réussi.
- Mise à jour de la roadmap et des prochaines étapes autour de l'état actuel du combat debug, de la Phase 5B présentation/effets de combat et de la première tranche de playtest en attente.
- Ajout des effets tactiques persistants et des payloads de journal de combat dans le protocole partagé, les sessions de combat debug serveur, les smoke tests et les modèles client Unity.
- Mise à jour de la présentation Unity `WorldScene` avec marqueurs de combattants colorés par équipe, anneaux de tour actif, labels PV, marqueurs d'effets, affichage compact du journal de combat et désactivation des contrôles hors tour local.
- Ajout de la génération de manifest launcher depuis les dossiers client packagés et du support CLI pour `--generate-manifest`.
- Passage du ciblage de sort Unity à un flux aperçu/confirmation en deux temps et reconstruction du client de développement Windows avec un manifest de mise à jour généré.
- Ajout de la résolution automatique côté serveur du tour ennemi debug afin que la boucle de combat jouable revienne au joueur après la fin de tour.
- Ajout d'un premier panneau de tâche PNJ Unity pour `Garde des Routes` ; cliquer sur la case d'interaction peut maintenant ouvrir le panneau et démarrer la rencontre debug.
- Ajout de `IsoTactica.Launcher.WinForms`, une coque launcher Windows temporaire pour les flux vérifier/mettre à jour/jouer pendant que la coque Avalonia reste en attente.
- Ajout de la première persistance d'état de quête pour `routes_guard_stabilize`, avec support repository PostgreSQL/en mémoire, payloads de quête `world.snapshot`, affichage de statut dans le panneau de tâche Unity et couverture smoke test de `available` vers `encounter_started`.
- Ajout d'une couverture PlayMode Unity Test Framework pour la création du HUD de combat et du panneau PNJ `Garde des Routes`.
- Reconstruction du client de développement Windows et régénération de `build/updates/dev/manifest.json` ; le launcher `--check-only` indique que le dossier de build généré est à jour.
- Ajout de la première boucle de complétion de tâche PNJ : vaincre l'ennemi debug marque `routes_guard_stabilize` comme `completed`, renvoie les mises à jour de quête avec texte de récompense, empêche l'ennemi vaincu d'agir, met à jour le panneau PNJ Unity et étend le smoke test jusqu'à la victoire et à la complétion persistée.
- Ajout de `combat.encounter.start` et du contrat de rencontre `routes_guard_relay` ; le panneau PNJ l'utilise maintenant, tandis que `combat.debug.start` reste disponible pour l'outillage de développement.
- Ajout des récompenses de monnaie persistées `route_marks` pour la première tâche PNJ, exposées via `world.snapshot`, `combat.spell.accepted`, le texte de solde du panneau PNJ Unity, les repositories PostgreSQL/en mémoire et les assertions smoke test.
- Mise à jour de la direction artistique vers une fantasy tactique 2D isométrique rétro originale inspirée par la lisibilité de Dofus Retro tout en préservant les silhouettes, l'UI, le lore et l'iconographie propres à IsoTactica.
- Génération de la première planche props/FX rétro-isométrique, chroma-key puis découpe en sprites Unity transparents, et branchement des FX de combat ancre/brume/prisme dans `WorldScenePresenter`.
- Génération de la première planche d'acteurs rétro-isométriques, découpe en sprites Unity transparents joueur/PNJ/ennemi/feu follet, conservation des dimensions d'import non-power-of-two et branchement de `WorldScenePresenter` pour utiliser les nouveaux sprites d'acteurs avec fallbacks diamant au runtime.
- Génération de la première planche de tuiles terrain rétro-isométriques, sauvegarde des métadonnées de prompt, découpe en sprites Unity transparents herbe/chemin/route/bloqué/spawn/interaction/sortie/surbrillance, et branchement de `WorldScenePresenter` plus `TileClickTarget` pour rendre les sprites terrain avec fallback de surbrillance.
- Extension de la couverture PlayMode Unity pour vérifier que les sprites runtime rétro terrain, acteurs et FX se chargent depuis `Resources` avec leurs dimensions PNG traitées, afin de détecter les réglages d'import qui écraseraient l'art non-power-of-two.
- Branchement de la première passe de décoration de carte rétro-isométrique : sanctuaire de route sur le spawn, panneau et lanterne sur les cases d'interaction, marqueurs de chemin sur les sorties, pierres de relais fissurées sur les cases bloquées, plus couverture PlayMode pour la sélection de sprites terrain et décoration.
- Remplacement du champ libre de canal du launcher WinForms par un sélecteur dev/stable et ajout d'une couverture de tests launcher pour la validation des incohérences de canal.
- Ajout de cibles cliquables de survol/sélection des combattants dans le monde Unity, d'un anneau de combattant sélectionné et d'un affichage HUD compact de détails pour les combattants ciblés.
- Ajout d'un interrupteur explicite de repository en mémoire pour les playtests serveur locaux et extension du smoke test avec couverture obligatoire du refus de déplacement plus génération de rapport de playtest Markdown.
- Ajout d'un panneau journal de quête Unity toujours visible qui suit le statut `Garde des Routes` et le solde `route_marks` depuis les snapshots monde et les mises à jour quête/monnaie.
- Ajout du premier monde de développement 3x3 en `24x24` sous `assets/processed/maps/world`, avec `world_0_0` comme origine de coordonnées et des cartes voisines marais, forêt, château, rivière, village, plage/île, plaines et ville.
- Extension du JSON de carte avec coordonnées monde, biome, placements de props à l'échelle, empreintes et interactables pour les futures portes/intérieurs.
- Mise à jour du présentateur de carte Unity et de l'éditeur de carte dev pour rendre/éditer les props authorés et les interactables de porte depuis les données de carte.
- Mise à jour du serveur pour charger un dossier de cartes, démarrer sur `world_0_0` et changer de snapshot de carte quand un joueur marche sur un plot de transition.
- Mise à jour du bootstrap Unity pour accepter `world.snapshot` comme réponse de déplacement valide pour les plots de transition.
- Filtrage des broadcasts serveur de présence, déplacement, despawn et chat local par carte courante.
- Extension du smoke test WebSocket pour traverser une vraie transition de carte puis revenir avant de continuer le flux combat/persistance/présence.
- Ajout d'une passe artistique plus forte pour les biomes de zone dev avec 18 sprites de props originaux réutilisables pour marais, rivière, plaines, village, ville, château, plage, ressources et décoration d'eau.
- Mise à jour des 9 cartes dev générées pour utiliser des props de biomes distincts tout en préservant le contrat de cases isométriques `24x24`, les plots de transition, les nœuds de ressources et les données de portes/interactables.
- Ajout d'une couverture de tests partagés qui charge les 9 cartes monde générées, les valide et vérifie la connectivité réciproque des transitions.
- Extension de la couverture PlayMode Unity pour les nouveaux sprites de props du monde dev et le rendu des props de biome authorés.
- Ajout d'une commande d'aperçu éditeur Unity, `IsoTactica/Preview/Render Dev World Atlas`, pour afficher toute la zone dev 3x3 en scène et vérifier la cohérence visuelle.
- Amélioration de l'éditeur de carte dev avec menu déroulant de carte monde 3x3, raccourci atlas, chargement de palette de props depuis `dev_prop_palette_v001.json` et valeurs par défaut de palette pour échelle/empreinte des props.
- Ajout des aperçus d'empreinte dans l'éditeur de carte dev et d'actions explicites de blocage d'empreinte afin que les grands props comme chaumières, étangs, portes, arbres et futurs bâtiments à porte restent alignés avec la grille déplacement/combat `24x24`.
- Refonte des plots de transition du monde dev généré pour correspondre aux quatre sorties isométriques visibles : haut-gauche/ouest, haut-droite/nord, bas-droite/est et bas-gauche/sud, tout en gardant les cartes séparées par `worldX/worldY`.
- Mise à jour de l'aperçu atlas 3x3 pour placer les cartes dans une disposition de monde isométrique connecté plutôt que dans une grille de debug rectangulaire lâche.
- Ajout d'une couverture de tests partagés qui verrouille les positions de transition du monde dev généré et les spawns cibles selon la convention de sortie isométrique.
- Ajout de la première boucle de récolte autoritaire serveur avec `resource.gather`, cooldown de respawn par personnage et par nœud, compteurs persistants `resource_<type>`, gestion des clics Unity sur les cases de ressources et couverture smoke test.
- Ajout d'un `WorldMapPanel` Unity compact adossé à `Resources/Maps/dev_world_catalog_v001.json` ; il affiche la zone dev 3x3 comme carte-monde isométrique connectée, met en évidence la carte courante depuis `world.snapshot` et garde `world_0_0` comme origine de coordonnées.
- Mise à jour de `GenerateDevWorldMaps.ps1` pour générer le catalogue de carte-monde depuis les 9 définitions de cartes authorées et le copier dans Unity `Resources`, avec couverture de tests partagés pour éviter les dérives entre JSON de cartes, catalogue traité et catalogue runtime.
- Extension de `resource.gather` avec les premières récompenses d'XP métier : le serveur accorde et persiste les compteurs `profession_xp_<professionId>`, le payload accepté inclut `professionExperienceGranted`, le texte de statut Unity indique le gain d'XP, et la couverture smoke vérifie la persistance dans les snapshots monde rafraîchis.
- Ajout de la présentation Unity du respawn de ressources : les nœuds récoltés ou en respawn sont teintés gris/translucide et affichent un petit label de compte à rebours depuis les payloads `NextAvailableAt`, avec couverture PlayMode pour l'état de cooldown du nœud champignon de la clairière forestière.
- Ajout d'un `GatheringLedgerPanel` Unity compact qui lit les compteurs de monnaie `world.snapshot` et affiche les ressources récoltées courantes plus l'XP métier avec une ligne dérivée niveau/progression dans l'UI monde.
- Ajout du premier contrat autoritaire serveur de porte/interactable avec `interactable.use`, payloads accepté/refusé, validation de portée contre les interactables authorés de carte, gestion des clics de porte Unity et support de transition qui renvoie un `world.snapshot` frais quand une carte cible de porte existe.
- Ajout de `interior_cottage_dev_01`, la première carte intérieure de chaumière en `24x24`, avec une porte de retour vers la case de porte extérieure de la chaumière `world_0_0` et une couverture smoke pour entrer et sortir du bâtiment.
- Ajout de `IsoTactica/Preview/Render Cottage Interior` afin que le nouvel intérieur de bâtiment puisse être rendu directement dans `WorldScene` sans démarrer le serveur.
- Ajout d'un `InventoryPanel` Unity compact qui lit l'état quête/monnaie de `world.snapshot` et affiche les objets clés, ressources récoltées et monnaie de marques de route séparément du panneau métier rapide `Recolte`.
- Ajout de `IsoTactica/Build/Windows Development Client` pour un packaging Windows dev répétable dans Unity, rafraîchissement de l'assembly runtime client packagé avec le dernier code interaction/intérieur/inventaire et régénération de `build/updates/dev/manifest.json`.
- Ajout du découpage de chemin à la souris côté client pour les déplacements et interactions monde : un clic distant sur tuile/ressource/porte se résout maintenant en chemin cardinal, marchable, case par case, tandis que le serveur valide toujours chaque pas ; les actions de ressource ou porte en file se déclenchent ensuite quand le joueur arrive à portée, et la couverture PlayMode vérifie que les cases bloquées sont évitées sans déplacement diagonal.
- Amélioration de l'éditeur de carte dev avec presets de transition cardinale en un clic pour les liens nord/est/sud/ouest et avertissements de validation pour la convention plot/spawn de transition monde plus les portes sans carte/intérieur cible.
- Ajout de `scripts/postgres-smoke.ps1`, un runner smoke répétable adossé à PostgreSQL qui démarre la base compose, applique les migrations, lance le vrai serveur contre PostgreSQL, exécute le smoke test WebSocket et écrit un rapport de playtest.
- Mise à jour des valeurs par défaut du serveur Docker pour charger le dossier `assets/processed/maps/world` généré avec `world_0_0` comme carte par défaut au lieu de l'ancien chemin de carte unique.
- Localisation des derniers statuts du HUD de combat Unity, des textes de ciblage/sélection, des labels initiaux, des détails PV/PA/PM et des labels d'effets actifs autour des noms d'effets issus du catalogue ; reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers packagés.
- Promotion de `Badge de Relais` d'un marqueur de possession d'état de quête vers un vrai item d'inventaire : le support repository lit/accorde maintenant les items depuis `inventories`, `world.snapshot` inclut les payloads d'items, `route.shop.purchase.accepted` renvoie `itemUpdates`, Unity les applique en direct et le panneau `Inventaire` affiche le badge depuis l'état d'item.
- Ajout de la migration PostgreSQL `002_inventory_items_and_world_maps.sql` pour enregistrer l'item badge de relais, protéger l'unicité par item et personnage et seed les IDs de cartes monde/intérieur générées.
- Rafraîchissement de la couverture smoke locale et du package Windows après la passe inventaire ; `docs/playtests/local_inventory_item_smoke_v001.md` vérifie l'achat/persistance de l'item badge, et `build/updates/dev/manifest.json` hashe maintenant l'assembly runtime client mis à jour.
- Extension de `resource.gather` pour accorder de vraies piles de ressources d'inventaire via `itemUpdates` tout en conservant les compteurs existants `resource_*` et `profession_xp_*` pour les panneaux actuels récolte/métier.
- Mise à jour de l'affichage d'inventaire Unity pour séparer les objets clés et les ressources récoltées par `itemType`, avec préférence pour les items ressources plutôt que les anciens compteurs de ressources quand ils sont disponibles.
- Ajout d'une couverture smoke et d'un nouveau rapport, `docs/playtests/local_resource_inventory_stack_smoke_v001.md`, prouvant les mises à jour d'items ressources et la persistance dans un snapshot rafraîchi aux côtés du flux existant d'achat d'item badge de relais.
- Ajout de la première persistance autoritaire des métiers avec la migration `003_character_professions.sql`, support repository, `world.snapshot.professions` et `resource.gather.accepted.professionUpdates`.
- Mise à jour du panneau Unity `Recolte` pour préférer la progression des payloads métier aux anciens compteurs `profession_xp_*`, tout en conservant l'ancien fallback de compteur.
- Nouveau rafraîchissement de la couverture smoke et du runtime client packagé ; `docs/playtests/local_profession_progress_smoke_v001.md` vérifie les mises à jour de progression métier et la persistance dans les snapshots rafraîchis.
- Ajout de la première boucle de craft autoritaire serveur : `crafting.craft` consomme une pile récoltée `resource_mushroom` et accorde `crafted_forest_poultice` / `Cataplasme de Clairiere`, avec payloads accepté/refusé et suppression de l'item d'inventaire quand la pile atteint zéro.
- Mise à jour du bootstrap Unity et du panneau live dev avec une action `Craft` pour la première recette afin que le Play Mode puisse montrer la progression ressource-vers-item-crafté sans outil externe.
- Extension de la couverture smoke et écriture de `docs/playtests/local_crafting_smoke_v001.md` ; le rapport vérifie récolte de champignon, craft, suppression de pile consommée, refus pour ingrédient manquant, persistance métier, achat du badge de relais, combat et présence deux clients.
- Rafraîchissement de l'assembly runtime Windows packagé et du manifest dev ; `Assembly-CSharp.dll` hashe maintenant vers `eb258e0055f8a701cb8081bcd923d7beaa8e26ba5326dbd38b53992011ef5e71`.
- Relance des tests Unity PlayMode via MCP après le rafraîchissement de scripting ; `IsoTactica.Client.PlayModeTests` passe 5/5 dans l'éditeur ouvert.
- Déplacement de la première recette dans un catalogue de craft data-driven : `assets/processed/crafting/crafting_recipes_v001.json`, miroir byte-for-byte dans Unity `Resources/Crafting`, avec couverture de tests partagés pour éviter les dérives processed/runtime.
- Mise à jour du chemin de craft serveur pour charger les recettes depuis le catalogue via `IsoTactica:CraftingRecipePath`, garder un fallback sûr, valider la structure de recette, sérialiser les requêtes de craft par personnage et consommer les exigences d'ingrédients agrégées avant d'accorder les sorties.
- Ajout d'un panneau de craft Unity compact `Atelier` adossé au catalogue de recettes Resources ; il affiche `forest_poultice`, la disponibilité des ingrédients, la sortie et un `CraftRecipeButton` qui envoie l'ID de recette sélectionné.
- Extension de la couverture PlayMode Unity pour le panneau de craft adossé au catalogue et relance PlayMode via MCP ; `IsoTactica.Client.PlayModeTests` passe 5/5.
- Extension de la couverture smoke et écriture de `docs/playtests/local_crafting_catalog_smoke_v001.md` ; le rapport vérifie le craft adossé au catalogue avec suppression de pile consommée, refus pour ingrédient manquant, persistance, transitions, combat, boutique et présence deux clients.
- Reconstruction du client de développement Windows afin que le nouveau catalogue Resources soit packagé dans les données Unity, puis régénération de `build/updates/dev/manifest.json` avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `3db714dd613bb21fd11408b660bcb55d0f504c7fb424827b9c2914cd388f795a`.
- Ajout de la première règle de craft conditionnée par station : `forest_poultice` requiert maintenant une station authorée `herbalist_workbench`, et `interior_cottage_dev_01` contient la première interactable `Table d'herboriste` sur la table de la chaumière.
- Mise à jour du panneau Unity `Atelier` pour afficher la disponibilité de station et désactiver l'action de craft tant que le `world.snapshot` courant ne place pas le joueur près de la station requise.
- Extension de la couverture smoke et écriture de `docs/playtests/local_crafting_station_smoke_v001.md` ; le rapport vérifie le refus `station_required` loin de la station de chaumière, l'accès/utilisation de station dans la chaumière, le craft accepté à l'établi, le refus pour ingrédient manquant et le flux existant transition/combat/boutique/deux clients.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `7e78a162c179551fd9ff87bf20ca604e4a65b5122e1b8c22f8a470627b3e06df`, et `data.unity3d` hashe vers `d3e77265e03b84bca91ce7b78d9a67e1322db563e5c7014abf82b640339a8b71`.
- Ajout de `forest_tonic`, une deuxième recette d'herboristerie adossée au catalogue verrouillée derrière `requiredLevel: 2`, et mise à jour de la validation de craft serveur pour refuser les recettes de niveau trop bas avec `profession_level_required`.
- Mise à jour du panneau Unity `Atelier` avec contrôles recette précédente/suivante plus disponibilité de niveau métier afin que plusieurs recettes de catalogue soient visibles avant qu'une UI de craft plus complète existe.
- Extension de la couverture smoke pour écrire `docs/playtests/local_crafting_unlock_smoke_v001.md` ; le rapport vérifie le gating de station, le refus de recette niveau 2, le craft niveau 1 accepté, la suppression de pile consommée, le refus pour ingrédient manquant et le flux existant transition/combat/boutique/deux clients.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `ca02024ef73c977e1eeced42b20c9e72a487045b67945ee6934826d9ad4da2a8`, et `data.unity3d` hashe vers `8f0239a21a0cd84063f6b25dbba3d2a252b657cac326fcb6ad31f78686e81e51`.
- Ajout de l'XP de métier de craft aux données de recette et à `crafting.craft.accepted`, incluant les mises à jour de monnaie métier legacy et les `professionUpdates` autoritaires pour que Unity puisse avancer immédiatement la progression métier après un craft.
- Extension de la couverture smoke pour écrire `docs/playtests/local_crafting_progression_smoke_v001.md` ; le rapport vérifie que `forest_poultice` fait progresser l'herboristerie au niveau 2 et que `forest_tonic` passe de `profession_level_required` avant le craft à `missing_ingredients` après le déverrouillage.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `4fffee1cfd7879588908acd51fefcf79699ba845bdb3d6c799ec2f82bb912abd`, et `data.unity3d` hashe vers `c536988ed3892e2c0338dbd0e670ce299f816f996fd45059e6ce12dd917f94b9`.
- Extension du parcours smoke dans la forêt nord et les nœuds de champignons du marais afin que le chemin automatisé récolte assez de vraies ressources pour crafter `forest_poultice` et le `forest_tonic` niveau 2 déverrouillé.
- Écriture de `docs/playtests/local_crafting_second_recipe_smoke_v001.md` ; le rapport vérifie les réserves de ressources multi-cartes, le craft accepté réussi de `forest_tonic`, la persistance des deux consommables craftés et le refus ensuite quand les réserves sont vides.
- Ajout de `inventory.use`, `inventory.use.accepted` et `inventory.use.rejected` dans le protocole partagé, le routage WebSocket serveur, les constantes de protocole Unity et les modèles client.
- Ajout de la première utilisation en combat de consommables craftés : `crafted_forest_poultice` et `crafted_forest_tonic` se résolvent en effets de soin autoritaires serveur, exigent un combattant joueur vivant et actif, consomment un item seulement quand le soin est utile et renvoient les mises à jour d'items plus un snapshot de combat rafraîchi.
- Mise à jour du `InventoryPanel` Unity avec une action temporaire `Utiliser` pour les consommables craftés, et mise à jour de `GameBootstrap` pour envoyer les requêtes d'utilisation d'inventaire, appliquer les mises à jour d'items renvoyées et appliquer le snapshot de combat autoritaire.
- Extension de la couverture smoke et écriture de `docs/playtests/local_consumable_use_smoke_v001.md` ; le rapport vérifie que le cataplasme crafté peut être utilisé pendant le combat, soigne les PV manquants, consomme l'item, garde le tonic crafté et préserve le flux existant transition/intérieur/craft/boutique/présence.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `026934119efcb56620cf1b3116ac51edb4b43ace85ee620cf5b8e034ca58a2b6`, et `data.unity3d` hashe vers `3ae1f083017a97c5eb39b34e9c8c9b3a7d6ddeef1257c3116703bdfc2e851c46`.
- Ajout du premier catalogue d'items data-driven, `assets/processed/items/items_v001.json`, miroir dans Unity `Resources/Items`, avec couverture de tests partagés qui garde les deux copies byte-identiques et valide les définitions d'items/effets d'utilisation de départ.
- Mise à jour de `inventory.use` serveur pour résoudre les effets de soin en combat depuis le catalogue d'items au lieu d'IDs d'items hardcodés, avec un catalogue d'items fallback pour les exécutions locales isolées.
- Mise à jour du `InventoryPanel` Unity pour lire les consommables utilisables depuis `Resources/Items/items_v001.json` afin que les futurs items authorés dans l'éditeur puissent activer le même bouton sans changement de code client.
- Extension de la couverture smoke et écriture de `docs/playtests/local_item_catalog_consumable_smoke_v001.md` ; le rapport vérifie que les deux consommables herboristes craftés soignent depuis les effets du catalogue d'items, consomment leurs piles d'inventaire et persistent comme supprimés après combat.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `f7612ed6dc8f4534acc30d81fa1c2ca44a8f787d4d5002e900138779969cf51a`, et `data.unity3d` hashe vers `7669f3e8e80baa6a1ffd80e2fdcddbb30044df3c7cfa387f780872cd02cf10f9`.
- Ajout de `flower_balm` / `Baume Floral`, une troisième recette d'herboriste qui consomme `resource_wild_flower`, accorde de l'XP de craft, produit `crafted_flower_balm` et définit un effet de soin de combat dans le catalogue d'items.
- Mise à jour des catalogues fallback serveur et Unity afin que les exécutions locales isolées exposent toujours les mêmes trois recettes de départ et trois consommables herboristes craftés quand les assets JSON sont absents.
- Extension de la couverture catalogue partagée pour valider 3 recettes et 5 définitions d'items, incluant la nouvelle recette de fleur sauvage et l'effet d'utilisation de `crafted_flower_balm`.
- Relance de la couverture smoke et écriture de `docs/playtests/local_expanded_crafting_catalog_smoke_v001.md` ; le rapport confirme que le flux jouable existant passe toujours pendant que le serveur charge 3 recettes et 5 définitions d'items.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `ec26e3f661fe40460e19b3abc5765177e4dd27411d6cc6676d8b063d0b5185e9`, et `data.unity3d` hashe vers `9614faa9f57c76fa1d9d08abebeb3a0df72c722788b1b9743bcd7ffeb5ef7860`.
- Extension de la route smoke pour voyager de la chaumière à `world_1_0`, récolter `village_herbs_01` / `resource_wild_flower`, revenir à la table d'herboriste, crafter `flower_balm`, persister l'herboristerie niveau 3 et utiliser `crafted_flower_balm` pendant le combat.
- Écriture de `docs/playtests/local_flower_balm_crafting_smoke_v001.md` ; le rapport vérifie 48 checkpoints incluant les trois consommables herboristes de départ craftés, consommés en combat et supprimés de l'état d'inventaire rafraîchi.
- Ajout d'un lookup Unity partagé de catalogue d'items afin que les panneaux `Inventaire` et `Atelier` affichent les effets de soin de combat directement depuis `Resources/Items/items_v001.json`, par exemple `(Soin +20 PV)` sur les consommables craftés.
- Extension de la couverture PlayMode Unity pour que les panneaux craft et inventaire adossés au catalogue vérifient les suffixes d'effet de soin visibles pour les items craftés.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `ff069a59b4d9b8e9f455f6a72aa549db64906a1a779fe55bf51fc160b5e55cf1`, et `data.unity3d` hashe vers `9614faa9f57c76fa1d9d08abebeb3a0df72c722788b1b9743bcd7ffeb5ef7860`.
- Ajout de `reed_focus_brew` / `Infusion de Roseaux`, une recette d'herboriste niveau 3 qui consomme `resource_reed`, accorde de l'XP de craft, produit `crafted_reed_focus_brew` et définit le premier effet d'item de combat restaurant des PA via `restore_action_points`.
- Extension du catalogue d'items à 8 définitions, incluant `resource_wild_flower`, `resource_reed` et le nouveau consommable crafté qui restaure des PA, avec les catalogues fallback serveur/Unity gardés en synchronisation.
- Mise à jour de `inventory.use` serveur pour résoudre plusieurs effets d'items de combat supportés depuis le catalogue d'items : `heal` restaure les PV et `restore_action_points` restaure les PA sans dépasser les maxima du combattant.
- Mise à jour du lookup de catalogue d'items Unity, de l'UI `Inventaire` et `Atelier` pour afficher à la fois les suffixes de soin et les suffixes de PA, par exemple `(PA +2)`.
- Extension de la couverture smoke et écriture de `docs/playtests/local_ap_focus_brew_smoke_v001.md` ; le rapport vérifie 53 checkpoints incluant récolte de roseaux, craft de recette PA niveau 3, restauration de PA en combat, consommation d'item, trois consommables de soin herboristes, quête/boutique/présence et contrôles de persistance rafraîchie.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `c5e3e50815acfb389e0f8526acfa7c5cc0822ca462a43080df85cfc4e3b7230a`, et `data.unity3d` hashe vers `2252b7262571d0fdc8244789cb1b0a81a9f6a9ef5f0992e9ab62f8e18605b9c1`.
- Ajout d'une sélection compacte des consommables dans `Inventaire` avec contrôles précédent/suivant et ligne `Pret:`, afin que plusieurs items utilisables puissent être sélectionnés explicitement avant d'appuyer sur `Utiliser`.
- Extension de la couverture PlayMode Unity pour le sélecteur de consommables, incluant la navigation du consommable de soin vers `Infusion de Roseaux (PA +2)` puis retour.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `5cc6bea465a2aa5ee21d27ed7785e0cd979581f34ec9a1d256a5008d5de11b80`, et `data.unity3d` hashe vers `eec283f04d66d79f60b59811dd5e6a8cc5502407daa548cd997c4b313a9bdb66`.
- Enrichissement du panneau Unity `Carte Monde` avec biome de la carte courante, cibles de transition et résumés de types de ressources afin que la zone dev 3x3 connectée soit plus facile à vérifier dans l'UI live et le futur workflow éditeur.
- Extension de la couverture PlayMode Unity pour le texte d'information de carte-monde enrichi, incluant les assertions de coordonnées, biome, sorties et résumé de ressources.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `5740efe688aefe7d67be8a76a4a5e0a846c0bad69c01edfeb67386dc2775117a`, et `data.unity3d` hashe vers `eec283f04d66d79f60b59811dd5e6a8cc5502407daa548cd997c4b313a9bdb66`.
- Ajout du premier contrat de déplacement en combat autoritaire serveur : `combat.move` valide le tour actif du joueur, l'état de combattant vivant, le déplacement cardinal d'une case, la marchabilité de la carte, les cases de combat occupées et les PM restants avant de renvoyer `combat.move.accepted` ou `combat.move.rejected`.
- Mise à jour du protocole partagé, du routage serveur, des constantes de protocole Unity, des modèles réseau Unity et de la couverture smoke pour le déplacement en combat sur les mêmes cases de carte authorées que l'exploration.
- Extension de la couverture smoke et écriture de `docs/playtests/local_combat_movement_smoke_v001.md` ; le rapport vérifie 55 checkpoints incluant déplacement en combat accepté consommant 1 PM, refus de déplacement invalide, restauration de PA, tous les consommables craftés de départ, transitions de cartes, intérieurs, récolte, craft, boutique, quête et présence deux clients.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `7a9add243691aea7afb7b2aac5f3d2be507397126b69e23d4766009b9f57af63`, et `data.unity3d` hashe vers `eec283f04d66d79f60b59811dd5e6a8cc5502407daa548cd997c4b313a9bdb66`.
- Branchement de l'entrée de déplacement en combat Unity : quand le combat est actif et qu'aucun sort n'est sélectionné, cliquer sur une case adjacente valide envoie `combat.move`, surligne les cases atteignables en un pas, efface le feedback en attente sur acceptation/refus et met à jour le statut du HUD de combat avec les PM restants ou la raison du refus.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `6aa63e1173069638bdb69a818dd7fd17cb33beec93ef8372e453df8493794887`, et `data.unity3d` hashe vers `eec283f04d66d79f60b59811dd5e6a8cc5502407daa548cd997c4b313a9bdb66`.
- Amélioration du déplacement en combat Unity, des clics adjacents seuls vers des clics de destination dans les PM courants : le client construit un chemin cardinal, évite les cases de combat occupées, met en file un `combat.move` par pas et s'arrête sur tout refus serveur.
- Extension de la couverture PlayMode Unity à 6 tests avec un test de chemin souris en combat qui vérifie l'évitement des cases occupées et le refus de route limitée par les PM.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `8da4e882dc0224cfd92f6ed7916cf9b2fc24ce87e94ee00a8e5e995c8876020d`, et `data.unity3d` hashe vers `eec283f04d66d79f60b59811dd5e6a8cc5502407daa548cd997c4b313a9bdb66`.
- Ajout de `fieldstone_guard_pebble` / `Galet de Garde`, la première recette de minage : elle consomme `resource_fieldstone`, requiert la nouvelle station `stonecutter_block` dans la chaumière, accorde de l'XP de craft minage et produit `crafted_guard_pebble` comme objet clé de départ.
- Ajout de l'interactable/station `Billot de taille` dans la chaumière et d'un prop visible correspondant dans `interior_cottage_dev_01`, en gardant la station sur une case marchable de carte `24x24` pour une réutilisation future dans l'éditeur.
- Extension du catalogue d'items à 18 définitions, avec ajout de vraies métadonnées d'items ressources pour tous les types de ressources actuels du monde dev : bois tendre, pierre brute, bois de saule, bois flotté, coquillages, lin, grain, minerai de fer et argile, plus l'objet clé galet de garde.
- Mise à jour des catalogues fallback serveur et Unity de craft/items afin que les exécutions locales isolées exposent toujours les mêmes 5 recettes et 18 définitions d'items quand les assets JSON sont indisponibles.
- Extension des tests partagés catalogue/carte pour valider 5 recettes, 18 items, toutes les définitions d'items ressources récoltées sur les cartes et la nouvelle station de taille de pierre de la chaumière.
- Extension de la couverture smoke et écriture de `docs/playtests/local_mining_recipe_smoke_v001.md` ; le rapport vérifie 60 checkpoints incluant récolte de pierre brute, accès au billot de taille, craft de `fieldstone_guard_pebble`, persistance du minage niveau 2, persistance du galet de garde dans l'inventaire et le flux existant transition/intérieur/craft/combat/boutique/présence.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `e0508311dc2a1af10faf74537b2da94236d85b14a0e52192aa2983297fbb0037`, et `data.unity3d` hashe vers `b4c9c2849f86a8ad0d71ca302eaaf2f6425281fd519845e24d9fb34d6d9c6680`.
- Ajout de `softwood_training_stake` / `Piquet d'entrainement`, la première recette de bûcheronnage : elle consomme `resource_softwood`, requiert la nouvelle station `carpenter_bench` dans la chaumière, accorde de l'XP de craft bûcheronnage et produit `crafted_training_stake` comme objet clé de départ.
- Ajout de l'interactable/station `Etabli de bois` dans la chaumière et d'un prop visible correspondant dans `interior_cottage_dev_01`, en gardant la station sur une case marchable de carte `24x24` pour une réutilisation future dans l'éditeur.
- Extension du catalogue de recettes à 6 définitions et du catalogue d'items à 19 définitions, avec les fallbacks de craft serveur et Unity gardés en synchronisation.
- Extension des tests partagés catalogue/carte pour valider 6 recettes, 19 items et la nouvelle station de menuiserie de la chaumière.
- Extension de la couverture smoke et écriture de `docs/playtests/local_woodcutting_recipe_smoke_v001.md` ; le rapport vérifie 65 checkpoints incluant récolte de bois tendre, accès à l'établi de bois, craft de `softwood_training_stake`, persistance du bûcheronnage niveau 2, persistance du piquet d'entraînement dans l'inventaire et le flux existant transition/intérieur/craft/combat/boutique/présence.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `a885f2a3535c305547ac11405531cfad78c4cc48dc8d3895c3aaf96ec610b9f7`, et `data.unity3d` hashe vers `77709026cd0b7b3ac1a1b5993e0aa31fdac894ca6c74413ec89509dce0badf59`.
- Ajout de `iron_route_buckle` / `Boucle de Route`, une recette de minage niveau 2 qui consomme `resource_iron_ore`, requiert la nouvelle station de château `forge_anvil`, accorde de l'XP de craft minage et produit `crafted_route_buckle` comme objet clé de départ.
- Ajout de l'interactable/station de château `Enclume de campagne` à `world_1_-1`, en gardant la station sur une case marchable de carte monde `24x24` afin que le craft ne soit plus limité à l'intérieur de la chaumière.
- Extension du catalogue de recettes à 7 définitions et du catalogue d'items à 20 définitions, avec les fallbacks de craft serveur et Unity gardés en synchronisation.
- Extension des tests partagés catalogue/carte pour valider 7 recettes, 20 items, toutes les définitions d'items ressources récoltées sur les cartes, les stations de chaumière et la nouvelle station de forge du château.
- Extension de la couverture smoke et écriture de `docs/playtests/local_forge_recipe_smoke_v001.md` ; le rapport vérifie 71 checkpoints incluant voyage au château, récolte de minerai de fer, accès à la forge, craft de `iron_route_buckle`, persistance de progression minage niveau 2, persistance de la boucle de route dans l'inventaire et le flux existant transition/intérieur/craft/combat/boutique/présence.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `a933b8ccfd1aa3d87d3c266993c2a4ec486b8dee63d2a3a722a18f949a186617`, et `data.unity3d` hashe vers `7137f6156dbd6a80d6a31340e94b963b0a851fb77a3c97f7b1150946512b59a7`.
- Ajout du premier catalogue de rencontres data-driven, `assets/processed/encounters/encounters_v001.json`, miroir dans Unity `Resources/Encounters`, afin que les rencontres authorées puissent alimenter les workflows serveur et client/éditeur.
- Déplacement de `routes_guard_relay` vers la rencontre `Relais de Ronce` adossée au catalogue et remplacement de l'identité d'ennemi debug hardcodée `Pantin de Route` par `Marche-ronce du Relais` authoré.
- Mise à jour du panneau PNJ Unity `Garde des Routes` pour lire le catalogue de rencontres et afficher les noms authorés de rencontre/ennemi avant de démarrer le combat.
- Extension des tests partagés à 27/27 avec miroir du catalogue de rencontres et couverture de validation pour la première définition de rencontre authorée.
- Extension de la couverture smoke et écriture de `docs/playtests/local_encounter_catalog_smoke_v001.md` ; le rapport vérifie 71 checkpoints incluant le démarrage de rencontre authoré par catalogue contre `Marche-ronce du Relais`, plus le flux existant transition/intérieur/ressource/craft/combat/boutique/présence.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `be36c9b054d3d7c455cae48887b5bc01c594abe62c5c1cca726a2f859dc614b6`, et `data.unity3d` hashe vers `95f41e3c55c851341f4e50434e69a8b4e3cacdced6958a4222edb2ed76cc3bb`.
- Ajout du premier catalogue d'ennemis/bestiaire, `assets/processed/enemies/enemies_v001.json`, miroir dans Unity `Resources/Enemies`, définissant `enemy_marche_ronce_relais` avec stats de combat et chemin de sprite de combat authoré par catalogue.
- Mise à jour de `routes_guard_relay` afin que la rencontre référence maintenant `enemy_marche_ronce_relais` au lieu de porter directement des stats d'ennemi dupliquées.
- Extension des payloads de combattants avec `spriteResourcePath`, permettant au renderer de combat Unity de charger les sprites ennemis depuis les données authorées avant un remplacement bestiaire/art plus large.
- Extension des tests partagés à 28/28 avec miroir du catalogue d'ennemis, validation de référence rencontre-vers-ennemi et premiers contrôles de métadonnées stats/sprite ennemi.
- Extension de la couverture smoke et écriture de `docs/playtests/local_enemy_catalog_smoke_v001.md` ; le rapport vérifie 71 checkpoints incluant la rencontre `Relais de Ronce` authorée par catalogue contre `Marche-ronce du Relais` authoré par bestiaire, avec chemin de sprite de combat.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `dea27fd8c0d17c24601b833962415a2d01a52b1499f24106301a72e3ff3e93cb`, et `data.unity3d` hashe vers `d87c269b8338db3c90d91e6ffd0f5d843d6ea215fff01bfe05011703f7ba3bf8`.
- Ajout de `behaviorId: approach_and_strike` et `attackRange: 1` à la première définition d'ennemi afin que le comportement de l'ennemi de départ soit authoré dans le bestiaire plutôt qu'implicite dans le code serveur.
- Mise à jour de l'auto-tour ennemi serveur pour attaquer uniquement quand le joueur est à portée ; sinon l'ennemi se déplace d'une case cardinale valide vers le joueur, en respectant la marchabilité, les cases de combat occupées et les PM restants avant de frapper si la portée est atteinte.
- Extension de la couverture smoke et écriture de `docs/playtests/local_enemy_behavior_smoke_v001.md` ; le rapport vérifie 71 checkpoints incluant le déplacement ennemi avant dégâts quand le joueur sort de la portée adjacente.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 235 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `73d008433c2071cf683df772ec39f7c43e3dadb7076aeb962258f3201c9ec2a9`, et `data.unity3d` hashe vers `7743110e49ed520f9897a34d7595f095c1abb2fad61a16ac591606ea05b9b8e9`.
- Ajout du premier catalogue de quêtes data-driven, `assets/processed/quests/quests_v001.json`, miroir dans Unity `Resources/Quests`, définissant `routes_guard_stabilize` / `Garde des Routes`, sa rencontre de départ, son texte de complétion et sa récompense de `25` `route_marks`.
- Mise à jour des snapshots de quête serveur, des récompenses de victoire de combat, de `NpcQuestPanel`, `QuestJournalPanel` Unity et de la logique fallback de démarrage de rencontre de route pour lire le catalogue de quêtes au lieu de dupliquer le premier texte/récompense de quête dans le code.
- Extension des tests partagés à 29/29 avec miroir du catalogue de quêtes et couverture de validation, et extension de la couverture PlayMode afin que le panneau PNJ vérifie le texte de quête authoré par catalogue.
- Extension de la couverture smoke et écriture de `docs/playtests/local_quest_catalog_smoke_v001.md` ; le rapport vérifie 71 checkpoints incluant les payloads de quête data-authored, la persistance du démarrage de rencontre, le texte de complétion authoré par catalogue et l'attribution des marques de route.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `91234a8dae291487391f4985a37635b2272198d02a5b6a27fe8c243dd894247f`, `resources.assets` hashe vers `0a6f18a73afd29eb05f399c4c88c6714e49f0e90e977c7f5e2e5a6b3f7fe6a4d`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.
- Ajout du premier catalogue de boutiques data-driven, `assets/processed/shops/shops_v001.json`, miroir dans Unity `Resources/Shops`, définissant `route_guard_shop` / `Boutique du Relais` et les données d'achat `route_relay_badge`.
- Mise à jour du flux d'achat de boutique du garde de route afin que le serveur et Unity lisent l'ID d'item badge, le nom affiché, le coût de `10` `route_marks` et le verrou `routes_guard_stabilize:completed` depuis le catalogue de boutiques au lieu de constantes boutique de route hardcodées.
- Extension des tests partagés à 30/30 avec miroir du catalogue de boutiques et validation du coût/verrou du badge de route, et extension de la couverture PlayMode Resources pour le catalogue de boutiques.
- Extension de la couverture smoke et écriture de `docs/playtests/local_shop_catalog_smoke_v001.md` ; le rapport vérifie 71 checkpoints incluant les données d'achat de badge authorées par catalogue, la dépense de marques de route, la persistance de l'item badge, le refus d'achat doublon et le flux existant quête/rencontre/craft/combat/présence.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `c6177604311ad9fccf3d090455a5947765686cf6e107bdb1e29f55b01758ed66`, `resources.assets` hashe vers `3661987aba1385aae746b3ef193bdbb9516b2b769b5d1e8ce8237567f088bcfc`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.
- Ajout du premier catalogue PNJ data-driven, `assets/processed/npcs/npcs_v001.json`, miroir dans Unity `Resources/Npcs`, définissant `npc_route_warden_clearing` / `Gardien de la Clairiere` et ses liens carte interactable, quête, boutique et sprite.
- Mise à jour du serveur pour charger et valider le catalogue PNJ au démarrage, incluant les références aux cartes, interactables, quêtes et boutiques authorés.
- Mise à jour de la présentation monde Unity afin que les PNJ se rendent depuis les liaisons catalogue + interactable de carte au lieu de placer un placeholder sur chaque case d'interaction ; le titre du panneau garde de route utilise maintenant le nom PNJ authoré par catalogue.
- Extension des tests partagés à 31/31 avec miroir du catalogue PNJ et validation croisée carte/quête/boutique, et extension de la couverture PlayMode pour le chargement du catalogue PNJ plus la sélection de sprite PNJ rendu.
- Ajout de `docs/playtests/local_npc_catalog_ui_smoke_v001.md` ; il consigne 18 checkpoints de validation pour la tranche UI catalogue PNJ, Unity PlayMode, builds serveur/smoke, build Windows et régénération de manifest.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `c444641592e9185ec647eed9e617ee55177e4ec8e6214c189a7ddf8925a58446`, `resources.assets` hashe vers `30c9203b26dc2c2fa4f928978088f5ddafca716d9a6abb475ff50665740486cd`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.
- Ajout du premier catalogue de sorts data-driven, `assets/processed/spells/spells_v001.json`, miroir dans Unity `Resources/Spells`, définissant les trois sorts de combat de départ pour les voies de classe Relieur, Sculpteur et Vitrailleur.
- Mise à jour du chemin de combat serveur pour charger et valider les définitions de sorts depuis le catalogue de sorts, puis utiliser les sorts chargés du catalogue pour la validation de lancement, la gestion PA/cooldown/portée et les payloads de snapshot de combat.
- Ajout de `SpellCatalogLookup` Unity plus couverture Resources afin que les futurs outillages UI/éditeur puissent lire les données de sorts de départ sans dupliquer les règles serveur.
- Extension des tests partagés à 32/32 avec miroir du catalogue de sorts et validation PA/portée/cooldown/effet des sorts de départ, et extension de la couverture PlayMode pour `Resources/Spells/spells_v001`.
- Ajout de `docs/playtests/local_spell_catalog_ui_smoke_v001.md` ; il consigne 15 checkpoints de validation pour la tranche catalogue de sorts, Unity PlayMode, builds serveur/smoke, build Windows, vérification launcher et régénération de manifest.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `c2d197d7e2db8726498ed9de40e723db44ad51ebbe019e577ba460b1da6a8593`, `resources.assets` hashe vers `e7f8b48269d3495db897d046d4f831ee3ae79f6de3c8c7dd96dc1b6021b77c28`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.
- Ajout du premier catalogue de classes data-driven, `assets/processed/classes/classes_v001.json`, miroir dans Unity `Resources/Classes`, définissant `Relieur d'Aegis`, `Sculpteur de Brume` et `Vitrailleur Astral` avec rôle, ressource de classe et liens de sorts de départ.
- Mise à jour du serveur pour charger et valider le catalogue de classes après le catalogue de sorts, incluant les contrôles de références classe-vers-sort et de propriété de sort.
- Mise à jour des snapshots de combat et du lancement de sorts afin que le kit de classe actif du personnage contrôle les sorts disponibles ; le personnage par défaut `relieur_aegis` reçoit maintenant seulement `anchor_spark`, et les sorts hors classe sont refusés avec `spell_not_found`.
- Ajout de `ClassCatalogLookup` Unity plus couverture PlayMode Resources pour le catalogue de classes.
- Extension des tests partagés à 33/33 avec miroir du catalogue de classes et validation de propriété des sorts de départ, et mise à jour de l'outil smoke-test avec assertions protocole pour l'exposition des sorts filtrés par classe et le refus des sorts hors classe.
- Ajout de `docs/playtests/local_class_catalog_ui_smoke_v001.md` ; il consigne 16 checkpoints de validation pour la tranche catalogue de classes, Unity PlayMode, builds serveur/smoke, build Windows, vérification launcher et régénération de manifest.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `4ee47b4861e1c46441d5c2682c579c923923faea3cc59e61f98f08f9f85f5068`, `resources.assets` hashe vers `7af0184eb8f91577e065c9b909baf3048182d837d965c5769969ce94eb878626`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.
- Ajout de métadonnées visuelles de sorts authorées par catalogue dans `spells_v001.json` : les sorts de départ possèdent maintenant leur chemin de sprite d'icône, leur chemin de sprite d'effet persistant et leur label court d'effet en monde.
- Mise à jour du rendu des effets de combat Unity pour résoudre les sprites et labels d'effets persistants depuis le catalogue de sorts, avec l'ancien switch de sprite par type d'effet conservé uniquement comme fallback.
- Extension de la validation serveur/shared afin que les sorts persistants portent des métadonnées visuelles complètes et que les chemins de sprites Unity `Resources` restent sous `Sprites/`.
- Ajout de `docs/playtests/local_spell_visual_catalog_ui_smoke_v001.md` ; il consigne 17 checkpoints de validation pour les métadonnées visuelles de sorts, Unity PlayMode, builds serveur/smoke, build Windows, vérification launcher et régénération de manifest.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `78b76ee7822f0dc88cf54c9156edd65238ac13cfe81e00929fb712019016d10c`, `resources.assets` hashe vers `505ab109bce3d0691072fc3f5c1dc8db39e4574540e1fa7fe1e2b428e287ffeb`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.
- Ajout de l'identité d'attaque ennemie authorée par catalogue dans `enemies_v001.json` : `enemy_marche_ronce_relais` possède maintenant `attackId: walking_root_jab` et `attackDisplayName: Coup de Racine Mobile`.
- Mise à jour du log d'auto-tour ennemi serveur pour utiliser le nom d'attaque authoré par bestiaire au lieu d'un message de frappe générique hardcodé.
- Extension de la validation partagée et smoke-test pour les métadonnées d'attaque ennemie et les logs de dégâts ennemis authorés par bestiaire.
- Exécution du flux smoke WebSocket complet local en mémoire et écriture de `docs/playtests/local_enemy_attack_catalog_smoke_v001.md` ; il vérifie 72 checkpoints incluant l'identité de log d'attaque ennemie `Coup de Racine Mobile` authorée par bestiaire.
- Ajout de `docs/playtests/local_postgres_enemy_attack_smoke_v001.md` documentant le blocage du smoke PostgreSQL : la CLI Docker est installée, mais le pipe du daemon Docker local était indisponible pendant l'exécution.
- Durcissement de `scripts/postgres-smoke.ps1` afin que les échecs natifs Docker/smoke arrêtent le script, que le serveur tourne sans overrides d'URL de launch-profile et que le smoke attende la disponibilité HTTP au lieu d'un sommeil aveugle.
- Capture d'un screenshot QA visuel limité de la Game View Unity Editor après le build du catalogue d'attaques ennemies et documentation dans `docs/playtests/local_visual_qa_enemy_attack_catalog_v001.md` ; la QA visuelle du client packagé en 1920x1080 reste en attente.
- Ajout de `docs/playtests/local_enemy_attack_catalog_ui_smoke_v001.md` ; il consigne 16 checkpoints de validation pour les métadonnées d'attaque de bestiaire, Unity PlayMode, builds serveur/smoke, build Windows, vérification launcher et régénération de manifest.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `0b04a2a2157676005d767e4928a751fe5690e2c56d86ec4eb45876da251fc9c5`, `resources.assets` hashe vers `26ea790ddef26259ff7fcc8891092679d9f03d06598f0db1023feeb7db331e77`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.
- Mise à jour de la copie d'aperçu des sorts du HUD de combat Unity pour utiliser les termes tactiques français (`PA`, `PM`, `portee`, `puissance`) et les labels d'effets de sorts issus du catalogue au lieu de noms d'effets anglais hardcodés.
- Ajout de `docs/playtests/local_combat_hud_spell_preview_ui_smoke_v001.md` ; il consigne 12 checkpoints de validation pour la copie d'aperçu HUD, Unity PlayMode, build Windows, vérification launcher et régénération de manifest.
- Reconstruction du client de développement Windows et régénération du manifest dev avec 249 fichiers ; `Assembly-CSharp.dll` hashe maintenant vers `c8fd56d5757f09a1b9366c02d96a67430b77e908792da45b082aca081e86b42e`, `resources.assets` hashe vers `26ea790ddef26259ff7fcc8891092679d9f03d06598f0db1023feeb7db331e77`, et `resources.assets.resS` hashe vers `bd373125a5a9092234c3f50d67026b33424df670289b78a686632b208e430d1b`.]]></description>
        </item>
    </channel>
</rss>