Compile the game to WebAssembly so it runs entirely client-side in the browser.
Uses xterm.js for terminal emulation and Spectre.Console off-screen rendering
for full ANSI output fidelity. Saves use localStorage. CI deploys to itch.io
via Butler on push to main.
Redesign the interaction mechanic into a recursive chain reaction system
where items can trigger cascading reactions. Keys now open themed chests
which produce items that may trigger further reactions, with chain bonus
rewards for multi-step chains (x2/x3/x4+).
- Add 6 themed chests + mysterious chest + alchemist stone catalyst
- Rewrite InteractionEngine with recursive chain loop (max depth 10)
- Add ConsumeTrigger field to InteractionRule for catalyst support
- Add ChainBonusEvent and enrich InteractionTriggeredEvent with context
- Update rendering to show both reacting items and chain indicators
- Add item descriptions with anticipation hints for chain partners
- Update GDD Section 5 with full chain reaction specification
LaunchOpenTheBox.cmd + Launch.ps1 set UTF-8 encoding, window title,
and error feedback. Fallback chain: Windows Terminal → pwsh → powershell → cmd.
Scripts are auto-copied to publish root via the csproj.
Also adds builds/ to .gitignore and updates README distribute section.
- Play time tracking: accumulate TotalPlayTime each game loop iteration
- Return to menu: split _running into _appRunning/_gameRunning so quit
returns to main menu instead of exiting the app
- Deterministic meta unlock order: ArrowKeySelection first (accessibility),
then TextColors, AutoSave, InventoryPanel, etc. (13-step sequence)
- Merge KeyboardShortcuts into ArrowKeySelection
- Meta box pity system: guarantee a meta box every 10 openings
- Inventory flickering: buffer-based rendering with ANSI cursor repositioning
- Non-readable symbols: use ASCII abbreviations instead of emoji in footer
- Resource/stats confusion: rename Resource Panel to Characteristics Panel
in all user-facing text (EN/FR), update specs and descriptions
- Block consumable use before inventory panel unlock
- Remove obsolete proposal/suggestion files, clean up Spectre-only renderer
- Fix LootTable.GuaranteedRolls type (int -> List<string>) to match JSON schema
- Fix BoxEngine guaranteed rolls to iterate item IDs directly
- Fix BoxEngine resource condition evaluation for "any" targetId
- Make ItemDefinition.DescriptionKey optional
- Fix font meta item nameKeys to use proper localization keys
- Add 43 xUnit content validation tests (deserialization, cross-refs, localization)
- Add self-contained single-file publish via publish.ps1
- Update README with distribute and test sections