Record all three merged, and what comes next

This commit is contained in:
iris committed 2026-09-13 22:07:57 -04:00
1 parent 9c85ea4864
commit e04f873453
1 file changed
+34 -26
+34 -26
View File
@@ -5,21 +5,8 @@ Not a decisions log; delete it when the extraction is done.
## Where things stand
Canonical `main` is **`32b1038`** (#14, SetSize). Twelve slices are in. One
pull request is open and one branch is pushed but unopened:
- **#12** `split/12-pointer-routing`, worktree `/home/bob/repos/iris-pr12`,
head `e53ce58`. Reworked twice after review: a layer, not a widget, is what
consumes input. `CursorSenses::consumes` decides only whether a layer stops
the input reaching the one below, and senses on one layer never block each
other. The vocabulary is `position_only`, not "momentary". Five tests; two
fail on `main`. **One question is out to her**: whether to replace
`registered` with a `consumed: &Cell<bool>` on `CursorData` that
`should_run` sets, which also removes the double match.
- **#15** `split/15-harness`, worktree `/home/bob/repos/iris-pr15`. `Tasks`
takes an `Arc<dyn WakeTaskQueue>` instead of an `Arc<Window>`, so
`DefaultRsc` builds without one, and `iris::harness` drives a ui with no
surface. Six tests in `tests/harness.rs`. Disjoint from #12.
Canonical `main` is **`43ce8c7`** (#12, pointer routing). Fourteen slices are
in and nothing is open.
Check for a review before starting anything, and read the newest
`submitted_at` rather than the first result:
@@ -94,23 +81,42 @@ Other standing instructions from the owner:
## The next slice
**The headless rig.** `scripts/run-headless.sh`, `headless.conf` and
`rig-input` are still only in ai-app's iris submodule, so every rendering
claim in canonical Iris is verified by hand from another checkout. The harness
half of this is done in `split/15-harness`; the rig is shell and a Wayland
replay binary and transplants nearly as-is, minus the `--phone` and `--dir`
flags' ai-app specifics.
**Widget draw size and measurement** (source commit `6671194`), because it
reaches furthest: `desired_width`/`desired_height` and `SizeCtx` go, a widget
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
acceptance goes.
Two things to settle with the owner before writing it. The archive's `Widget`
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:
- **`Len`, `LayoutLen` and dp.** The archive splits the type so that `rest` is
unrepresentable where it is meaningless (a padding), and folds a density in
at resolve time. 21 files mention `Len`, so it is wide but shallow. After the
draw-size slice, not before: that one deletes the `desired_*` bodies this
would otherwise have to be threaded through.
- **The input restructure** — `src/default/sense.rs` becomes `src/rsc/sense.rs`
(308 lines to 2313), plus `core/src/event/controller.rs`, `desktop/input.rs`,
`android/input.rs` and `sense_tests.rs`: pointer capture, drag slop and axis,
platform cancellation, mask-aware hit testing, event timestamps. It replaces
the file #12 fixes. The archive's own `consumes` is what #12 now implements,
so that part transplants; `tests/pointer_routing.rs` is the acceptance
criterion for the slice.
- Widget draw size and measurement cleanup (source commit `6671194`).
platform cancellation, mask-aware hit testing, event timestamps. The
archive's own `consumes` is what #12 landed, so that part transplants;
`tests/pointer_routing.rs` is the acceptance criterion.
- **The headless rig.** `scripts/run-headless.sh`, `headless.conf` and
`rig-input` are still only in ai-app's iris submodule, so a rendering claim
in canonical Iris is still verified by hand from another checkout. Small, and
independent of everything above.
- Retained span, scrolling and layout placement.
- Retained paints, selection, overlays and shared UI runtime state.
- Generic desktop/Android framework hosts and reusable example/APK tooling.
@@ -275,5 +281,7 @@ argument for doing it next.
| #11 | Atlas as an array texture, and the primitive rendering overhaul (`b234497`) |
| #13 | Build on wgpu 30 (`00d2230`) |
| #14 | Rename the `Sized` widget to `SetSize` (`32b1038`) |
| #15 | Run a ui without a window, and test one (`c8ac669`) |
| #12 | Route pointer input per kind (`43ce8c7`) |
URLs are `https://git.arirex.me/iris/iris/pulls/{number}`.