You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #1279 (mobile responsiveness). That PR fixed the concrete
horizontal-overflow bugs (header grid blowout + log-viewer/main-content min-width), but the Web UI's breakpoint set is inconsistent and predates
current responsive best practice. This issue tracks standardizing and
modernizing it without changing existing behavior.
dvh/svh/lvh for full-height drawers/log viewer instead of vh
(mobile browser-chrome aware); svh is the conservative pick.
Gate hover-only affordances behind @media (hover: hover) and (pointer: fine).
Constraints
CSS-only; no desktop regression; incremental (one breakpoint family at a
time), each step verified.
Keep the feature queries above as-is.
Verification
Playwright headless overflow sweep — assert document.documentElement.scrollWidth === clientWidth at 320 / 375 / 390 / 430 / 768 / 1024 / 1280 / 1920 with the
config editor, log viewer, and command drawer populated (long torrent paths).
This is the same harness used to verify #1279 and should be wired into CI
(see the browser/webserver CI effort).
Done when
One documented breakpoint scale in a single place (CSS custom props or a short
comment block), all media queries migrated to it.
No off-by-one magic numbers; consistent mobile-first min-width.
Overflow sweep green at all listed widths; visual spot-check shows no desktop
change.
Context
Follow-up to #1279 (mobile responsiveness). That PR fixed the concrete
horizontal-overflow bugs (header grid blowout + log-viewer/
main-contentmin-width), but the Web UI's breakpoint set is inconsistent and predatescurrent responsive best practice. This issue tracks standardizing and
modernizing it without changing existing behavior.
Current state (inventory)
@mediawidths currently inweb-ui/css/:480,600,640,767.98,768576,641,768,991.98,992,1400hover,pointer: coarse,orientation,max-height,prefers-reduced-motion,prefers-color-scheme,prefers-reduced-data,prefers-contrast, resolution.Problems: min/max-width mixed inconsistently; off-by-one magic numbers
(
641,767.98,991.98); too many distinct breakpoints; overlaps/gaps.2026 best-practice target
min-width):640 / 768 / 1024 / 1280(+
1536only if a distinct ultrawide treatment is needed). Matches Tailwind;Bootstrap 5 uses
576/768/992/1200/1400.not to match a phone/tablet model.
768/820/1024, laptops 1280/1440/1536, desktop 1920 (4K@200% collapses to 1920).
Modernization opportunities (progressive, non-breaking)
@container) for component-level adaptation (cards,widgets in the sidebar) — ~95% browser support.
clamp()fluid typography/spacing — already partially used (headingclamp landed in fix(web-ui): improve mobile responsiveness for small screens #1279); extend to spacing.
dvh/svh/lvhfor full-height drawers/log viewer instead ofvh(mobile browser-chrome aware);
svhis the conservative pick.@media (hover: hover) and (pointer: fine).Constraints
time), each step verified.
Verification
Playwright headless overflow sweep — assert
document.documentElement.scrollWidth === clientWidthat 320 / 375 / 390 / 430 / 768 / 1024 / 1280 / 1920 with theconfig editor, log viewer, and command drawer populated (long torrent paths).
This is the same harness used to verify #1279 and should be wired into CI
(see the browser/webserver CI effort).
Done when
comment block), all media queries migrated to it.
min-width.change.