diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index e06b276..835ad30 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -85,15 +85,21 @@ See [`structures/ui-composable-bundles.md`](structures/ui-composable-bundles.md) some alpha, i.e. the fade-to-black / dim / flash layers. See [`structures/ui-prm-primitives.md`](structures/ui-prm-primitives.md). **Still not composited**, for the reason below. -* ❔ **`Element::rest()` picks the wrong pose for a fade group.** This is now the - blocker on drawing `.prm`. The title's `pteff00.prm` is opaque → transparent → - transparent → opaque, a screen transition; the screen sits at the transparent - plateau, but `rest()`'s longest-dwell rule lands on the opaque endpoint — and - that element paints **last**, so drawing it blacks out the title. Candidate - rule: the resting pose is the longest run of *consecutive keyframes with equal - values*, not the longest gap. It is **not** `.prm`-specific — it would change - `rest()` for every element on the disc — so the first step is to A/B it against - the title framebuffer capture and the two verified screens before it lands. +* ✅ **`Element::rest()` fixed** (2026-08-19): the resting pose is the **hold** — + the longest run of consecutive keyframes with an identical pose — not the + longest gap. A keyframe is the start of a ramp toward the next one, so a long + gap means the screen spends it *arriving at* the far end. Verified against the + title framebuffer capture by edge correlation: plateau **0.4597 at shift + (0,0)**, old rule 0.1511 and only after a (+3,+8) shift. Fixes six title + elements that rested invisible and the fade quad that rested opaque black. + See [`structures/ui-resting-pose.md`](structures/ui-resting-pose.md) and + `tools/re-capture/align_to_capture.py`. +* ❔ **`compose` ignores the keyframe `fade` alpha.** ← *next, and the last thing + between here and drawing `.prm`.* `blit` modulates by `tint`, which is + `0xffffffff` on essentially every keyframe; the `fade` ARGB is never applied. + That is why resting on the wrong keyframe was invisible for so long, and it is + the whole content of a `.prm` quad. First step: apply `fade` alpha in `blit` + and A/B the title against the capture with `align_to_capture.py`. * ❔ **Blend mode for the primitives.** Straight alpha is the assumption for the black dim quads; the near-white flash (`0xf0ffffff`) and the coloured ones (`0x60ff0000`, `0x0000ffd4`) may be additive. Nothing measured.