Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2312 commits
Select commit Hold shift + click to select a range
4079ae8
Merge commit '176ca2f62f' (#8148) into c24-8197-base
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
b0d00eb
Merge commit '4079ae85a6' (c24-8197-base) into uikit/c24-pager; Light…
vjeux Oct 27, 2026
ff6a464
Merge #8342 (d535664aec) into #8485
vjeux Oct 27, 2026
112fcfc
Merge commit 'b0d00eb447' (#8197) into uikit/c24-dismiss; Lightbox.ts…
vjeux Oct 27, 2026
4a4b85d
Merge commit '112fcfc391' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
e359d68
Merge commit '4a4b85d14d' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
dfd7bf1
Merge commit 'e359d68170' (#8242) into uikit/c24-pinch-close
vjeux Oct 27, 2026
ccc8fba
Merge commit 'd535664aec' (#8342, C18's re-fold: her head plus fZ) in…
vjeux Oct 27, 2026
e036c3b
Merge commit 'ccc8fbabca' (c24-8147-base: #8342 d535664aec) into uiki…
vjeux Oct 27, 2026
0fca40e
Merge commit 'e036c3b50a' (#8147) into uikit/c24-zoom-stage
vjeux Oct 27, 2026
00a8dee
Merge commit '0fca40ea2d' (#8148) into c24-8197-base
vjeux Oct 27, 2026
0a029aa
Merge commit '00a8deece2' (c24-8197-base) into uikit/c24-pager
vjeux Oct 27, 2026
2531ba6
Merge commit '0a029aa6dc' (#8197) into uikit/c24-dismiss
vjeux Oct 27, 2026
a33749d
Merge commit '2531ba6b64' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
78969ed
Merge commit 'a33749d872' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
2c877b9
Merge commit '78969ed739' (#8242) into uikit/c24-pinch-close
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
055431d
Merge commit '47e9e853d3' (#8340, F1's re-fold on #8076 e6ab0b9cd9; h…
vjeux Oct 27, 2026
74f2125
Merge commit '055431d69c' (c24-8147-base: #8340 47e9e853d3) into uiki…
vjeux Oct 27, 2026
4d67d2e
Merge commit '74f21258a8' (#8147) into uikit/c24-zoom-stage
vjeux Oct 27, 2026
8e93fc7
Merge commit '4d67d2eda8' (#8148) into c24-8197-base
vjeux Oct 27, 2026
8278d79
Merge commit '8e93fc7e6c' (c24-8197-base) into uikit/c24-pager
vjeux Oct 27, 2026
1edaef1
Merge commit '8278d79081' (#8197) into uikit/c24-dismiss
vjeux Oct 27, 2026
a0ffaf0
Merge commit '1edaef1022' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
48cbb47
Merge commit 'a0ffaf003a' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
234f503
Merge commit '48cbb477f0' (#8242) into uikit/c24-pinch-close
vjeux Oct 27, 2026
9e328e7
test(interaction-harness): wheel and pen input drivers for every-poin…
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
96a7f00
Merge #8666 (wheel and pen input drivers) into #8665 for FR43 follow-ups
vjeux Oct 27, 2026
66c863f
Merge #8535 (the backward self-test dates the run by its own clock) i…
vjeux Oct 27, 2026
b3e2421
Merge commit 'f95730e49d' (c24-8197-base: #8146 d8cdccdcdc) into uiki…
vjeux Oct 27, 2026
f95730e
Merge commit 'd8cdccdcdc' (#8146, C23's re-fold on fZ; merge-only) in…
vjeux Oct 27, 2026
5fafca7
Merge commit 'b3e2421e59' (#8197) into uikit/c24-dismiss
vjeux Oct 27, 2026
ed2b99f
Merge commit '5fafca74e2' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
3819ee6
Merge commit 'ed2b99f1a5' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
2d32e35
Merge commit '3819ee64a8' (#8242) into uikit/c24-pinch-close
vjeux Oct 27, 2026
ad9e942
test(interaction-harness): wheel() resolves once the page has the step
vjeux Oct 27, 2026
45eade4
Merge #8666 ad9e94246d (wheel() resolves once the page has the step) …
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
052a0e2
Merge #8665 f4be8f0f27 into the FR43 harness helper
vjeux Oct 27, 2026
98b5632
test(lightbox): the Reduce Motion paging proofs catch the fade howeve…
vjeux Oct 27, 2026
5bcb16d
Merge commit '98b5632057' (#8197) into uikit/c24-dismiss
vjeux Oct 27, 2026
8ec6a49
Merge commit '5bcb16d40a' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
3fb31dd
Merge main (6aea9bda01: #8663 merged, one release policy) into the ex…
vjeux Oct 27, 2026
4c538f8
Merge commit '8ec6a4996a' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
ee4987d
Merge commit '4c538f841e' (#8242) into uikit/c24-pinch-close
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
b246458
test(interaction-harness): pen() presses once the page has presented …
vjeux Oct 27, 2026
84bca2c
Merge #8666 b246458d75 (pen() presses once the page has presented two…
vjeux Oct 27, 2026
cf36adb
test(gestures): a pan takes wheel and trackpad scrolling it allows, a…
vjeux Oct 27, 2026
9cb248a
feat(gestures): a pan takes wheel and trackpad scrolling it allows, a…
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
5f378c3
Merge #8320 (ca71fce61a) into uikit/c23-paging-values
vjeux Oct 27, 2026
ec2d5b4
refactor(motion): the page choice moves to the pager, on the release …
vjeux Oct 27, 2026
fe411d7
Merge #8145 (ec2d5b40d7, on #8320 ca71fce61a) into uikit/c23-pager
vjeux Oct 27, 2026
fb75e3a
refactor(core): the pager picks its page on the release policy
vjeux Oct 27, 2026
cad75e1
Merge #8665 f785debd7b (on #8076 3fb31ddb3e) into the FR43 harness he…
vjeux Oct 27, 2026
6ec3609
Merge #8329 (46347b2aeb) into #8485
vjeux Oct 27, 2026
ce261a5
Merge commit '9718a3d851' (#8340, on #8076 3fb31ddb3e with main 6aea9…
vjeux Oct 27, 2026
e2d817e
Merge commit '46347b2aeb' (#8329, on #8076 3fb31ddb3e with main 6aea9…
vjeux Oct 27, 2026
0b54c06
Merge commit 'ca71fce61a' (#8320, on #8076 3fb31ddb3e with main 6aea9…
vjeux Oct 27, 2026
9f0fbae
Merge commit '0b54c068f3' (c24-8147-base: #8340 9718a3d851, #8329 463…
vjeux Oct 27, 2026
1342408
Merge commit '9f0fbaec72' (#8147) into uikit/c24-zoom-stage
vjeux Oct 27, 2026
85407d1
Merge #8186 (1aaf2db59d) into #8485
vjeux Oct 27, 2026
798809f
Merge #8342 (aba564668f) into #8485
vjeux Oct 27, 2026
a3511eb
test(gestures): a mouse drag a pan claimed selects no page text, in W…
vjeux Oct 27, 2026
400635c
test(lightbox): the pinch proof reads the photo and the touches together
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
83fd470
Merge #8665 c1f24bf8ce (the WebKit document-wide selection hold) into…
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
f8ef6de
Merge #8665 9adc6f230b into the FR43 harness helper
vjeux Oct 27, 2026
555ac1c
Merge #8665 9adc6f230b (the README cascade, the document-wide drag se…
vjeux Oct 27, 2026
d5f5bb0
Merge X1's web input drivers (f8ef6ded7f: #8665 9adc6f230b, #8666, #8…
vjeux Oct 27, 2026
d3624cd
Merge #8340 (b6a910dd40) into #8485
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
fce152e
Merge #8329 (b02bad37eb) into #8485
vjeux Oct 27, 2026
f5ae6b7
Merge commit 'aba564668f' (#8342, C18's re-fold on #8336 3b1b26d530) …
vjeux Oct 27, 2026
3c8817f
test(gestures): the drag selection case reads the page once the selec…
vjeux Oct 27, 2026
848f031
Merge commit 'f5ae6b782c' (c24-8147-base: #8342 aba564668f) into uiki…
vjeux Oct 27, 2026
0414f0c
Merge commit '848f031401' (#8147) into uikit/c24-zoom-stage
vjeux Oct 27, 2026
48220c0
Merge commit 'fb75e3a2a7' (#8146, C23's re-fold on fZ2 #8320 ca71fce6…
vjeux Oct 27, 2026
f0cc976
Merge commit '0414f0c784' (#8148) into c24-8197-base
vjeux Oct 27, 2026
e8b6886
Merge commit 'f0cc9763f3' (c24-8197-base) into uikit/c24-pager
vjeux Oct 27, 2026
bf07f16
Merge commit 'e8b6886a2a' (#8197) into uikit/c24-dismiss
vjeux Oct 27, 2026
0c8027b
Merge commit 'bf07f161cc' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
620fbfe
test(gestures): a recognizer inside a shadow root gets its finger and…
vjeux Oct 27, 2026
13d4eed
Merge commit '0c8027be7c' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
e7dcba1
Merge commit '13d4eed495' (#8242) into uikit/c24-pinch-close
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
a933f59
Merge #8665 (#8336: a recognizer inside a shadow root gets its finger…
vjeux Oct 27, 2026
c858b3c
test(gestures): a wheel gesture stays the pan's that took it when its…
vjeux Oct 27, 2026
5b1f088
fix(gestures): a wheel gesture is latched to the recognizer that took…
vjeux Oct 27, 2026
5e0277e
Merge #8336 (c3c119a466: the host resolves what an input landed on th…
vjeux Oct 27, 2026
974ca77
Merge #8342 (5e0277e26a) into #8485
vjeux Oct 27, 2026
cf2d1d2
test(gestures): a scroll-edge pan takes a wheel only where no scrolle…
vjeux Oct 27, 2026
c4a236a
fix(gestures): a scroll-edge pan takes a wheel only past every scroll…
vjeux Oct 27, 2026
caa5f5e
test(gestures): a recognizer that takes only scroll input arms no pre…
vjeux Oct 27, 2026
eb82bbd
fix(gestures): only a recognizer that takes a pointer arms its elemen…
vjeux Oct 27, 2026
7d80599
test(lightbox): the double-click sampler's read-back is async (promis…
vjeux Oct 27, 2026
f3612db
Merge commit '7d80599892' (#8148) into c24-8197-base
vjeux Oct 27, 2026
332fc1b
Merge commit 'f3612db302' (c24-8197-base) into uikit/c24-pager
vjeux Oct 27, 2026
8ae8796
test(lightbox): the paging sampler's read-back is async (promise-func…
vjeux Oct 27, 2026
e21249b
Merge commit '8ae87969ed' (#8197) into uikit/c24-dismiss
vjeux Oct 27, 2026
8f84a18
Merge commit 'e21249bdd2' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
715f3c3
Merge commit '8f84a181a6' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
bdb0173
Merge commit '715f3c36f7' (#8242) into uikit/c24-pinch-close
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
931b709
test(gestures): a wheel reads a right-to-left scroller by its range, …
vjeux Oct 27, 2026
7daa15d
fix(gestures): a wheel reads a right-to-left scroller by its range, a…
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
b390514
Merge #8358 (useLongPress measures its tolerance on each axis again, …
vjeux Oct 27, 2026
1ffc9d8
Merge #8360 (the menu trigger takes its tolerance when its press star…
vjeux Oct 27, 2026
a50eda8
Merge #8665 (#8360: the menu trigger takes its tolerance at the press…
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
a526461
Merge #8665 (a claimed pen's stylus touchend is cancelled, as a finge…
vjeux Oct 27, 2026
6d60ba3
feat(core): a rect morph plays on an animator it is handed, and takes…
vjeux Oct 27, 2026
68e9ac9
Merge commit '6d60ba30e3' (#8329: createRectMorph takes an animator; …
vjeux Oct 27, 2026
c5e48d0
Merge commit 'a8b174a7d6' (#8320, F2's shadow-root and wheel-latch ca…
vjeux Oct 27, 2026
a2ce3d3
Merge commit '5e0277e26a' (#8342, C18's re-fold on #8336 c3c119a466) …
vjeux Oct 27, 2026
f608e8a
Merge commit '6d60ba30e3' (#8329: createRectMorph takes an animator; …
vjeux Oct 27, 2026
a44bac7
feat(lightbox): the zoom grows through the shared rect morph (INV15)
vjeux Oct 27, 2026
d0f24e1
fix(core): a rect morph keeps the animator's dip for an element that …
vjeux Oct 27, 2026
6b3e60d
docs(gestures): the host's header and the host-owner changeset descri…
vjeux Oct 27, 2026
c10a53a
test(gestures): a right-to-left scroller a pixel short of its end rea…
vjeux Oct 27, 2026
f102c42
fix(gestures): a wheel reads a scroller a pixel short of either end a…
vjeux Oct 27, 2026
c184834
fix(lightbox): the zoom follows a stage that mounts late; a zoomed mo…
vjeux Oct 27, 2026
088e809
Merge commit 'd0f24e1f98' (#8329: crossfadeAs 'move') into c24-8147-base
vjeux Oct 27, 2026
a05f1ad
Merge commit '088e8095ab' (c24-8147-base: #8320 a8b174a7d6, #8342 5e0…
vjeux Oct 27, 2026
58c3c57
Merge commit 'a05f1ade6b' (#8147 with c24-8147-base) into uikit/c24-z…
vjeux Oct 27, 2026
09a8f8c
Merge commit '58c3c574b8' (#8148) into c24-8197-base
vjeux Oct 27, 2026
a1ee376
fix(lightbox): a gallery photo takes its own clicks, a paged-away vid…
vjeux Oct 27, 2026
cded97b
Merge commit '09a8f8c107' (c24-8197-base) into uikit/c24-pager
vjeux Oct 27, 2026
0db6aa5
fix(lightbox): a short flick down closes (FR36's projection), a dragg…
vjeux Oct 27, 2026
372f90f
test(gestures): only a recognizer a wheel can drive adds the wheel li…
vjeux Oct 27, 2026
bf35189
fix(gestures): only a pan or a pinch that allows scroll input adds th…
vjeux Oct 27, 2026
45dcb85
Merge #8665 6b3e60d3d8 (the host's header and the host-owner changese…
vjeux Oct 27, 2026
9653fdc
Merge commit 'cded97b7cd' (#8197) into uikit/c24-dismiss
vjeux Oct 27, 2026
611a0d7
fix(lightbox): a pinch released above the close point springs back ca…
vjeux Oct 27, 2026
d149918
docs(motion): the dismiss projection's measurement is M-ZM5 (M-ZM4 is…
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
bd1d489
Merge #8186 (f28d42ee0f: main 6a751f7b7a, #8646's every-pointer gestu…
vjeux Oct 27, 2026
dd431b1
Merge #8329 (d0f24e1f98) into #8485
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
e7e2cbf
test(gestures): a pan takes wheel and trackpad scrolling by default, …
vjeux Oct 27, 2026
10f9488
fix(gestures): a pan takes wheel and trackpad scrolling by default, a…
vjeux Oct 27, 2026
3b0006c
Merge #8665 42baf0feb9 (the screen-edge pan locked to a finger; a fin…
vjeux Oct 27, 2026
1fabc49
fix(gestures): the screen-edge pan takes no wheel or trackpad scrolli…
vjeux Oct 27, 2026
68d409e
fix(lightbox): the backdrop keeps its blur at rest and fades without …
vjeux Oct 27, 2026
8628b0d
fix(lightbox): the chrome fade plays timing.curves.move, and a tap on…
vjeux Oct 27, 2026
0585cdb
Merge commit 'a44bac7ad6' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
738b6a6
Merge commit '0585cdb231' (#8242) into uikit/c24-pinch-close
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
8e35a43
test(gestures): a wheel every taker declined is the page's from its f…
vjeux Oct 27, 2026
90fa63f
Merge commit '68d409e2f0' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
8114611
fix(gestures): a wheel every taker declined ends at once and scrolls …
vjeux Oct 27, 2026
0e2342b
Merge #8665 2d365a7b51 (a click guard whose view went away drops with…
vjeux Oct 27, 2026
f05d4ad
fix(lightbox): sourceFor goes behind experimental, the transition run…
vjeux Oct 27, 2026
12c4819
Merge commit 'f05d4adeff' (#8231) into uikit/c24-chrome-toggle
vjeux Oct 27, 2026
5380a08
test(gestures): a scroll-only claimer makes no touch listener cancell…
vjeux Oct 27, 2026
0039701
feat(interaction-harness): sampleCurve samples a ::before or ::after
vjeux Oct 27, 2026
72ef8dc
fix(gestures): only a recognizer that takes a finger or a pen makes t…
vjeux Oct 27, 2026
649ec92
Merge commit '00397017c4' (X1's harness: sampleCurve reads a pseudo-e…
vjeux Oct 27, 2026
91e05ab
fix(lightbox): the black behind the photo is the container's own ::be…
vjeux Oct 27, 2026
f98ae16
Merge commit '91e05ab461' (#8242) into uikit/c24-pinch-close
vjeux Oct 27, 2026
e8e9c62
test(lightbox): a pinch fades the backdrop without its blur, and a sp…
vjeux Oct 27, 2026
5e7d60d
docs(lightbox): the changesets say the backdrop keeps its blur at rest
vjeux Oct 27, 2026
f65032f
Merge commit '5e7d60d7cb' (#8215) into uikit/c24-zoom-transition
vjeux Oct 27, 2026
1bdd947
feat(lightbox): a click on the photo hides and shows the controls und…
vjeux Oct 27, 2026
4b0701b
test(liftFromTrigger): the zoom's copy of a source, through the lift …
vjeux Oct 27, 2026
b78832f
feat(liftFromTrigger): liftCopy, the zoom's copy of a source through …
vjeux Oct 27, 2026
b9917a1
fix(lightbox): a photo still decoding waits with the dim at the openi…
vjeux Oct 27, 2026
a42b740
test(liftFromTrigger): browser proofs of the zoom's copy
vjeux Oct 27, 2026
5db1b3d
Merge #8676 72ef8dc61a (wheel and trackpad input) onto c24-8147-base,…
vjeux Oct 27, 2026
156b9d7
test(clickGuard): no guard outlives the test that armed it
vjeux Oct 27, 2026
3c7b077
Merge commit 'a42b7403dc' (#8485, the lift module, with #8186's exit …
vjeux Oct 27, 2026
9960efe
fix(test-utils): the shared setup disarms every click guard as each t…
vjeux Oct 27, 2026
6715f12
Merge commit '3c7b07773b' (c24-8147-base: #8485's lift module, with #…
vjeux Oct 27, 2026
979b6ca
refactor(lightbox): the thumbnail's copy comes from the shared lift m…
vjeux Oct 27, 2026
d8ea013
fix(lightbox): a drag-down close reports from the release, and the op…
vjeux Oct 27, 2026
05e821b
test(gestures): a mouse wheel's notches release still, a trackpad's s…
vjeux Oct 27, 2026
a28dfab
fix(gestures): a mouse wheel's notches release still, a trackpad's sc…
vjeux Oct 27, 2026
ee47f5b
Merge #8665 9960efe095 (no click guard outlives its test; a cancel li…
vjeux Oct 27, 2026
4c68920
Merge c24-8147-base 3c7b07773b and #8676 ee47f5be77 (notches release …
vjeux Oct 27, 2026
7ab0504
Merge main dbb2d527ea (#8741: a viewer opened before its first item a…
vjeux Oct 27, 2026
e2ffa23
chore(lightbox): the zoom stage destructures only what it uses
vjeux Oct 27, 2026
18a528b
Merge #8197 e2ffa23768 (main dbb2d527ea: #8741) into #8215
vjeux Oct 27, 2026
45275bc
Merge #8215 18a528b1e4 (main dbb2d527ea: #8741) into #8231
vjeux Oct 27, 2026
a53bc8a
Merge #8231 45275bc1c1 (main dbb2d527ea: #8741) into #8242
vjeux Oct 27, 2026
bd7a9cb
Merge #8242 a53bc8adb0 (main dbb2d527ea: #8741) into #8252
vjeux Oct 27, 2026
7f4b4d3
Merge #8252 bd7a9cb071 (main dbb2d527ea: #8741) into #8746
vjeux Oct 27, 2026
8c2db19
fix(Lightbox): only a pointer's click on the photo toggles the contro…
vjeux Oct 27, 2026
995bd48
test(Lightbox): the keyboard proof waits until the zoomed photo cover…
vjeux Oct 27, 2026
ec51222
Merge F2's harness/f2-wheel-on-c24-8147-base 4c6892073f (#8676 ee47f5…
vjeux Oct 27, 2026
7f75a16
feat(Lightbox): a mouse, a pen and a trackpad use a finger's gestures…
vjeux Oct 27, 2026
File filter

Filter by extension

Filter by extension


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

[fix] `astryxStylex` resolves `defineConsts` values read from another file. With the `{stylexOptions}` form (the one Storybook uses), a file that read only constants from a `.stylex.ts` module lost that import once StyleX compiled it, so the constants never reached the CSS: a constant used as a media-query key failed the build ("Invalid empty selector") and one used as a value shipped as a custom property nothing declares. In either form, a constant defined on the other side of the layer split, or in an Astryx package (compiled with the library class-name prefix) and read from an app file (compiled with its own), stayed unresolved.

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

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

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

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

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

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

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

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

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

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

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

[chore] Internal: the gesture host becomes the one document-level touch owner: the finger count, touch gates, and a kept press for continuous-tracking controls, whose element gets `touch-action: manipulation` where the pointer is coarse. A scroll lock's page hold and the finger-scroll watch keep their own listeners and ask the host only about the touches it owns. A second finger fails a one-finger pan that has not claimed, so the page can pinch. A scroll-edge pan holds a lone finger from the first move that pulls away from an edge every scroller under it is at, so those moves are cancelled before it begins; with a second finger anywhere on the screen the page keeps its pinch. 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, with every press painter writing `data-astryx-press` through one internal writer in `utils/pressFeedback.ts`. 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 the page's listeners last only a 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/gestures-wheel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: a pan takes wheel and trackpad scrolling by default, a mouse wheel's notches included (`allowedScrollTypes`, UIKit's `allowedScrollTypesMask`; `[]` opts out), along its own axis and after the scrollers under the pointer; the screen-edge pan takes none; and a pinch takes a ctrl-wheel, as a trackpad pinches (AST-094 FR43). 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 listen on the window's capture phase through one shared input stream: one passive listener per event type for both. An app's own capture-phase `stopPropagation` at the document no longer starves them, and 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/lift-module.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] Internal: one opt-in lift-from-trigger presentation for touch surfaces. The trigger itself lifts into the top layer above a tinted backdrop; a surface grows out of the press beside it on the shared rect morph and shrinks back into it on the layer runtime's exit copy; the trigger returns to its place. Translate, scale and opacity only; nothing mounted at rest, four elements while lifted. A zoom from a thumbnail lifts a copy of the thumbnail's picture into the viewer instead, while the thumbnail hides in place. Not exported from the package entry point; no component uses it yet.

@vjeux
16 changes: 16 additions & 0 deletions .changeset/lightbox-chrome-toggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
'@astryxdesign/core': patch
---

[feat] On a touch screen, tapping a zoomable Lightbox photo now hides the controls and caption, and the background turns black, as in the iOS Photos viewer. The next tap on the photo, or beside it, brings them back.

Zooming in by touch hides the controls the same way: a double tap as it zooms, or a pinch as soon as it passes the fitted size. Returning to the fitted size shows them. While the photo is zoomed, the background stays black and a tap toggles only the controls. The fades follow Photos' timing: the controls fade over 0.2 s, and the background turns black 0.1 s after them. While the controls are hidden:

- a tap beside the photo shows them instead of closing the viewer;
- a caption paged into view arrives hidden;
- a cancelled drag down brings them back;
- a keyboard focus on a control shows them.

A mouse click leaves the controls in place.

@vjeux
9 changes: 9 additions & 0 deletions .changeset/lightbox-drag-to-dismiss.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@astryxdesign/core': patch
---

[feat] On a touch screen, drag a Lightbox photo down to close the viewer, as in the iOS Photos viewer. The photo follows your finger and shrinks a little as you pull, while the backdrop fades and the controls fade faster. The backdrop fades without its blur, which comes back once it is at rest. Let go moving down, however short the pull, and the photo carries on down as the viewer closes. Flick it back up, or bring it back to where you started, and it springs back into place. A zoomed photo still pans when you drag it; the drag to close starts from the fitted size. Videos and the mouse are unchanged.

The viewer's controls now sit in their own layers, which fade together during the drag.

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

[feat] Lightbox: a mouse, a pen and a trackpad now use the same gestures as a finger. Drag a photo down to close the viewer; drag sideways, or scroll a trackpad sideways, to move through a gallery; ctrl-wheel to zoom, and out from the fitted size to close; drag or scroll to pan a zoomed photo, which coasts on when released moving. A double-click zooms in at the click, as a double tap does, and a zoom by a pointer hides the controls as a finger's does; the keyboard keeps its 2× zoom about the centre.

@vjeux
9 changes: 9 additions & 0 deletions .changeset/lightbox-gallery-paging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@astryxdesign/core': patch
---

[feat] A Lightbox gallery now pages the way the iOS Photos viewer does. On a touch screen, drag or flick between items: the row follows your finger, and the release lands on the next or previous item, one at most. A gap of 40 px separates the items while they move. A zoomed photo pans with your finger until it reaches its edge; a new drag from that edge moves to the next item. A photo you leave zoomed returns to its fitted size once the gallery rests. Under a finger, the previous and next buttons and the arrow keys slide to the item instead of swapping it in place.

Each item's caption now moves with its item, and the gallery fills the viewer on every screen, so the viewer keeps its size from item to item. `onIndexChange` also reports a swipe. A mouse still moves between items with the buttons and arrow keys.

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

[feat] Lightbox: with a mouse or a pen, a click on a zoomable photo now hides and shows the controls, as a tap does on a touch screen. A double-click still zooms without them.

@vjeux
11 changes: 11 additions & 0 deletions .changeset/lightbox-pinch-close.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
'@astryxdesign/core': patch
---

[feat] Under a finger, pinching in on a zoomable Lightbox photo at its fitted size now closes the viewer into the photo's thumbnail, as in the iOS Photos viewer, on phones and tablets (a coarse primary pointer).

While the fingers pinch in, the photo shrinks with them about the point between them and follows it. The backdrop fades on Photos' measured curve and the controls fade faster. A pinch that goes below about 93.5 % closes at the lift unless it is opened again by 5 % first: the photo flies into its thumbnail, or shrinks and fades in place when it has none. Any other pinch springs back to the fitted size.

A pinch that starts zoomed in still gives way below the fitted size and returns, without closing.

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

[experimental] Lightbox: `experimental.sourceFor(index)` returns the element each item zooms out of when it opens and back into when it closes on a touch screen, usually its thumbnail, so every photo of a gallery zooms from its own thumbnail rather than from the element that opened the viewer. It may change or be removed in a patch release.

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

[feat] Lightbox's zoom now works under a finger the way the iOS Photos viewer does, on phones and tablets (a coarse primary pointer). Pinch the photo to zoom around your fingers, and move them to pan while you zoom. Past the zoom limits the photo gives way, then eases back when you let go. Double-tap zooms until the photo fills the screen, bringing the tapped point to the centre; double-tap again to go back. A zoomed photo pans with momentum, stretches past its edges and settles back. A mouse, a pen where the primary pointer is fine, and the keyboard keep the zoom they had: 2× about the centre, over the same 200 ms ease-out. A mouse drag and keyboard panning now stop at the photo's edges instead of carrying it out of view.

On a phone the photo's stage fills the viewer. A pinch on the photo no longer zooms the page, and a pinch on the controls or caption still does. With `hasZoom` on, a tap on the dark area beside the photo closes the viewer after the double-tap wait instead of at once. The zoom animations run on the compositor, so they stay smooth while the page is busy. With `hasZoom` off, nothing changes.

@vjeux
11 changes: 11 additions & 0 deletions .changeset/lightbox-zoom-transition.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
'@astryxdesign/core': patch
---

[feat] On a touch screen, a Lightbox photo can now zoom out of its thumbnail when it opens and back into it when it closes, like the iOS Photos viewer (UIKit's zoom transition). A viewer opened from an element that shows a picture (an image, or a button or link around one) zooms from that element for the photo it opened on; a text button opens and closes as before. The photo grows from the thumbnail to its fitted size while the thumbnail's picture fades out, and the backdrop and controls fade in with it. A tap or a drag that lands while it opens is held, so it can't close the viewer, zoom the photo or reach the page; keys and screen readers stay live.

Closing works the same way: the Close button, Escape, a tap beside the photo, or a swipe to another photo and then a close each send the photo back into the thumbnail of the photo showing, and the viewer stays open until it lands. A photo dragged down shrinks into its thumbnail. Under Reduce Motion the photo cross-fades in place.

With a mouse the viewer opens and closes at once, as before.

@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 where the primary pointer is coarse (phones and tablets), as AST-094 FR29 allows; it cancelled past 10px. Where the primary pointer is fine (a touchscreen laptop, a pen tablet), the trigger keeps its 10px. The trigger reads the pointer when its press starts, so no menu or row observes the pointer query.

@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. `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; `morphCurves` turns a path into compositor curves (`translate`, `scale` and a companion `opacity`); `createRectMorph` presents an element along a path 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/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
Loading
Loading