Skip to content

Board fixes before the next vendor: seek bar, dead knobs, and seeds that name their station - #51

Merged
Gamah merged 3 commits into
masterfrom
fix/slider-shrinks-to-its-row
Aug 13, 2026
Merged

Board fixes before the next vendor: seek bar, dead knobs, and seeds that name their station#51
Gamah merged 3 commits into
masterfrom
fix/slider-shrinks-to-its-row

Conversation

@Gamah

@Gamah Gamah commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Three defects found while chasing the blank-board report in a host game. All three are library bugs, none are tuned to any host.

The seek bar overflowed the board. SkafinitySlider asked for width: 100% and flex-shrink: 0, so in a row the two time labels were added on top of a full-width slider and the total-time label was pushed off the right edge. 100% is the base size that stops the slider collapsing in a column; in a row it now shrinks to what is left.

Eight vibe knobs on the default genre did nothing. VibeCodec.Fields built a fresh list per call and Labelled mints a new Field for any row its genre renames, so SkafinityBoard.FieldIndex's ReferenceEquals lookup returned -1 and SetVibe bailed. Ska-Punk (the default) renames LEAD and CHORUS GTR — 8 dead knobs; Pop renames two rows — 6 more. The knob drew and dragged, so it looked like it worked. The list is now cached per genre, which fixes identity and the per-frame allocation churn together.

Seeds did not name their station. With no Tag set, a fresh player copied and displayed :129. The tag now resolves through SeedCodec.Station wherever a seed is shown — the same fallback synthesis already used, so no song changes. The seed box also only filled itself once at open, so a reroll left the previous station on screen; it now follows the station whenever that moves, while never overwriting text somebody has typed.

make test-engine — 556 checks pass, render digests included, so nothing here moved the audio.

Gamah added 3 commits August 13, 2026 10:20
The seek bar asked for a full row's width and refused to shrink, so the two
time labels either side were added on top of it and the row overflowed the
board — the total-time label was pushed off the edge entirely. 100% is the
base size that keeps a slider in a COLUMN from collapsing; in a row it has to
be allowed to shrink to what is actually left.
…e twice

VibeCodec.Fields built a fresh list per call, and Labelled mints a new Field
for any row its genre renames. The board looks a field back up by reference to
get its wire index, so on every genre that renames a row that lookup failed and
SetVibe bailed: eight knobs on Ska-Punk (the default) and six on Pop drew,
dragged, and set nothing. Cache the list per genre so identity holds.
A player with no Tag set wrote its seeds raw, so a fresh station copied and
displayed as ":129" — a seed that plays correctly and reads as truncated.
Resolve the tag through SeedCodec.Station wherever a seed is SHOWN, which is
the same fallback the synthesis already went through, so no song changes.

The seed box also only ever filled itself once, at open, so a reroll left the
previous station on screen and looked like it had done nothing. It now follows
the station whenever that moves — but only overwrites text this panel wrote, so
it can never eat what somebody is typing.
@Gamah
Gamah merged commit 3bf072b into master Aug 13, 2026
1 check failed
@Gamah
Gamah deleted the fix/slider-shrinks-to-its-row branch August 13, 2026 10:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant