Repository navigation
fix(dashboard): no panel pans sideways on a phone; tab, filter and link rows wrap; live layout tests run in CI - #452
Merged
Conversation
added 4 commits
October 6, 2026 20:32
…nst a scratch gateway (390, 412 and 1280 wide, optional --text-size)
… in a link card or the Contacts header cannot widen its column; a source scan holds hand-rolled rows to it The shared stylesheet wraps, below 768px, inline flex rows of links or buttons and rows whose class ends in -tabs, -tabbar, -nav, -chips, -toolbar, -filters or -pills, at zero specificity. Link cards in grid containers get min-width:0, at every width (the Contacts grid overflowed on desktop too). No blanket overflow-x:hidden. A row that must stay on one line sets flex-wrap:nowrap and overflow-x:auto so it scrolls itself; the scan rejects nowrap alone. Source fixes: Files type filter and Settings LLM profile sub-tabs wrap; Projects card badges keep their size at large text; the Contacts profile info column is bounded by its header.
…ter rows wrap on phones; status rows wrap a long value at large text; data-dashboard 1.0.3, media 1.1.4, matrix-dendrite 1.0.3, writefreely 1.0.2
…a browser that fails to start fails them instead of skipping
kh0pper
force-pushed
the
fix/dashboard-phone-overflow
branch
from
October 7, 2026 01:32
b338872 to
f550b11
Compare
…without one installed no longer renders the not-installed banner over the measured page
kh0pper
force-pushed
the
fix/dashboard-phone-overflow
branch
from
October 7, 2026 14:45
f550b11 to
fd4d76d
Compare
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.
What this fixes
On a phone, some dashboard panels were wider than the screen, so the whole panel slid sideways and cards were cut off at the edge. The Media tab row was fixed in #451. This PR fixes the problem for every panel at once, and adds checks so it doesn't come back.
An audit of every dashboard panel (19 core, 66 bundle; 279 views; 390, 412 and 1280 px wide) found:
What users will see
On a phone, these rows now wrap onto a second line instead of running off the screen:
Desktop layout does not change, except that the Contacts grid now fits.
The shared guard
The shared dashboard stylesheet now has a small guard. It uses zero-specificity selectors, so any panel's own CSS still wins.
Rows wrap on phones (768 px and below). This applies to:
-tabs,-tabbar,-nav,-chips,-toolbar,-filtersor-pills.These rows now wrap the same way the shared
tabs()row always has.Link cards in a grid get
min-width: 0, so one long name cannot widen every column. Buttons, badges and icons are left alone.Opting out: a row that must stay on one line sets
flex-wrap:nowrapandoverflow-x:auto, so it scrolls inside itself instead of sliding the page.nowrapalone is not accepted. The CSS comment, the source scan and the scan's failure message all state this same rule.What it does not do:
overflow-x: hiddenon the page or content area, which would hide content instead of fitting it;A new test file,
tests/dashboard-phone-rows.test.js, does three things:scripts/dev/phone-overflow-audit.mjsis a developer tool for the audit above. It runs a throwaway gateway on loopback with a scratch home directory. CI does not run it.CI change
suitejob gets one new step,npx --yes playwright@1.63.0 install --with-deps chromium-headless-shell. That is a pinned Chrome Headless Shell (153.0.8010.12).CROW_REQUIRE_TEST_CHROME=1is set on the CInpm teststep only. In CI, a missing or broken browser now fails the live tests instead of letting them skip quietly. Local runs are unchanged.suitejob is about 5.5 min against a 15 min timeout.suite,static-checksandauditare unchanged, and no jobname:was added.Versions
The registry was regenerated to match.
Not changed
package.jsonandpackage-lock.jsonare untouched)Testing
npm test: 7710 tests, 7709 pass, 0 fail, 1 skipped.GITHUB_ACTIONS=true,CROW_REQUIRE_TEST_CHROME=1, the exact CI Chrome build): 7709 pass, 0 fail, 1 skipped.check-port-allocation,build-registry --checkandcheck-public-hygiene: all OK.npm audit --omit=dev --audit-level=critical: 0 critical.gis-mapplugin route, which is not a panel and is expected to 404.