-
4f5e27cba9
Do not divide by one to remap a box that spans its parent

iris-aiandClaude Opus 5
2026-09-16 04:13:51 -04:00
-
11c55bcef9
Put a glyph's offset on the grid where it is placed

iris-aiandClaude Opus 5
2026-09-16 04:11:07 -04:00
-
f11f5f4825
Divide twice in a range's inverse, not four times

iris-aiandClaude Opus 5
2026-09-16 04:06:46 -04:00
-
97cc8b32ed
Measure a child on the layer it draws on, not twice on two

iris-aiandClaude Opus 5
2026-09-16 04:04:31 -04:00
-
95fb4f962c
Hold a clipping widget to its box, and check that it is

iris-aiandClaude Opus 5
2026-09-16 03:48:23 -04:00
-
bdab55824f
Take two roundings out of where a box comes from

iris-aiandClaude Opus 5
2026-09-16 03:42:09 -04:00
-
9d8415d65f
Delete OrthoSize, and run the seeds in parallel

iris-aiandClaude Opus 5
2026-09-16 03:18:49 -04:00
-
cb955f1023
Link the ordinary tests once, and keep their debug info to line tables

iris-aiandClaude Opus 5
2026-09-16 03:00:43 -04:00
-
39e4ca20e6
Decide layout on the grid end to end, and delete the tolerance

iris-aiandClaude Opus 5
2026-09-16 02:56:48 -04:00
-
bd6de71a55
Put lengths, padding, gaps and alignment on the grid too

iris-aiandClaude Opus 5
2026-09-16 01:40:42 -04:00
-
4e28f1047e
Put positions on the grid, and decode them in the shader

iris-aiandClaude Opus 5
2026-09-16 01:22:12 -04:00
-
7548139861
Add a fixed-point number for layout to decide on

iris-aiandClaude Opus 5
2026-09-16 00:34:01 -04:00
-
5ed9e874a3
Keep a span's leftover decision off the box its parent hands back

iris-aiandClaude Opus 5
2026-09-15 23:48:19 -04:00
-
d3b0ebf90c
Make alignment a widget property
iris-ai
2026-09-15 23:12:16 -04:00
-
8220a78d4a
Carry a length as a rule beside a widget, not a widget around it
iris-ai
2026-09-15 19:44:21 -04:00
-
0283c9d6c7
Pin that a moved subtree does not drift from a cold layout
iris-ai
2026-09-15 19:26:25 -04:00
-
71c9c39523
Replace placement calls with region nodes
iris-ai
2026-09-15 18:02:28 -04:00
-
f437495309
Add explicit orthogonal span sizing
iris-ai
2026-09-15 16:40:09 -04:00
-
29c7881c8a
Track retained layout validity explicitly
iris-ai
2026-09-15 16:03:53 -04:00
-
691e3eb23c
Rename rest to leftover

iris-aiandClaude Opus 5
2026-09-15 14:22:52 -04:00
-
9644971daf
Inline the write a glyph goes through

iris-aiandClaude Opus 5
2026-09-15 13:37:34 -04:00
-
de9ddc0ad4
Resolve a declared length where the widget is drawn, not inside it

iris-aiandClaude Opus 5
2026-09-15 13:37:34 -04:00
-
169db7f16f
Compose a position in the shader the way the CPU composes it

iris-aiandClaude Opus 5
2026-09-15 12:31:31 -04:00
-
4063635f39
Check that a one-pixel line keeps its pixel through the chain

iris-aiandClaude Opus 5
2026-09-15 12:31:31 -04:00
-
f61e8936f1
Restore abs() in the rect shader, and validate every shader without a device

iris-aiandClaude Fable 5.1
2026-09-15 02:16:56 -04:00
-
02ff8c7454
Measure a dirty widget where its parent asked, not in a box its answer decided

iris-aiandClaude Fable 5.1
2026-09-15 02:16:56 -04:00
-
65f68bbb8a
Reorder a span's children in the fuzzer, and find two fixed points

iris-aiandClaude Opus 5
2026-09-15 01:38:26 -04:00
-
99131940ab
Answer a break from the one in hand wherever it is still the same break

iris-aiandClaude Opus 5
2026-09-15 01:29:24 -04:00
-
e5a3e640d4
Add the second shrunk case, and a trace rig for what box a text is drawn in

iris-aiandClaude Opus 5
2026-09-15 01:10:45 -04:00
-
c596bf12c6
Measure a child in the length its parent declared, not the box it was offered

iris-aiandClaude Opus 5
2026-09-15 01:01:57 -04:00
-
f0c7df06ac
Let the unsettled-layout tests fail

iris-aiandClaude Opus 5
2026-09-15 00:52:07 -04:00
-
b7caab3b9e
Grow trees that can be taken apart, and find that a first frame is wrong

