Skip to content
This repository was archived by the owner on Aug 25, 2026. It is now read-only.

Black theme: truly pure black app-wide, renamed from AMOLED - #94

Merged
alltechdev merged 4 commits into
mainfrom
fix/amoled-chrome
Jul 23, 2026
Merged

alltechdev merged 4 commits into
mainfrom
fix/amoled-chrome

Conversation

@alltechdev

Copy link
Copy Markdown
Owner

The app-wide pure-black theme, finished: truly black everywhere it claims to be, and renamed from "AMOLED" to "Black".

What changed

Pure-black audit fixes. The theme (shipped with the settings redesign) still left four surfaces on dark-grey when Black was active - all now real black territory:

  • SheetPalette gains Amoled (#000000) and RowAmoled (#141414) roles with a reactive amoled getter; the five hardcoded place-sheet backgrounds route through SheetPalette.bg(dark).
  • The reviews panel's carve background goes #000000.
  • The soft-key bar renders black, rebuilt on theme flips so it never lags a change.

The rename. The user-facing label is now "Black" in all 15 locales (the ThemeMode.AMOLED enum name stays for pref stability). The harness's set_theme taps "Black" to match.

Verification

Settings phase re-swept on device across all seven legs, zero missed:

Leg Result
kyocera-e4810 240x320@160 standard 15/15
sonim-x320 480x854@320 standard 15/15
kyocera-duraxe-e4830 240x320@120 standard 15/15
sonim-x320-225 480x854@225 standard 15/15
kyocera-e4810 restricted 14/14 (place-pages n/a)
sonim-x320 restricted 14/14 (place-pages n/a)
kyocera-e4810 touch (SOFTKEYS=off) 15/15

All frames eyeballed: Black shows true-black surfaces on the hub and every spoke, the theme picker reads "Black", light mode keeps the soft off-white with bordered hub rows. Goldens regenerated and committed.

Theme goldens (240x320 @160)

Light Black
light black

Black across the spokes (480x854 @320)

Hub Appearance Voice
hub appearance voice

Note: the branch also carries the app-projected dependency commit (dde740f), cherry-picked earlier so this branch's builds list on Android Auto; it is the same change PR #93 ships. Whichever merges second is a no-op there.

… list Vela

Vela never appeared in Android Auto's launcher, even with unknown sources
enabled (device report, OnePlus 12). The manifest declarations were all
correct - CarAppService with the NAVIGATION category, the automotive_app_desc
template capability, minCarApiLevel - but the build shipped only the base
androidx.car.app:app template library. Android Auto discovers a car app
through the CarAppMetadataHolderService that androidx.car.app:app-projected
merges into the manifest (the official docs' Android Auto artifact); without
it the host has nothing to hand-shake with and the app is simply never
listed. Verified by diffing the merged manifests: the fixed APK carries
androidx.car.app.CarAppMetadataHolderService, the old one does not.

The first-cut Android Auto port predates any real head-unit test (AGENTS
notes it untested), which is how this shipped invisible.
The app-wide true-black theme audit found four surfaces still on dark-grey
when the theme was active, all fixed to real #000000 territory:
SheetPalette gains Amoled (#000000) and RowAmoled (#141414) roles with a
reactive amoled getter; PlaceSheet's five hardcoded bg sites route through
SheetPalette.bg(dark); ReviewsPanel's carve background goes #000000; and
the soft-key bar renders black (rebuilt on themeMode flips so it never
lags a theme change).

The theme's user-facing name changes from "AMOLED" to "Black" in all 15
locales (the ThemeMode.AMOLED enum name stays for pref stability).
Harness: set_theme taps "Black" to match.

Goldens regenerated across the full settings phase: 4 standard legs 15/15,
2 restricted legs 14/14 (place-pages n/a), touch leg 15/15, zero missed.
Frames 54/55 are the Light and Black theme goldens on every leg; all
eyeballed - Black shows true-black surfaces on hub and spokes, light shows
the soft off-white with bordered hub rows.
…ched surface

A UI change is verified only when every box is checked, stated explicitly:
touched PHASES only (never the full multi-hour tour; flavors and the
SOFTKEYS=off touch leg only when the change can actually differ across
them - say what was skipped and why), the dynamic focus walk of any
changed spoke, ring evidence for new controls, every touched surface
enumerated and reached (add a phase if none does), frames eyeballed and
shown with grids in the PR, and A/B against main on any failure.

Written down after the same boxes were dropped twice in one session -
phases-passed kept masquerading as done.
…theme phase

The near-black stepping (#060809..#191E1F containers, #141414 sheet rows)
read as grey areas against the true-black base - 'black should be black'
(user). Every Black-scheme surface and container role is now #000000, and
SheetPalette.RowAmoled follows; hairline outlines and the hub rows' thin
borders carry all the structure. Dark is untouched - the three-way
Light / Dark / Black choice stands.

New blacktheme harness phase (full_coverage.sh, frames 57+, in ALLPHASES):
flips Black on through the real Settings UI and walks the surfaces the
theme claims beyond Settings - bare map with the black soft-key bar,
search results, place sheet collapsed + expanded, the reviews carve
(contains-matched via new tap_contains; n/a when the place has no reviews
button or on restricted, which drops reviews). Closes the gap where
'app-wide' was only ever verified inside Settings.

Verification, scoped per the AGENTS bar: blacktheme + settings phases on
ONE leg (kyocera 240x320@160) - a palette change is geometry- and
flavor-independent, so the other geometries, restricted, and the touch
leg were deliberately skipped; blacktheme 4/4 (reviews n/a - no button on
the test place), settings 15/15. Frames eyeballed; the suspect lighter
strip at the sheet handle pixel-sampled to rgb(0,0,0)/rgb(1,1,1) - it was
the focus ring's glow at thumbnail scale.
@alltechdev

Copy link
Copy Markdown
Owner Author

Flat black landed (bff8a4a): every Black-scheme container role and sheet row is now #000000 - the near-black stepping is gone; hairlines carry the structure. Dark is untouched.

Also new: a blacktheme harness phase (in ALLPHASES) that flips Black on through the real Settings UI and walks the app-wide surfaces - bare map + black soft-key bar, search results, place sheet collapsed/expanded, reviews carve - closing the gap where app-wide black was only verified inside Settings.

Verification (scoped: one 240x320 leg - a palette change is geometry/flavor-independent, other axes deliberately skipped): blacktheme 4/4, settings 15/15, frames eyeballed, the one suspect area pixel-sampled to rgb(0,0,0).

Black hub Bare map Search Place sheet Expanded
a b c d e

@alltechdev
alltechdev merged commit ab1b154 into main Jul 23, 2026
1 check passed
alltechdev added a commit that referenced this pull request Jul 23, 2026
Conflicts: goldens resolved by provenance (branch frames for search/
settings - Roboto + Driving alerts rows; main's flat-black frames for the
Black-theme 55/57-60 set), gradle kept the branch's app-testing line on
top of the shared app-projected, FEATURES unioned with main's post-rename
theme wording. Both flavors compile, :core green, translations lock OK.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant