An inspector label whose value deviates from its base was drawn bold, which is easy to miss next to the regular labels and says nothing in the hierarchy, where a folded subtree could hide a change entirely. The colour now lives as a theme token (`override`, #f2c84b) used by both the inspector labels and the hierarchy rows. Whether a row deviates is decided by `src/core/properties/deviation.ts`: `objectDeviates` compares an object against what it follows -- the container template for content, the asset otherwise -- and `deviationMarks` carries the mark up to every ancestor, so a folded subtree still shows that something inside was changed. `deviationMarks` takes the stored holder, not the resolved one: in the resolved view container content looks like an ordinary object and `instanceTargetOf` would compare against the asset, marking every instance. Covered by 3 unit tests and 5 e2e checks, including one that strips an object's own overrides to prove the row stays gold for a deviating child and restores them byte for byte. Full suite remote on the RTX 4070: 275 checks, all passed.
1.2 KiB
1.2 KiB
override darstellung bei scene objects die werte von assets überschreiben:
- momentan wird es fett dargestellt => stattdessen das label in einer gelb/goldener schriftfarbe darstellen
- auch in der hierarchie der scene/container bitte den namen gelb/gold darstellen, falls es irgendein child/property gibt dass dirty ist
Umgesetzt (2026-09-09), beide Punkte.
- Inspector: das Label einer abweichenden Property ist jetzt gold (
#f2c84b) statt fett. Die Farbe steht als Theme-Tokenoverridean einer Stelle. - Hierarchie: der Name wird gold, wenn das Objekt selbst abweicht oder etwas darunter — eine zugeklappte Zeile soll nicht verbergen, dass im Teilbaum etwas geaendert wurde.
Die Logik dazu sitzt in src/core/properties/deviation.ts (rein, getestet), nicht im Panel:
objectDeviates vergleicht gegen das, dem ein Objekt folgt — bei Container-Inhalt gegen das
Template, sonst gegen das Asset —, deviationMarks traegt die Marke auf alle Vorfahren
hoch. Wichtig dabei: deviationMarks bekommt den gespeicherten Holder, nicht den
aufgeloesten; in der aufgeloesten Sicht sieht Container-Inhalt wie ein normales Objekt aus und
jede Instanz waere faelschlich gold.