iris-aiandClaude Opus 5
2026-09-15 00:49:00 -04:00
-
386a0d1b8f
Steer the fuzzer, and print enough of a failure to rebuild it by hand

iris-aiandClaude Opus 5
2026-09-15 00:27:41 -04:00
-
1b1378b05a
Branch on a measurement, so a wrong one shows as a different tree

iris-aiandClaude Opus 5
2026-09-15 00:06:54 -04:00
-
60175c3821
Check that measuring a text and giving it that width is a fixed point

iris-aiandClaude Opus 5
2026-09-14 23:51:29 -04:00
-
b165164e59
Carry a span's rest weight up instead of collapsing it to one share

iris-aiandClaude Opus 5
2026-09-14 23:29:25 -04:00
-
ef815dadfd
Let OnResize answer for the window too, and delete the second rule

iris-aiandClaude Opus 5
2026-09-14 22:50:06 -04:00
-
9f4311774b
Hold the output as the box every chain bottoms out in

iris-aiandClaude Opus 5
2026-09-14 22:32:53 -04:00
-
7c50a3e51b
Rename a length's abs component to px

iris-aiandClaude Opus 5
2026-09-14 22:29:20 -04:00
-
3f7cd8251b
Carry a widget's depth down the draw instead of walking up for it

iris-aiandClaude Opus 5
2026-09-14 20:10:27 -04:00
-
bf9438087a
Say what the settle order is holding up

iris-aiandClaude Opus 5
2026-09-14 19:57:08 -04:00
-
77bb75e5de
Dirty many widgets at once, which nothing was checking

iris-aiandClaude Opus 5
2026-09-14 19:21:47 -04:00
-
2525637e26
Re-break a text's lines for a new width instead of shaping it again

iris-aiandClaude Opus 5
2026-09-14 19:20:27 -04:00
-
e5f8b6b244
Shape a text once per width, not once per ask

iris-aiandClaude Opus 5
2026-09-14 18:49:45 -04:00
-
f1a47e9b7b
Say what three retained-layout details mean

iris-aiandClaude Opus 5
2026-09-14 18:49:08 -04:00
-
b1b3eca1c0
Retain layout sizes by pixel axis
iris-ai
2026-09-14 17:47:21 -04:00
-
82fa6c1123
Coalesce resize layout diagnostics
iris-ai
2026-09-14 17:05:11 -04:00
-
480f0bc99f
Retain opt-in layout performance diagnostics
iris-ai
2026-09-14 16:42:03 -04:00
-
84f589e364
Settle dirty layout from the leaves upward
iris-ai
2026-09-14 15:56:44 -04:00
-
a640c6cce2
Avoid speculative layout when retained answers suffice
iris-ai
2026-09-14 15:33:34 -04:00
-
cdec29351a
Grow scrolling into the random trees

iris-aiandClaude Opus 5
2026-09-14 14:35:20 -04:00
-
4178dfbff9
Grow padding into the random trees, and take children in and out of spans

iris-aiandClaude Opus 5
2026-09-14 13:48:42 -04:00
-
2272634dc5
Resize an example under the rig, since a resize is its own case

iris-aiandClaude Opus 5
2026-09-14 13:31:20 -04:00
-
b0f9f046da
Decide reuse on the box a widget drew against, in pixels

iris-aiandClaude Opus 5
2026-09-14 13:23:29 -04:00
-
86a7e8dfc3
Grow random trees, and check them against building the same tree cold

iris-aiandClaude Opus 5
2026-09-14 13:06:09 -04:00
-
d98969158f
Give a slot to the children a container places, and nothing else

iris-aiandClaude Opus 5
2026-09-14 12:25:37 -04:00
-
1f9dc48b80
Carry a box in a move slot, not a translation

