- Add implementation plan for hex chase game including architecture and tech stack.
- Create essential files for game mechanics: types, RNG, hex graph utilities, and generator.
- Implement tests for RNG, hex graph functions, and game generator to ensure functionality and determinism.
- Modify game initialization to include new chase gameplay entry point.
Hex nodes used raw axial coordinates so negative offsets drew into the
fixed top-left chrome; seed text used a hard-coded width. Normalize node
positions around the graph bbox center, place the map in the lower
play area from canvas size, and reposition DOM seed input with resize.
Made-with: Cursor
Capture gameplay rules, seed-driven generation constraints, difficulty behavior, and UI flow for the new hex-grid chase mode before implementation.
Made-with: Cursor
- Refactored AppRuntime to include assetManager and NodeRegistry, improving resource management.
- Updated Button component to support visual states and variants, enhancing user interaction.
- Modified InitScene and WelcomeScene to utilize appRuntime for asset management and improved layout.
- Added energy effect animations to InitScene for a more dynamic user experience.
Made-with: Cursor
- Introduced scene discovery utility to streamline scene loading by automatically collecting scene definitions.
- Refactored initApp function to utilize the new scene discovery method, improving clarity and maintainability.
- Updated Button component to support click cooldowns and state management, enhancing user interaction experience.
- Added WelcomeScene to guide users through gameplay instructions with interactive elements.
Made-with: Cursor
- Introduced SceneLoadingOverlay for improved user feedback during asset loading.
- Updated SceneManager to manage loading overlay visibility and state reporting.
- Refactored scene lifecycle methods to integrate loading overlay functionality.
- Removed unused assets and scenes to streamline project structure.
Made-with: Cursor
Restore event bus variadic emit/listener semantics for backward compatibility, and make RuntimeEvents resilient to listener failures including once cleanup on throws.
Split frame render signaling from generic render calls so game:rendered is emitted only from the frame loop, with a dedicated game:frame-rendered event.
Made-with: Cursor
Add AppRuntime as the central runtime orchestrator and migrate init wiring to runtime-managed game/scene/event instances.
Introduce RuntimeEvents plus plugin hooks so scene-change and render lifecycle signals are extensible without breaking existing init exports.
Made-with: Cursor