Repository navigation
Add Liquid Glass interface style with responsive mobile layout - #7
Merged
Merged
Conversation
A new Appearance setting switches between the original look and a frosted "Liquid Glass" style modelled on the Umbrel App Store. Shared borders, surfaces and radii are CSS tokens that [data-ui='glass'] swaps; component-specific differences use a `glass:` Tailwind variant. The choice is stored server-side (ui_style) and mirrored to localStorage so the right style paints before settings load. Glass mode adds a dashboard banner with a close button; it can be turned back on from Settings (dashboard_hero). Navigation no longer overflows on narrow screens: under md it moves to a bottom dock, and nav links collapse to icons until xl. Sticky bars and full-height panes read the navbar's measured height from --nav-h instead of assuming 60px. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
On phones the navbar and the sticky toolbar under it (Explore, Discover, Boards, library pages) slide away while scrolling down and return on any scroll up. Driven by a data-nav-hidden attribute on <html> and a matching Tailwind variant. The collapsed tag-sidebar strip is gone on phones, where it took a column from the grid; a "Libraries & tags" button next to the Explore title opens the drawer instead. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Merge the separate Classic/Glass tile and card components into single shared components driven by glass: variants - Replace ad-hoc rounded-xl/rounded-panel radii on thumbnails with a shared rounded-media token - Tone down Liquid Glass styling: smaller nav pills/icons, plain icons instead of colored tiles, tighter hero banner and spacing - Drop unused glass-card CSS helper and old radius overrides
The original style is the default again, so updating no longer restyles an existing install. A one-time "Pick your look" dialog asks which style to use, once per install, before the release notes are shown. Phone fixes: - Dock labels fit at every width down to 320px. - Opening another page starts it at the top with the bars showing, instead of keeping the previous page's scroll offset. - The dock's bottom spacing moved from <body> to the app wrapper, so pages that fit the screen, like Settings and the login screen, no longer scroll by the dock's height.
Conflict in the settings route: master now checks every key before saving any of them. Kept that, and moved the ui_style check up front as well, so an unknown style also leaves the rest of the request unsaved.
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.
Summary
Adds a Liquid Glass interface style, modelled on the Umbrel App Store, next to the existing look, and makes the phone layout work properly. The original look stays the default, and a one-time prompt asks which one to use.
ui_style:classic|glass, defaultclassic). It's stored on the server and copied to localStorage so the right style paints before settings load. Updating doesn't restyle anyone's install.ui_style_chosen), so it shows once per install, including existing installs the first time they load this version. The "What's new" dialog waits until it's answered, so the two never stack.dashboard_hero) in Appearance brings it back.--nav-h).How it's built
border-line,bg-surface,bg-bar,rounded-btn,rounded-field,rounded-panel,rounded-media). Their default values give the Original look, and[data-ui='glass']on<html>swaps them.glass:Tailwind custom variant. Only the Dashboard renders different markup per style.ui_style,ui_style_chosen,dashboard_hero). An unknownui_styleis rejected up front, together with master's new check, so a bad request saves nothing.Screenshots
First visit: the style picker
Original, the default
Liquid Glass
Testing
bun test --isolate: 129 pass, including new tests for the default style, saving the picker's answer, and rejecting an unknown style without saving the rest of the request.vite buildare clean.