iris-aiandClaude Opus 5
2026-09-14 12:14:24 -04:00
-
db1751fdfd
Retire Remap: a translation shifts, and only a stretch needs a fraction
iris-ai
2026-09-14 11:07:32 -04:00
-
78a53b6bf6
Keep the re-place load as a rig, so the next attempt is compared not argued
iris-ai
2026-09-14 10:49:49 -04:00
-
d8c497fcd7
Measure what the chain walk costs, and find that depth is the cost
iris-ai
2026-09-14 03:31:33 -04:00
-
c8ec0866d4
Exercise the subtree remap, which no test reached
iris-ai
2026-09-14 03:25:35 -04:00
-
8223a55cfb
Move a subtree by writing one slot
iris-ai
2026-09-14 03:15:17 -04:00
-
f9ef7514e7
Resolve a primitive's position through a chain of move slots
iris-ai
2026-09-14 03:05:14 -04:00
-
ca2b4b2173
Bring the headless rig into the repository (#17)
main
iris-ai
2026-09-14 02:50:09 -04:00
-
a123d13490
Merge remote-tracking branch 'upstream/main' into split/17-headless-rig
archive/2026-09-19/split/17-headless-rig
iris-ai
2026-09-14 02:48:37 -04:00
-
-
-
-
f9423855e1
Size a widget while drawing it, not in a pass of its own (#16)
iris-ai
2026-09-14 02:48:02 -04:00
-
46547563c1
Take a strong widget to depend on, and use the question mark
archive/2026-09-19/split/16-draw-size
iris-ai
2026-09-14 02:44:40 -04:00
-
53e61289f5
Say when a drawing cannot be taken out of its box, rather than guessing
iris-ai
2026-09-14 01:27:16 -04:00
-
984f482a7f
Move a resized drawing instead of redrawing it
iris-ai
2026-09-14 01:09:03 -04:00
-
9520996623
Return the size from draw, and fold placing back into drawing
iris-ai
2026-09-14 00:39:39 -04:00
-
deb9c1b6d7
Detect the rig's binaries, and take the machine out of its comments
iris-ai
2026-09-14 00:36:19 -04:00
-
b108645240
Say what may be done to a drawing, and default to nothing
iris
2026-09-13 23:47:12 -04:00
-
ec012c4552
Text depends on its box for where it sits, not only for shaping
iris
2026-09-13 23:28:47 -04:00
-
9d13f15bee
Bring the headless rig into the repository
iris
2026-09-13 23:10:23 -04:00
-
-
f192f75b25
Size a widget while drawing it, not in a pass of its own
iris
2026-09-13 22:51:05 -04:00
-
-
43ce8c7d02
Route pointer input per kind, so a scroll falls through a hovered button (#12)
iris-ai
2026-09-13 22:05:02 -04:00
-
7dc7614ae6
Swap two hover buffers, and drive the tests from the harness
archive/2026-09-19/split/12-pointer-routing
iris
2026-09-13 21:58:39 -04:00
-
e865467a3f
Merge upstream/main (#15) into split/12-pointer-routing
iris
2026-09-13 21:55:53 -04:00
-
-
-
-
c8ac669f95
Run a ui without a window, and test one (#15)

iris-aiandiris
2026-09-13 21:53:54 -04:00
-
7cefc72f97
Compare regions, not four loose numbers
archive/2026-09-19/split/15-harness
iris
2026-09-13 21:42:21 -04:00
-
0f9f379cec
Say what these do without naming what they lean on
iris
2026-09-13 21:37:44 -04:00
-
23376aef25
Say what these do without naming what calls them
iris
2026-09-13 21:37:21 -04:00
-
36fec09d11
Track who is hovered, apart from what consumes
iris
2026-09-13 21:34:01 -04:00
-
7eb2b85425
One proxy, and a macro instead of a shared test module
iris
2026-09-13 21:29:38 -04:00
-
5494642dec
End the hover of a widget that gets covered
iris
2026-09-13 21:27:35 -04:00
-
8cac927438
Pin the hover-then-scroll case, and say what the line means
iris
2026-09-13 21:07:48 -04:00
-
3a74a04a5b
Post task updates to the loop instead of waking it
iris
2026-09-13 21:04:29 -04:00
-
827d317f41
Report consumption from run_event
iris
2026-09-13 20:53:34 -04:00
-
e97aba30e0
Merge upstream/main (#14) into split/15-harness
iris
2026-09-13 20:44:01 -04:00
-
-
-
-
e53ce585e6
Say position-only, and stop falsifying the cursor
iris
2026-09-13 20:43:38 -04:00
-
f3fd9417d4
Consume by layer, not by widget
iris
2026-09-13 20:20:25 -04:00
-
3ab9c922fd
Merge upstream/main (#14) into split/12-pointer-routing
iris
2026-09-13 20:17:06 -04:00
-
-
-
-
32b10383d8
Rename the Sized widget to SetSize (#14)

iris-aiandiris
2026-09-13 20:16:17 -04:00
-
c4b74f2367
Drop the prelude-bounds test
archive/2026-09-19/split/14-setsize
iris
2026-09-13 20:14:43 -04:00
-
d5efdd2b97
Run a ui without a window, and test one
iris
2026-09-13 20:08:06 -04:00
-
-
-
f312db60c2
Rename the Sized widget to SetSize

irisandClaude Opus 5
2026-09-13 19:34:52 -04:00
-
-
-
71ba3723ff
Keep momentary input on the widget the cursor is on

irisandClaude Opus 5
2026-09-13 19:22:56 -04:00
-
0a14df2cc3
Merge canonical main after the wgpu 30 upgrade
iris
2026-09-13 19:16:16 -04:00
-
-
-
-
0e7076a01c
Take input per kind, rather than deciding it once a frame

irisandClaude Opus 5
2026-09-13 19:09:50 -04:00
-
00d2230b84
Build on wgpu 30 (#13)

iris-aiandiris
2026-09-13 19:07:47 -04:00