Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2214 commits
Select commit Hold shift + click to select a range
919af50
Merge main 844d734d06 (with the engineering owner's #8515) as a depen…
vjeux Oct 27, 2026
b78ad66
Merge 919af507b1 (#8080, with main 844d734d06) as a dependency
vjeux Oct 27, 2026
ada9c04
Merge fbacf6f185 (#8220, with main 844d734d06) into 0f8653e66e
vjeux Oct 27, 2026
4be7f17
Merge ada9c04e67 (#8220 with main 844d734d06) as a dependency
vjeux Oct 27, 2026
fbacf6f
Merge 0eba86cd3c (#8089, #7839, with main 844d734d06) as a dependency
vjeux Oct 27, 2026
0eba86c
Merge a221d965a8 (#7839) into b78ad66b70 (#8089, with main 844d734d06)
vjeux Oct 27, 2026
b01e2c8
Merge 47e9e853d3 (#8340, with #8076 e6ab0b9cd9) into ada9c04e67
vjeux Oct 27, 2026
f6f99a2
Merge b01e2c8ff4 (#8340 47e9e853d3) as a dependency
vjeux Oct 27, 2026
53e8deb
Merge main (d5cd551f2a) into the sub-menu sheet regions
vjeux Oct 27, 2026
6f56ef9
test(core): Core's root, hooks and utils entries carry no gesture code
vjeux Oct 27, 2026
57b5bbd
fix(core): the haptic switch's attribute lives in utils, so Core's pu…
vjeux Oct 27, 2026
32ccda6
test(gestures): a claiming recognizer keeps its blocking touchmove un…
vjeux Oct 27, 2026
dbf5390
fix(gestures): a claiming recognizer's element keeps its blocking tou…
vjeux Oct 27, 2026
78d4c1d
test(gestures): a mouse or a pen pan takes no text selection once it …
vjeux Oct 27, 2026
7356a69
fix(gestures): a mouse or a pen pan takes no text selection once it c…
vjeux Oct 27, 2026
c69cf92
docs(gestures): the README and changeset name the claiming touchmove,…
vjeux Oct 27, 2026
7fc24e1
test(gestures): a right click or a ctrl-click on macOS starts no pres…
vjeux Oct 27, 2026
e78b2da
fix(gestures): a ctrl-click on macOS starts no press, as a right clic…
vjeux Oct 27, 2026
f4be8f0
Merge #8360 (the haptic switch's attribute lives in utils: Core's pub…
vjeux Oct 27, 2026
3fb31dd
Merge main (6aea9bda01: #8663 merged, one release policy) into the ex…
vjeux Oct 27, 2026
9718a3d
Merge #8076 (3fb31ddb3e: main 6aea9bda merged, #8663's release policy…
vjeux Oct 27, 2026
1aaf2db
Merge #8076 (3fb31ddb3e: main 6aea9bda merged, #8663's release policy…
vjeux Oct 27, 2026
170162d
Merge #8076 (main's #8663 rows in motion/README.md) into #8270
vjeux Oct 27, 2026
58dbb1a
Merge #8270 (#8076: main's #8663 rows in motion/README.md) into #8309
vjeux Oct 27, 2026
2e77071
Merge #8309 (#8076: main's #8663 rows in motion/README.md) into #8315
vjeux Oct 27, 2026
3b1b26d
Merge #8315 (#8076: main's #8663 rows in motion/README.md) into #8336
vjeux Oct 27, 2026
ca71fce
Merge #8336 (#8076: main's #8663 rows in motion/README.md) into #8320
vjeux Oct 27, 2026
fe527be
Merge #8320 (#8076: main's #8663 rows in motion/README.md; this pull …
vjeux Oct 27, 2026
0dd683d
Merge #8358 (#8076: main's #8663 rows in motion/README.md) into #8360
vjeux Oct 27, 2026
c5465c2
Merge #8356 (#8076: main's #8663 rows in motion/README.md) into #8358
vjeux Oct 27, 2026
52e5eb7
Merge #8293 (#8076: main's #8663 rows in motion/README.md) into #8356
vjeux Oct 27, 2026
f785deb
Merge #8360 (#8076: main's #8663 rows in motion/README.md) into the e…
vjeux Oct 27, 2026
aba5646
Merge #8336 (3b1b26d530: F2's line on #8076 3fb31ddb3e, main with #86…
vjeux Oct 27, 2026
2a47b64
Merge 3fb31ddb3e (#8076, with main 6aea9bda01) into 75a0403491 (#8298)
vjeux Oct 27, 2026
1acf096
Merge cdff97a7ff (#8627, carrying #8298 and #8076 3fb31ddb3e) as a de…
vjeux Oct 27, 2026
cdff97a
Merge 2a47b64c9d (#8298, #8076 3fb31ddb3e) as a dependency
vjeux Oct 27, 2026
1f37a8b
Merge #8076 3fb31ddb3e (e6ab0b9cd9 with main 6aea9bda01: the motion R…
vjeux Oct 27, 2026
aa342aa
Merge 98ae3d4eb1 (#8089, #7839, with #8076 3fb31ddb3e) as a dependency
vjeux Oct 27, 2026
6d25756
Merge 1aaf2db59d (#8186) into 1acf096d8c (#8078)
vjeux Oct 27, 2026
aef694a
Merge 6d257564df (#8078, #8186, with #8076 3fb31ddb3e and main 6aea9b…
vjeux Oct 27, 2026
a8792dd
Merge aef694a1d2 (#8080, with #8076 3fb31ddb3e and main 6aea9bda01) a…
vjeux Oct 27, 2026
98ae3d4
Merge a8792dd681 (#8089, with #8076 3fb31ddb3e and main 6aea9bda01) i…
vjeux Oct 27, 2026
a3511eb
test(gestures): a mouse drag a pan claimed selects no page text, in W…
vjeux Oct 27, 2026
389db4e
fix(core): usePressTracker rebuilds its tracker when its options change
vjeux Oct 27, 2026
49f872a
fix(gestures): a claimed mouse or pen drag holds selection off docume…
vjeux Oct 27, 2026
c1f24bf
test(gestures): a fine-pointer finger's press on an action group ends…
vjeux Oct 27, 2026
b6a910d
fix(core): a presented call's curve that a later one's channel holds …
vjeux Oct 27, 2026
9adc6f2
Merge #8360 (only the utils entry is pinned gesture-free) into the ev…
vjeux Oct 27, 2026
5588013
test(core): only the utils entry is pinned gesture-free; the root and…
vjeux Oct 27, 2026
3ee9458
Merge #8084 (8f84e98931: F2's line on #8076 3fb31ddb3e) into the Aler…
vjeux Oct 27, 2026
ad73542
Merge #8342 (aba564668f: the input hold on F2's #8336 3b1b26d530) int…
vjeux Oct 27, 2026
96b1030
Merge #8360 (55880136d1: F2's line on #8076 3fb31ddb3e, main with #86…
vjeux Oct 27, 2026
eaee4a9
Merge the AlertDialog tracking base (96b10301c0: F2's #8360 55880136d…
vjeux Oct 27, 2026
201c454
refactor(AlertDialog): retire useAlertMotion's acceptsTouches; the ho…
vjeux Oct 27, 2026
8f84e98
Merge #8083 (eaee4a986f: F2's line on #8076 3fb31ddb3e) into #8084
vjeux Oct 27, 2026
0b2b013
test(gestures): a recognizer inside a shadow root gets its finger and…
vjeux Oct 27, 2026
c06acd5
fix(gestures): the host resolves what an input landed on through the …
vjeux Oct 27, 2026
af59249
Merge 201c454d63 (#8373, on #8084 8f84e98931, #8342 aba564668f and F2…
vjeux Oct 27, 2026
9bc83cc
Merge aa342aa19d (#8220, on #8076 3fb31ddb3e) into af592499e2
vjeux Oct 27, 2026
50c8cef
Merge b6a910dd40 (#8340) into 9bc83cc152
vjeux Oct 27, 2026
b44397e
Merge 50c8cef2a6 (#8220, #8373, #8340, on #8076 3fb31ddb3e) as a depe…
vjeux Oct 27, 2026
3c8817f
test(gestures): the drag selection case reads the page once the selec…
vjeux Oct 27, 2026
620fbfe
test(gestures): a recognizer inside a shadow root gets its finger and…
vjeux Oct 27, 2026
c3c119a
fix(gestures): the host resolves what an input landed on through the …
vjeux Oct 27, 2026
53a1e69
Merge #8336 (a recognizer inside a shadow root gets its finger: the h…
vjeux Oct 27, 2026
9a0d046
Merge #8320 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
6e42f12
Merge #8358 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
27d3958
Merge #8356 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
5805486
Merge #8293 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
c2cd3ba
Merge #8360 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
b039876
test(core): the held-dip proofs wait for the dip to finish, not for 2…
vjeux Oct 27, 2026
5e0277e
Merge #8336 (c3c119a466: the host resolves what an input landed on th…
vjeux Oct 27, 2026
41d3e61
test(useMenuPress): the trigger keeps the released tolerance on a fin…
vjeux Oct 27, 2026
d06691b
fix(useMenuPress): the trigger takes its tolerance when its press sta…
vjeux Oct 27, 2026
a3527b9
test(useLongPress): the travel is measured on each axis, as its docum…
vjeux Oct 27, 2026
f62179d
fix(useLongPress): the tolerance is measured on each axis again, as d…
vjeux Oct 27, 2026
120350b
test(gestures): a scroll and its brake see a finger inside an open sh…
vjeux Oct 27, 2026
a0c57a3
fix(gestures): a scroll and its brake compare a finger along the flat…
vjeux Oct 27, 2026
a8b174a
Merge #8336 (the host compares a finger with a scroller along the fla…
vjeux Oct 27, 2026
c1186e4
Merge #8320 (#8336: the host compares a finger with a scroller along …
vjeux Oct 27, 2026
886749b
Merge #8293 (#8336: the host compares a finger with a scroller along …
vjeux Oct 27, 2026
af9cb4e
Merge #8356 (#8336: the host compares a finger with a scroller along …
vjeux Oct 27, 2026
1ffc9d8
Merge #8360 (the menu trigger takes its tolerance when its press star…
vjeux Oct 27, 2026
b390514
Merge #8358 (useLongPress measures its tolerance on each axis again, …
vjeux Oct 27, 2026
0f2397e
test(gestures): a claimed pen's stylus touchend is cancelled, as a fi…
vjeux Oct 27, 2026
5a64900
fix(gestures): a claimed pen's stylus touchend is cancelled, as a fin…
vjeux Oct 27, 2026
264c66d
test(gestures): a second finger fails a one-finger pan where fingers …
vjeux Oct 27, 2026
54b0a68
fix(gestures): a second finger fails a one-finger pan wherever finger…
vjeux Oct 27, 2026
5f6bc04
refactor(useLongPress): the per-press tolerance stays off the public …
vjeux Oct 27, 2026
cf3be4c
docs(DropdownMenuSubMenu): the usage doc and the changeset describe t…
vjeux Oct 27, 2026
6b3e60d
docs(gestures): the host's header and the host-owner changeset descri…
vjeux Oct 27, 2026
5326798
test(gestures): a real-touch proof of the screen-edge pan on an eleme…
vjeux Oct 27, 2026
5fe3deb
test(gestures): a pinch whose second finger lands on another one-fing…
vjeux Oct 27, 2026
30b9aac
fix(gestures): the second-finger check runs again once the new finger…
vjeux Oct 27, 2026
4b8c2b0
docs(gestures): two changesets, the arena's claim comment and a test …
vjeux Oct 27, 2026
f28d42e
Merge main (6a751f7b7a: #8646's every-pointer gestures) into the rect…
vjeux Oct 27, 2026
8d7da28
test(gestures): the screen-edge pan is locked to a finger; a widened …
vjeux Oct 27, 2026
83b2084
fix(gestures): the screen-edge pan is a finger's only; its options ta…
vjeux Oct 27, 2026
da02df9
test(selectionLock): a finger's and a pen's hold take the lock under …
vjeux Oct 27, 2026
42baf0f
fix(selectionLock): a finger's and a pen's hold take the lock under a…
vjeux Oct 27, 2026
a634b38
Merge #8360 (5f6bc04b20: F2's reviewer-raised fixes) into the AlertDi…
vjeux Oct 27, 2026
716f793
Merge main (54fbccb27c: #7977 and the merges since) into the AlertDia…
vjeux Oct 27, 2026
b2c6bd3
Merge the AlertDialog tracking base (716f7930fd: main 54fbccb27c with…
vjeux Oct 27, 2026
5dd039a
Merge #8084 (3a30e68c17: main 54fbccb27c) into the AlertDialog hold
vjeux Oct 27, 2026
3a30e68
Merge #8083 (b2c6bd383d: main 54fbccb27c, F2's #8360 5f6bc04b20) into…
vjeux Oct 27, 2026
f4f8918
test(AlertDialog): the entrance cases observe a held touch from the w…
vjeux Oct 27, 2026
8660144
Merge f4f8918a6e (#8373, with main 54fbccb27c through #8084 and #8083…
vjeux Oct 27, 2026
19ee3fa
Merge cf3be4ceb6 (#8220) into 8660144fba
vjeux Oct 27, 2026
fa70738
Merge 19ee3fae24 (#8373 f4f8918a6e with main 54fbccb27c, #8220 cf3be4…
vjeux Oct 27, 2026
538039c
test(clickGuard): a guard whose view goes away lets its window run ou…
vjeux Oct 27, 2026
9c1d352
test(gestures): a cancelled mouse or pen press lifts the document-wid…
vjeux Oct 27, 2026
2d365a7
fix(gestures): a click guard whose view went away drops without touch…
vjeux Oct 27, 2026
156b9d7
test(clickGuard): no guard outlives the test that armed it
vjeux Oct 27, 2026
9960efe
fix(test-utils): the shared setup disarms every click guard as each t…
vjeux Oct 27, 2026
e7b0676
fix(core): a motion from rest that a block delays starts after it in …
vjeux Oct 27, 2026
7f2aa46
test(core): the after-block start is judged on the first frame after …
vjeux Oct 27, 2026
4e2895d
Merge #8076 (389db4e90a: usePressTracker rebuilds its tracker when it…
vjeux Oct 27, 2026
11c3536
fix(core): a handle's finished waits while a sampler holds its animation
vjeux Oct 27, 2026
ded8fbe
Merge main c86dc620c0 into 6d257564df
vjeux Oct 28, 2026
3b55f16
Merge 389db4e90a (#8076) into ded8fbe5d3
vjeux Oct 28, 2026
081bead
Merge 3b55f16db2 (main c86dc620c0 with #8648, and #8076 389db4e90a) a…
vjeux Oct 28, 2026
7d41fe2
test(DropdownMenu): a closed menu's surface takes no style write whil…
vjeux Oct 28, 2026
44481c9
fix(DropdownMenu): the closed menu's surface rests unpromoted and det…
vjeux Oct 28, 2026
b10f56a
test(DropdownMenu): the touch motion spec reads the story's picks fro…
vjeux Oct 28, 2026
2607ff5
Merge main 2b0f9a19f7 into cdff97a7ff
vjeux Oct 28, 2026
4b2d253
Merge 30e47d9860 (main 2b0f9a19f7 with #8791 and #8801, and #8076 389…
vjeux Oct 28, 2026
30e47d9
Merge 389db4e90a (#8076) into 2607ff5bac
vjeux Oct 28, 2026
5d38dd3
fix(NavMenu, TopNav, SideNav, Breadcrumbs, TabList): the nav, breadcr…
vjeux Oct 28, 2026
4c2f1d3
Merge main into #8084: take #8594's AlertDialog record
vjeux Oct 28, 2026
18f916b
test(AlertDialog): the touch presentation adds no public prop
vjeux Oct 28, 2026
42adb6d
fix(AlertDialog): drop the presentation prop; the touch presentation …
vjeux Oct 28, 2026
eb8f4ed
test(AlertDialog): the alert plays springs.alertPresent and springs.a…
vjeux Oct 28, 2026
fbbd3c9
fix(AlertDialog): play the alert's springs as springs.alertPresent an…
vjeux Oct 28, 2026
0a8e422
Merge 389db4e90a (#8076) into 2a47b64c9d
vjeux Oct 28, 2026
3b99a31
Merge 0a8e422344 (#8076 389db4e90a) as a dependency
vjeux Oct 28, 2026
34836c5
test(DropdownMenu): on a fine primary pointer, the finger that opened…
vjeux Oct 28, 2026
f8d5ef1
feat(DropdownMenu): the finger that opened the menu hands off on ever…
vjeux Oct 28, 2026
f99bce6
Merge d16eed4349 (#8627) into 30e47d9860
vjeux Oct 28, 2026
a8feaad
Merge 94fab77f9a (#8627 d16eed4349) as a dependency
vjeux Oct 28, 2026
4cc7506
test(DropdownMenu): the trigger's fine-pointer cases become FR29 case…
vjeux Oct 28, 2026
3a2d3e8
docs(DropdownMenu, MoreMenu, useMenuPress): the trigger's open on pre…
vjeux Oct 28, 2026
d766a7b
Merge 4a51b5827e (#8078 3a2d3e8be9, with #8627 f8d5ef1e2d) as a depen…
vjeux Oct 28, 2026
4a51b58
Merge 3a2d3e8be9 (#8078) into 3b55f16db2
vjeux Oct 28, 2026
442c961
test(DropdownMenu): the touch layer carries the two menu springs and …
vjeux Oct 28, 2026
2fb134a
fix(DropdownMenu): the touch layer imports and registers only UIKit's…
vjeux Oct 28, 2026
29cbf73
docs(DropdownMenu): the usage text's open on press, and FR5's state a…
vjeux Oct 28, 2026
b38a16c
refactor(DropdownMenu): the press keys on presentation alone, so the …
vjeux Oct 28, 2026
3a5fc52
Merge 90c7c0af82 (#8627 b38a16c7b8: the touch modes go from DropdownM…
vjeux Oct 28, 2026
90c7c0a
Merge b38a16c7b8 (#8627) into f99bce6f91
vjeux Oct 28, 2026
6e2c1b7
test(DropdownMenu): a pen on the trigger opens the menu as it presses…
vjeux Oct 28, 2026
1405eda
Merge 6e2c1b7c42 (#8078) into 4a51b5827e
vjeux Oct 28, 2026
ce913f4
Merge 1405eda0a4 (#8078 6e2c1b7c42, with #8627 b38a16c7b8) as a depen…
vjeux Oct 28, 2026
5f655e2
Merge main f3c78b28d6 into #8298
vjeux Oct 28, 2026
189ca6d
test(core): the presentation resolver's server and hydrating render t…
vjeux Oct 28, 2026
076dc4f
fix(core): the presentation resolver takes no server hint, and its CS…
vjeux Oct 28, 2026
503bc5b
feat(DropdownMenu): the finger that opened a menu picks only after it…
vjeux Oct 28, 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
8c70274
Merge main (70ea8590: #8045, #8046 landed)
cixzhang Oct 28, 2026
5c1d37f
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
8daabc8
Merge #8076 6f994bcdfb into #8360
vjeux Oct 28, 2026
73e90c2
docs(core): pressFeedback says paintPress writes the presses it track…
vjeux Oct 28, 2026
e6ca2f0
Merge #8360 73e90c2fa6 into #8665
vjeux Oct 28, 2026
678490f
test(gestures): under a fine pointer the host drops its page listener…
vjeux Oct 28, 2026
c22d219
fix(gestures): under a fine pointer the host drops its page listeners…
vjeux Oct 28, 2026
62870cd
docs(spec): AST-094 FR41 says a claimed mouse or pen drag suppresses …
vjeux Oct 28, 2026
e32bfc2
test(gestures): a pen's barrel button starts no press, as the gesture…
vjeux Oct 28, 2026
f4dae89
fix(gestures): a pen's barrel button starts no press
vjeux Oct 28, 2026
33511d9
docs(gestures): the README says what a pen does, and how the host lis…
vjeux Oct 28, 2026
323a8fd
docs(changeset): the press-tracking changeset names both writers of t…
vjeux Oct 28, 2026
5cc0fc5
Merge #8360 (the gesture foundation) into the action-group item marker
vjeux Oct 28, 2026
45ca65a
test(core): a mouse press on a touch-first device leaves a group's ac…
vjeux Oct 28, 2026
ed3d750
fix(core): the controller leaves a mouse press on a group's action to…
vjeux Oct 28, 2026
27778e7
Merge #8637 (ed3d750972, on #8360 323a8fd79b) into the AlertDialog tr…
vjeux Oct 28, 2026
1b47f18
Merge the AlertDialog tracking base (#8360 323a8fd79b, #8637 ed3d7509…
vjeux Oct 28, 2026
458e2d9
test(AlertDialog): a mouse lifted outside the actions runs nothing; t…
vjeux Oct 28, 2026
f3b1290
test(useMenuPress): a finger held on the trigger keeps FR29's drift a…
vjeux Oct 29, 2026
1e1431f
fix(useMenuPress): a finger held on the trigger keeps FR29's drift al…
vjeux Oct 29, 2026
c971ee8
style(DropdownMenu): Prettier on the spec's behavior table after the …
vjeux Oct 29, 2026
3dafeb8
Merge #8360 1e1431fe2f and main 90da4a77b6 into #8340
vjeux Oct 29, 2026
1682f96
chore(gestures): the gesture files on this line have no unused bindings
vjeux Oct 29, 2026
856c4d1
test(gestures): a rotation re-based on every change releases at its r…
vjeux Oct 29, 2026
8310bcb
fix(gestures): a re-based rotation keeps its release velocity
vjeux Oct 29, 2026
fe7f5f9
test(motion): the Reduce Motion late-dip proof reads what the dip ani…
vjeux Oct 29, 2026
e4713e8
test(gestures): a finger inside an open shadow root is down in its sc…
vjeux Oct 29, 2026
839b33c
fix(gestures): a finger inside an open shadow root is compared along …
vjeux Oct 29, 2026
01d358b
test(gestures): an element stays an action group while any of its att…
vjeux Oct 29, 2026
1251af1
fix(gestures): an element is an action group while any of its attachm…
vjeux Oct 29, 2026
826534b
test(gestures): a tap on a moving sheet's shadow-root content reaches…
vjeux Oct 29, 2026
66e17cb
fix(gestures): the presented hit test descends into open shadow roots
vjeux Oct 29, 2026
1bf9da8
test(gestures): no touch-action rule stays once the last marked eleme…
vjeux Oct 29, 2026
db3d3f7
fix(gestures): a document's or shadow root's touch-action rules go wi…
vjeux Oct 29, 2026
82579aa
docs(gestures): presented hit testing names its review condition, and…
vjeux Oct 29, 2026
955fed4
docs(gestures): the README and the barrel point Lab at @astryxdesign/…
vjeux Oct 29, 2026
38acf83
docs(core): the input stream's notes name the stops it fixes, what st…
vjeux Oct 29, 2026
121937a
docs(changeset): the build changeset names the treeshakeCompensation …
vjeux Oct 29, 2026
2e2f92a
test(gestures): real-touch proofs for a still finger's sub-pixel jitt…
vjeux Oct 29, 2026
75392b2
test(gestures): a retargeted tap with only watchers attached activate…
vjeux Oct 29, 2026
1363a95
Merge #8360 75392b296a into #8665
vjeux Oct 29, 2026
4362f35
test(gestures): an element stays a group while any of its gestures is…
vjeux Oct 29, 2026
d975503
Merge #8360 75392b296a into #8336
vjeux Oct 29, 2026
8cb7c3a
Merge #8360 75392b296a into #8298
vjeux Oct 29, 2026
339a352
Merge #8360 75392b296a into #8340
vjeux Oct 29, 2026
045f666
docs(core): the input stream's notes no longer list click among the g…
vjeux Oct 29, 2026
1adb531
Merge #8360 045f666f7a into #8665
vjeux Oct 29, 2026
bf1a58b
test(gestures): under a fine pointer an armed press cancels a claimed…
vjeux Oct 29, 2026
1585de0
fix(gestures): under a fine pointer an armed press cancels a claimed …
vjeux Oct 29, 2026
f46d28f
test(gestures): a press claimed at its own pointerdown keeps the page…
vjeux Oct 29, 2026
f74d481
Merge 8cb7c3a9f4 (#8298) into 045f666f7a (#8360)
vjeux Oct 29, 2026
5b48c78
Merge f74d4817c5 (#8360 045f666f7a with #8298 8cb7c3a9f4) into 90c7c0…
vjeux Oct 29, 2026
b7c67d6
Merge 503bc5b014 (#8627, rebuilt onto main) into 5b48c78703
vjeux Oct 29, 2026
00d500d
Merge #8336 (d975503b8a) into the input hold
vjeux Oct 29, 2026
c614025
Merge #8360 045f666f7a and main 90da4a77b6 into #8186
vjeux Oct 29, 2026
bce55d5
fix(gestures): a press that claims at its own pointerdown keeps the p…
vjeux Oct 29, 2026
4de6442
docs(gestures): the host's notes, the selection test and FR41 say wha…
vjeux Oct 29, 2026
dcda3d0
Merge b7c67d626d (#8627 503bc5b014, #8360 045f666f7a, #8298 8cb7c3a9f…
vjeux Oct 29, 2026
c6c02fc
docs(spec): FR41 says what a claimed drag does with the page's select…
vjeux Oct 29, 2026
283e7b2
Merge #8665 c6c02fcf2b into #8336
vjeux Oct 29, 2026
504d64a
test(core): a start the browser dates by the call stays when its own …
vjeux Oct 29, 2026
e6876ca
fix(core): only a block in a call's own task moves its start from rest
vjeux Oct 29, 2026
01c0447
test(core): a block shorter than two frames in a call's own task move…
vjeux Oct 29, 2026
fc42d64
fix(core): a call from rest starts no earlier than the end of its own…
vjeux Oct 29, 2026
d3e347c
Merge dcda3d0ffd (#8078) into 1405eda0a4
vjeux Oct 29, 2026
b3853ff
Merge c6140255b4 (#8186) into d3e347c949
vjeux Oct 29, 2026
2d82af7
Merge b3853ff90a (#8078 dcda3d0ffd, #8186 c6140255b4) as a dependency
vjeux Oct 29, 2026
e01c0d1
Merge 2d82af7ce1 (#8080) as a dependency
vjeux Oct 29, 2026
7800fb5
Merge e01c0d1d2d (#8089) into 98ae3d4eb1
vjeux Oct 29, 2026
90934a7
Merge 53e8deba7d (#7839) into 7800fb5f62
vjeux Oct 29, 2026
e40e94b
Merge 90934a7a97 (#8089 e01c0d1d2d, #7839 53e8deba7d) as a dependency
vjeux Oct 29, 2026
1f603f4
test(DropdownMenu): the in-place sub-menu's bundle carries its two sp…
vjeux Oct 29, 2026
07cb98f
fix(DropdownMenu): the in-place sub-menu ships UIKit's two sub-menu s…
vjeux Oct 29, 2026
67f63f3
Merge #8336 (283e7b2e37) into the input hold
vjeux Oct 29, 2026
074796a
test(Layer): a component that holds its layer carries no gesture code
vjeux Oct 30, 2026
ed17d69
fix(Layer): the input hold imports nothing from gestures/; the gestur…
vjeux Oct 30, 2026
f4dce0d
test(core): a frame-dated start stays when the call's task runs on a …
vjeux Oct 30, 2026
26ecfe7
fix(core): a start from rest moves past a block only when its task ra…
vjeux Oct 30, 2026
19af775
Merge #8083 (458e2d9e88, on #8360 323a8fd79b and #8637 ed3d750972) in…
vjeux Oct 30, 2026
4278e5c
Merge #8084 (19af775327: her AlertDialog record, the conformance, #80…
vjeux Oct 30, 2026
c3a4cdc
Merge #8342 (ed17d69e19: on #8336 283e7b2e37; the gesture host asks t…
vjeux Oct 30, 2026
adccd15
Revert #7839 (53e8deba7d) from this branch: its pull requests are aba…
vjeux Oct 30, 2026
837b8e2
docs(DropdownMenu): the drill-in's factory says it registers the two …
vjeux Oct 30, 2026
28ea1c9
Merge c3a4cdc54a (#8373) into 837b8e2c93 (#8220)
vjeux Oct 30, 2026
029fb35
Merge 26ecfe7418 (#8340) into 28ea1c9676
vjeux Oct 30, 2026
4428def
Merge 029fb35117 (#8220 837b8e2c93, #8373 c3a4cdc54a, #8340 26ecfe741…
vjeux Oct 30, 2026
c5e07b0
Merge 4428defd83 (#8220 837b8e2c93, #8373 c3a4cdc54a, #8340 26ecfe741…
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/action-group-tracker-one-writer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] The internal action-group tracker paints its highlight through the one press writer in `utils/pressFeedback.ts`, as the document's press controller does, so neither cuts the other's fade short and a `held` paint is left alone. No component uses the tracker yet, and no package entry point exports it.

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

[chore] AlertDialog: under a finger, its presentation and dismissal hold input through the shared Layer input hold instead of its own guards. While it fades out its content is inert and focus leaves it, then returns to the opener as before.

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

[fix] AlertDialog: its two actions are tracked as one group under every pointer, a finger, a pen or a mouse, the way iOS tracks an alert's actions. A press that lands on one action and slides to the other now runs the action it lifts on. Before, iOS Safari ran the action the finger first touched (Delete, when the finger slid to Cancel), and other browsers ran nothing and left the alert open. The pressed action highlights as soon as it is pressed instead of 150 ms later, the highlight follows the pointer between the actions, and lifting off both still runs nothing; a second finger or the window losing focus ends the press with nothing run. Only the actions are tracked: a press on the title or the message is not, and their text stays selectable with a mouse. The keyboard and assistive technology keep each button's own activation.

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

[feat] AlertDialog: under a finger the alert appears and leaves the way an iOS alert does. It scales down into place from 1.2 while it and the dimming fade in, and it fades out with the dimming when it closes, on the alert's measured spring; the animation keeps running when the page is busy. While it appears a touch does nothing (keys and assistive technology still act), and while it leaves nothing reaches it: a touch, a click, a key or an assistive-technology activation does nothing. With reduced motion it only cross-fades. Defaults under a finger: on a phone (a compact width) the width with no `width` prop goes from 400 px to UIKit's 320 px in every theme, and this motion replaces the Dialog's entrance (rising 16 px and scaling up from 0.95 while it fades in) and its exit. With a mouse nothing changes. A `width` you pass still wins on a phone. The actions are tracked as one group under every pointer.

@vjeux
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/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/dropdownmenu-action-sheet-card.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[feature] On a compact touch screen (a phone, iOS or Android), DropdownMenu's `presentation="bottom-sheet"` with plain actions presents the way iOS 26 presents an action sheet: a centered, alert-style card that scales down from 1.2 and fades in with its dimming on the alert's spring, holds the actions and Cancel in one stack, tracks a finger across the actions as one group (the lift runs the action under it), and dismisses with a fade, on Cancel, Escape or a tap outside, returning focus to the trigger. A menu with sub-menus, links, rich labels, descriptions, end content, rows that stay open, a header or a footer keeps the bottom sheet, as do larger screens and mouse presentations.

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

[feature] On a phone, a DropdownMenu sub-menu opens in place as UIMenu's does on iOS 26. The sub-menu's card grows down from the row it opened from, and the menu's box grows with it from the edge it is anchored by. The parent's rows stay under the card, faded to half and scaled to 97%. The sub-menu's header keeps the row's label, now semibold, with its chevron turned down, and is named by that label and then "Back to <parent>". Going back reverses it. The box plays UIKit's sub-menu springs. Under Reduce Motion the views cross-fade.

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

[fix] DropdownMenu and MoreMenu opened with a mouse no longer start the touch presentation's motion code; on a phone the menu keeps opening beside its trigger, as on a larger screen.

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

[feature] Under a finger, on every touch device, DropdownMenu and MoreMenu grow out of their trigger on UIKit's open spring and collapse back into it on the close spring, as UIMenu does. Both run on the compositor and can be interrupted either way. Under Reduce Motion the menu fades in place (the animator's policy). A pan that starts outside the open menu dismisses it as the page scrolls, and focus that was in the menu returns to the trigger. Under a mouse, or with `presentation="popover"`, the menu keeps the layer's entrance and the theme's motion.

@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 claimed gesture cancelled while one of its fingers is moving keeps that moving 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. The host follows the primary pointer when it changes; what it attaches under a fine pointer is in the every-pointer changeset (`gestures-every-pointer.md`). 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/gestures-every-pointer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: gestures attach for every pointer, a mouse, a pen and a finger alike (AST-094 FR43). Under a fine primary pointer an element that uses a gesture keeps one passive `pointerdown` listener (a recognizer that claims a moving finger also keeps its blocking `touchmove`, and a kept press gets its own only during a press), the page's listeners last only a press and go at a window blur, and a hovering mouse or pen reaches a hover recognizer through two passive listeners on its element. A pen's barrel button, like a right click, starts no press. A right click or a ctrl-click on macOS starts no press. A finger's or a pen's hold that does something keeps text unselected under any primary pointer, a touchscreen laptop's included, while a mouse keeps its released behavior (FR41). A mouse or pen drag that a recognizer claims takes no text selection from then on, anywhere on the page, and a finger is read once where the browser sends Touch Events without exposing `ontouchstart`. A press tracker takes a mouse press as a press, painting at once with no scroll brake. The screen-edge pan is a finger's only: it stays off under a mouse, a trackpad and a pen, and takes no `allowedPointerTypes`, and `perEventPointer` is accepted and does nothing. Not exported from the package entry point.

@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/layer-exit-copy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the layer runtime gains one exit copy for touch presentations that animate a popover out: a static, inert copy of the closing popover, shown only in the top layer where the popover was drawn, for the close to play on.

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

[chore] Internal: one input hold for every layer (`Layer/inputHold`). While a layer presents, a touch, a press or a click anywhere reaches nothing (keys and assistive technology still act, and a pinch still zooms the page); while it dismisses, the same, and the layer's content is inert. The gesture host holds the layer's touches through its touch gates, and `isInputShield` lets a hit test see past a hold's shield. Not exported from the package entry point; no component uses it yet.

@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-press-handoff.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[feature] Under a finger, on every device, the finger that opened a DropdownMenu or MoreMenu now picks a row only after it has moved 10 px (`spec:AST-094` FR29, FR43), so a menu that appears under a resting finger never picks the row beneath it, however long the finger rests. To keep the previous behavior, where that finger's lift picked once the press had lasted 300 ms, pass `presentation="popover"`. A mouse and the public `useMenuPress` hook are unchanged.

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

[feature] Under a finger, on every device, a DropdownMenu or MoreMenu trigger now opens its menu as the finger presses, instead of after a 500 ms hold (`spec:AST-094` FR29, FR43). Inside a scroll view it opens once the 150 ms content-touch delay has passed with no scroll, so a scroll that starts on it still scrolls. To keep the previous behavior, a tap that opens at the lift and a 500 ms hold, pass `presentation="popover"`. A mouse is unchanged.

@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/presentation-resolver.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] An internal `usePresentation` / `readPresentation` resolves a component's `presentation` prop into the surface to render and whether its touch input modes apply, keeping an omitted value distinct from an explicit `'popover'` so a caller's choice always wins over a touch default. Not exported from the package entry point.

@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-group-item-marker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: the touch press controller leaves the press of an action marked as tracked by its group (`data-astryx-press-group-item`) to that group's own tracker, so one writer paints each press. No component carries the marker yet, so nothing visible or behavioral changes.

@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
2 changes: 1 addition & 1 deletion .changeset/touch-motion-theme-roles.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
'@astryxdesign/core': patch
---

[chore] Internal: the touch motion tables register their springs, durations and curves as internal motion roles, each read once when a motion starts, so every component keeps its measured value. Nothing public changes: themes do not set motion roles, and no shipped component reads the roles yet.
[chore] Internal: the touch motion tables register their springs, durations and curves as internal motion roles, each read once when a motion starts, so every component keeps its measured value. Nothing public changes: themes do not set motion roles. DropdownMenu's touch grow and collapse read `springs.menuOpen` and `springs.menuClose`.

@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
Loading