Full deployment history for this project.
Merge pull request #31 from mbarbine/sentinel/room-lifecycle-validation-15909236171323870062 ๐ก๏ธ Sentinel: Fix server-side crash vulnerabilities on room creation and client join
Merge branch 'main' into sentinel/room-lifecycle-validation-15909236171323870062
Merge pull request #40 from mbarbine/add-wrestling-room-tests-11920926546818633567 ๐งช Add tests for authoritative WrestlingRoom lifecycle
Merge pull request #42 from mbarbine/perf/extract-core-segments-array-12043973276875539553 โก perf: Remove array instantiation in physics inner loops
Merge branch 'main' into perf/extract-core-segments-array-12043973276875539553
Merge pull request #43 from mbarbine/perf/replace-array-find-physics-loop-16115353659616183514 โก [Performance] Replace slow Array.find() with direct lookup in physics simulation
Merge branch 'main' into perf/replace-array-find-physics-loop-16115353659616183514
Merge pull request #44 from mbarbine/performance/bolt-optimized-prop-filtering-469632500998917989 โก Optimized combat prop lookup via ID maps
Merge branch 'main' into performance/bolt-optimized-prop-filtering-469632500998917989
Merge pull request #47 from mbarbine/sentinel/disable-x-powered-by-header-914750905135674582 ๐ fix: add missing x-powered-by header disablement
Merge branch 'main' into sentinel/disable-x-powered-by-header-914750905135674582
Merge pull request #48 from mbarbine/jules-8239141519344990613-e8ea3b2d ๐งช Add tests for GameScene XR failure path
Merge branch 'main' into jules-8239141519344990613-e8ea3b2d
๐งช Add tests for GameScene XR failure path
๐ fix: add missing x-powered-by header disablement
Merge pull request #46 from mbarbine/perf/avoid-object-entries-physics-8461350330610210339 โก perf: optimize hot loops by avoiding Object.entries allocations in physics engine
Merge branch 'main' into perf/avoid-object-entries-physics-8461350330610210339
Merge pull request #45 from mbarbine/jules-13035597863344402042-eb4a6bd9 โก optimize prop resolution using dictionary map
perf: optimize rig body iteration by replacing Object.entries with for...in loops
Merge branch 'main' into jules-13035597863344402042-eb4a6bd9
โก optimize prop resolution using dictionary map
perf(combat): replace linear prop array searches with O(1) ID map Replaced `.find()` logic in prop input handlers with a cached `propsById` dictionary to prevent O(N) array iteration and callback allocations on every high-frequency combat frame loop. Benchmarks confirm the time spent executing prop lookup handlers for 100,000 iterations decreased from ~14.5ms to ~10.5ms (a ~30% improvement), completely eliminating callback-induced Garbage Collection (GC) overhead in the hot loop.
Merge branch 'main' into perf/replace-array-find-physics-loop-16115353659616183514
Merge pull request #41 from mbarbine/test-improvement-joinroom-8831656926507883954 ๐งช [testing improvement] Add joinRoom connection error test to ColyseusClient
perf: replace Array.find with direct lookup in physics runtime
perf: Extract inline array in physics loop Extracted the inline `['chest', 'abdomen', 'pelvis', 'head']` array into a module-level constant `CORE_SEGMENTS` to prevent unnecessary allocations and reduce GC overhead during continuous physics simulation updates.
test: add connection error test for joinRoom method in ColyseusClient Added a dedicated test for the `joinRoom` connection error path as requested. Also made sure the other connection error paths in `ColyseusClient` are thoroughly tested to verify `onStatusChange` behaviour.
test: add coverage for WrestlingRoom match lifecycle and single-player Added tests to `serverContract.test.ts` to cover `WrestlingRoom`'s match lifecycle including: - Match startup and role assignments - Single-player practice mode toggling - Disconnection handling and forfeit logic - Match timeout logic - Rematch voting and restart
Merge pull request #39 from mbarbine/sentinel/disable-x-powered-by-header-17626657153265908547 ๐ Disable X-Powered-By header to prevent technology disclosure
Merge branch 'main' into sentinel/disable-x-powered-by-header-17626657153265908547
๐ Disable x-powered-by header in Express to prevent stack disclosure
Merge pull request #37 from mbarbine/tests/settings-store-error-path-7465992463229375361 ๐งช [testing improvement] Cover Settings Store error path for initialization
Merge pull request #38 from mbarbine/optimize-physics-hypot-7829277067986819002 โก perf: optimize Math.hypot in capRigVelocity
Merge pull request #35 from mbarbine/security/fix-cors-origin-wildcard-5004908599197785798 ๐ Fix overly permissive default CORS configuration
Merge branch 'main' into security/fix-cors-origin-wildcard-5004908599197785798
perf(physics): replace Math.hypot with squared distance checks in capRigVelocity Replaced the computationally expensive `Math.hypot` inside `capRigVelocity` (`src/game/physics/physicsRuntime.ts`) with a squared magnitude check against a squared threshold. This optimization avoids performing unnecessary square root operations on the vast majority of physical frames where the limits are not exceeded. Measured micro-benchmarks indicate a roughly 5.6x reduction in execution time for the loop logic.
test: add tests for settings store initialization error paths Added comprehensive tests in `src/tests/settings.test.ts` to cover the missing error path test for Settings store initialization. This tests how `useSettings` parses data from `localStorage`, ensuring edge cases like invalid JSON, `null`, missing objects, and `window` being undefined are properly handled by returning `DEFAULTS`. Additionally, the tests verify numerical clamping, property merging, and the store methods (`update` and `reset`). Uses `vi.resetModules()` and dynamic imports to reliably test module initialization.
Merge pull request #36 from mbarbine/test-unhandled-exceptions-gamepad-8398877326440371793 ๐งช Add missing unhandled exception tests for haptic API
test: add unhandled exception tests for gamepad haptics Adds tests for pulseConnectedGamepads to ensure it swallows Unhandled Promise Rejections from navigator.getGamepads().vibrationActuator APIs (playEffect and pulse).
Merge pull request #33 from mbarbine/fix-cors-origin-wildcard-9879696965349384597 ๐ fix overly permissive CORS wildcard default in server configuration
Fix overly permissive default CORS configuration Update `CORS_ORIGIN` default in `server/src/config.ts` to `http://localhost:5173` instead of a wildcard. Added a sentinel entry documenting the change.
Merge branch 'main' into fix-cors-origin-wildcard-9879696965349384597
Merge pull request #34 from mbarbine/security/fix-insecure-random-seed-14565829464866137321 ๐ Fix insecure randomness source in WrestlingRoom
Fix insecure randomness source in match seeding Replaces Math.random() with Node.js crypto.randomInt for generating the WrestlingRoom match seed, mitigating a predictability vulnerability.
๐ fix overly permissive CORS wildcard default in server configuration
Merge pull request #32 from mbarbine/fix/gameplay-controls-physics-stability-9991642732411665573 Fix gameplay responsiveness, hit detection, and physics stability
fix(gameplay): improve input responsiveness, hit detection, and physics stability This commit resolves several core gameplay "sloppiness" and unresponsiveness issues: - Reduced `ActionBuffer` TTLs from 650ms to 250ms to remove perceived input lag and dropped inputs. - Expanded the physical hit detection (`activeContactLimb` in `PhysicalFighterRig.tsx`) to validate the entire arm/leg chain (`strikePoseChain`) so strikes don't visually phase through opponents. - Stabilized `delta` in `FighterModel.tsx` by accumulating the clamped delta (`Math.min(delta, 0.1)`) instead of raw time, fixing floating/teleporting bugs during frame drops. - Tightened `GRAPPLE_ACQUISITION_RANGE` from 2.15 to 1.65 to stop massive visual teleportation when locking up.
Fix room lifecycle crash vulnerabilities on bad inputs Added defensive validation to `onCreate` and `onJoin` in `WrestlingRoom.ts` to handle null, undefined, or malformed options objects. This prevents potential TypeError and Denial of Service (DoS) server crash vectors. Also added robust contract verification tests.
Merge pull request #30 from mbarbine/bolt/optimize-fighter-alignment-reporting-12260765930490653679 โก Bolt: Optimize alignment point reporting inside FighterModel frame loop