Skip to content

fix(mobile): css batch 2 — the phone layout fixes from the 3.5.3 screenshots - #1683

Merged
Nezreka merged 3 commits into
devfrom
fix/mobile-css-batch2
Oct 13, 2026
Merged

Nezreka merged 3 commits into
devfrom
fix/mobile-css-batch2

Conversation

@Nezreka

@Nezreka Nezreka commented Oct 13, 2026

Copy link
Copy Markdown
Owner

fixes the phone css batch thibs, c5pie and gzetk reported (22 screenshots, all on 3.5.3). every item was measured in chromium at 390/360/320 before and after, not eyeballed.

six root causes:

  • a global mobile rule forced every button to min-height 38px, stretching anything designed shorter — theme swatches rendered as 16x38 ovals, library and import pills protruded from their tracks. the victims are excluded from the rule now (import pills via a data attribute, their class is a hashed css module); standalone buttons keep the 38px target.
  • the tab-rail fix in fix(mobile): compact drawer header in landscape so nav can scroll #1661 only reached rails with its exact class names. the react watchlist tabs never matched (tabs measured 391px in a 336px box, chips ran off to x=1089) — they carry role="tablist" now so the rail rule applies. the library settings folders switcher was squeezed by a more specific rule, "audiobooks" painted over "podcasts" — it scrolls instead of squeezing.
  • fixed min-widths that never collapsed on phones: tools triage/pillars grids (280px/320px floors), the pillars header paragraph had no css at all and collided with the title, downloads chain, logs toolbar (the green sliver was the auto-scroll toggle pushed off screen), quality presets, video issues stats, audiobooks search (420px flex basis).
  • hamburger coverage from fix(mobile): compact drawer header in landscape so nav can scroll #1661 only knew the legacy classes. settings sub-titles use a different class and still slid under it ("…brary", "…wnloads"), and the modal-hide rule waited for classes nothing sets — it now keys off the classes the app actually toggles (src/pf/np-modal-open) plus :has() on the react overlay roots, and the audiobook overlay stamps a data attribute since its backdrop class is hashed.
  • player: the play button is 70px in a flex row with no flex-shrink: 0, so it compressed into an oval — transport buttons don't shrink now and the row is budgeted for phones. the tab panels sat in a second 46vh scroller, which is why the bottom (and the eq) felt unreachable; panels flow in the body scroll on mobile. the minimize chevron was parked half off-screen by a stacking rule, and once visible it still wasn't tappable (a sibling layer with the same z-index covered it) — z-index raised and verified with a real click.
  • dashboard listen band (library radio / your mixes) was a two-column grid that never stacks — content measured 344px in a 174px card, clipped mid-word. it stacks at phone widths now. the earlier "that's the make horizontal scrollbars visible with edge-fade slide affordance #1637 rail working as designed" call was wrong; these cards aren't the rail.

folded in from two hostile review rounds: the phone transport sizing initially crushed the player's stop button (a text pill, not a transport circle) — scoped to the controls row; three more modal families added to the hamburger coverage (watchlist-add, server-disambiguation, genre browser); 320px residuals fixed (tools mode toggle, audiobooks search modes, downloads step name).

tests: 30 new css/tsx pinning tests (28 fail on the base), npm run check clean, full vitest suite green (10,268). phone screenshot baselines in ci will diff on the touched pages — the layouts changed on purpose; desktop is untouched (everything is inside phone media queries, the exclusion list, or phone-only rules).

note: the reporters are on 3.5.3, so the #1661 fixes they also don't have yet (ios input zoom, import rail scroll, video wishlist rail) will keep looking broken to them until a release ships both.

@Nezreka
Nezreka merged commit 6c15c58 into dev Oct 13, 2026
4 checks passed
@Nezreka
Nezreka deleted the fix/mobile-css-batch2 branch October 13, 2026 06:00
This was referenced Oct 13, 2026
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