All notable changes to this project will be documented in this file.
2.9.0 (2025-12-18)
- audio: add recording support to WebAudioLayer (b4de04e)
- platform-web-pixi: apply tint to graphics objects in PixiRenderingLayer (a6d4d98)
- release: fix version sync order and use npm publish (7e99a89)
- events: remove timestamp from event interfaces (b4ceef7)
- update documentation for monorepo structure (9828e85)
- browser: remove obsolete timestamp test (b516602)
2.8.0 (2025-12-14)
- audio: add recording support to WebAudioLayer (b4de04e)
- platform-web-pixi: apply tint to graphics objects in PixiRenderingLayer (a6d4d98)
- release: fix version sync order and use npm publish (7e99a89)
- update documentation for monorepo structure (9828e85)
2.7.9 (2025-12-12)
- platform-web-pixi: apply tint to graphics objects in PixiRenderingLayer (a6d4d98)
- release: fix version sync order and use npm publish (7e99a89)
- update documentation for monorepo structure (9828e85)
2.7.8 (2025-12-12)
- platform-web-pixi: apply tint to graphics objects in PixiRenderingLayer (a6d4d98)
- release: fix version sync order and use npm publish (7e99a89)
- update documentation for monorepo structure (9828e85)
2.7.7 (2025-12-12)
- platform-web-pixi: apply tint to graphics objects in PixiRenderingLayer (a6d4d98)
- release: fix version sync order and use npm publish (7e99a89)
- update documentation for monorepo structure (9828e85)
2.7.6 (2025-12-12)
- platform-web-pixi: apply tint to graphics objects in PixiRenderingLayer (a6d4d98)
- release: fix version sync order and use npm publish (7e99a89)
- update documentation for monorepo structure (9828e85)
2.7.5 (2025-12-12)
- platform-web-pixi: apply tint to graphics objects in PixiRenderingLayer (a6d4d98)
- release: fix version sync order and use npm publish (7e99a89)
- update documentation for monorepo structure (9828e85)
2.7.4 (2025-12-12)
- update documentation for monorepo structure (9828e85)
2.7.3 (2025-12-12)
- update documentation for monorepo structure (9828e85)
2.7.2 (2025-12-12)
2.7.1 (2025-12-01)
- loader: make HeadlessLoader wrap an actual loader (4d04f6e)
2.7.0 (2025-11-30)
- replay: add public stopReplay() method to ReplayManager (cd388d0)
2.6.1 (2025-11-30)
- replay: change stopReplay to end game instead of pause (3ec1293)
2.6.0 (2025-11-29)
- canvas: trigger initial render when game engine is set (135bc2e)
2.5.0 (2025-11-26)
- platform: add animation complete callback for non-looping sprites (87a7059)
2.4.0 (2025-11-26)
- platform: add getRotation and getScale to DisplayNode (2c81351)
2.3.4 (2025-11-26)
- rendering: use atomic counters for texture/spritesheet IDs (4160dde)
2.3.3 (2025-11-26)
- assets: assume loader returns data URLs for binary assets (b63b382)
2.3.2 (2025-11-26)
- assets: infer MIME type from file extension for blob URLs (41eee5f)
2.3.1 (2025-11-26)
- assets: derive spritesheet JSON path by stripping image extension (fea1e81)
2.3.0 (2025-11-26)
- audio: add data URL support to WebAudioLayer.loadSound() (46c1b13)
2.2.0 (2025-11-26)
- rendering: add drawRoundRect support (6e36116)
2.1.1 (2025-11-23)
- resolve AudioContext autoplay policy violation (b7b3512)
2.1.0 (2025-11-23)
- demo: add procedurally generated sound effects (8a245f6)
2.0.0 (2025-11-23)
1.9.5 (2025-11-11)
- improve CLAUDE.md formatting and remove redundant instruction (c974ef1)
- improve GameCanvas renderer management and lifecycle (8ed19c8)
1.9.4 (2025-11-06)
- remove unneeded end check (2a2f6a7)
1.9.3 (2025-11-06)
- add replay pause/resume functionality tests (4ce0151)
1.9.2 (2025-11-04)
1.9.1 (2025-10-22)
- loader is now mandatory (8a725f7)
1.9.0 (2025-10-22)
- add color utility functions for hex parsing and darkening (ed06c6b)
1.8.1 (2025-10-19)
- rename GameConfig.initialState to gameSpecific and remove snake-specific properties (5a7b073)
1.8.0 (2025-09-30)
- add bomb explosion effect with particle system (f264f0c)
1.7.0 (2025-09-21)
- make GameEngine reset/setup and ReplayManager replay methods async (6503fc2)
1.6.1 (2025-09-21)
- rename PRNG initialize() method to reset() (58b7672)
1.6.0 (2025-09-21)
- demo: update UI to display ticks and real FPS (c8db781)
- implement frames-to-ticks conversion in GameCanvas and demo (d4c2761)
- improve stability of performance test with warmup and median timing (ac4c9e0)
- tests: update GameCanvas test to use deltaTicks parameter (d6b7407)
- update GameCanvas to use tick-based timing and format package.json (b891e65)
1.5.0 (2025-09-21)
- migrate from frame-based to tick-based timing system (57da91d)
- replay: update ReplayManager architecture to use proxy pattern (85398f0)
1.4.0 (2025-09-18)
- collision: prevent duplicate points in CollisionBspTree (84a515b)
- core: add clearAndDestroy method to GameObjectGroup (480ed18)
- lib: add performance timing utilities with comprehensive test coverage (fdae4f0)
- loader: add Loader abstraction with DemoLoader implementation and comprehensive tests (8bafa06)
- prng: add threshold parameter to randomBoolean() method (372bbc1)
- rendering: add automatic PIXI Graphics cleanup with comprehensive testing (a6387b6)
- rendering: add needsRepaint flag optimization system (b5466c2)
- ci: improve workflow order and separate demo linting (85df80c)
- ci: move linting before build and add demo linting to pre-commit hooks (0e9e6a2)
- tests: implement comprehensive PIXI mocking and fix rendering tests (4877701)
- move GameCanvas from rendering to root and add comprehensive lib utilities (fc6306f)
- rendering: rename destroy() to clear() in AbstractRenderer (007dd78)
- replace CollisionBspTree with simplified CollisionGrid (36aa34b)
1.3.0 (2025-09-12)
- add comprehensive PIXI.js rendering system (b7da431)
- add GameObjectEventType enum for type-safe event handling (3234943)
- add totalFrames parameter to GameObject.update() method (2cae386)
- improve GameObjectGroup event emission system (6d80bd0)
- ci: separate main and demo linting to resolve TypeScript resolution issues (83c535b)
- correct formatting and broken links in documentation (b0017f3)
- prevent GameObject update when destroyed (8812c7b)
- fix markdown links in README.md (fcddc78)
- expand test coverage and improve code quality (83a57aa)
- rename getAll() to getAllActive() in GameObjectGroup (b6531b8)
- optimize CollisionUtils rebuildTree by merging index and bounds calculation (ecc7e75)
- add automated release system with commit-and-tag-version (46bc9d4)
- add singleton Serializer instance export (acccdef)
- enhance game engine with improved recording/replay system and UI controls (09526ee)
- enhance snake controls and remove start button (6ad9522)
- implement CollisionBspTree-based spatial collision detection (76ac206)
- implement event-driven recording system with enum-based event handling (b7785fe)
- implement frame-perfect replay with enhanced UI state management (d245315)
- improve determinism and add snake wrap-around gameplay (d698541)
- build and publish (d1874af)
- build coverage generation and reporting (c771e35)
- configure Vite for relative paths in GitHub Pages deployment (6ec3f1f)
- improve replay determinism by splitting large deltaFrames (c8e7e70)
- npm package license (c1a86f2)
- performance recording test not recording frame data (f26d1c0)
- prevent double apple spawning in same frame (df8c147)
- readme build badge (082f760)
- resolve all TypeScript errors in test files and enhance type safety (47b10b0)
- resolve concurrent timer modifications in Timer class (6078702)
- resolve PRNG desynchronization in record-replay tests (802fee3)
- resolve record-replay test failures and improve determinism (8016a5b)
- resolve ReplayManager and integration test failures (14e057d)
- serialization performance test expecting wrong type (c0d252d)
- stress test looking for wrong game object group name (2939e90)
- add comprehensive documentation suite with live demo integration (0a162cd)
- add coveralls badge and configure npm package files (da95533)
- update deltaTime parameter to deltaFrames (df6148d)
- update readme (56c4036)
- improve code coverage to 100% for core modules (7de9f61)
- restructure test suite with comprehensive coverage (9af1094)
- add logging for tar (b5aa17e)
- build on prepublish (d1c52b1)
- bump version (8c6bc0f)
- dont zip the tar (87b5a3c)
- fix git config issues for gh-pages (c690157)
- fix removal of tsconfig.buildinfo (7b80abd)
- recursive tar (2003690)
- switch to artifacts uploader for gh-pages (8c2cf3b)
- try again (1a730f1)
- try and fix gh-pages action usage (fc16127)
- try to fix github pages asset upload (19d57aa)
- add GitHub workflows for CI and demo deployment (aef070c)
- switch deploy workflow to use gh-pages npm package (6ffe14d)
- improve engine robustness and documentation (25c0fe6)
- move collision checking to update loop and clean up unused methods (d8bb619)
- move fractional frame logic to GameEngine for replay determinism (1379db2)
- rename package to @hiddentao/clockwork-engine (a08d26b)
- simplify game engine methods and improve PRNG tests (1cdeee1)
- simplify walls to single blocks (63f2862)
- update demo build instructions (d3e9301)
- Add singleton Serializer instance export
- Prevent double apple spawning in same frame
- Configure Vite for relative paths in GitHub Pages deployment
- Fix git config issues for gh-pages
- Update deltaTime parameter to deltaFrames
- Add coveralls badge and configure npm package files
- Update readme
- Improve code coverage to 100% for core modules
- Bump version
- Try and fix gh-pages action usage