Skip to content

Commit 94d7d40

Browse files
Antonio ...claude
andcommitted
fix: v2.8.1 — definitive touch-scroll fix (drop backdrop-filter on touch devices)
On mobile, vertical swipes landing on a card or the .evsc-stack failed to scroll the view — only swipes on the empty .dashboard-shell padding worked. Root cause is the iOS/WebKit gesture-capture bug on -webkit-backdrop-filter inside an outer scroll container; the v2.2.1 mitigations (touch-action: pan-y + translateZ(0)) were not sufficient on real devices. Fix: under @media (hover: none) and (pointer: coarse), override the two blur tokens (--evsc-blur, --evsc-blur-light) to none — every glass surface consumes them — and make surfaces near-opaque to compensate (light + dark variants). Desktop keeps the Liquid Glass look unchanged. Frontend-only; no schema/entity/config-flow change. Full suite green (259 passed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 07f5c24 commit 94d7d40

4 files changed

Lines changed: 70 additions & 2 deletions

File tree

‎CLAUDE.md‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,46 @@ async def _set_amperage(self, target_amperage: int):
757757

758758
## Version History
759759

760+
### v2.8.1 (2026-07-13)
761+
**FIX: Touch scroll stuck on dashboard cards — definitive fix (backdrop-filter removed on touch devices)**
762+
763+
**Problem**: on mobile, vertical swipes landing on a card / the `.evsc-stack`
764+
failed to scroll the view — the user had to swipe on the empty
765+
`.dashboard-shell` padding to scroll (perceived as a "shell vs stack scroll
766+
conflict"). Same symptom v2.2.1 targeted; its mitigations
767+
(`touch-action: pan-y` + `translateZ(0)`) did not fully cure it on real
768+
iOS/WebKit devices, exactly the residual risk its changelog documented.
769+
770+
**Root cause**: there is no nested scroll container in the bundle (single
771+
scroller = HA's view). The gesture is swallowed by the iOS/WebKit bug where
772+
an element carrying `-webkit-backdrop-filter` inside an outer scroll
773+
container can capture the vertical pan instead of letting it bubble.
774+
775+
**Fix** (frontend-only, token-level, in
776+
[ev-smart-charger-dashboard.js](custom_components/ev_smart_charger/frontend/ev-smart-charger-dashboard.js)):
777+
under `@media (hover: none) and (pointer: coarse)` the two blur tokens are
778+
overridden to `none` (`--evsc-blur`, `--evsc-blur-light`) — every glass
779+
surface consumes them, so one rule removes every `backdrop-filter` on touch
780+
devices — and the surfaces become near-opaque to compensate
781+
(`--evsc-surface` 0.62→0.92, `--evsc-surface-strong` →0.97, plus the dark
782+
variants). Desktop (fine pointer) keeps the Liquid Glass look byte-for-byte.
783+
784+
**Verification**: preview harness (`.preview/`) — bundle loads clean, both
785+
media rules present in the CSSOM (valid syntax), simulated touch tokens at
786+
375 px render correctly in light and dark, desktop computed style restored
787+
to `saturate(180%) blur(40px)` untouched. Definitive confirmation is on a
788+
real touch device (desktop preview cannot reproduce the WebKit bug).
789+
790+
**Files**: `frontend/ev-smart-charger-dashboard.js` (CSS only), `const.py`,
791+
`manifest.json`. `VERSION = "2.8.1"`. No schema / entity / config-flow
792+
change, entity counts unchanged (71 / 57). The `?v=`+content-hash
793+
cache-buster delivers the new bundle on the next dashboard reload.
794+
795+
**Upgrade priority**: 🟢 STRONGLY RECOMMENDED for anyone using the dashboard
796+
on a phone or tablet.
797+
798+
---
799+
760800
### v2.8.0 (2026-07-13)
761801
**FEATURE: Consumption-spike fast response — zero grid import on household demand spikes**
762802

‎custom_components/ev_smart_charger/const.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# ========== INTEGRATION METADATA ==========
44
DOMAIN = "ev_smart_charger"
5-
VERSION = "2.8.0"
5+
VERSION = "2.8.1"
66
DEFAULT_NAME = "EV Smart Charger"
77
FRONTEND_URL_BASE = "/api/ev_smart_charger/frontend"
88
FRONTEND_CARD_FILENAME = "ev-smart-charger-dashboard.js"

‎custom_components/ev_smart_charger/frontend/ev-smart-charger-dashboard.js‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3231,6 +3231,34 @@ class EvSmartChargerDashboard extends HTMLElement {
32313231
}
32323232
}
32333233
3234+
/* v2.8.1: definitive touch-scroll fix. The v2.2.1 mitigations
3235+
(touch-action: pan-y + translateZ(0)) did not fully cure the
3236+
iOS/WebKit gesture-capture bug: an element carrying
3237+
-webkit-backdrop-filter inside an outer scroll container (HA's
3238+
view) can still swallow the vertical pan, so swipes landing on
3239+
a card/stack fail to scroll while swipes on empty shell padding
3240+
work — the reported "shell vs stack scroll conflict". The only
3241+
reliable cure from inside the shadow root is removing the
3242+
backdrop-filter on touch devices entirely. All glass surfaces
3243+
consume the two blur tokens, so a token-level override kills
3244+
every filter at once; the surfaces get near-opaque backgrounds
3245+
to compensate for the lost frosted-glass legibility. Desktop
3246+
(fine pointer) keeps the full Liquid Glass look unchanged. */
3247+
@media (hover: none) and (pointer: coarse) {
3248+
:host {
3249+
--evsc-blur: none;
3250+
--evsc-blur-light: none;
3251+
--evsc-surface: rgba(255, 255, 255, 0.92);
3252+
--evsc-surface-strong: rgba(255, 255, 255, 0.97);
3253+
}
3254+
}
3255+
@media (hover: none) and (pointer: coarse) and (prefers-color-scheme: dark) {
3256+
:host {
3257+
--evsc-surface: rgba(28, 28, 30, 0.92);
3258+
--evsc-surface-strong: rgba(44, 44, 46, 0.97);
3259+
}
3260+
}
3261+
32343262
/* v1.10.4: explicit box-sizing reset for all descendants, including
32353263
pseudo-elements. Shadow DOM does NOT inherit box-sizing from the
32363264
light DOM, so this MUST be re-declared inside the shadow root. */

‎custom_components/ev_smart_charger/manifest.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
"iot_class": "local_push",
1212
"issue_tracker": "https://github.com/antbald/ha-ev-smart-charger/issues",
1313
"requirements": [],
14-
"version": "2.8.0"
14+
"version": "2.8.1"
1515
}

0 commit comments

Comments
 (0)