mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 16:38:31 +00:00
v1.45.3: 'value instead of an icon' could never be saved (issue #3)
The device editor has offered display='value' since v1.26.0; MARKER_SCHEMA accepted only badge/ripple/icon_ripple. Picking it produced not a valid value for dictionary value @ data['config']['markers'][n]['display'] and since one rejected marker fails the whole config write, the user could not save the plan at all until the setting was undone. Reported by @RemyRoux with the exact error text, 2026-07-27 — a year and a half after the feature shipped. The schema now accepts it, and the class of bug is closed rather than the instance: DISPLAY_MODES, TAP_ACTIONS, SPACE_FILL_MODES and ROOM_FILL_MODES are exported from src/logic.ts, the editors render their options from them, and a backend test parses those lists out of the TypeScript source and asserts the schema accepts every one (and rejects a bogus value). Reverting the one-word schema fix fails that test, which is the check that was missing. Plus an HA-harness test saving a config that contains a value-display marker — the exact call the user's card was making. Docs: CHANGELOG.md + CHANGELOG.ru.md + TESTING.md + STATUS.md.
This commit is contained in:
@@ -207,7 +207,9 @@ MARKER_SCHEMA = vol.Schema(
|
||||
vol.Optional("glow_radius_cm"): vol.Any(vol.All(vol.Coerce(float), vol.Range(min=10, max=10000)), None),
|
||||
vol.Optional("is_light"): vol.Any(bool, None),
|
||||
vol.Optional("room_id"): vol.Any(str, None),
|
||||
vol.Optional("display"): vol.Any("badge", "ripple", "icon_ripple", None),
|
||||
# keep in sync with DISPLAY_MODES in src/logic.ts — a cross-language test
|
||||
# asserts every option the editor offers is accepted here (issue #3)
|
||||
vol.Optional("display"): vol.Any("badge", "ripple", "icon_ripple", "value", None),
|
||||
vol.Optional("ripple_color"): vol.Any(str, None),
|
||||
vol.Optional("ripple_size"): vol.Any(vol.All(vol.Coerce(float), vol.Range(min=1, max=20)), None),
|
||||
vol.Optional("size"): vol.Any(vol.All(vol.Coerce(float), vol.Range(min=0.2, max=6)), None),
|
||||
|
||||
Reference in New Issue
Block a user