Record both review rounds answered, and what alignment now follows

This commit is contained in:
iris-ai committed 2026-09-14 00:40:52 -04:00
1 parent 80527ff843
commit 0aaa1f92db
1 file changed
+27 -24
+27 -24
View File
@@ -9,13 +9,27 @@ Canonical `main` is **`43ce8c7`** (#12, pointer routing). Fourteen slices are
in. in.
- **#16** `split/16-draw-size`, worktree `/home/bob/repos/iris-pr16`, head - **#16** `split/16-draw-size`, worktree `/home/bob/repos/iris-pr16`, head
`f192f75`. A widget sizes itself while drawing; `SizeCtx`, the `desired_*` `9520996`. A widget sizes itself while drawing; `SizeCtx`, the `desired_*`
methods and the size cache are gone, and `size_dependence(axis)` drives the methods and the size cache are gone, and `on_resize(axis)` drives the
retained path. `tabs`, `view` and `minimal` render byte-identical to `main`. retained path. One review round answered: `Widget::draw` returns the `Size`
(no `Painter::set_size`), both `place` methods are folded back into
`widget_within`/`draw_inner`, `Painter::size_hint` records the size
dependency `place` used to, and `()` sizes itself rest so it is a gap.
`tabs` (all five tabs, and a replay that adds two images), `view` and
`minimal` render byte-identical to `upstream/main`.
- **#17** `split/17-headless-rig`, worktree `/home/bob/repos/iris-pr17`, head - **#17** `split/17-headless-rig`, worktree `/home/bob/repos/iris-pr17`, head
`9d13f15`. The compositor script, `rig-input`'s `replay-touch` and the `deb9c1b`. The compositor script, `rig-input`'s `replay-touch` and the
`.touch` parser, so a rendering claim no longer has to be checked from `.touch` parser, so a rendering claim no longer has to be checked from
ai-app's checkout. Small, and disjoint from #16. ai-app's checkout. One review round answered: machine-specific prose out of
the comments, and `sway`/`swaymsg`/`grim` detected up front. Small, and
disjoint from #16.
**Waiting on the owner:** whether size dependencies should be recorded per
axis. They could be, but `highest_reader`'s only trigger is `needs_redraw`,
which carries no axis, so the precision would be unusable until the trigger
changes: redraw a child first, compare its new size to the old, and propagate
only to readers of the axes that moved. Offered on #16 as its own slice, ahead
of the position chain.
Check for a review before starting anything, and read the newest Check for a review before starting anything, and read the newest
`submitted_at` rather than the first result: `submitted_at` rather than the first result:
@@ -90,24 +104,13 @@ Other standing instructions from the owner:
## The next slice ## The next slice
**Widget draw size and measurement** (source commit `6671194`), because it **Built-in alignment** — see the first entry below. #16 and #17 are both
reaches furthest: `desired_width`/`desired_height` and `SizeCtx` go, a widget waiting on review, and the alignment slice is disjoint from either.
sizes itself during `draw` with `painter.set_size`, and `size_hint` is the
cheap answer for a parent that needs a size without drawing. Every widget's
body changes, so anything written before it is written twice. It also deletes
the separate measurement recursion and its cache.
It is testable now that `iris::harness` is in: `tests/layout.rs` is where the The archive is not a patch here: it writes `Widget::draw` against
acceptance goes. `painter.set_size`, which #16 replaced with a returned `Size`, and it writes
lengths against `LayoutLen` and `density`, which canonical does not have.
Two things to settle with the owner before writing it. The archive's `Widget` Recreate on today's `Len` and let the dp slice follow.
grows five methods — `size_hint`, `is_size_independent`, `requires_exact_region`,
`access_role` and `child_order`; only the first three are sizing, and she
dislikes capability methods on the core trait, so `requires_exact_region` in
particular wants justifying (`Pad` sets it and then clears it when the content
fits, which reads as a workaround). And the archive writes all of it against
`LayoutLen` and `density`, which canonical does not have — recreate it on
today's `Len` and let the dp slice follow, rather than pulling both in at once.
Still in the target, roughly in dependency order: Still in the target, roughly in dependency order:
@@ -128,8 +131,8 @@ Still in the target, roughly in dependency order:
content, which otherwise has to say `Redraw` because only its own draw knows content, which otherwise has to say `Redraw` because only its own draw knows
where the middle was. where the middle was.
Size is the harder half: a declared size beside `set_size` is two sources of Size is the harder half: a declared size beside the one `draw` returns is two
truth for one thing, so settle what each means before building it. sources of truth for one thing, so settle what each means before building it.
- **The position chain** (LAYOUT.md §2): `UiData::move_offsets`, per-primitive - **The position chain** (LAYOUT.md §2): `UiData::move_offsets`, per-primitive
slot ids and a bounded chain walk in WGSL, so moving a subtree writes one slot ids and a bounded chain walk in WGSL, so moving a subtree writes one
slot instead of every descendant's primitives. slot instead of every descendant's primitives.