Fix real tab-bar-icons-vanish bug, dropdown popup color, wheel/Montiert swap

The reported "whole tab bar disappears when hiding labels" bug was real,
just one level deeper than first checked. .tabbar.ohne .tab span{display:
none} targeted the label span, but the icon is also wrapped in a <span
class="tabpille"> - a bare "span" type selector doesn't care about class,
so the icon's own wrapper collapsed too. Confirmed by measuring the <svg>
directly (0x0 bounding rect) after a live screenshot showed all 5 tab
buttons empty. Fixed with :not(.tabpille) in both stylesheets.

The Modell dropdown was still bright despite the color-scheme hint from
the last commit: a <select>'s opened option list is rendered by the
browser/OS as its own surface, entirely outside the page's paint tree -
confirmed when a screenshot call hung 30s trying to capture it open.
color-scheme only gets partial credit there; explicit background-color/
color on <option> is what Chrome/Firefox/Edge actually honor for the
popup rows. Added that, verified via getComputedStyle since the open
popup itself can't be screenshotted by this tooling.

Swapped the wheel photo (now right-aligned via margin-left:auto on the
now-correctly-square .bildbox.radbild) and Montiert (already left) per
request.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-16 20:52:46 +02:00
parent 17b25d492a
commit ec55e5808e
5 changed files with 83 additions and 19 deletions
+39 -9
View File
@@ -977,18 +977,48 @@ wraps the web app for iPhone; a PWA home-screen install is the accepted intermed
(6) **Back arrow changed from red (`--ios-tint`) to the neutral headline color (`--fg`)** in
`audi-dashboard-ios.css`, matching every other navigation-color decision made this project (red
stays reserved for destructive actions per Apple's HIG).
Investigated but could not reproduce: user reported that hiding tab labels ("Beschriftung in der
Menüleiste" off) makes the *entire* tab bar disappear. Traced the full CSS cascade and the exact
commit that added the sixth round's icon+label highlight (`git show` on the relevant lines) —
the new rules are correctly scoped to `:not(.ohne)` and provably never touched the icon-only
path; live DOM/computed-style testing (toggle the switch, click the actual label, navigate away
and back, both mobile and desktop container widths) showed the tab bar staying visible, correctly
sized, and correctly classed in every case tried in the in-app Chromium browser. Left unchanged
pending a repro (screenshot or the exact device/browser) from the user, since no defect could be
located to fix.
Initially investigated but could not reproduce (see below for the real fix, found later the same
day): user reported that hiding tab labels ("Beschriftung in der Menüleiste" off) makes the
*entire* tab bar disappear. First pass traced the CSS cascade and the commit that added the sixth
round's icon+label highlight and found it correctly scoped to `:not(.ohne)`; live DOM/computed-
style testing (toggle, click the label, navigate away/back, both container widths) checked
`#tabbar`'s and each `.tab`'s own box — all stayed visible, sized, and classed correctly — so the
bug looked unreproducible and was provisionally left alone.
Deployed to `audi_ha_test`; wheel-photo squareness, Montiert position, back-arrow color, and the
image-cycle dots all confirmed live via direct DOM/computed-style checks (no visual screenshot
tool available this session — see running note below).
Follow-up same day: user reported the `color-scheme` fix alone wasn't enough — dropdowns were
"still very bright." Correct: a `<select>`'s *opened* option list is rendered by the browser/OS
as a separate surface outside the page's render tree entirely — confirmed firsthand when a
screenshot tool call actually hung for 30s trying to capture it, and even a real click-to-open
attempt afterward produced no visible change in any screenshot. `color-scheme` only gets partial
credit there; the reliable lever is that Chrome/Firefox/Edge *do* honor explicit
`background-color`/`color` set directly on `<option>` elements for the popup rows. Added
`.feld select option{background-color:var(--canvas);color:var(--fg)}` — deliberately `--canvas`,
not `--tile-2` (translucent in the night theme, would let the browser's own light backdrop show
through). Verified via `getComputedStyle` on the actual `<option>` nodes
(`background-color: rgb(12,16,20)`, `color: rgb(255,255,255)` in night theme) since the popup
itself is provably outside what any screenshot in this tool can capture — user should confirm
visually on their own device.
Also: "Montiert" and the wheel photo were requested swapped — photo now sits on the tile's right
edge (`.bildbox.radbild{margin-left:auto}` inside its full-width wrapper), Montiert stays
`left`-anchored, unchanged from the seventh round.
**Found the real tab-bar bug right after, from the user's own screenshot** ("in this view i dont
see any menu items" — a live repro of icon-only mode, this time actually screenshotted since the
browser pane had recovered). The earlier live-testing pass checked `#tabbar` and `.tab`'s own
boxes and both looked fine — the actual defect was one level deeper and only visible by measuring
the icon itself: `.tabbar.ohne .tab span{display:none}` (in both stylesheets) was meant to hide
only the trailing label `<span>${t.label}</span>`, but the icon is *also* wrapped in a `<span
class="tabpille">` — a bare type selector `span` does not care about class, so the rule hid the
icon's wrapper too. `getBoundingClientRect()` on the `<svg>` read `{w:0,h:0}` and
`getComputedStyle(.tabpille).display` read `"none"` once actually checked — that was the missing
measurement in the first pass. This is exactly the reported "whole menu bar disappears": in icon-
only mode every tab lost both its label *and* its icon, leaving five empty buttons in an otherwise
correctly-visible bar. Fixed with `.tabbar.ohne .tab span:not(.tabpille){display:none}` in both
`audi-dashboard.css` and `audi-dashboard-ios.css` (the base file's copy was already shadowed by
the ios one at matching specificity, but fixed too rather than left as a landmine). Verified live
via screenshot: all 5 tab icons render correctly in icon-only mode, active tab still shows its
filled pill.
- [ ] Fix remaining documentation drift (statistics claim, README gaps, obsolete TODO comment) —
text-only changes; INSTALL.md's WLAN/TommiG1 drift and stale variable names were fixed
2026-08-12 (see section B); `DESIGN_REVIEW_2026-08-13.md` and `REVIEW_main_2026-08-13.md`
@@ -214,8 +214,12 @@ main#view{--seitenrand:16px;padding:0 var(--seitenrand) 30px;scroll-behavior:smo
:host([data-theme="tag"]) .tabbar{background:rgba(242,242,247,.78)}
.tab{border-top:0;margin-top:0;padding:7px 2px 6px;gap:3px;
font-size:10px;letter-spacing:0;text-transform:none;color:var(--ios-grau)}
/* Beschriftung folgt weiter dem Schalter in den Einstellungen */
.tabbar.ohne .tab span{display:none}
/* Beschriftung folgt weiter dem Schalter in den Einstellungen.
:not(.tabpille) ist Pflicht: die Icon-Huelle ist ebenfalls ein <span> (span
class="tabpille"), ein blosses ".tab span" traf also nicht nur das Label
sondern auch die Pille selbst - das Icon verschwand mit, nicht nur der
Text. Genau das war der gemeldete "ganze Menueleiste verschwindet"-Bug. */
.tabbar.ohne .tab span:not(.tabpille){display:none}
.tab svg{width:26px;height:26px;stroke-width:1.5}
/* myAudi-Menueleiste: das aktive Symbol sitzt hell in einer gefuellten Pille,
die uebrigen bleiben grau - kein farbiger Tint, kein Oberkantenstrich. */
@@ -268,7 +268,11 @@ main#view::-webkit-scrollbar { width: 0; height: 0; }
.tab svg.voll { fill: currentColor; stroke: none; }
.tab:active svg { transform: scale(.9); }
.tab span { font-size: 11px; letter-spacing: .01em; }
.tabbar.ohne .tab span { display: none; }
/* :not(.tabpille) - die Icon-Huelle ist selbst ein <span>, ein blosses
".tab span" hier hiess frueher auch der Pille (samt Icon) display:none.
Ueberschrieben von derselben Regel in audi-dashboard-ios.css (dieselbe
Spezifitaet, spaeter geladen), aber auch hier falsch und daher fixiert. */
.tabbar.ohne .tab span:not(.tabpille) { display: none; }
.tabbar.ohne .tab { padding: 14px 0 12px; }
.tabbar.ohne .tab svg { width: 26px; height: 26px; }
@@ -449,8 +453,10 @@ button.tile, .tilebtn { transition: background .15s, transform .1s; }
/* .bildbox.radbild statt .radbild allein: .bildbox unten setzt width/aspect-
ratio auf derselben Spezifitaet (eine Klasse) und gewinnt als spaeter
notierte Regel sonst automatisch - die Box blieb dadurch bislang die volle
Kachelbreite im 4:3-Format statt eines echten 96x96-Quadrats. */
.bildbox.radbild { width: 96px; height: 96px; aspect-ratio: 1 / 1; }
Kachelbreite im 4:3-Format statt eines echten 96x96-Quadrats.
margin-left:auto schiebt das feste 96px-Quadrat an den rechten Rand des
vollbreiten data-bildklick-Wrappers - Montiert sitzt links (siehe unten). */
.bildbox.radbild { width: 96px; height: 96px; aspect-ratio: 1 / 1; margin-left: auto; }
.bildbox { position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: 12px; overflow: hidden; }
.bildbox img { display: block; width: 100%; height: 100%; object-fit: cover; }
@@ -527,6 +533,13 @@ button.tile, .tilebtn { transition: background .15s, transform .1s; }
appearance: none;
}
.feld input:focus, .feld select:focus, .notiz:focus { outline: none; border-color: var(--red); }
/* Das AUFGEKLAPPTE <select>-Popup ist Browser-/OS-Chrome, kein Teil des
Seiten-DOMs - color-scheme (siehe :host weiter oben) beeinflusst es nur
teilweise, der Rest bleibt hell. Einzige zuverlaessige Stellschraube:
Chrome (u.a.) rendert die Zeilen im Popup tatsaechlich mit dem hier
gesetzten background-color/color statt Systemfarben - deckende Werte,
var(--tile-2) im Nacht-Theme ist transparent und wuerde durchscheinen. */
.feld select option { background-color: var(--canvas); color: var(--fg); }
/* Pull-down-Button-Optik (Apple HIG): einzelner Abwaerts-Chevron statt des
durch appearance:none oben entfernten nativen Browser-Pfeils. */
.feld select {
+6 -2
View File
@@ -214,8 +214,12 @@ main#view{--seitenrand:16px;padding:0 var(--seitenrand) 30px;scroll-behavior:smo
:host([data-theme="tag"]) .tabbar{background:rgba(242,242,247,.78)}
.tab{border-top:0;margin-top:0;padding:7px 2px 6px;gap:3px;
font-size:10px;letter-spacing:0;text-transform:none;color:var(--ios-grau)}
/* Beschriftung folgt weiter dem Schalter in den Einstellungen */
.tabbar.ohne .tab span{display:none}
/* Beschriftung folgt weiter dem Schalter in den Einstellungen.
:not(.tabpille) ist Pflicht: die Icon-Huelle ist ebenfalls ein <span> (span
class="tabpille"), ein blosses ".tab span" traf also nicht nur das Label
sondern auch die Pille selbst - das Icon verschwand mit, nicht nur der
Text. Genau das war der gemeldete "ganze Menueleiste verschwindet"-Bug. */
.tabbar.ohne .tab span:not(.tabpille){display:none}
.tab svg{width:26px;height:26px;stroke-width:1.5}
/* myAudi-Menueleiste: das aktive Symbol sitzt hell in einer gefuellten Pille,
die uebrigen bleiben grau - kein farbiger Tint, kein Oberkantenstrich. */
+16 -3
View File
@@ -268,7 +268,11 @@ main#view::-webkit-scrollbar { width: 0; height: 0; }
.tab svg.voll { fill: currentColor; stroke: none; }
.tab:active svg { transform: scale(.9); }
.tab span { font-size: 11px; letter-spacing: .01em; }
.tabbar.ohne .tab span { display: none; }
/* :not(.tabpille) - die Icon-Huelle ist selbst ein <span>, ein blosses
".tab span" hier hiess frueher auch der Pille (samt Icon) display:none.
Ueberschrieben von derselben Regel in audi-dashboard-ios.css (dieselbe
Spezifitaet, spaeter geladen), aber auch hier falsch und daher fixiert. */
.tabbar.ohne .tab span:not(.tabpille) { display: none; }
.tabbar.ohne .tab { padding: 14px 0 12px; }
.tabbar.ohne .tab svg { width: 26px; height: 26px; }
@@ -449,8 +453,10 @@ button.tile, .tilebtn { transition: background .15s, transform .1s; }
/* .bildbox.radbild statt .radbild allein: .bildbox unten setzt width/aspect-
ratio auf derselben Spezifitaet (eine Klasse) und gewinnt als spaeter
notierte Regel sonst automatisch - die Box blieb dadurch bislang die volle
Kachelbreite im 4:3-Format statt eines echten 96x96-Quadrats. */
.bildbox.radbild { width: 96px; height: 96px; aspect-ratio: 1 / 1; }
Kachelbreite im 4:3-Format statt eines echten 96x96-Quadrats.
margin-left:auto schiebt das feste 96px-Quadrat an den rechten Rand des
vollbreiten data-bildklick-Wrappers - Montiert sitzt links (siehe unten). */
.bildbox.radbild { width: 96px; height: 96px; aspect-ratio: 1 / 1; margin-left: auto; }
.bildbox { position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: 12px; overflow: hidden; }
.bildbox img { display: block; width: 100%; height: 100%; object-fit: cover; }
@@ -527,6 +533,13 @@ button.tile, .tilebtn { transition: background .15s, transform .1s; }
appearance: none;
}
.feld input:focus, .feld select:focus, .notiz:focus { outline: none; border-color: var(--red); }
/* Das AUFGEKLAPPTE <select>-Popup ist Browser-/OS-Chrome, kein Teil des
Seiten-DOMs - color-scheme (siehe :host weiter oben) beeinflusst es nur
teilweise, der Rest bleibt hell. Einzige zuverlaessige Stellschraube:
Chrome (u.a.) rendert die Zeilen im Popup tatsaechlich mit dem hier
gesetzten background-color/color statt Systemfarben - deckende Werte,
var(--tile-2) im Nacht-Theme ist transparent und wuerde durchscheinen. */
.feld select option { background-color: var(--canvas); color: var(--fg); }
/* Pull-down-Button-Optik (Apple HIG): einzelner Abwaerts-Chevron statt des
durch appearance:none oben entfernten nativen Browser-Pfeils. */
.feld select {