Repository navigation
fix(footer): wrap the clusters instead of scrolling them out of sight - #843
Merged
Merged
Conversation
With the library open, the tightest one-line controls row is 910px and the strip had 671px at the desktop app's default 1280x820 window (415px at the 1024x720 minimum). Past the "tight" level the row scrolled sideways with no scrollbar showing, cutting Global key mid-label and hiding the click track behind Export Mix. Same in WKWebView and Chromium. footerFit.js gets a fourth level, "rows": whole clusters wrap onto a second line, packed left, dividers hidden. When Master and Export Mix beside the strip would push it to more lines, they move to their own line under it, kept only when that makes the controls row shorter. The LUFS value no longer loses digits to the Peak qualifier beside it: the qualifier gives up its width first. New spec footer-no-clip checks 1280, 1024, 1100 and 1440 for clipped, overlapping or covered footer controls. Closes #842
The node model of the strip had no parent, so the new collapse-stack check threw before any assertion ran. It now has the controls row around the strip, wraps clusters at the rows level, and checks that a strip too short for the tight row wraps, that nothing runs past its edge, and that the tight/rows boundary settles and opens back up. Closes #842
thcp
marked this pull request as ready for review
October 23, 2026 22:22
This was referenced Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #842
What changed
footerFit.js: a fourth collapse level,rows, aftertight. Whole clusters wrap onto a second line (packed left, dividers hidden). Before it, a row still too wide aftertightscrolled sideways inside the strip with no scrollbar.rows, Master and Export Mix move to their own line under the strip (collapse-stackon.footer-row-controls) only when that makes the controls row shorter. At 1024 with the library open this is 2 cluster lines plus the actions, instead of 4 cluster lines..meta-card-valueno longer shrinks before its qualifier, so LUFS "-25.2" stops showing as "-25...". The key card keeps shrinking and wrapping as before.footer-no-clipat 1280x820, 1024x720, 1100x820, 1440x900: no footer control clipped by the strip or the viewport, no two overlapping, nothing under Export Mix, each control is what the hit test finds at its centre. Plus one test that a wide window undoesrows. Fails on plain big-release at all four sizes.tests/js/footer-fit.test.mjs: the strip model gets its controls row and wraps atrows; new checks for the tight/rows boundary and reopening.What did not change
wrap,clickandtightlevels, and the hysteresis ([Bug]: UI distorted #633).Strategy
The footer already measures in JS because the room depends on the library sidebar, not the window (#586), so this extends that ladder rather than adding a media or container query. Wrapping whole clusters was the only option that covers the deficit: at 1280 the tight row is 910px for 671px, and no spacing or caption change frees 239px. Collapsing a group behind a button would move controls behind a click; wrapping hides nothing and costs one control line of lane height.
Verified
Same backend, a 20 s sine imported through POST /api/jobs, studio in DAW mode, library open. Footer controls clipped or overlapping:
Both engines measured identical cluster widths (Inter), so the cause was width, not WKWebView text metrics.
Risks