fix(highway): apply 3D fret-spacing live instead of reloading (#561) (#562)

window.h3dSetFretSpacing was the only 3D-highway setting that applied via
location.reload(). The SPA boots with #home as the active screen and has
no restore-last-screen mechanism, so the reload ejected the user from
Settings onto the home screen.

Apply it live like every other 3D-highway setting: rebind the module-scope
_h3dFretUniform flag (so panels mounted later this session pick up the new
mode), recompute the two fretX-derived scalars baked at init
(_fretLabelScaleRefW, FRET_WIDTH_MID), and broadcast a 'fretSpacing' change
over the existing _bgEmitChange pub-sub so every mounted panel rebuilds its
board via buildBoard(). Per-frame note geometry already reads fretX live.

Settings copy updated (no longer reloads) and tests/js pin the no-reload /
live-rebuild behavior.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Byron Gamatos
2026-06-22 12:08:22 +02:00
committed by GitHub
co-authored by Claude Opus 4.8
parent 530995dd02
commit fe8d30ce3e
4 changed files with 68 additions and 4 deletions
+1 -1
View File
@@ -52,7 +52,7 @@
<option value="uniform">Uniform (equal width per fret)</option>
<option value="logarithmic">Instrument (logarithmic — decreasing toward bridge)</option>
</select>
<p class="text-xs text-gray-500 mt-1">The page will reload when changed.</p>
<p class="text-xs text-gray-500 mt-1">Applies to the 3D highway immediately.</p>
</div>
<script>