Repository navigation
feat(mobile): draw the app's own screens in the web UI's colours - #759
Merged
Merged
Conversation
This was referenced Nov 3, 2026
Medformatik
force-pushed
the
feat/mobile-native-navigation
branch
from
November 3, 2026 22:11
8a75857 to
ad03646
Compare
The native loading, error, recovery and permission screens, the Android notification tint, the adaptive icon background and the splash used a blue palette of their own, so they looked like a different product in front of the green web UI. The colours now live in @openmapx/core/theme. The web's MUI theme and theme-color tags are built from it, and the shell derives its light and dark palettes, button radius and label weight from the same values.
Android 12 and later draw the splash image on a 288 dp canvas and crop it to a 192 dp circle. The splash used the square, edge-to-edge app logo at 180 dp, so the circle cut off its corners and edges. Android now gets its own splash image: the full logo at 148 dp on a transparent 288 dp canvas, small enough that its rounded corners stay inside the circle. iOS, which does not crop, keeps the existing image.
Medformatik
force-pushed
the
feat/mobile-native-theme
branch
from
November 3, 2026 22:25
a629a03 to
48d58e4
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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 changed and why
The few screens the shell draws itself had their own blue palette: the loading and error overlays, the recovery screen and the location disclosure. So did the Android notification tint, the adaptive-icon background and the dark splash. In front of the green web UI they looked like a different product.
The colours now live in
@openmapx/core/theme. The web's MUI theme andtheme-colortags are built from it, so the web looks the same as before. The shell derives its light and dark palettes from the same values, plus the 8 px corner radius and the medium button-label weight:#1C1C1C, which the dark splash now matches.The native screens still use the system font, not Plus Jakarta Sans.
Android splash logo
Android 12 and later draw the splash image on a 288 dp canvas and crop it to a 192 dp circle. The splash used the square, edge-to-edge logo at 180 dp, so the circle cut off its corners and edges. Android now gets its own splash image: the full logo at 148 dp on a transparent 288 dp canvas, small enough that its rounded corners stay inside the circle. iOS does not crop and keeps the existing image.
Related work
Last of four stacked PRs. It is based on #758 (native navigation), which is based on #757 and #756.
Verification
#207E23, and the generated Android resources use the new splash and icon-background colours.apps/mobile: jest (new palette test),tsc, biome,assert-generated, andexpo configresolving the shared colours.themeColor),tsc. Full node vitest project for the new core module.splashscreen_logodrawable keeps every opaque pixel within 372 px of the centre of its 1152 px canvas (the circle's radius is 384 px).Release and upgrade impact
Product impact: ordinary
No package release: the new @openmapx/core/theme module is imported only by the web app and the mobile shell; extension-cli builds byte-identical dist output with and without this change.