Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1875 commits
Select commit Hold shift + click to select a range
f3d1b16
Merge #8320 (cixzhang's 2b66ca5ab5: #8076 27eeeb8db4 with main's #805…
vjeux Oct 27, 2026
d156e38
docs(core): drawnTranslate's note says nothing about what the inline …
vjeux Oct 27, 2026
15e4de4
Merge #8293 (#8076 27eeeb8db4) into #8356
vjeux Oct 27, 2026
0cabb08
Merge #8358 (#8076 27eeeb8db4) into #8360
vjeux Oct 27, 2026
ed0ba77
fix(gestures): the action-group press listens through the shared inpu…
vjeux Oct 27, 2026
09a5bc0
Merge #8356 (#8076 27eeeb8db4; the action-group press on the input st…
vjeux Oct 27, 2026
64056d7
fix(gestures): the action-group press leaves its click to the click g…
vjeux Oct 27, 2026
bec2283
fix(gestures): a gesture that cancels itself on a finger's move keeps…
vjeux Oct 26, 2026
35b2a9b
test(gestures): a scroll-edge pan cancels its first moves while every…
vjeux Oct 27, 2026
2ea3544
test(gestures): browser proof that a scroll-edge pull's first move is…
vjeux Oct 27, 2026
90c64e8
feat(gestures): a scroll-edge pan holds its finger from the first mov…
vjeux Oct 27, 2026
dd975ae
test(gestures): real-touch states for AST-094 FR18–FR22: 9 and 10 px …
cixzhang Oct 27, 2026
a3e07d8
fix(core): the gesture host measures a screen-edge pan's view, so an …
cixzhang Oct 27, 2026
9adbe2d
fix(gestures): a strip authored at the edge region is the edge zone a…
cixzhang Oct 27, 2026
9804fa8
Merge a3e07d88 (#8076: the host's arena environment measures a view) …
cixzhang Oct 27, 2026
1a17882
Merge 9adbe2d8 (#8061: an edge strip within half a pixel of its band …
cixzhang Oct 27, 2026
b54cad3
test(gestures): the real-touch edge strip is the band's own 40.2 px, …
cixzhang Oct 27, 2026
9800eb5
fix(gestures): a scroll takes a finger only after its 10 px of travel…
cixzhang Oct 27, 2026
094f554
docs(gestures): the README's touch-action table qualifies the edge pa…
cixzhang Oct 27, 2026
e9aaf58
Merge 9800eb54 (#8072: a scroll takes a finger after 10 px; pointer-e…
cixzhang Oct 27, 2026
e931f3e
Merge #8309 (c3375f65: #8076 a3e07d88, #8061 9adbe2d8, #8072 9800eb54…
cixzhang Oct 27, 2026
68fdef8
Merge #8315 (8ae65405: #8309 c3375f65 with #8076 a3e07d88, #8061 9adb…
cixzhang Oct 27, 2026
5c59af1
fix(gestures): a finger on an action group under a fine pointer reach…
cixzhang Oct 27, 2026
3657d10
fix(core): with only watchers attached, the host's document listeners…
cixzhang Oct 27, 2026
3be45e7
Merge #8589 (#8315 8ae65405, and its passive-only listeners for watch…
cixzhang Oct 27, 2026
aa61f9f
Merge #8336 (#8315 8ae65405; vjeux's scroll-edge hold; #8589's passiv…
cixzhang Oct 27, 2026
81e52e3
Merge 5c59af12 (#8072: a finger on an action group under a fine point…
cixzhang Oct 27, 2026
6a1e493
Merge #8309 (2d4b4bdc: #8072 5c59af12, an action group's finger under…
cixzhang Oct 27, 2026
12c0660
Merge #8315 (10abed58: #8309 2d4b4bdc, #8072 5c59af12: an action grou…
cixzhang Oct 27, 2026
5851f29
Merge #8589 (#8315 10abed58) into the host line
cixzhang Oct 27, 2026
6951829
Merge #8336 (#8315 10abed58) into the arena fixes
cixzhang Oct 27, 2026
cba0ad9
Merge main (a00afee502: #8521 merged) into the experimental touch layer
vjeux Oct 27, 2026
f5ac3e8
Merge #8076 (cba0ad93f6: main with #8521 merged) into the presented s…
vjeux Oct 27, 2026
050fb02
Merge #8076 (cba0ad93f6: a3e07d889b's edge-zone measuring, main with …
vjeux Oct 27, 2026
b3b718c
Merge #8270 (#8076 cba0ad93f6) into #8309
vjeux Oct 27, 2026
12c4d58
Merge #8309 (#8076 cba0ad93f6) into #8315
vjeux Oct 27, 2026
0704b4b
Merge #8315 (#8076 cba0ad93f6) into #8336
vjeux Oct 27, 2026
d71becb
Merge #8336 (#8076 cba0ad93f6) into #8320
vjeux Oct 27, 2026
e5cde9d
Merge #8320 (#8076 cba0ad93f6: a3e07d889b and main with #8521; her #8…
vjeux Oct 27, 2026
5ee03f2
Merge #8340 (f5ac3e8904: no frame shows where a touch motion is going…
vjeux Oct 27, 2026
407099c
docs(core): drawnTranslate's note wraps at the file's width again
vjeux Oct 27, 2026
8766c55
Merge #8076 (cba0ad93: main through #8521's merge) into the row press…
vjeux Oct 27, 2026
1a693f3
Merge the row press release change (with #8076 at cba0ad93) into the …
vjeux Oct 27, 2026
e7b3c0a
Merge the list dividers change (with #8076 at cba0ad93) into the sele…
vjeux Oct 27, 2026
0dccda1
Merge #8293 (#8076 cba0ad93f6; #8340 f5ac3e8904) into #8356
vjeux Oct 27, 2026
2a3f1a9
Merge #8356 (#8076 cba0ad93f6; #8340 f5ac3e8904) into #8358
vjeux Oct 27, 2026
7213230
Merge #8358 (#8076 cba0ad93f6; #8340 f5ac3e8904) into #8360
vjeux Oct 27, 2026
a90ec2c
test(gestures): a watcher follows a touch the browser scrolls with to…
cixzhang Oct 27, 2026
d62fa21
fix(gestures): a scroll-edge pan holds a lone finger only, so a pinch…
cixzhang Oct 27, 2026
24c7477
Merge #8589 (a watcher's real-touch browser test) into the host line
cixzhang Oct 27, 2026
6c20ff0
Merge #8336 (a scroll-edge pan holds a lone finger only; #8589's watc…
cixzhang Oct 27, 2026
0de626e
test(gestures): the 41 px edge-band case skips WebKit like the file's…
cixzhang Oct 27, 2026
efdd916
Merge #8309 (c5b1e894: the 41 px edge-band case skips WebKit) as a de…
cixzhang Oct 27, 2026
ae6f441
Merge #8315 (2850d32b: #8309 c5b1e894, a WebKit test skip) into the g…
cixzhang Oct 27, 2026
94f3c0a
Merge #8589 (#8315 2850d32b) into the host line
cixzhang Oct 27, 2026
d3ba9fe
Merge #8336 (#8315 2850d32b) into the arena fixes
cixzhang Oct 27, 2026
b23c845
Merge #8270 (#8076 cba0ad93f6) into #8309
vjeux Oct 27, 2026
27ac6ef
Merge #8315 (#8076 cba0ad93f6) into #8336
vjeux Oct 27, 2026
f2d4d0b
Merge #8309 (#8076 cba0ad93f6) into #8315
vjeux Oct 27, 2026
406416e
Merge #8336 (#8076 cba0ad93f6) into #8320
vjeux Oct 27, 2026
003ae0d
Merge #8320 (her 46fb7beee4: the 41 px case skips WebKit; a scroll-ed…
vjeux Oct 27, 2026
45c93cc
Merge #8356 (#8320 46fb7beee4) into #8358
vjeux Oct 27, 2026
87144e2
Merge #8293 (#8320 46fb7beee4) into #8356
vjeux Oct 27, 2026
ab71d20
Merge #8358 (#8320 46fb7beee4) into #8360
vjeux Oct 27, 2026
beec62a
test(gestures): a scroll-edge pan holds nothing while a second finger…
vjeux Oct 27, 2026
eb58587
fix(gestures): a scroll-edge pan holds nothing while a second finger …
vjeux Oct 27, 2026
ead9254
Merge #8082 (e7b3c0a753: the list stack on #8076 cba0ad93f6) into the…
vjeux Oct 27, 2026
a4b9ee8
Merge #8117 (ead9254101: #8082 e7b3c0a753 with #8076 cba0ad93f6) into…
vjeux Oct 27, 2026
c449e1c
test(List): the no-scrollend case deletes window's onscrollend once
vjeux Oct 27, 2026
3bfd7c3
fix(core): the animator reads no style for a node out of the document
vjeux Oct 27, 2026
3d79388
test(gestures): the watcher's browser test checks it reports moves af…
cixzhang Oct 27, 2026
e79f0f5
Merge #8589 (the watcher's browser test checks moves after the takeov…
cixzhang Oct 27, 2026
e744e52
Merge #8336 (vjeux's two-finger scroll-edge fix; #8589's watcher brow…
cixzhang Oct 27, 2026
8972559
fix(Button): a touch press keeps the button's layer through its relea…
vjeux Oct 27, 2026
2119cfa
Merge #8076 (3bfd7c32da: the animator reads no style for a node out o…
vjeux Oct 27, 2026
d70e066
test(core): the press feedback controller imports nothing from the ge…
vjeux Oct 27, 2026
fbed9d2
refactor(core): the coarse-pointer query moves to the environment que…
vjeux Oct 27, 2026
e585b5b
Merge #8270 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux Oct 27, 2026
c645a98
Merge #8309 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux Oct 27, 2026
fd4aa33
test(gestures): the watcher's browser test names its record type (lint)
cixzhang Oct 27, 2026
cdfff81
Merge #8589 (the watcher browser test's lint fix) into the host line
cixzhang Oct 27, 2026
f51a90c
Merge #8336 (#8589's lint fix) into the arena fixes
cixzhang Oct 27, 2026
1ddb1e2
test(gestures): the watcher's real-touch test reads its end before th…
vjeux Oct 27, 2026
2b148b1
Merge #8315 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux Oct 27, 2026
0701cf6
Merge #8336 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux Oct 27, 2026
6c6da32
Merge #8320 (cixzhang's ea8531cd9b: the scroll-edge hold for a lone f…
vjeux Oct 27, 2026
f877b37
Merge #8356 (#8320 ea8531cd9b; #8076 3bfd7c32da; the coarse-pointer q…
vjeux Oct 27, 2026
d848fde
Merge #8293 (#8320 ea8531cd9b; #8076 3bfd7c32da; the coarse-pointer q…
vjeux Oct 27, 2026
2085cf6
Merge #8358 (#8320 ea8531cd9b; #8076 3bfd7c32da; the coarse-pointer q…
vjeux Oct 27, 2026
5ea171b
Merge #8118 (8972559ff7: on #8117 ead9254101) into this change
vjeux Oct 27, 2026
1aade8a
test(gestures): an in-band touch on a wider element decides at 15 px …
vjeux Oct 27, 2026
3d85c30
fix(gestures): an in-band touch decides at 15 px whatever the element…
vjeux Oct 27, 2026
9d0f6f2
Merge #8061 (3d85c303e6: an in-band screen-edge touch decides at 15 p…
vjeux Oct 27, 2026
11dbebf
Merge #8641 (bec2283d0f: a gesture that cancels itself on a finger's …
vjeux Oct 27, 2026
d9a1e1a
fix(gestures): an in-band touch decides at 10 px on an element wider …
vjeux Oct 27, 2026
e6ab0b9
Merge #8061 (d9a1e1ad19: an in-band touch on an element wider than th…
vjeux Oct 27, 2026
e7b5b3c
Merge #8076 (e6ab0b9cd9: #8061 d9a1e1ad19, an in-band screen-edge tou…
vjeux Oct 27, 2026
c64fe2e
Merge #8270 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641) into #8309
vjeux Oct 27, 2026
3d7ccb7
Merge #8315 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641) into #8336
vjeux Oct 27, 2026
e720276
Merge #8309 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8641's moving…
vjeux Oct 27, 2026
06f3817
Merge the #8589 watcher-test fix (1b6e19f7b0: the real-touch test rea…
vjeux Oct 27, 2026
ff7b7f1
Merge #8336 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
5dcdc88
Merge #8356 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
f473a8b
Merge #8320 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
c13bfec
Merge #8293 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
f06bb9b
test(motion): retire the gate that kept the menus off the gestures table
vjeux Oct 27, 2026
bb31b24
Merge #8358 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
c275915
test(gestures): a finger from a browser that sends Touch Events but e…
vjeux Oct 27, 2026
a0beb31
fix(gestures): the host reads no Touch Events where it takes fingers …
vjeux Oct 27, 2026
bcd1387
Merge #8336 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
d7d9109
Merge #8320 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
655d296
Merge #8293 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
d93fe7a
Merge #8356 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
193ccd5
test(motion): the uikit barrel keeps UIKIT_CLICK for importers writte…
vjeux Oct 27, 2026
4bf2891
fix(motion): the uikit barrel keeps UIKIT_CLICK, with the click guard…
vjeux Oct 27, 2026
fad3f13
Merge #8358 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
930b586
test(core): Core's root, hooks and utils entries carry no gesture code
vjeux Oct 27, 2026
d53b591
fix(core): the haptic switch's attribute lives in utils, so Core's pu…
vjeux Oct 27, 2026
3fb31dd
Merge main (6aea9bda01: #8663 merged, one release policy) into the ex…
vjeux Oct 27, 2026
170162d
Merge #8076 (main's #8663 rows in motion/README.md) into #8270
vjeux Oct 27, 2026
e001ec5
Merge #8270 (#8076: main's #8663 rows in motion/README.md) into #8309
vjeux Oct 27, 2026
454a26e
Merge #8309 (#8076: main's #8663 rows in motion/README.md) into #8315
vjeux Oct 27, 2026
0c1d99b
Merge #8315 (#8076: main's #8663 rows in motion/README.md) into #8336
vjeux Oct 27, 2026
115d0dc
Merge #8336 (#8076: main's #8663 rows in motion/README.md) into #8320
vjeux Oct 27, 2026
8a1d6a5
Merge #8320 (#8076: main's #8663 rows in motion/README.md; this pull …
vjeux Oct 27, 2026
a487255
Merge #8358 (#8076: main's #8663 rows in motion/README.md) into #8360
vjeux Oct 27, 2026
270d0c7
Merge #8356 (#8076: main's #8663 rows in motion/README.md) into #8358
vjeux Oct 27, 2026
5fc105f
Merge #8293 (#8076: main's #8663 rows in motion/README.md) into #8356
vjeux Oct 27, 2026
01b48e5
Merge #8076 (3fb31ddb: main through #8663, the motion README's rows u…
vjeux Oct 27, 2026
8890dd9
Merge #8076 3fb31ddb3e (e6ab0b9cd9 with main 6aea9bda01: the motion R…
vjeux Oct 27, 2026
3b98eb6
Merge #8117 (8890dd90d9: #8076 3fb31ddb3e, the motion README union) u…
vjeux Oct 27, 2026
389db4e
fix(core): usePressTracker rebuilds its tracker when its options change
vjeux Oct 27, 2026
a14f660
test(core): only the utils entry is pinned gesture-free; the root and…
vjeux Oct 27, 2026
504f28e
test(gestures): a recognizer inside a shadow root gets its finger and…
vjeux Oct 27, 2026
94ac165
Merge #8118 (3b98eb6291: #8076 3fb31ddb3e, #8117 8890dd90d9) into thi…
vjeux Oct 27, 2026
c37e309
fix(gestures): the host resolves what an input landed on through the …
vjeux Oct 27, 2026
f15023b
Merge #8336 (a recognizer inside a shadow root gets its finger: the h…
vjeux Oct 27, 2026
a8566b0
Merge #8320 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
82c6d44
Merge #8358 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
7df085b
Merge #8356 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
a016dab
Merge #8293 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
ca3bfdb
Review base for #8117: #8082 e7b3c0a753 and #8076 3fb31ddb3e
vjeux Oct 27, 2026
f67ec83
Merge the review base (ca3bfdbc2b: #8082 e7b3c0a753 with #8076 3fb31d…
vjeux Oct 27, 2026
b039876
test(core): the held-dip proofs wait for the dip to finish, not for 2…
vjeux Oct 27, 2026
f594126
test(useMenuPress): the trigger keeps the released tolerance on a fin…
vjeux Oct 27, 2026
93f806d
fix(useMenuPress): the trigger takes its tolerance when its press sta…
vjeux Oct 27, 2026
c2b4c56
test(useLongPress): the travel is measured on each axis, as its docum…
vjeux Oct 27, 2026
4e8bd6c
fix(useLongPress): the tolerance is measured on each axis again, as d…
vjeux Oct 27, 2026
8c6b72c
test(gestures): a scroll and its brake see a finger inside an open sh…
vjeux Oct 27, 2026
d618f43
fix(gestures): a scroll and its brake compare a finger along the flat…
vjeux Oct 27, 2026
53b1850
Merge #8336 (the host compares a finger with a scroller along the fla…
vjeux Oct 27, 2026
a69da45
Merge #8320 (#8336: the host compares a finger with a scroller along …
vjeux Oct 27, 2026
b28a3ee
Merge #8293 (#8336: the host compares a finger with a scroller along …
vjeux Oct 27, 2026
9b34a95
Merge #8356 (#8336: the host compares a finger with a scroller along …
vjeux Oct 27, 2026
ca21fa9
Merge #8358 (useLongPress measures its tolerance on each axis again, …
vjeux Oct 27, 2026
b59c4ac
refactor(useLongPress): the per-press tolerance stays off the public …
vjeux Oct 27, 2026
a22716c
Review base for #8118: #8117 f67ec83265 and main 6a751f7b7a
vjeux Oct 27, 2026
c3e5045
Merge the review base (a22716c980: #8117 with main 6a751f7b7a, #8646 …
vjeux Oct 27, 2026
89688cd
Merge #8118 (c3e5045cd7: main 6a751f7b7a folded, Button's record on m…
vjeux Oct 27, 2026
4130bcc
test(List): the busy-first-frame release proof runs in WebKit too
vjeux Oct 27, 2026
80d3101
Merge main (ab0db1f735, AST-108 theme motion) into the #8118 review base
vjeux Oct 27, 2026
adf99c3
Merge the #8118 review base (main ab0db1f735) into #8118
vjeux Oct 27, 2026
1669b0c
test(core): a release ends when its animation does, not on a clock a …
vjeux Oct 27, 2026
2564d68
fix(core): a release ends when its animation does, however late a bus…
vjeux Oct 27, 2026
fe1fd34
Merge #8118 (adf99c3d23: main ab0db1f735 folded, Button's record on m…
vjeux Oct 27, 2026
35b2b6d
Merge #8118 (2564d68d1d: a release ends when its animation does) into…
vjeux Oct 27, 2026
96153e7
test(List): a busy first frame after the lift still plays the whole r…
vjeux Oct 27, 2026
d9d4468
test(core): a release ends when its animation does, not on a clock a …
vjeux Oct 27, 2026
1fd7580
fix(core): a release ends when its animation does, however late a bus…
vjeux Oct 27, 2026
3ffa8cd
test(core): after a busy first frame, a release starts at that frame,…
vjeux Oct 27, 2026
fa91c6a
fix(core): a release waits for its own running animation, and nothing…
vjeux Oct 27, 2026
9ddecaa
test(core): a second tap 70 ms after the first ends with no press
vjeux Oct 27, 2026
0e6674b
fix(core): a second quick tap's lift is heard, so its press goes
vjeux Oct 27, 2026
08d9d33
test(core): a second tap 70 ms after the first ends with no press
vjeux Oct 27, 2026
2a8afd4
fix(core): a second quick tap's lift is heard, so its press goes
vjeux Oct 27, 2026
3846b6a
Merge main 70ea85903c into #8073
vjeux Oct 28, 2026
ca2543d
Merge remote-tracking branch 'origin/main' into HEAD
cixzhang Oct 28, 2026
10c62f5
test(core): a mouse press ending early leaves a held row to its owner
vjeux Oct 28, 2026
fdf8766
fix(core): a press ended early clears its paint through the one writer
vjeux Oct 28, 2026
63128d3
test(core): pressFeedback.test.ts drops its unused durationToMs import
vjeux Oct 28, 2026
f24e872
Merge #8446 ca2543df75 and #8073 63128d3530 into #8076
vjeux Oct 28, 2026
94362e0
Merge main (70ea8590: #8045, #8046 landed)
cixzhang Oct 28, 2026
6f994bc
docs(core): the gestures README names both writers of the press attri…
vjeux Oct 28, 2026
97254a9
Merge #8076 6f994bcdfb into #8360
vjeux Oct 28, 2026
243ff3e
docs(core): pressFeedback says paintPress writes the presses it track…
vjeux Oct 28, 2026
c8d3056
Merge the touch foundation's folded head (#8076) into the row press r…
vjeux Oct 28, 2026
18a6fec
Merge main into the row press release change
vjeux Oct 28, 2026
303cac3
docs(changeset): the press-tracking changeset names both writers of t…
vjeux Oct 28, 2026
24e8202
Merge #8077 (18a6fec357: its row press release on #8076 and main) int…
vjeux Oct 28, 2026
e0a59d0
chore(core): remove what the closed #8082 and #8079 left in this branch
vjeux Oct 28, 2026
3ea594d
chore(core): this PR keeps only the touch-down highlight (spec:AST-09…
vjeux Oct 28, 2026
31eeb44
Merge the canonical gesture foundation (#8360) into the row press rel…
vjeux Oct 28, 2026
b35d7e3
Merge #8077 (9f62384d8e: it now carries #8360) into the touch-down hi…
vjeux Oct 28, 2026
ea1b14a
test(core): a pressable slotted into a shadow tree's scroller waits t…
vjeux Oct 29, 2026
ae86f98
fix(core): the scroller check walks the flat tree, so a slotted press…
vjeux Oct 29, 2026
420b665
test(useMenuPress): a finger held on the trigger keeps FR29's drift a…
vjeux Oct 29, 2026
0ada905
fix(useMenuPress): a finger held on the trigger keeps FR29's drift al…
vjeux Oct 29, 2026
4520264
fix(core): a touch press's release lasts until its animation ends, ho…
vjeux Oct 29, 2026
4aa14c8
Merge the release-end controller change (split out on review) into th…
vjeux Oct 29, 2026
b93caf9
docs(List): the row press layer's notes point at rowPressLayer.ts, an…
vjeux Oct 29, 2026
4346941
test(core): drop a stylesheet-test filter and a helper the row layer …
vjeux Oct 29, 2026
00da8f7
chore(gestures): the gesture files on this line have no unused bindings
vjeux Oct 29, 2026
955f494
test(gestures): a rotation re-based on every change releases at its r…
vjeux Oct 29, 2026
ea2dc0d
fix(gestures): a re-based rotation keeps its release velocity
vjeux Oct 29, 2026
b548954
test(motion): the Reduce Motion late-dip proof reads what the dip ani…
vjeux Oct 29, 2026
a075bcc
test(gestures): a finger inside an open shadow root is down in its sc…
vjeux Oct 29, 2026
7e6d12e
fix(gestures): a finger inside an open shadow root is compared along …
vjeux Oct 29, 2026
f91b558
test(gestures): an element stays an action group while any of its att…
vjeux Oct 29, 2026
965905b
fix(gestures): an element is an action group while any of its attachm…
vjeux Oct 29, 2026
6b8f098
test(gestures): a tap on a moving sheet's shadow-root content reaches…
vjeux Oct 29, 2026
16356f3
fix(gestures): the presented hit test descends into open shadow roots
vjeux Oct 29, 2026
d632cae
test(gestures): no touch-action rule stays once the last marked eleme…
vjeux Oct 29, 2026
cd05643
fix(gestures): a document's or shadow root's touch-action rules go wi…
vjeux Oct 29, 2026
91e5273
docs(gestures): presented hit testing names its review condition, and…
vjeux Oct 29, 2026
d3411f0
docs(gestures): the README and the barrel point Lab at @astryxdesign/…
vjeux Oct 29, 2026
65465d1
docs(core): the input stream's notes name the stops it fixes, what st…
vjeux Oct 29, 2026
d120ef2
docs(changeset): the build changeset names the treeshakeCompensation …
vjeux Oct 29, 2026
545fa8b
test(gestures): real-touch proofs for a still finger's sub-pixel jitt…
vjeux Oct 29, 2026
1768f21
test(gestures): a retargeted tap with only watchers attached activate…
vjeux Oct 29, 2026
c3cc441
docs(core): the input stream's notes no longer list click among the g…
vjeux Oct 29, 2026
45aac84
Merge the canonical gesture foundation (#8360) into the press release…
vjeux Oct 29, 2026
6c36e2f
Merge the press release change (#8890) into the row press release change
vjeux Oct 29, 2026
53d3078
Merge #8117 (0781001aae: the touch-down highlight on #8077) into the …
vjeux Oct 29, 2026
c1bae1e
Merge #8077 (9460fdb369: with #8890's release end) into the #8118 rev…
vjeux Oct 29, 2026
7397ae6
Merge #8360 (045f666f7a) into the #8118 review base
vjeux Oct 29, 2026
709ec60
fix(core): the press release's reduced-motion cap reads the Reduce Mo…
vjeux Oct 29, 2026
db65416
Merge the press release change (#8890) into the row press release change
vjeux Oct 29, 2026
af7c6e1
fix(core): the row press layer's reduced-motion cap reads the Reduce …
vjeux Oct 29, 2026
c1fc7b8
test(core): the held-dip proofs wait on the call's finished, not a fr…
vjeux Oct 29, 2026
932c1b2
test(core): a landing later than the whole fade back in shows the ele…
vjeux Oct 29, 2026
da34be9
test(Button): a finger's release on a control runs 250 ms, a mouse's …
vjeux Oct 29, 2026
2354268
Merge the review base (#8117 0781001aae, #8077 9460fdb369 with #8890,…
vjeux Oct 29, 2026
91e9dbe
fix(core): a dip landing later than its whole fade back in shows the …
vjeux Oct 29, 2026
63b6eab
Merge #8077 (69f6f0c238: with #8890 9a0332b3b4, the reduced-motion ca…
vjeux Oct 29, 2026
dacf7c1
Merge the review base (#8077 69f6f0c238, with #8890 9a0332b3b4) into …
vjeux Oct 29, 2026
5dcc3fb
fix(core): the press controller reads the Reduce Motion fade alone, n…
vjeux Oct 29, 2026
198b6ad
Merge the press release change (#8890) into the row press release change
vjeux Oct 29, 2026
f14d5f2
test(List): a row held and released between two divided rows keeps bo…
vjeux Oct 29, 2026
6528c4b
fix(core): the overlay's reduced-motion releases are capped by the Re…
vjeux Oct 29, 2026
3a15741
test(core): the press-layer and release checks name no selection hold…
vjeux Oct 30, 2026
c01f87b
test(core): the spring-before-a-block proof waits for the motion, and…
vjeux Oct 30, 2026
e610e9c
Merge #8118 (9d1b17cfd2: folded on #8117 0781001aae, #8077 69f6f0c238…
vjeux Oct 30, 2026
5e3349e
docs(CheckboxInput): the release comment names the row's press layer …
vjeux Oct 30, 2026
f7592a7
fix(core): a press's release also waits for a release drawn inside th…
vjeux Oct 30, 2026
4779ce5
Merge the canonical gesture foundation (#8360) into the press release…
vjeux Oct 30, 2026
a9bd8a8
Merge the press release change (#8890) into the row press release change
vjeux Oct 30, 2026
041faac
test(Button): the release timing reads how far the animation ran on i…
vjeux Oct 30, 2026
1fef066
Merge #8077 (43f1690a95: with #8890 c8d496b29e, a descendant's releas…
vjeux Oct 30, 2026
93ed82a
Merge the review base (#8077 43f1690a95, with #8890 c8d496b29e and #8…
vjeux Oct 30, 2026
533e217
Merge #8118 (a9fd510f26: #8077 43f1690a95 with #8890 c8d496b29e, the …
vjeux Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/build-stylex-cross-file-consts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/build': patch
---

[fix] `astryxStylex` resolves `defineConsts` values read from another file. With the `{stylexOptions}` form (the one Storybook uses), a file that read only constants from a `.stylex.ts` module lost that import once StyleX compiled it, so the constants never reached the CSS: a constant used as a media-query key failed the build ("Invalid empty selector") and one used as a value shipped as a custom property nothing declares. In either form, a constant defined on the other side of the layer split, or in an Astryx package (compiled with the library class-name prefix) and read from an app file (compiled with its own), stayed unresolved. The `{stylexOptions}` form now passes StyleX `treeshakeCompensation: true` by default (before, its babel pass ran with StyleX's default, `false`), as the plugin form already does; pass `treeshakeCompensation: false` in `stylexOptions` to restore the old behavior.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/checkbox-read-only-no-press.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] A read-only CheckboxInput, and the checkboxes of a read-only CheckboxList, no longer show pressed feedback: their value is shown but cannot change, so a press on them paints nothing, with a mouse or a finger. A read-only row that carries its own click handler still presses as a row.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/checkbox-row-one-press-surface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] On a touch screen, a CheckboxList row now answers a finger the same way wherever it lands. Under a finger, pressing a row's label painted the whole row while pressing its box painted only the box; under a coarse primary pointer the row is now the one touch press surface, so the row and its checkbox show the pressed state together whether the finger lands on the label, the description or the box. Where the primary pointer is fine (a mouse, a trackpad, or a pen on a desktop page), the box keeps its own press and hover, as before.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/cli-component-name-case.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/cli': patch
---

[fix] `astryx component` matches component and hook names case for case, and only in the file that exports the name. A lowercased name such as `list` or `badge` is now unknown, with the component it matches by case suggested, instead of opening List's or Badge's doc. A module that only shares a name's spelling, such as a lowercase `button.ts` table elsewhere in Core, no longer opens the nearest doc either, and `--source` no longer reads it.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/click-guard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the gesture recognizers and the menu press model share one guard for the browser's click after a gesture that already acted, swallowing it for 400ms or until the next press. Keyboard and assistive-technology clicks (`detail` 0) always pass.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-arena-moving-cancel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: a gesture that cancels itself on a finger's move (a long press dragged past its tolerance) keeps that finger claimed until it lifts, so the page never takes the drag over midway; a resting finger is still given back when its gesture is cancelled. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-browser-negotiation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: touch-action derivation, the native scroll probe and haptics for the gesture system. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-hook-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the gesture hooks call nothing back after unmount; `usePressTracker` brakes with the host by default and keeps one tracker, so an option change or a new ref never drops a press in progress; the recognizer's arena plumbing is `protected`. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-host-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: gesture host fixes from review. A page scroll under a still finger keeps the press and its click; watchers and touches nothing can claim get passive listeners only; a claimed pen holds only its own stylus touches; an element's own `touch-action` is never widened; slotted content scrolls with its shadow-tree scroller. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-host-owner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the gesture host becomes the one document-level touch owner: the finger count, touch gates, and a kept press for continuous-tracking controls, whose element gets `touch-action: manipulation` where the pointer is coarse. A scroll lock's page hold and the finger-scroll watch keep their own listeners and ask the host only about the touches it owns. A second finger fails a one-finger pan that has not claimed, so the page can pinch. A scroll-edge pan holds a lone finger from the first move that pulls away from an edge every scroller under it is at, so those moves are cancelled before it begins; with a second finger anywhere on the screen the page keeps its pinch. Where the primary pointer is fine, the host attaches nothing and registers no listener, following the pointer when it changes; a recognizer that reads each event's pointer itself opts out with `perEventPointer`, and a press tracker with it paints a finger's press feedback only, with no control event and no mouse or pen press. A press tracker whose hold acts (a stepper's hold-repeat) can bring a selection lock for its presses, as a recognizer can. Internal, for the touch components that adopt them; not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-host.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the gesture system's DOM host (claims, click suppression, the browser's takeover, the pointer behind a contact). Not exported from the package entry point.

@vjeux
2 changes: 1 addition & 1 deletion .changeset/gesture-pan.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
'@astryxdesign/core': patch
---

[chore] Internal: the pan gesture recognizer, with UIKit's measured hysteresis and velocity filter. Not exported from the package entry point; no component uses it yet.
[chore] Internal: the pan gesture recognizer, with UIKit's measured hysteresis and velocity filter. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-press-tracking.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: UIControl press tracking with control and cell profiles and the gesture hooks. `paintPress` in `utils/pressFeedback.ts` writes `data-astryx-press` for every press it tracks; the action-group tracker writes its groups' presses itself. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the gesture system's README for component authors, with its browser proof in Chromium and WebKit.

@vjeux
2 changes: 1 addition & 1 deletion .changeset/gesture-recognizer-core.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
'@astryxdesign/core': patch
---

[chore] Internal: the gesture recognizer core for touch presentations: UIKit's recognizer state machine and the arena that settles which recognizer owns a touch. Not exported from the package entry point; no component uses it yet.
[chore] Internal: the gesture recognizer core for touch presentations: UIKit's recognizer state machine and the arena that settles which recognizer owns a touch. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-recognizer-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: gesture recognizer and arena fixes from review; a pan claims nothing before it begins at 10 pt; one velocity tracker for every gesture (`spec:AST-100`: UIKit's measured blend, a scrolling surface's release through the pan's `scrollVelocity()`, and FR2's release rules). Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-swipe-pinch-rotation-edge-hover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: swipe, pinch, rotation, screen-edge pan and hover gesture recognizers. Not exported from the package entry point.

@vjeux
2 changes: 1 addition & 1 deletion .changeset/gesture-tap-long-press.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
'@astryxdesign/core': patch
---

[chore] Internal: tap and long-press gesture recognizers with UIKit's measured thresholds. Not exported from the package entry point; no component uses them yet.
[chore] Internal: tap and long-press gesture recognizers with UIKit's measured thresholds. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/gesture-watcher.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: a recognizer created with `claimsTouches: false` is a watcher: passive listeners only, simultaneous with every recognizer, and it follows a touch the browser takes for a scroll to the lift. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/indicator-press-release-compositor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] Under a finger, the press over a checkbox box or a radio circle now fades out on the compositor, so the release keeps moving while JavaScript runs. A standalone CheckboxInput releases like a button (250 ms ease-in-out; under Reduce Motion, 200 ms, the cross-fade cap of the reduced-motion design record). A box in a CheckboxList row and a circle in a RadioList row release with their row (200 ms). Inside rows that paint their press on a compositor layer, the box and the circle paint their own press again, and a RadioList row stays bare, as under a mouse. Mouse presses, hover and pressed colors are unchanged.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A standalone checkbox's release moves from 200 ms ease-out to UIButton's 250 ms ease-in-out, a change of visual direction no current record sets. spec:AST-017 FR3 tags that [feat] rather than [fix] and asks the note to name the old and the new appearance; this one names only the new release.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"paint their own press again": on the base a held finger already paints the box and the circle; the break exists only in the row layer this same change adds. Suggest dropping "again" so the release notes do not announce a fix for a regression nobody shipped.


@vjeux
7 changes: 7 additions & 0 deletions .changeset/input-stream.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] The touch press feedback and the gesture recognizers now hear page-wide input through one shared stream on the window's capture phase, so an app's window-capture `stopPropagation`, or a document-capture `stopImmediatePropagation` registered before Core, no longer hides a touch from them. A recognizer that must claim a touch mid-gesture still needs the touch to reach its element. Each event type's listener is passive unless a subscriber cancels it (the gesture host's `touchend` and `contextmenu` while a claiming recognizer or press tracker is attached, the page hold's `touchmove` while it holds, and the click guard's `click` once it first arms), so a page of pressables registers no listener that can hold a scroll.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/list-row-press-compositor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] A list row's touch press release keeps fading while the page runs script. `ListItem`, `Item` and `TreeList` rows used to stay fully pressed after the finger lifted until the main thread was free, and every frame of the fade repainted the row; the release now runs on the compositor, with the same color, clock and curve as before. Under a finger, while a row is pressed and through its release, the press paints on the row's `::before` and the row is its own stacking context; at rest nothing of it applies, so a row's own `::before` decoration and its children's stacking are as they were. During a press the layer is the row's `::before`, and any `::before` property a caller sets, from `xstyle` (which `Item` composes after the layer) or from a stylesheet, wins over the layer's: a decoration with its own size and background jumps to the row's corner, and the row shows no pressed fill until the release ends. Decoration that should stay through a press belongs on `::after` or a child element. With a mouse or trackpad the row is unchanged: no layer and no new stacking context.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/long-press-one-source.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: `useLongPress` (ContextMenu's long press, and the held finger that opens a menu from its trigger) takes its default duration and tolerance, 500ms and 10px on either axis, from the same source as the long-press gesture recognizer. No behavior changes.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/menu-trigger-drift.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] A finger held on a DropdownMenu trigger may drift up to 13px on each axis and still open the menu under every primary pointer, a phone's, a tablet's and a touchscreen laptop's alike, as AST-094 FR29 allows; it cancelled past 10px. No menu, row or trigger reads the pointer query.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/presented-hit-testing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] On iOS, a touch on an element the compositor animator is moving reaches what is drawn: the animator reports each moving element's offset from its layout box, and the gesture host sends the touch, press bounds and the tap's click there instead of to the layout position iOS WebKit hit-tests.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/press-paint-reduced-motion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] Under Reduce Motion the shared press paint's release follows design:reduced-motion: with a coarse primary pointer it is the system cross-fade (its duration and curve from `reducedMotionFadeConsts`), and with any other pointer it completes at the lift with no animation.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/press-release-compositor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] Under a coarse primary pointer (a touch screen as the main input), a button's or a card's touch press release now runs on the compositor: it keeps fading while the page's script is busy instead of freezing at full strength and snapping off, and it paints nothing per frame. There, every control's touch release (Button, the cards, and the other controls on the shared overlay, such as Switch, Link, Tab and CheckboxInput) follows UIButton's highlight release, 250 ms ease-in-out instead of 200 ms ease-out; a list row's stays on the deselect clock; and under reduced motion the release is an opacity cross-fade of 200 ms or less. With any other pointer, a finger on a touch screen beside a mouse included, nothing changes. Under a coarse primary pointer, while a press is on or fading, Button paints it on its own `::before` and sets `isolation: isolate`; at rest it adds neither, so a `::before` you style, through `xstyle` or a `className` rule, merges into that layer only during a press. Style a child element to keep it unchanged.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 250 ms ease-in-out release for every control is a change of visual direction rather than a restoration of current visual authority, so spec:AST-017 FR3 tags it [feat], not [fix].

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"With any other pointer, a finger on a touch screen beside a mouse included, nothing changes" does not hold at this head: that finger now highlights at touch-down (see utils/pressFeedback.ts:798).


@vjeux
7 changes: 7 additions & 0 deletions .changeset/press-release-ends-with-its-animation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] Under a finger, a press's release now lasts until its fade has played. The touch press controller ended the release on a clock started at the lift, so when the page's script delayed the fade's first frame, the release was cut short mid-fade. It now ends when the press's release animation ends, on the surface or on a part a component draws it on inside the surface (a checkbox's box), or on its clock where no release animation runs (an instant release, a surface without one, or an engine without Web Animations). This applies to every surface the touch press controller drives: buttons, switches, checkboxes, cards, menu rows and list rows.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/press-touch-down-highlight.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] Under a finger, a pressable (a button, card, link, list row or any other surface) now highlights in the frame the finger lands, as UIKit's controls do, instead of after a 150 ms delay. Inside a scroller it still waits that delay, so a flick paints nothing, and a scroll that takes a held press cancels it with no fade. A mouse on a desktop keeps `:active`.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/reduced-motion-record.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: Reduce Motion for the touch presentations follows design:reduced-motion beyond the animator too. `reducedMotionFade()` gives code beside the animator the animator's own fade (an opacity-only 200 ms cross-fade on a coarse pointer or after a touch release, at once on any other pointer), `animator.reducedMotion()` reports which form a change takes for feedback that plays no fade of its own, and `reducedMotion.stylex.ts` holds the fade's constants for StyleX transitions. The fade's length is not a theme motion role. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/touch-selection-lock-gestures.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the gesture host applies a recognizer's own `selectionLock` to that recognizer's contact and imports no lock itself; a long press brings one only when it has a hold (a `minimumPressDuration` above 0), and `selectionLock: null` opts out. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/touch-selection-lock.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] Where the primary pointer is fine (a mouse, a trackpad, a touchscreen laptop, a desktop pen tablet), the press feedback controller no longer registers a touch listener: it reads the primary pointer at the first finger or pen press and keeps its `touchcancel` listener only while that pointer is coarse.

@vjeux
2 changes: 1 addition & 1 deletion .changeset/uikit-constants-table.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
'@astryxdesign/core': patch
---

[chore] Internal: the UIKit constants table for touch presentations (springs, scroll physics, timing curves and navigation values), each value with its source and a checked list of the simulator measurements still owed. Not exported from the package entry point; no component reads it yet.
[chore] Internal: the UIKit constants table for touch presentations (springs, scroll physics, timing curves and navigation values), each value with its source and a checked list of the simulator measurements still owed. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/uikit-motion-animator-pseudo-element.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the touch presentations' animator drives a pseudo-element such as a dialog's ::backdrop: a static filling animation holds its value after a curve ends and after `set`, a custom property on its host promotes it, and a Reduce Motion dip borrows and hands back the pseudo-element's own opacity. Not exported from the package entry point.

@vjeux
2 changes: 1 addition & 1 deletion .changeset/uikit-motion-animator.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
'@astryxdesign/core': patch
---

[chore] Internal: a compositor animator for touch presentations. It plays UIKit's springs, and scroll coasts (built by a separate coast module, so a surface that never coasts does not carry them; `decay` plays momentum, and sends a spring back from past an edge through the Reduce Motion policy: a cross-fade on a coarse pointer or after a touch release, at once elsewhere) as Web Animations on translate, rotate, scale and opacity, so they keep running while JavaScript is busy, and reads values and velocities back from the curves for interruption, retargeting and Reduce Motion cross-fades. Not exported from the package entry point; no component uses it yet.
[chore] Internal: a compositor animator for touch presentations. It plays UIKit's springs, and scroll coasts (built by a separate coast module, so a surface that never coasts does not carry them; `decay` plays momentum, and sends a spring back from past an edge through the Reduce Motion policy: a cross-fade on a coarse pointer or after a touch release, at once elsewhere) as Web Animations on translate, rotate, scale and opacity, so they keep running while JavaScript is busy, and reads values and velocities back from the curves for interruption, retargeting and Reduce Motion cross-fades. Not exported from the package entry point.

@vjeux
2 changes: 1 addition & 1 deletion .changeset/uikit-motion-math.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
'@astryxdesign/core': patch
---

[chore] Internal: the spring, decay, rubber-band and projection math of UIKit for touch presentations, as pure functions checked against an independent integration and against values read from UIKit. Not exported from the package entry point; no component uses it yet.
[chore] Internal: the spring, decay, rubber-band and projection math of UIKit for touch presentations, as pure functions checked against an independent integration and against values read from UIKit. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/uikit-motion-use-animator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: useAnimator, a React wrapper around the touch presentations' animator that never re-renders per frame, and browser proofs on the interaction harness that the animator's motion keeps running through a blocked main thread in Chromium and WebKit. Not exported from the package entry point.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/use-finger-scroll.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: `useFingerScroll(scroller)` tells a finger's scroll from the program's, and the gestures README gains a guide to migrating a raw-touch drag onto the recognizers. Internal to the touch components: not exported from the package entry point or the gestures barrel.

@vjeux
Loading
Loading