1 parent
d0606f46ec
commit
f3ba05d446
1 file changed
+32
-23
@@ -5,19 +5,21 @@ Not a decisions log; delete it when the extraction is done.
|
||||
|
||||
## Where things stand
|
||||
|
||||
Canonical `main` is **`00d2230`** (#13, wgpu 30). Eleven slices are in; two
|
||||
pull requests are open and both are waiting on the owner, not on me:
|
||||
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 `71ba372`. A widget takes only the input it answers to, and only where
|
||||
the cursor is. Self-reviewed under the process below, which found two
|
||||
defects: consumption decided once a frame rather than per input kind, and a
|
||||
press firing on a widget the cursor had just left. Six tests across layers;
|
||||
three of them fail on `main`.
|
||||
- **#14** `split/14-setsize`, worktree `/home/bob/repos/iris-pr14`, head
|
||||
`f312db6`. The `Sized` widget becomes `SetSize`, so the prelude stops
|
||||
shadowing the marker trait and `?Sized` resolves again in any crate that
|
||||
imports it. `tests/prelude_bounds.rs` fails to compile if that comes back.
|
||||
head `f3fd941`. Reworked after the owner's review rejected the design: a
|
||||
layer, not a widget, is what consumes input. `CursorSenses::consumes`
|
||||
decides only whether a layer stops the input reaching the one below, taking
|
||||
nothing out of the cursor, and senses on one layer never block each other.
|
||||
Five tests; two fail on `main`. One question is out to her in the reply:
|
||||
whether a widget the cursor has left should still be handed a press.
|
||||
- **`split/15-harness`**, worktree `/home/bob/repos/iris-pr15`, head
|
||||
`d5efdd2`, pushed with no pull request opened. `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`. Open it when #12 clears.
|
||||
|
||||
Check for a review before starting anything, and read the newest
|
||||
`submitted_at` rather than the first result:
|
||||
@@ -71,23 +73,29 @@ Other standing instructions from the owner:
|
||||
- Pull Iris out even if the Rust application switchover is not accepted. No
|
||||
app, session, transcript, setup or server concepts in Iris; the dependency
|
||||
runs one way from `app/` to Iris.
|
||||
- **Small, coherent PRs.** The original extraction PR was too large to review.
|
||||
A slice may be redone rather than transplanted, and need not remove every old
|
||||
feature. Independent PRs may be open at once so work continues during review.
|
||||
- **Small, coherent PRs, one at a time.** The original extraction PR was too
|
||||
large to review. A slice may be redone rather than transplanted, and need not
|
||||
remove every old feature. Do not open several at once to stay busy during a
|
||||
review: on 2026-09-13 the owner asked for the work to go serially, most
|
||||
fundamental first, so that code is written once against the version of the
|
||||
framework that will actually exist.
|
||||
- Do not recreate an `ai` branch in canonical Iris; the fork is the boundary.
|
||||
- **Never rewrite a pushed branch.** Follow review with additive commits, and
|
||||
merge `upstream/main` in rather than rebasing when a branch falls behind.
|
||||
- Respond to each review finding with a fix or a concise explanation. Do not
|
||||
add a ceremonial comment when the changed code already answers it.
|
||||
- **A test has to guard something that could break again.** The owner deleted
|
||||
#14's test as pointless: the rename it guarded cannot regress. When a fix is
|
||||
structural, the structure is the test.
|
||||
|
||||
## The next slice
|
||||
|
||||
**The headless rig and the test harness.** `scripts/run-headless.sh`,
|
||||
`headless.conf`, `rig-input` and `iris::harness` live in ai-app's iris
|
||||
submodule and not in canonical Iris. Until they are extracted, Iris can only
|
||||
be tested by what runs without a window, and every rendering claim is verified
|
||||
by hand from another checkout. Extracting them is what lets later slices
|
||||
arrive with tests instead of screenshots. Nothing else is claimed.
|
||||
**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.
|
||||
|
||||
Still in the target, roughly in dependency order:
|
||||
|
||||
@@ -95,9 +103,9 @@ Still in the target, roughly in dependency order:
|
||||
(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, and **the archived copy carries the same per-frame
|
||||
consumption defect #12 removes** — extracting it as-is brings the bug back,
|
||||
so `tests/pointer_routing.rs` is the acceptance criterion for that slice.
|
||||
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`).
|
||||
- Retained span, scrolling and layout placement.
|
||||
- Retained paints, selection, overlays and shared UI runtime state.
|
||||
@@ -262,5 +270,6 @@ argument for doing it next.
|
||||
| #10 | Text layout and rendering on Parley (`0f6a28b`) |
|
||||
| #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`) |
|
||||
|
||||
URLs are `https://git.arirex.me/iris/iris/pulls/{number}`.
|
||||
Reference in new issue
Block a user