mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-09-11 05:04:30 +00:00
b7e36cc63368074286f33fc32f7c0be52d56af0e
THE BUG (silent, no throw): _drawNextByString, _drawRecentByString, _drawChordTemplates, _drawAnchors, _drawTeachingMarks, _showFingerHints were passed as plain-value shorthands to createRenderer. update() wrote to those parameter locals; createNoteRenderer's getters read the original screen.js closure vars — which never updated. drawNote saw stale null/false on every frame. THE FIX: converted all 6 to getter+setter DI pairs. update() calls setDrawX(value); createNoteRenderer's existing get*() closures read the same screen.js let vars. One store, no fork. CLASS-KILLER GUARD (test 24): extracts all DI param names from the createRenderer signature; scans module body (comments stripped) for assignment operators on those names; asserts ZERO. RED ata55dca7(6 assignments); GREEN here. KILL TEST (test 28): overrides the 6 setter stubs in _makeDI() with real backing-store vars; runs update() with a future note; asserts backing store mutated from null sentinel. RED ata55dca7(plain assignment never called the setter; store stayed null). GREEN here. ALSO (Toby r4 LOW): corrected smoke-test comment — reading an undeclared variable throws ReferenceError in BOTH strict and sloppy mode; only WRITING to undeclared differs (sloppy creates a global). The new Function sloppy hole is for writes-only, not reads. DI count: 321 (was 315, -6 shorthands +6 getters +6 setters). Suite: 1408/1409 (test 46 pre-existing). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014uZ169yfoFYArXz962g7KW
Languages
JavaScript
56.4%
Python
37.1%
HTML
3.2%
CSS
1.2%
TypeScript
1.1%
Other
1%