diff --git a/config.json b/config.json index 71baeb8..3bc9ec5 100644 --- a/config.json +++ b/config.json @@ -1340,6 +1340,18 @@ "watch": [ "conn:tascam" ] + }, + { + "id": "rs_arena", + "label": "ARENA", + "fix": "arena", + "pos": [ + 1, + 5 + ], + "watch": [ + "conn:arena" + ] } ], "page": 20, @@ -2164,11 +2176,7 @@ } ], "id": "arena", - "label": "ARENA", - "pos": [ - 3, - 7 - ] + "label": "ARENA" }, { "checks": [ @@ -2271,6 +2279,15 @@ ], "id": "psm3", "label": "PSM 3" + }, + { + "id": "autofix", + "label": "AUTO-FIX", + "kind": "autofix", + "pos": [ + 3, + 7 + ] } ], "timing": { diff --git a/schema.py b/schema.py index a3ce442..a2633a3 100644 --- a/schema.py +++ b/schema.py @@ -657,7 +657,14 @@ def validate(cfg, live=None): if m == t.get("id"): errors.append("key %s: is its own member" % t.get("id")) in_group = {m for t in cfg["tiles"] for m in t.get("members", [])} + # A key moved to the Restart page (NA's ARENA, 2026-10-21): its checks still feed ALL and auto-fix, + # and the Restart key watching it flashes, so it is seen. + rk = (cfg.get("restart_page") or {}).get("keys") or [] + on_restart = {f for k in rk for f in [k.get("fix")] + list(k.get("watch") or [])} for t in cfg["tiles"]: + fixes_of = {c.get("fix") for c in t.get("checks", []) if isinstance(c.get("fix"), str)} | {"conn:" + c["conn"] for c in t.get("checks", []) if c.get("conn")} + if fixes_of & on_restart: + continue if "pos" not in t and "members" not in t and t.get("id") not in in_group and t.get("kind") != "master": warnings.append("key %s has no place on the deck and is in no group: nobody will see it" % t.get("id")) if kinds["master"] != 1: diff --git a/sites/sc/config.json b/sites/sc/config.json index c1a3a8d..f3582df 100644 --- a/sites/sc/config.json +++ b/sites/sc/config.json @@ -199,6 +199,10 @@ "id": "midi", "label": "MIDI", "checks": [ + { + "type": "conn", + "conn": "Midi-Lighting" + }, { "type": "midi_peer", "session": "ProPresenter",