Repository navigation
feat(ui): align the launcher UI with LeviLauncher for Windows - #454
Merged
Merged
Conversation
Rebuild the app shell and every launcher page after the Windows launcher, keeping touch-sized controls. Shell - Left icon rail with the active-item pill, a top bar with back/forward history, breadcrumbs, news and the account avatar, and the page area with the concave corner. A top navigation bar is available as on Windows. - Keep the navigation and pages clear of the front camera cutout. Look - Windows palette (emerald, zinc neutrals) for light and dark mode, header cards, white content cards, segmented tabs, pill buttons, icon chips. - Home, instances, instance settings, content management and lists, mods, external mods, CurseForge, LeviMC mods, settings, about, accounts, news and quick launch follow the Windows layouts and wording. Personalization (same options as Windows) - Theme mode: light, dark, manual schedule, sunrise/sunset, follow system; quick theme toggle in the navigation. - Theme color per light/dark mode with the Windows presets and more colors, plus a custom color; base layer under the wallpaper. - Layout and motion: top navigation bar, disable animations. - Wallpaper: folder with random/sequential order and next image, single image, fit mode, blur, brightness and opacity. - Interface material: presets, interface opacity, wallpaper overlay and readability protection.
Bring in the Google Play download page and fit it into the new shell: - add Download to the sidebar rail, the top navbar and the breadcrumbs, - restyle the download and Google sign-in pages after the Windows download page (header card, search, segmented filters, version table). Also replace the shell-wide cutout padding with targeted avoidance: the shell, chrome and wallpaper stay full screen, only the rail item at the camera's height moves below it, top bar items move only if the camera reaches the bar, and the page gets extra room only for the part of the camera past its own margins. The real cutout outline is used on API 31+.
…witch On landscape phones a header card on top leaves lists only ~110-150dp tall. Download, CurseForge, LeviMC mods (browse/installed), mods, external mods, content lists, instances, instance settings and settings now put the title, actions, search and filters (or the tabs, stacked vertically) in a left panel and show the list or content at full height on the right. The left panel is 240dp, 288dp from 840dp wide, and scrolls when it does not fit. Personalization > Layout and motion gets "Two-pane pages" (on by default); turning it off restores the Windows layout with the header on top. Each page keeps both layouts with the same view ids. Also: segmented controls gain a vertical mode and ellipsize long labels; the download table moves type/state into the version cell in two-pane mode; the mods table version column narrows on small screens; settings rows keep a minimum title width; the appearance-mode control fits the narrower pane.
Each page is its own activity, so every rail tap cross-faded the whole window, rail and top bar included, and the camera avoidance re-laid out the rail a frame late. - Navigation between launcher pages runs without a window animation; the shell stays put and only the page content fades in (from 40% opacity, so the page area never shows blank). - Camera avoidance recomputes only when the cutout changes, and applies before the first draw (that draw is skipped when something moved). - The rail's active pill is placed before the next draw, not a frame later.
indpriyanshuraj
approved these changes
Nov 10, 2026
This was referenced Nov 11, 2026
Merged
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
Rebuilds the app shell and every launcher page after LeviLauncher for Windows, and adds the Windows personalization options, while keeping controls sized for touch (buttons ≥ 40dp, list rows ≥ 44dp).
Shell
Pages
Home, download (Google Play, merged from main), instances, instance settings, content management, content lists (worlds / packs / skins / servers / screenshots), mods, external mods, CurseForge, LeviMC mods, settings, about, accounts, news and quick launch now use the Windows structure: a header card with the title and main actions, white content cards, segmented tabs, pill buttons and colored icon chips, with Windows wording where a counterpart exists. Home moves Microsoft account to the avatar and quick launch into the launch button menu.
Two-pane pages (landscape phones)
A header card on top leaves lists only ~110-150dp tall on a landscape phone. Download, CurseForge, LeviMC mods (browse/installed), mods, external mods, content lists, instances, instance settings and settings therefore put the title, actions, search and filters (or the tabs, stacked vertically) in a left panel (240dp, 288dp from 840dp wide, scrolls if needed) and show the list at full height on the right. "Two-pane pages" in Personalization > Layout and motion (on by default) switches back to the Windows layout with the header on top; each page keeps both layouts with the same view ids.
Personalization (same options as Windows)
Not ported: the Windows "interface blur" slider (Android cannot blur what is behind a view).
Testing
./gradlew :app:assembleDebugbuilds.