mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
fix: quantise the light aperture amount of moving covers (#366)
A gate or door bound to a position-reporting cover fed current_position into the light-barrier signature at toFixed(3) precision: every percent of movement produced a new fingerprint, a full physicalBodyParts recompute and a recut — up to ~100 heavy passes per gate cycle, plus LRU churn. The light pipeline now consumes one quantised amount (OPENING_LIGHT_AMOUNT_QUANTUM = 0.05, exact 0 and 1 nodes) at the single point that feeds BOTH the signature and the cut geometry, so the cache key and the drawn aperture agree by construction and a full sweep costs at most 21 recomputes. The door LEAF animation stays smooth — _openingAmt is quantised only for the light pipeline, nowhere else. Binary contact doors are byte-identical to the previous behaviour (pinned by unit). Assumption recorded in the spec: the 5% visual step of the light cut is indistinguishable on real plans; if field impressions disagree, the quantum is a one-constant change (0.02 => <=51 recomputes) or the decision falls back to a debounce. LIGHT.md §Caching documents the grid. Issue: #366 User-Visible: yes
This commit is contained in:
@@ -680,6 +680,18 @@ const MUTANT_DEFINITIONS = [
|
||||
replace: ' this._languageFailureUnsub = undefined;',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'opening-light-quantum-identity',
|
||||
guard: 'node --test --test-name-pattern="#366" test/logic.test.mjs',
|
||||
because: 'an identity quantum brings back ~100 barrier recomputes per moving-gate cycle — '
|
||||
+ 'the sweep unit must bound distinct signatures to the 0.05 grid (#366)',
|
||||
patches: [{
|
||||
file: 'src/logic.ts',
|
||||
find: ' return Math.min(1, Math.max(0,\n'
|
||||
+ ' Math.round(safe / OPENING_LIGHT_AMOUNT_QUANTUM) * OPENING_LIGHT_AMOUNT_QUANTUM));',
|
||||
replace: ' return safe;',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'backdrop-probe-always-safe',
|
||||
guard: 'node demo/smoke_backdrop_guard.mjs',
|
||||
|
||||
Reference in New Issue
Block a user