Skip to content

feat(mobile): a first pass at fitting Rill web-admin on phones#9678

Open
dfliess wants to merge 9 commits into
rilldata:mainfrom
dfliess:dfliess/mobile-first-pass
Open

feat(mobile): a first pass at fitting Rill web-admin on phones#9678
dfliess wants to merge 9 commits into
rilldata:mainfrom
dfliess:dfliess/mobile-first-pass

Conversation

@dfliess

@dfliess dfliess commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Hey Team!
We have a first approach to mobile responsiveness for Rill User UI and we'd like to contribute it back.
To be clear, this is not a mobile redesign, just making Rill usable from a phone. A step forward to iterate on.

Today app.html pins the viewport to width=1024 (the stop-gap from #2423), so on a phone you get a zoomed-out desktop page. This PR drops that: every Cloud surface fits a real device viewport, wrapping and scrolling instead of overflowing, with a friendly "better on desktop" notice on the two surfaces that really need one or would be really complicated to migrate now (pivot and embedded editing). Also included a Playwright smoke suite to keep it from regressing.


Developed in collaboration with Claude Code

dfliess added 9 commits July 13, 2026 18:07
Playwright project "mobile" (emulated iPhone 13) asserting the audited
routes render without horizontal overflow. Inert until the viewport
meta serves the real device width.
…orts

Mechanical pass: floating and fixed-width elements get
min(Npx, calc(100vw - 2rem)) or max-w caps, and the org/admin tables
scroll horizontally inside their own container instead of overflowing
the page.
The header wraps below sm instead of overflowing, breadcrumb labels
truncate, the nav toggle stays reachable, and the app shell switches
to dynamic viewport units (dvh) so mobile browser chrome doesn't eat
into the layout.
Project tabs scroll horizontally with edge fades and auto-scroll to
the selected tab. The header action cluster keeps to a single row
(grow works around WebKit sizing a wrapping flex item below its
single-line max-content), Share collapses to its icon, and the
last-refreshed date collapses to a clock that opens a popover on tap,
since hover tooltips never fire on touch. Status tables scroll inside
their container and the embedded edit session gates to desktop with a
friendly notice.
Below sm the chart column and leaderboards stack vertically, the tab
bar flows under the filters instead of overlaying wrapped chips, the
three time pickers stack their list and calendar panels with vertical
scroll, and the time pill scrolls horizontally so squeezed controls
stay reachable. The pivot view, whose table plus config sidebar has no
phone layout yet, shows a desktop-only notice below sm.
Canvas rows kept a fixed minimum that forced horizontal overflow on
phones; they now shrink with the viewport.
Embed layouts drop their fixed minimum width, the embed header wraps,
wide markdown tables scroll inside their own container, and the table
toolbar wraps below sm.
The collapsed conversation sidebar becomes a horizontal top rail below
640px, the chat input and context picker stay within the viewport, and
the project home wraps its title and actions.
Retires the width=1024 stop-gap from rilldata#2423 now that every Cloud
surface fits a real device viewport. maximum-scale=1 suppresses the
iOS auto-zoom on sub-16px inputs; user pinch zoom is unaffected since
iOS 10.
@nishantmonu51 nishantmonu51 added Type:Feature New feature request Size:L Large change: 500-1,999 lines claude-code-assisted labels Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claude-code-assisted Size:L Large change: 500-1,999 lines Type:Feature New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants