Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2133 commits
Select commit Hold shift + click to select a range
e0a9548
Merge #8076 3bfd7c32da (the animator reads no style for a node out of…
vjeux Oct 27, 2026
431f4b0
test(gestures): a press tracker's fine-pointer profile: no delay, and…
vjeux Oct 27, 2026
27d8e94
test(Popover): the presentation proof leaves out Chrome's own pass fo…
vjeux Oct 27, 2026
f9a93c3
test(gestures): the screen-edge pan stays off under a mouse and a pen…
vjeux Oct 27, 2026
c89bde5
Merge 27d8e94b8d (#8187: the dismissal lets the hidden layer go of it…
vjeux Oct 27, 2026
4bbcb1a
Merge c89bde5b71 (#8187 27d8e94b8d with her #8587 and #8342) into the…
vjeux Oct 27, 2026
f50207f
feat(gestures): gestures attach for every pointer (spec:AST-094 FR43,…
vjeux Oct 27, 2026
dc3840f
test(gestures): the browser proofs read FR43 under a fine pointer, wi…
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
03707a0
fix(core): a rect morph dismissing on a copy lets the element go of i…
vjeux Oct 27, 2026
218bad8
Merge #8329 (03707a0dad: a rect morph dismissing on a copy lets the e…
vjeux Oct 27, 2026
b8b882c
Merge #8223 (4bbcb1ab63: the dismissal no longer promotes the hidden …
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
e718566
Merge #8270 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641) into #8309
vjeux Oct 27, 2026
1e44dc3
Merge #8315 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641) into #8336
vjeux Oct 27, 2026
9486526
Merge #8309 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8641's moving…
vjeux Oct 27, 2026
03155c3
Merge the #8589 watcher-test fix (1b6e19f7b0: the real-touch test rea…
vjeux Oct 27, 2026
3d7fa2e
Merge #8336 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
82fe8b7
Merge #8356 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
d835d1c
Merge #8320 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
ee5387a
Merge #8293 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
aebbb7c
test(motion): retire the gate that kept the menus off the gestures table
vjeux Oct 27, 2026
23ade34
Merge #8358 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
9fa271e
Merge #8360 (#8076 e6ab0b9cd9: FR18 per DEC-22, #8641; #8589's watche…
vjeux Oct 27, 2026
d535664
Merge #8336 (03155c374e: F2's fZ line on #8076 e6ab0b9cd9, with the w…
vjeux Oct 27, 2026
47e9e85
Merge #8076 (e6ab0b9cd9: the animator reads no style for a node out o…
vjeux Oct 27, 2026
e90fc8a
test(gestures): a finger from a browser that sends Touch Events but e…
vjeux Oct 27, 2026
00ab452
fix(gestures): the host reads no Touch Events where it takes fingers …
vjeux Oct 27, 2026
1d43d0d
Merge #8336 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
898d317
Merge #8320 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
169cd73
Merge #8293 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
cb552b2
Merge #8356 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
11a1a2d
test(motion): the uikit barrel keeps UIKIT_CLICK for importers writte…
vjeux Oct 27, 2026
d8651c2
fix(motion): the uikit barrel keeps UIKIT_CLICK, with the click guard…
vjeux Oct 27, 2026
c246cf6
Merge #8360 (the uikit barrel keeps UIKIT_CLICK) into the every-point…
vjeux Oct 27, 2026
f562631
Merge #8358 (the host takes a finger once where it reads its pointer …
vjeux Oct 27, 2026
22f0517
Merge #8360 (the host takes a finger once where it reads its pointer …
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
30c2216
Merge main (6aea9bda01: #8663 merged) into the motion progress module
vjeux Oct 27, 2026
9943eca
Merge #8340 (9718a3d851: #8076 with main 6aea9bda) into the rect morp…
vjeux Oct 27, 2026
46347b2
Merge #8497 (30c22161f0: main 6aea9bda folded in) into the rect morph…
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
d57a52c
Merge #8076 3fb31ddb3e (main 6aea9bda01 folded) into the sheet ride's…
vjeux Oct 27, 2026
8433766
Merge the sheet ride's dependencies (D12 d57a52c867: #8076 3fb31ddb3e…
vjeux Oct 27, 2026
f7f44b6
Merge #8566 84337664c0 (#8076 3fb31ddb3e) into ChatLayout's keyboard …
vjeux Oct 27, 2026
dbae076
Merge ChatLayout's keyboard dependencies (f7f44b61e8: #8566 84337664c…
vjeux Oct 27, 2026
aba5646
Merge #8336 (3b1b26d530: F2's line on #8076 3fb31ddb3e, main with #86…
vjeux Oct 27, 2026
ca8060b
Merge #8186 1aaf2db59d (#8076 3fb31ddb3e: main 6aea9bda01) into the P…
vjeux Oct 27, 2026
2fc6028
Merge the dependencies (#8186 1aaf2db59d, #8076 3fb31ddb3e) into the …
vjeux Oct 27, 2026
a3511eb
test(gestures): a mouse drag a pan claimed selects no page text, in W…
vjeux Oct 27, 2026
eef5494
Merge #8342 aba564668f (F2's #8336 on #8076 3fb31ddb3e) into the pres…
vjeux Oct 27, 2026
c3b0efa
Merge the dependencies (#8342 aba564668f, #8187 2fc6028b23) into the …
vjeux Oct 27, 2026
042b0bd
Merge #8187 2fc6028b23 (#8186 1aaf2db59d, #8076 3fb31ddb3e) into the …
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
b02bad3
Merge #8340 (b6a910dd40: a presented call's curve that a later one's …
vjeux Oct 27, 2026
f0b8719
Merge #8223 (c3b0efa0c8: the input hold on #8342's arena and #8187) i…
vjeux Oct 27, 2026
3a4c2e0
Merge #8329 (b02bad37eb: #8340's re-dated presented curves) into Popo…
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
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
02065de
fix(BottomSheet): subscribe the keyboard layout guide only where the …
vjeux Oct 27, 2026
ae028f4
Merge #8076 389db4e90a (usePressTracker memo) into the sheet ride's d…
vjeux Oct 27, 2026
55e954f
Merge the sheet ride's dependencies (D13 ae028f4d05: #8076 389db4e90a…
vjeux Oct 27, 2026
47a2b83
Merge #8566 55e954f9cd into ChatLayout's keyboard dependencies
vjeux Oct 27, 2026
58254fc
Merge ChatLayout's keyboard dependencies (47a2b83c7d: #8566 55e954f9c…
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
6d60ba3
feat(core): a rect morph plays on an animator it is handed, and takes…
vjeux Oct 27, 2026
0f419e4
fix(keyboard): the focus takeover shares one document listener and Bo…
vjeux Oct 27, 2026
39ab09d
Merge #8559 0f419e4303 (the shared focus takeover) into ChatLayout's …
vjeux Oct 27, 2026
d0f24e1
fix(core): a rect morph keeps the animator's dip for an element that …
vjeux Oct 27, 2026
264c66d
test(gestures): a second finger fails a one-finger pan where fingers …
vjeux Oct 27, 2026
be7cceb
Merge ChatLayout's keyboard dependencies (39ab09daf2: #8559 0f419e430…
vjeux Oct 27, 2026
5542e9a
fix(ChatLayout): the tap route and the focus takeover attach only und…
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
6b3e60d
docs(gestures): the host's header and the host-owner changeset descri…
vjeux Oct 27, 2026
11b4ed5
refactor(keyboard): BottomSheet's hook moves to its own module, apart…
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
7117f32
fix(ChatLayout): the composer region takes focus only for Done's park
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
f753ded
fix(keyboard): the store reports the viewport only, with no document …
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
c94b1f7
test(ChatLayout): the gutter click runs under a fine pointer
vjeux Oct 27, 2026
7373545
fix(ChatLayout): the composer region is a named group only under the …
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
2997a96
Merge main 84faa0d94b into the keyboard module
vjeux Oct 28, 2026
f40af91
docs(keyboard): say what the Firefox for Android run shows about the …
vjeux Oct 28, 2026
a04e511
Merge main 8f42b3d260 into the keyboard module
vjeux Oct 28, 2026
ba88de4
Merge main f3c78b28d6 into the sheet keyboard ride
vjeux Oct 28, 2026
7f457b3
Merge main f3c78b28d6 into the ChatLayout keyboard guide
vjeux Oct 28, 2026
4f436ef
docs(ChatLayout): the composer group and the scroll-free focus apply …
vjeux Oct 28, 2026
ba15b99
docs(ChatLayout): the "Message composer" group is the composer's wrapper
vjeux Oct 28, 2026
c7cf5d2
Merge main 6162917e82 into the keyboard module
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
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
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
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
40a06c3
Merge #8559 c7cf5d2070 into the sheet keyboard ride
vjeux Oct 29, 2026
f46d28f
test(gestures): a press claimed at its own pointerdown keeps the page…
vjeux Oct 29, 2026
23db8c8
Merge #8360 045f666f7a into the sheet keyboard ride
vjeux Oct 29, 2026
00d500d
Merge #8336 (d975503b8a) into the input hold
vjeux Oct 29, 2026
c9ca01e
Merge #8360 045f666f7a and main 90da4a77b6 into #8497
vjeux Oct 29, 2026
c614025
Merge #8360 045f666f7a and main 90da4a77b6 into #8186
vjeux Oct 29, 2026
ac706e9
Merge #8340 339a352e88 and #8497 c9ca01e134 into #8329
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
84106dc
feat(keyboard): the store reports focus moves for the keyboard layout…
vjeux Oct 29, 2026
6dcb1a8
Merge #8566 84106dc8d1 into the ChatLayout keyboard guide
vjeux Oct 29, 2026
4e590d0
docs(ChatLayout): the touch focus routes and Done's park apply in a t…
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
2ed0645
Merge #8186 c6140255b4 into #8176 4e590d0ade, the Popover touch prese…
vjeux Oct 29, 2026
7261017
Merge the dependencies (#8176 4e590d0ade, #8186 c6140255b4) into the …
vjeux Oct 29, 2026
259a590
Merge #8342 00d500d249 into #8187 7261017042, the presentation hold's…
vjeux Oct 29, 2026
fdd925c
Merge the dependencies (#8342 00d500d249, #8187 7261017042) into the …
vjeux Oct 29, 2026
e0536fa
Merge #8340 fc42d64f7e and #8497 c9ca01e134 into the morph paths
vjeux Oct 29, 2026
62e949d
feat(core): the rect morph's paths, the rect a grow-out presentation …
vjeux Oct 29, 2026
7ac15f8
Merge the morph paths 62e949db89 into #8329
vjeux Oct 29, 2026
3fb8334
docs(keyboard): the ride and the guide name BottomSheet's hook beside…
vjeux Oct 29, 2026
0318e92
refactor(core): the rect morph plays the paths from morphPath.ts, and…
vjeux Oct 29, 2026
331792a
test(core): the rect morph's switch reading reads inside a frame, to …
vjeux Oct 29, 2026
67f63f3
Merge #8336 (283e7b2e37) into the input hold
vjeux Oct 29, 2026
66038f6
Merge #8176 3fb83346bb (comments and the keyboard README only) into t…
vjeux Oct 29, 2026
872ac7e
Merge #8187 66038f6acc (#8176 3fb83346bb: comments and the keyboard R…
vjeux Oct 29, 2026
aa25fff
test(core): the rect morph's on-screen switch proof starts at the pre…
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
d1b883e
docs(core): the morph paths' headers name nothing that is missing at …
vjeux Oct 30, 2026
836e7b2
Merge the morph paths d1b883ec0e into #8329
vjeux Oct 30, 2026
e874b14
docs(core): the rect morph's header cites spec:AST-094 for its laws
vjeux Oct 30, 2026
63939d5
Merge #8187 66038f6acc into the presentation hold's dependencies
vjeux Oct 30, 2026
0181da7
Merge #8342 ed17d69e19 into the presentation hold's dependencies: the…
vjeux Oct 30, 2026
3f21fd4
Merge the dependencies (#8187 66038f6acc, #8342 ed17d69e19: the input…
vjeux Oct 30, 2026
79cb5e6
Merge #8223 3f21fd48d1 and #8329 e874b14640 into #8377 [skip ci]
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
8 changes: 8 additions & 0 deletions .changeset/bottomsheet-rides-gboard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@astryxdesign/core': patch
'@astryxdesign/cli': patch
---

[feat] In Chrome on Android, on a touch screen, a Tall BottomSheet's focused field rides the on-screen keyboard as Gboard slides it up and down: a field revealed during the show rises with the keyboard, and through the hide the sheet's scroll room stays while its content rides down, so nothing jumps while the keyboard is still on screen. Under Reduce Motion it cross-fades instead of moving. The browser-support guide says so.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/browser-support-on-screen-keyboard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/cli': patch
---

[docs] The browser-support guide has a section on the on-screen keyboard: a fully expanded Tall BottomSheet measures it as the layout viewport's height minus the visual viewport's, and keeps the focused field above it in Safari on iOS, Firefox for Android and Chrome on Android. In Chrome, by default (`interactive-widget=resizes-visual`), the sheet adds its scroll room once Chrome reports the keyboard; with `interactive-widget=resizes-content` Chrome shrinks the page for the keyboard itself and the sheet changes nothing. Your app owns its viewport `<meta>` element; Astryx never sets it.

@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
8 changes: 8 additions & 0 deletions .changeset/chat-layout-rides-the-keyboard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@astryxdesign/core': patch
'@astryxdesign/cli': patch
---

[feat] ChatLayout keeps its composer on top of the software keyboard where the visual viewport shrinks for it, instead of leaving it underneath until the browser scrolls the whole page: in Safari on iOS (in the browser and as a home-screen app) and in Chrome on Android (on Gboard's measured slides) the dock rises and falls with the keyboard, in step with it, and in Firefox for Android it moves above the keyboard once Firefox reports it. Where a page sets `interactive-widget=resizes-content`, Chrome shrinks the page for the keyboard itself and the composer stays above it without moving. A conversation at its newest message stays there, and the rest of the transcript can still be scrolled above the composer. On a touch screen, in a top-level page, every way into the composer's text (a tap, the keyboard's previous and next buttons, Tab, the input's `focus()`) reaches it without the page scrolling; under a mouse or inside an iframe the browser's own focus applies. On a touch screen the composer's wrapper (without the scroll-to-bottom button) is a group named "Message composer"; in a top-level page, when the keyboard's Done ends typing, focus rests there (it is no tab stop), so the next tap or Tab starts from the composer. Under a mouse the wrapper is a plain container. Under Reduce Motion the composer never travels: it cross-fades to its place above the keyboard on a touch screen. Nothing changes where no software keyboard appears. The browser-support guide's section on the on-screen keyboard covers ChatLayout's composer.

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

[fix] BottomSheet reads the on-screen keyboard from core's shared keyboard module. It now detects the keyboard from the browser's capabilities (a top-level document with a visual viewport, Chrome on Android included) instead of the user agent, measures the keyboard so that a page pan or a pinch zoom never reads as one and a pinch-zoomed page still reads the keyboard's full height, and lays a Tall sheet's keyboard room out through its own style rather than a CSS custom property. The browser-support guide documents Chrome on Android's `interactive-widget` viewport setting.

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

[chore] Internal: the rect morph's paths, the geometry touch presentations share when they grow out of a source rect and shrink back into it. `lerpPath` (a straight line between two rects) and `edgeGrowPath` (UIKit's popover, growing out of a point on its edge) name the rect an element shows at each progress, and say how an interrupted motion continues in their own law; `morphCurves` turns a path into compositor curves (`translate`, `scale` and a companion `opacity`). Not exported from the package entry point; no component uses them yet.

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

[chore] Internal: one progress module for the motion foundation. `progressCurve` gives a spring's progress from 0 to 1 as a closed-form curve, `mapProgress` maps any curve from another (a companion's dim following a sheet, a clamped range), `mapRange` is the clamped linear map they share, and `presentedProgressVelocity` reads the velocity an interrupted motion continues from. One velocity unit throughout: progress per second. Nothing public changes; no component imports it yet.

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

[chore] Internal: the rect morph, one way for a touch presentation to grow out of a source rect and shrink back into it. `createRectMorph` presents an element along a path (`lerpPath`, `edgeGrowPath`) and dismisses it back on a copy or on itself, each continuing the other from the rect on screen with its velocity, with Reduced Motion left to the animator. It runs on new progress helpers (`progressCurve`, `mapProgress`, `mapRange`, `presentedProgressVelocity`). Not exported from the package entry point; no component uses it yet.

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

[chore] Internal: Popover keeps its chosen presentation (the sheet or the anchored layer, the touch grow or the pointer entrance) from the open until its close settles through the layer runtime's one presentation hold (Layer/presentationHold.ts). No behavior change.

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

[fix] Under a finger, a tap that lands while a Popover is still growing out of its trigger is now ignored, as on iOS: the presentation finishes, the popover stays and keeps its focus, and the tap does not reach the page underneath; a drag that starts then scrolls nothing, while a pinch still zooms the page. Before, it closed the popover mid-presentation. Once the popover is in, a tap outside dismisses it as before; under a mouse nothing changes.

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

[feature] Under a finger (a coarse primary pointer, on any touch device), Popover is presented like a native popover: it grows out of its trigger on UIKit's present spring, wide before tall, with its edge held on the trigger, and shrinks back into the trigger on the dismiss spring when it closes, on the compositor and interruptible both ways. With reduced motion it cross-fades in and out, opacity only, in 200 ms or less. A fine primary pointer (a mouse) keeps its entrance and the theme's motion. The shrink plays on the layer runtime's exit copy, of which Popover is the first user.

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

[chore] Internal: the keyboard notifications' duration has its own export in the UIKit timing table, so code that reads only it bundles no other timing value. 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
Loading
Loading