openthebox/bugs.md
Samuel Bouchet 82aba2b3eb Fix layout, portrait cosmetics, add TUI renderer, snapshots, and playthrough analysis
- Fix compact tmux-like layout (120×30 ref) with side-by-side panels
- Fix cosmetic portrait: PlayerAppearance now mutable with ApplyCosmetic()
- Add per-style intrinsic colors for all cosmetic types on portrait
- Add compact inventory mode (6 rows) for layout views
- Add Terminal.Gui renderer (--tui flag)
- Add save snapshot generation and --snapshot N CLI loading
- Add PlaythroughCapture test for automated output analysis
- Add destiny adventure French translation (intro.fr.lor)
- Remove FontStyle enum (fonts are collectibles only)
- Add proposals.md with 11 rendering improvement suggestions
- Update bugs.md (3 FIXMEs resolved)
2026-03-13 21:37:09 +01:00

3.1 KiB
Raw Blame History

Bug tracker

Les sujets dans FIXME doivent être corrigé, puis déplacé dans "DONE", puis commit de ce fichier avec le fix.

FIXME

DONE

Terminal size 120×30 — DONE

SpectreRenderer cap désormais AnsiConsole.Profile.Width à 120 colonnes (RefWidth). Le layout est conçu pour tenir dans 30 lignes. Les constantes RefWidth=120 et RefHeight=30 servent de référence.

Layout compact tmux — DONE

RenderFullLayout utilise des Table.NoBorder() pour placer les panels côte à côte sans gaps. Row 1: Portrait(20) | Stats(30) | Resources(fill). Row 2: Inventory(60) | Crafting+Chat+Completion(fill). RenderSequentialPanels groupe aussi les panels top côte à côte quand plusieurs sont débloqués.

Couleurs sur le portrait — DONE

Chaque type de cosmétique a maintenant sa propre couleur intrinsèque (yeux bleus=dodgerblue, cheveux feu=red, cyberpunk=aqua, etc.). Les tints explicites (HairTint/BodyTint) restent prioritaires. Les yeux, jambes et bras ont aussi leurs propres couleurs au lieu d'être tous blancs.

panneau d'inventaire — DONE

Scroll interactif implémenté : ↑↓ ligne par ligne, PgUp/PgDn page par page, Esc/Q pour sortir. Panneau limité à 15 lignes avec indicateur de position (ex: 1-15/42). Noms traduits, catégories, raretés colorées, colonne Name fixée à 24 chars.

Polices de caractère — supprimées

Impossible de changer la police du terminal programmatiquement. Les items font ont été supprimés du jeu (items.json, boxes.json, enum, code).

Portrait représente une boîte — DONE

Le portrait ASCII art représente maintenant une boîte (+------+) avec des cosmétiques dessus : cheveux sur le dessus, yeux sur la face, corps comme décoration, jambes en dessous, bras sur les côtés.

Police de caractère — DONE

Les fonts sont des collectibles purs (comptent pour la complétion). Le terminal gère sa propre police. Un message explicite est maintenant affiché au loot : « Police 'X' collectionnée ! (Collectible — la police de votre terminal reste inchangée) ».

Double crochets aventures — DONE

Le préfixe [Terminée] utilisait ... (échappement Spectre) mais ShowSelection échappe déjà les options. Corrigé en utilisant des crochets simples.

Boîtes meta auto-upgrade — DONE

BoxEngine détecte automatiquement quand tous les items d'un tier meta sont obtenus et upgrade le box_meta vers le tier suivant : basics → interface → deep → resources → mastery. Revert de la fusion incorrecte.

Double boîte d'aventure pirate (interactions) — DONE

Le prompt ChoiceRequiredEvent utilisait un texte anglais hardcodé comme clé de localisation → [MISSING:...]. Corrigé : utilise la clé "prompt.choose_interaction" et affiche les DescriptionKey des règles (traduits) au lieu des IDs bruts.

Aventure destiny FR — DONE

Créé intro.fr.lor pour l'aventure destiny (68 tags traduits). Tests ajoutés (existence, parsing, couverture tags).

Fin de partie après destiny — DONE

Après l'aventure destiny, un choix épilogue est proposé : continuer en jeu libre ou refermer la boîte (quitter). Le ton reste poétique et cohérent avec le récit.