# Changelog All notable changes to this project will be documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- ## [Unreleased] ### Added - **Overlay Opacity Setting** (Issue #16): all UI overlay backgrounds (build menu, villager panel, context menu, ESC menu, confirm dialog, Nisse info panel, debug panel) now use a central `uiOpacity` value instead of hardcoded alphas - **Settings Screen**: ESC menu → Settings now opens a real overlay with an overlay-opacity row (− / value% / + step buttons, range 40 %–100 %, default 80 %); setting persisted in `localStorage` under `tg_ui_settings`, separate from game save so New Game does not wipe it ### Added - **Unified Tile System** (Issue #14): - Tree seedlings: player plants `tree_seed` on grass/dark-grass via the F-key farming tool; seedling grows through two stages (sprout → sapling → young tree, ~1 min each); on maturity it becomes a FOREST tile with a harvestable tree resource - Tile recovery: when a Nisse chops a tree, the resulting DARK_GRASS tile starts a 5-minute recovery timer and reverts to GRASS automatically, with the terrain canvas updated in real time - Three new procedural seedling textures (`seedling_0/1/2`) generated in BootScene - `tree_seed` added to stockpile display (default 5 at game start) and to the farming tool cycle - `WorldSystem.refreshTerrainTile()` updates the terrain canvas for a single tile without regenerating the full background - New `TreeSeedlingSystem` manages seedling sprites, growth ticking, and maturation ### Added - **Nisse Info Panel** (Issue #9): clicking a Nisse opens a top-left panel with name, AI status, energy bar, active job, job priority buttons, and a live work log (last 10 of 20 runtime entries); closes with ESC, ✕ button, or by clicking another Nisse - Work log tracks: walking to job, hauling to stockpile, going to sleep, waking up, chopped/mined/farmed results, deposited at stockpile - **ESC Menu** (Issue #7): pressing ESC when no overlay is open shows a pause menu with Save Game, Load Game, Settings (placeholder), and New Game; New Game requires confirmation before wiping the save - ESC key now follows a priority stack: confirmation dialog → context menu → build menu → villager panel → Nisse info panel → ESC menu → (build/farm mode handled by their systems) → open ESC menu ### Added - **F3 Debug View**: toggleable overlay showing FPS, tile type and contents under the cursor, Nisse count by AI state, active jobs by type, and pathfinding visualization (cyan lines in world space) ### Fixed - Nisse now clear the FOREST/ROCK tile after harvesting, opening paths to deeper resources - Nisse no longer get stuck idle after depositing items at the stockpile - Working Nisse now reset to idle on game load (like walking ones), preventing stale AI state - Stale jobs with empty carry are now cleared after work completes, avoiding a false "haul to stockpile" loop - UI elements (stockpile panel, controls hint) now reposition correctly after window resize - Centered overlay panels (build menu, villager panel) close on resize so they reopen at the correct position - Mouse world coordinates now use `ptr.worldX`/`ptr.worldY` in BuildingSystem and FarmingSystem, fixing misalignment after resize or zoom ### Changed - Villagers are now called **Nisse** throughout the UI (panel, controls hint, stockpile display, context menu, spawn message) ### Added - Scroll wheel zooms toward the mouse cursor position (zoom-to-mouse), correctly accounting for Phaser's center-based zoom model - Middle mouse button held: pan the camera by dragging - Test environment at `/test.html` with `ZoomTestScene` (Phaser default) and `ZoomMouseScene` (zoom-to-mouse) for camera behaviour analysis; file-logging via Vite middleware to `game-test.log` ### Fixed - `getCenterWorld()` in `CameraSystem` returned wrong world coordinates at zoom ≠ 1; corrected from `scrollX + width/(2·zoom)` to `scrollX + width/2` - Right-click context menu: suppresses browser default, shows Build and Nisse actions in the game world - Initial project setup: Phaser 3 + TypeScript + Vite - Core scenes: `BootScene`, `GameScene`, `UIScene` - Systems: `BuildingSystem`, `CameraSystem`, `FarmingSystem`, `PlayerSystem`, `ResourceSystem`, `VillagerSystem`, `WorldSystem` - Utilities: simplex-noise wrapper, pathfinding - `StateManager` for central game state - `NetworkAdapter` for multiplayer/sync layer ---