Repository navigation
Tags: NotADevIAmaMeatPopsicle/YouAndEye
Tags
fix: let an identity profile actually reach both surfaces A profile's colour never reached the rendered face. Four faults stacked, each hiding the next, and all four were invisible in STATUS because it reported the values the host had sent rather than the ones being drawn. 1. applyPreset repainted the iris base on every preset application, so a profile's colour survived only until the next state change. Presets now own geometry and an identity owns colour: applyPresetIrisBaseColor skips the repaint once a host has sent an explicit IRIS. 2. The SDF renderer resolves its iris through palette_for(pose->palette) and never reads commandState.iris*, which only the legacy raster path consumes. The IRIS command now claims the palette slot, and resolveIrisPalette treats palette 0 as "this affect has no opinion" so an identity fills it while a deliberate expressive palette still wins. 3. The live semantic render path took its pose straight from the motion library and never consulted commandState.palette at all; only the fallback branch did. Both poses now run through resolveIrisPalette. 4. The AMOLED mouth reads its profile from the frame's trusted context, which the dispatch path never populated, so it fell back to the default accent on every performance. express() already carried it, which is why the mouth was correct there and wrong in every scene. Separately, the host cached the applied profile against the connection generation alone, so a rebooted board silently ran its compile-time defaults while the host reported the identity as active. STATUS now carries a per-boot nonce and the host folds it into the applied-profile key. Protocol change: IRIS accepts a palette name and the host sends one, so colour knowledge belongs to the surface rather than the wire. The numeric IRIS r g b form still works. A teal palette is added so all six host palette names map to an exact firmware palette instead of teal colliding with azure. STATUS also gains palette= so the effective iris index is observable rather than inferred, which is what made these four so hard to see. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>