fix(theme): light-mode color polish + replace launcher icon#558
Open
dmnyc wants to merge 2 commits into
Open
Conversation
The default ("custom") theme's light color scheme reused the raw
dark-mode accent (bright FF9800) as its primary, so light mode buttons
diverged from iOS and failed contrast against the near-white surfaces.
Light mode now uses a curated deeper primary (D9730D) for the default
accent and a darkened variant for user-picked accents.
The zap burst/pulse animations drew from the static zapColor, which is
a dark muddy brown in light mode. They now use a vivid variant with a
floored lightness so the bolts stay bright on light backgrounds while
the static zap icon keeps its contrast-safe color.
https://claude.ai/code/session_01DMzZDBEyTvWChvBxbZZUuZ
… icon
Color polish
- Light-mode `zapColor` and `bookmarkColor` now track the light-mode
primary (`customLightPrimary`) so the post-zap icon, post-zap count,
reaction count text, top zap indicators, wallet accents, and the
Lightning QR icon all render the same orange as buttons. Previously
the custom-theme + default-theme light variants hardcoded `#B85C00`
while buttons used `#D9730D`, producing a noticeable two-shade
mismatch.
- Default ("custom") theme `light.primary` stays at `#D9730D`; the
matching `light.zapColor` / `light.bookmarkColor` move to `#D9730D`
in Themes.kt for theme consumers.
- In-flight bolt animation still uses `WispThemeColors.zapAnimationColor`
(vivid HSL variant) — that's the muddy-on-light fix from the prior
commit and stays scoped to animation only.
Launcher icon
- Replaced the Android-Studio green-grid placeholder with the iOS
wisp artwork as an adaptive icon: vector foreground from the iOS
SVG (orange radial-gradient wisp with eye cutouts via `evenOdd`),
solid-black vector background. Group scaled to 65% of the foreground
canvas so launcher masks (circle / squircle / rounded square / etc.)
clip the black padding rather than the wisp's curl + outline.
- Legacy bitmap fallbacks (`mipmap-*/ic_launcher.png`) regenerated from
the iOS-rendered Android PNGs at 48/72/96/144/192. Old `.webp`
variants removed.
- Splash-screen icon (`windowSplashScreenAnimatedIcon` in themes.xml)
now points at the new vector `@drawable/ic_launcher_foreground`.
- `mipmap-anydpi-v26/ic_launcher.xml` + `ic_launcher_round.xml`
reference the vector foreground.
Cross-platform doc
- New `LIGHT_MODE_COLOR_PARITY.md` describes the contract for the iOS
agent: `primary` darkening, `zapColor == primary` in light mode,
`zapAnimationColor` as a separate vivid variant for animation only,
and a visual test to verify the throughout-the-theme orange is
consistent.
b0ecab0 to
0660540
Compare
This was referenced May 22, 2026
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
Three coupled changes that tidy up light mode and replace the
Android-Studio-default launcher icon. Companion doc
`LIGHT_MODE_COLOR_PARITY.md` describes the contract for the iOS agent
to mirror.
`fix/light-mode-theme-ui` — first commit) — deeper light-mode
`primary` (`#D9730D` for the default theme; `darkenColor(..., 0.18)`
for user-picked accents) so buttons keep contrast on near-white
surfaces. New `zapAnimationColor` (saturation × 1.15, lightness ≥ 0.5)
scoped to the in-flight bolt animation so the burst doesn't read
muddy on light backgrounds. Static UI everywhere else continues to
use plain `zapColor`.
and `bookmarkColor` now track `customLightPrimary`. The post-zap
icon, post-zap count text, reaction count after react, top zap
indicators in `NotificationsScreen`, wallet accents, and the
Lightning QR icon all render the same orange as the rest of the
theme. Previously these were pinned to `#B85C00` against a primary
of `#D9730D`, producing a two-shade mismatch.
with the iOS wisp artwork as a proper adaptive icon: vector
foreground from the iOS SVG (radial-gradient orange wisp with eye
cutouts via `evenOdd`), solid-black vector background. Group scaled
to 65% so launcher masks (circle / squircle / rounded square / etc.)
clip the padding rather than the wisp. Legacy bitmap fallbacks at
every density were regenerated from the iOS-rendered Android PNGs.
decisions: `zapColor == primary` in light mode,
`zapAnimationColor == vivid(zapColor)` only for the animation, default
theme `light.primary == #D9730D`. Includes a 4-step visual test and
an iOS port checklist.
Test plan
count text on a previously-zapped post is `#D9730D` — the same
orange as the Save / Connect / Confirm buttons elsewhere.
same `#D9730D`.
a noticeably brighter orange (the `zapAnimationColor` vivid
variant). Animation is never muddy or dark.
regressions).
Settings. Confirm light-mode buttons + zap icon both render the
darkened variant (`darkenColor(accent, 0.18)`) and match each
other.
curated light-mode colors should remain unchanged.
background (no green grid). Recents thumbnail matches. On a
circular-mask launcher (Pixel) the wisp is fully visible — no
cropping of its curl/outline.