Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1745 commits
Select commit Hold shift + click to select a range
af65db2
Merge #8561 (a26bb661: every linted file outside Core and Lab) into t…
cixzhang Oct 26, 2026
bce5d90
fix(interaction): the compositor record refuses another open page
cixzhang Oct 26, 2026
7613c98
Merge #8548 (the compositor record refuses another page) into the ins…
cixzhang Oct 26, 2026
f79b8a9
fix(interaction): resolve ASTRYX_WEBKIT_SHADER_CACHE to a host path
cixzhang Oct 26, 2026
a1e7176
Merge #8549 (compositor record refuses another page, shader cache pat…
cixzhang Oct 26, 2026
ff365ff
docs(interaction): a traced waitForRest restyles a running element on…
cixzhang Oct 26, 2026
97436b2
fix(core): a node detached mid-dip lands its move where it was going
cixzhang Oct 26, 2026
c27baac
Merge #8521 (a node detached mid-dip lands its move) into pseudo-elem…
cixzhang Oct 26, 2026
bac4669
fix(interaction): a window that delivered under four frames is judged…
cixzhang Oct 26, 2026
f1c5125
Merge n8045 (the busy verdict judges a thin window against its span) …
cixzhang Oct 26, 2026
bd50829
Merge n8548 (the busy verdict judges a thin window against its span) …
cixzhang Oct 26, 2026
f405e7f
Merge n8549 (the busy verdict judges a thin window against its span) …
cixzhang Oct 26, 2026
959f1e1
Merge f405e7fa31 (#8446: CodeBunny's #8045 round up the harness line)…
cixzhang Oct 26, 2026
4e19448
Merge #8309 (959f1e1e: #8446 f405e7fa) into the gesture hook fixes
cixzhang Oct 26, 2026
21a1df9
docs(gestures): a watcher needs no manageStyle: false
cixzhang Oct 26, 2026
7455721
Merge #8315 (4e19448b: #8309 959f1e1e) into the host line
cixzhang Oct 26, 2026
d0d7f6a
Merge #8315 (4e19448b: #8309 959f1e1e) into the gesture watcher
cixzhang Oct 26, 2026
029e4fd
Merge #8589 (a watcher needs no manageStyle: false) into the host line
cixzhang Oct 26, 2026
cd49a87
Merge #8336 (#8315 4e19448b, #8589's README) into the arena fixes
cixzhang Oct 26, 2026
54b35c5
test(gestures): a scroll takes an unclaimed touch from 10 px of trave…
vjeux Oct 26, 2026
702529b
fix(core): the unmount's landing leaves the detached node with nothin…
cixzhang Oct 26, 2026
fda011c
Merge #8521 (the unmount's landing leaves nothing running) into pseud…
cixzhang Oct 26, 2026
8715133
docs(interaction): the busy verdict's docs name the thin-window rule
cixzhang Oct 26, 2026
15e8c24
Merge n8045 (the busy docs name the thin-window rule) into n8548
cixzhang Oct 26, 2026
bc90acb
Merge n8548 (the busy docs name the thin-window rule) into n8549
cixzhang Oct 26, 2026
7aba599
Merge n8549 (the busy docs name the thin-window rule) into n8446b
cixzhang Oct 26, 2026
9f6748f
fix(core): a waiting move lands on the latest node detached, and disp…
cixzhang Oct 26, 2026
a103c43
Merge #8521 (the latest detached node) into pseudo-element support
cixzhang Oct 26, 2026
07b3383
fix(core): a press another hook's isEnabled sync resolves ends after …
cixzhang Oct 26, 2026
4012259
fix(interaction): the compositor record refuses a page that opened wh…
cixzhang Oct 26, 2026
2a6b934
Merge n8548 (the compositor record refuses a page opened while it ran…
cixzhang Oct 26, 2026
9f65026
Merge n8549 (the compositor record refuses a page opened while it ran…
cixzhang Oct 26, 2026
3ca280f
refactor(core): internal/touch re-exports the gesture core by name, w…
cixzhang Oct 26, 2026
2ec969c
fix(core): a Reduce Motion call naming the opacity a waiting dip retu…
vjeux Oct 26, 2026
298458e
Merge #8076 (2ec969c6: a Reduce Motion call naming the opacity a wait…
vjeux Oct 26, 2026
8a1f2ca
test(gestures): the isEnabled-sync press test names its refs as refs
vjeux Oct 26, 2026
b560c64
Merge 3ca280f5f0 (#8465: internal/touch re-exports the gesture core b…
cixzhang Oct 26, 2026
1ddea08
fix(interaction): a traced wait on a missing element reports it missing
cixzhang Oct 26, 2026
213e86e
docs(motion): the Reduce Motion planner's fade length is no role, the…
vjeux Oct 26, 2026
6ef5186
perf(core): a promotion reads no style in its own task
vjeux Oct 26, 2026
c440ef6
test(gestures): a recognizer waiting on one a hook's Effect stops rep…
vjeux Oct 26, 2026
70c70e4
Merge #8061 (4c3df941: a screen-edge pan takes the axis across its ed…
vjeux Oct 26, 2026
7088243
Merge #8076 (70c70e41: her #8061 4c3df941, a screen-edge pan claims a…
vjeux Oct 26, 2026
67ff01b
fix(gestures): what a hook's Effect stop unblocks resolves just after it
vjeux Oct 26, 2026
6f4173c
test(core): the mid-dip unmount test reads the element after the defe…
cixzhang Oct 26, 2026
915f9d9
Merge #8521 (the mid-dip unmount test awaits the microtask) into pseu…
cixzhang Oct 26, 2026
fdf2f65
fix(lab): SearchField's rounded ends and scaling middle are pseudo-el…
vjeux Oct 26, 2026
db82dac
test(lab): the pseudo-element reader finds the field as the search la…
vjeux Oct 26, 2026
9dddf5c
Merge #8340 (7088243efe: the presented start on #8076 70c70e41e1) int…
vjeux Oct 26, 2026
23e3cef
Merge #8076 (70c70e41e1: #8061's in-zone screen-edge pan, the promoti…
vjeux Oct 26, 2026
bf1d3ce
Merge #8180 (23e3cefa61: on #8076 70c70e41e1) into uikit/c09-search-f…
vjeux Oct 26, 2026
d2c3c78
feat(gestures): an action group keeps working under a fine pointer, w…
cixzhang Oct 26, 2026
cc795a1
Merge d2c3c788f0 (#8072 (an action group under a fine pointer)) as a …
cixzhang Oct 26, 2026
266fa0a
Merge #8072 (d2c3c788: the action-group host exception) and #8446 (1d…
cixzhang Oct 27, 2026
8b0cb36
Merge #8309 (cc795a1e: #8072's action-group fine-pointer exception) a…
cixzhang Oct 27, 2026
8839b53
Merge #8076 (266fa0af: the action-group host exception, #8446) into t…
cixzhang Oct 27, 2026
d6603db
Merge #8076 (266fa0af50: the action-group host exception, the harness…
vjeux Oct 27, 2026
555c8c1
Merge #8180 (d6603db4b8: on #8076 266fa0af50) into uikit/c09-search-f…
vjeux Oct 27, 2026
a490ba1
Merge 1ddea08f3e (#8446 (the harness line's latest)) as a dependency
cixzhang Oct 27, 2026
4ec2b1a
Merge #8315 (8b0cb36f: #8309 cc795a1e, the action-group exception) in…
cixzhang Oct 27, 2026
6f73653
Merge #8315 (8b0cb36f: #8309 cc795a1e) into the gesture watcher
cixzhang Oct 27, 2026
453149e
Merge #8589 (with #8315 8b0cb36f) into the host line
cixzhang Oct 27, 2026
03d8794
Merge 266fa0af50 (#8076 266fa0af (vjeux 70c70e41, #8072 d2c3c788, #84…
cixzhang Oct 27, 2026
ecb82db
Merge #8336 (#8315 8b0cb36f: #8309's press delivery after an isEnable…
cixzhang Oct 27, 2026
8d59b3f
Merge #8309 (03d87941: #8076 266fa0af) as a dependency
cixzhang Oct 27, 2026
dbcfd32
Merge #8315 (8d59b3f3: #8309 03d87941, #8076 266fa0af) into the gestu…
cixzhang Oct 27, 2026
cc0f99a
Merge #8315 (8d59b3f3) into the host line
cixzhang Oct 27, 2026
a4f63a8
Merge #8589 (#8315 8d59b3f3) into the host line
cixzhang Oct 27, 2026
8415bf3
Merge #8336 (#8315 8d59b3f3) into the arena fixes
cixzhang Oct 27, 2026
d5958e0
test(gestures): useGestureRecognizer attaches an action group the hos…
vjeux Oct 27, 2026
ce103c7
feat(gestures): useGestureRecognizer takes actionGroup
vjeux Oct 27, 2026
25b468c
Merge main (2c4f1728: #8056 merged) into play-curves
cixzhang Oct 27, 2026
182ef2e
Merge #8521 (main with #8056) into pseudo-element support
cixzhang Oct 27, 2026
9e06328
fix(core): the host forgets a finger scroll in progress when it stops…
cixzhang Oct 27, 2026
da33639
Merge #8336 (the host forgets a finger scroll when it stops listening…
cixzhang Oct 27, 2026
2e60799
fix(gestures): under inputMode 'pointer-events' a finger is tracked o…
cixzhang Oct 27, 2026
a13314f
fix(core): a touch only watchers follow gets a passive touchend
cixzhang Oct 27, 2026
e6e06dd
Merge 2e60799487 (#8072 (kt-ztcc: a finger tracked once under inputMo…
cixzhang Oct 27, 2026
793c8db
build(lab): Lab reaches core only through core's exports, with no sec…
cixzhang Oct 27, 2026
6586b84
Merge #8589 (a touch only watchers follow gets a passive touchend) in…
cixzhang Oct 27, 2026
6dfa218
Merge #8336 (#8589's passive touchend for watchers) into the arena fixes
cixzhang Oct 27, 2026
98803e9
Merge 793c8dbd (#8076: Lab reaches core only through core's exports) …
cixzhang Oct 27, 2026
b9c3b0b
Merge #8522 (182ef2e9: the animator line carrying main with #8056 lan…
cixzhang Oct 27, 2026
27eeeb8
fix(core): an unmount leaves no will-change read timer on the node it…
cixzhang Oct 27, 2026
ee75f00
Merge #8076 (27eeeb8d: main with #8056 merged through her #8522, her …
vjeux Oct 27, 2026
07920f1
Merge #8076 (27eeeb8db4: main with #8056, the Lab route through core'…
vjeux Oct 27, 2026
3c8d657
Merge #8076 (27eeeb8db4: on main 2c4f1728b4, Lab reaches core only th…
vjeux Oct 27, 2026
dd1b124
Merge 27eeeb8d (#8076: carries main with #8056 landed, via #8522 182e…
cixzhang Oct 27, 2026
530adc8
Merge #8076 (27eeeb8d: main through #8056's merge) into the row press…
vjeux Oct 27, 2026
2567163
Merge the row press release change (with #8076 at 27eeeb8d) into the …
vjeux Oct 27, 2026
c177659
Merge #8309 (dd1b1244: #8076 27eeeb8d with #8056, and #8072 2e607994)…
cixzhang Oct 27, 2026
4af2a04
Merge #8315 (c1776597: #8309 dd1b1244, with #8056 via #8076) into the…
cixzhang Oct 27, 2026
8ada401
test(core): the detached-mid-dip cases read the presented start's inl…
vjeux Oct 27, 2026
33bff16
Merge #8589 (#8315 c1776597: #8309 dd1b1244, with #8056 via #8076) in…
cixzhang Oct 27, 2026
2b66ca5
Merge #8336 (#8315 c1776597) into the arena fixes
cixzhang Oct 27, 2026
bec2283
fix(gestures): a gesture that cancels itself on a finger's move keeps…
vjeux Oct 26, 2026
995eb32
test(gestures): a scroll-edge pan cancels its first moves while every…
vjeux Oct 27, 2026
e7ec6d1
test(gestures): browser proof that a scroll-edge pull's first move is…
vjeux Oct 27, 2026
885c7f1
feat(gestures): a scroll-edge pan holds its finger from the first mov…
vjeux Oct 27, 2026
0eafffd
test(gestures): real-touch states for AST-094 FR18–FR22: 9 and 10 px …
cixzhang Oct 27, 2026
a3e07d8
fix(core): the gesture host measures a screen-edge pan's view, so an …
cixzhang Oct 27, 2026
9adbe2d
fix(gestures): a strip authored at the edge region is the edge zone a…
cixzhang Oct 27, 2026
584ee5a
Merge a3e07d88 (#8076: the host's arena environment measures a view) …
cixzhang Oct 27, 2026
cc9afb6
Merge 9adbe2d8 (#8061: an edge strip within half a pixel of its band …
cixzhang Oct 27, 2026
2d1a06e
test(gestures): the real-touch edge strip is the band's own 40.2 px, …
cixzhang Oct 27, 2026
00b7e03
Merge F2's re-folded line (#8320 2b66ca5ab5) into the scroll edge eff…
vjeux Oct 27, 2026
25e5a8a
Merge the bases (#8320 2b66ca5ab5) into the AppShell scroll edge effect
vjeux Oct 27, 2026
9800eb5
fix(gestures): a scroll takes a finger only after its 10 px of travel…
cixzhang Oct 27, 2026
9ac14dc
docs(gestures): the README's touch-action table qualifies the edge pa…
cixzhang Oct 27, 2026
c3375f6
Merge 9800eb54 (#8072: a scroll takes a finger after 10 px; pointer-e…
cixzhang Oct 27, 2026
8ae6540
Merge #8309 (c3375f65: #8076 a3e07d88, #8061 9adbe2d8, #8072 9800eb54…
cixzhang Oct 27, 2026
36a1037
Merge #8315 (8ae65405: #8309 c3375f65 with #8076 a3e07d88, #8061 9adb…
cixzhang Oct 27, 2026
5c59af1
fix(gestures): a finger on an action group under a fine pointer reach…
cixzhang Oct 27, 2026
479fe54
fix(core): with only watchers attached, the host's document listeners…
cixzhang Oct 27, 2026
54901eb
Merge #8589 (#8315 8ae65405, and its passive-only listeners for watch…
cixzhang Oct 27, 2026
08305ad
Merge #8336 (#8315 8ae65405; vjeux's scroll-edge hold; #8589's passiv…
cixzhang Oct 27, 2026
2d4b4bd
Merge 5c59af12 (#8072: a finger on an action group under a fine point…
cixzhang Oct 27, 2026
10abed5
Merge #8309 (2d4b4bdc: #8072 5c59af12, an action group's finger under…
cixzhang Oct 27, 2026
cef87ea
Merge #8315 (10abed58: #8309 2d4b4bdc, #8072 5c59af12: an action grou…
cixzhang Oct 27, 2026
b8d7f4c
Merge #8589 (#8315 10abed58) into the host line
cixzhang Oct 27, 2026
71b9578
Merge #8336 (#8315 10abed58) into the arena fixes
cixzhang Oct 27, 2026
cba0ad9
Merge main (a00afee502: #8521 merged) into the experimental touch layer
vjeux Oct 27, 2026
f5ac3e8
Merge #8076 (cba0ad93f6: main with #8521 merged) into the presented s…
vjeux Oct 27, 2026
050fb02
Merge #8076 (cba0ad93f6: a3e07d889b's edge-zone measuring, main with …
vjeux Oct 27, 2026
2e9d46f
Merge #8076 (cba0ad93f6: on main a00afee502 after #8521) into uikit/c…
vjeux Oct 27, 2026
8766c55
Merge #8076 (cba0ad93: main through #8521's merge) into the row press…
vjeux Oct 27, 2026
1a693f3
Merge the row press release change (with #8076 at cba0ad93) into the …
vjeux Oct 27, 2026
e7b3c0a
Merge the list dividers change (with #8076 at cba0ad93) into the sele…
vjeux Oct 27, 2026
1a4eb1c
test(gestures): a watcher follows a touch the browser scrolls with to…
cixzhang Oct 27, 2026
9f87f08
fix(gestures): a scroll-edge pan holds a lone finger only, so a pinch…
cixzhang Oct 27, 2026
7c8c729
Merge #8589 (a watcher's real-touch browser test) into the host line
cixzhang Oct 27, 2026
36c2669
Merge #8336 (a scroll-edge pan holds a lone finger only; #8589's watc…
cixzhang Oct 27, 2026
c5b1e89
test(gestures): the 41 px edge-band case skips WebKit like the file's…
cixzhang Oct 27, 2026
2850d32
Merge #8309 (c5b1e894: the 41 px edge-band case skips WebKit) as a de…
cixzhang Oct 27, 2026
2e0bf48
Merge #8315 (2850d32b: #8309 c5b1e894, a WebKit test skip) into the g…
cixzhang Oct 27, 2026
d3c39fa
Merge #8589 (#8315 2850d32b) into the host line
cixzhang Oct 27, 2026
46fb7be
Merge #8336 (#8315 2850d32b) into the arena fixes
cixzhang Oct 27, 2026
d97753d
Merge #8270 (#8076 cba0ad93f6) into #8309
vjeux Oct 27, 2026
9affd96
Merge #8315 (#8076 cba0ad93f6) into #8336
vjeux Oct 27, 2026
13f603d
Merge #8309 (#8076 cba0ad93f6) into #8315
vjeux Oct 27, 2026
0567e2c
Merge #8336 (#8076 cba0ad93f6) into #8320
vjeux Oct 27, 2026
2c8edc3
test(gestures): a scroll-edge pan holds nothing while a second finger…
vjeux Oct 27, 2026
54a4c27
fix(gestures): a scroll-edge pan holds nothing while a second finger …
vjeux Oct 27, 2026
c913195
Merge #8180 (2e9d46fa16: on #8076 cba0ad93f6) into uikit/c09-search-f…
vjeux Oct 27, 2026
3dfa15b
Merge #8340 (f5ac3e8904: on #8076 cba0ad93f6) into uikit/c09-search-f…
vjeux Oct 27, 2026
525659d
Merge #8562 (b560c64bc2: Core's internal entries, with #8465) into ui…
vjeux Oct 27, 2026
8610f1c
refactor(lab): SearchField reaches Core's motion and touch internals …
vjeux Oct 27, 2026
3bfd7c3
fix(core): the animator reads no style for a node out of the document
vjeux Oct 27, 2026
abb3e0f
Merge main (f19b6547b5: #8561 merged) into Core's internal entries
vjeux Oct 27, 2026
b87b40b
test(gestures): the watcher's browser test checks it reports moves af…
cixzhang Oct 27, 2026
21347b3
Merge #8589 (the watcher's browser test checks moves after the takeov…
cixzhang Oct 27, 2026
528e3e1
Merge #8336 (vjeux's two-finger scroll-edge fix; #8589's watcher brow…
cixzhang Oct 27, 2026
3d9007e
Merge #8562 (abb3e0fb52: on main with #8561's lint rule) into uikit/c…
vjeux Oct 27, 2026
b26a3a4
Merge #8076 (3bfd7c32da: the animator reads no style for a node out o…
vjeux Oct 27, 2026
f829200
fix(storybook): the Lifted story's stand-in host plays its motion wit…
vjeux Oct 27, 2026
ba11812
Merge F2's line (#8320 528e3e1d12) into the scroll edge effect's bases
vjeux Oct 27, 2026
f626add
Merge #8076 3bfd7c32da into the scroll edge effect's bases
vjeux Oct 27, 2026
03d1dac
Merge the bases (#8320 528e3e1d12, #8076 3bfd7c32da, #8562 abb3e0fb52…
vjeux Oct 27, 2026
b5d6f34
Merge Core's internal entries (#8562 abb3e0fb52) into the scroll edge…
vjeux Oct 27, 2026
a599fa5
chore(core): Lab reaches the scroll edge effect and the bars table th…
vjeux Oct 27, 2026
2119cfa
Merge #8076 (3bfd7c32da: the animator reads no style for a node out o…
vjeux Oct 27, 2026
d70e066
test(core): the press feedback controller imports nothing from the ge…
vjeux Oct 27, 2026
fbed9d2
refactor(core): the coarse-pointer query moves to the environment que…
vjeux Oct 27, 2026
9db6af5
Merge #8270 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux Oct 27, 2026
999afb7
Merge #8309 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux Oct 27, 2026
b57ac07
test(gestures): the watcher's browser test names its record type (lint)
cixzhang Oct 27, 2026
6cca0de
Merge #8589 (the watcher browser test's lint fix) into the host line
cixzhang Oct 27, 2026
ea8531c
Merge #8336 (#8589's lint fix) into the arena fixes
cixzhang Oct 27, 2026
1b6e19f
test(gestures): the watcher's real-touch test reads its end before th…
vjeux Oct 27, 2026
94d3859
Merge F2's line (#8320 ea8531cd9b, the lint fix) into the scroll edge…
vjeux Oct 27, 2026
02983fb
Merge the bases (#8320 ea8531cd9b) into the AppShell scroll edge effect
vjeux Oct 27, 2026
790c65e
Merge #8315 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
vjeux Oct 27, 2026
2fd9697
Merge #8336 (#8076 3bfd7c32da; the coarse-pointer query in utils/) in…
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
c910d50
Merge #8320 (2fd96979f0) and #8562 (abb3e0fb52): the review base
vjeux Oct 27, 2026
b42d84d
Merge the wave-2 foundation line and Core's internal entries (review …
vjeux Oct 27, 2026
7f8faaf
Merge #8107 (46688693bd: the wave-2 foundation line and Core's intern…
vjeux Oct 27, 2026
4668869
chore(lab): NavigationStack reaches Core's internals through its inte…
vjeux Oct 27, 2026
373cec1
test(lab): the edge back swipe decides at FR19's 10 px on the whole s…
vjeux Oct 27, 2026
9f2ac48
Merge #8108 (373cec15cc) and #8082 (e7b3c0a753): the review base
vjeux Oct 27, 2026
b931947
Merge the review base (9f2ac483e3) into the row that pushed: #8108 37…
vjeux Oct 27, 2026
0c340c8
chore(lab): the selection hold reaches Core's internals through its i…
vjeux Oct 27, 2026
00f6d62
Merge #8114 (0c340c8dff: the wave-2 foundation line, Core's internal …
vjeux Oct 27, 2026
9697708
Merge #8185 (00f6d62a4e) and #8181 (f829200edf): the review base
vjeux Oct 27, 2026
05f23c1
Merge the review base (96977086fe) into the search hand-off: #8185 00…
vjeux Oct 27, 2026
2251713
chore(lab): the search hand-off reaches Core's internals through its …
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
62e07d6
Merge NavigationStack search (#8204 2251713728) into the bar look's b…
vjeux Oct 27, 2026
2b66cef
Merge the AppShell scroll edge effect (#8142 02983fbd4f) into the bar…
vjeux Oct 27, 2026
b7b63e8
Merge the bases (#8204 2251713728, #8142 02983fbd4f) into the Navigat…
vjeux Oct 27, 2026
f6633cb
docs(core): AppShell's scroll edge proof names the effect's file in m…
vjeux Oct 27, 2026
5fc8088
Merge F2's line (#8320 3d7fa2ebcb, fZ) into the scroll edge effect's …
vjeux Oct 27, 2026
bf62e21
Merge the bases (#8320 3d7fa2ebcb) into the AppShell scroll edge effect
vjeux Oct 27, 2026
f64f98d
Merge the bases (#8142 bf62e21361, with F2's fZ) into the NavigationS…
vjeux Oct 27, 2026
6bc42fe
Merge the AppShell scroll edge effect (#8142 bf62e21361, with F2's fZ…
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
598be90
Merge main (a63eb54f56: #8465 merged, one shared touch module) into C…
vjeux Oct 27, 2026
e19fef4
Merge Core's internal entries (#8562 598be908c6, on main) into the sc…
vjeux Oct 27, 2026
a03874d
Merge the bases (#8562 598be908c6) into the AppShell scroll edge effect
vjeux Oct 27, 2026
19853b4
test(lab): the cut proofs read the layers' animated translate, off th…
vjeux Oct 27, 2026
180bed4
Merge the AppShell scroll edge effect (#8142 a03874dfe4, with #8562 5…
vjeux Oct 27, 2026
4a247f9
Merge the bases (#8142 a03874dfe4, with #8562 598be908c6) into the Na…
vjeux Oct 27, 2026
3fb31dd
Merge main (6aea9bda01: #8663 merged, one release policy) into the ex…
vjeux Oct 27, 2026
170162d
Merge #8076 (main's #8663 rows in motion/README.md) into #8270
vjeux Oct 27, 2026
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
9175b27
Merge the bases (#8320 ca71fce61a, fZ2) into the AppShell scroll edge…
vjeux Oct 27, 2026
4b9f2ed
Merge F2's line (#8320 ca71fce61a, fZ2 with #8076 3fb31ddb3e) into th…
vjeux Oct 27, 2026
f8f7709
Merge the AppShell scroll edge effect (#8142 9175b278b8, with F2's fZ…
vjeux Oct 27, 2026
6d22f05
Merge the bases (#8142 9175b278b8, with F2's fZ2) into the Navigation…
vjeux Oct 27, 2026
4f8d37b
Merge main (39ed04d76f) into Core's internal entries
vjeux Oct 27, 2026
cd3ad72
test(core): resolveSnapPoint stays internal, checked against public e…
vjeux Oct 27, 2026
ae06884
Merge the bases (#8562 cd3ad72a1f) into the AppShell scroll edge effect
vjeux Oct 27, 2026
fa99001
Merge Core's internal entries (#8562 cd3ad72a1f, the export check's f…
vjeux Oct 27, 2026
c788637
Merge the AppShell scroll edge effect (#8142 ae06884182, with #8562 c…
vjeux Oct 27, 2026
616ecce
Merge the bases (#8142 ae06884182, with #8562 cd3ad72a1f) into the Na…
vjeux Oct 27, 2026
e9c65f0
Merge #8320 (ca71fce61a) and #8562 (cd3ad72a1f): the review base
vjeux Oct 27, 2026
d858f13
Merge the foundation line and Core's internal entries (review base e9…
vjeux Oct 27, 2026
747241b
Merge #8107 (d858f13c96: the foundation line and Core's internal entr…
vjeux Oct 27, 2026
b5fb705
test(lab): traceBars reads translates and marks the frames an animati…
vjeux Oct 27, 2026
19b72fa
test(lab): the no-Layout push proof starts once the story's layers ar…
vjeux Oct 27, 2026
d2b4aeb
Merge #8108 (19b72fa0af) and #8082 (e7b3c0a753): the review base
vjeux Oct 27, 2026
7fadaac
Merge the review base (d2b4aeb078) into the row that pushed: #8108 19…
vjeux Oct 27, 2026
325fad3
Merge #8114 (7fadaac432: the foundation line, Core's internal entries…
vjeux Oct 27, 2026
c914a3c
test(lab): the bar title's busy handover proof counts at the screenca…
vjeux Oct 27, 2026
6d707b2
Merge #8185 (c914a3c5d9) and #8181 (f829200edf): the review base
vjeux Oct 27, 2026
ed597b0
Merge the review base (6d707b2032) into the search hand-off: #8185 c9…
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
01482eb
fix(core): AppShell's touch bar keeps each variant's mouse fill, hide…
vjeux Oct 27, 2026
4f519b0
Merge #8320 53a1e695ef (F2's shadow-root fix, #8336 c3c119a466) into …
vjeux Oct 27, 2026
4fe659b
Merge the bases (#8320 53a1e695ef) into the AppShell scroll edge effect
vjeux Oct 27, 2026
797762d
Merge the AppShell scroll edge effect (#8142 4fe659b545: the review f…
vjeux Oct 27, 2026
98fded9
Merge NavigationStack's base (#8204 ed597b07b4: traceBars reads trans…
vjeux Oct 27, 2026
297d301
Merge the bases (#8142 4fe659b545: the review fixes; #8204 ed597b07b4…
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/appshell-adaptive-height.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[feat] AppShell accepts `height="adaptive"`: `fill` with a mouse or trackpad, `auto` under a finger (a coarse primary pointer, through the shared touch resolver). With `fill`, the main region scrolls inside a viewport-high shell, so a phone browser never sees the page scroll: its toolbar or address bar does not minimize, and on iOS a status-bar tap does not return to the top. `adaptive` lets the page scroll under the sticky header under a finger and keeps independent scroll regions with a mouse. The root now reports which element scrolls in `data-scroll-owner` (`content` for the main region, `document` for the page), for code that listens to or restores the scroll position. `fill` and `auto` are unchanged, and `fill` stays the default.

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

[feat] AppShell: under a finger (one touch model on every touch device), when the page scrolls (`height="auto"`, or `height="adaptive"` on a touch device), the pinned header looks like an iOS 26 bar. It paints no background of its own and draws no divider. Once the content has moved more than 10px under it, a veil of the header's colour fades in at its top on iOS's measured spring (0.29 s): strongest at the top, gone just below the header. It fades out (0.51 s) when the content comes back. A scroll the program drives (`scrollTo`, a status-bar tap) switches the veil at once instead: on iOS 26.2 a fade that starts on such a scroll makes WebKit drop the header's items for a frame or two. Under Reduce Motion the fades are the animator's 200 ms cross-fade. Where the browser supports `prefers-reduced-transparency` (Safari 26.2 does not yet), Reduce Transparency makes the veil an opaque band ending at the header's bottom edge. With a mouse nothing changes. The springs and the veil's shape are internal measured constants; the veil takes the header's theme colour.

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

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

[experimental] `astryx discover` lists the experimental SearchField component from `@astryxdesign/lab`.

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

[chore] Core's internal entries, reserved for Astryx's own packages, also give Lab components the pan recognizer, the gesture types, the touch presentation queries and the motion math and tuning tables that Core components use. Apps import nothing new.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[chore] Internal: UIControl press tracking with control and cell profiles and the gesture hooks, 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/hooks-is-rtl-element.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[feat] `isRtlElement` is exported from `@astryxdesign/core/hooks` (proposed; pending owner review): whether an element renders right to left, read from its computed `direction` when it is called, for drag, scroll and layout math.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/lab-navigation-stack-cli-discover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/cli': patch
---

[experimental] `astryx discover` lists the experimental NavigationStack and NavigationScreen components from `@astryxdesign/lab`.

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

[feat] In a `List` with `hasDividers`, a touch press hides the dividers on either side of the pressed row, so the pressed row reads as one unbroken highlight; both come back the moment the finger lifts, while the highlight fades. This applies under any finger (a coarse primary pointer); with a mouse the dividers stay drawn.

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

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

@vjeux
8 changes: 8 additions & 0 deletions .changeset/list-selection-hold.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@astryxdesign/core': patch
'@astryxdesign/cli': patch
---

[chore] Internal: under a finger, a list row tapped to push can stay selected while the pushed screen covers it, then deselect as the screen pops, as a UIKit table row does; with a mouse the press releases at the lift as before. The hold that drives it (`List/selectionHold.ts`) is internal to core, so no public export changes. The deselect runs on the compositor, and a divided list keeps the dividers around the held row hidden.

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

[chore] Internal: the scroll edge effect moves to core's internal motion modules and takes its springs, the veil's edge and colour, and the inset of a bar overlaying a scroll container from its caller, so Lab's NavigationStack uses it too; a scroll container's switch is measured from its padding edge in every engine. AppShell's touch bar is unchanged. Not exported from the package entry point.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[chore] Internal: core's UIKit motion tables gain `navigation.inlineTitleRise`: the 15 px a navigation bar's title rises as it fades in, once a large title has scrolled under the bar, measured on iOS 26.2. Not exported from the package entry point.

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

[chore] Internal: core's UIKit motion tables gain the navigation values the lab NavigationStack runs on, each measured on iOS 26.2: `navigation.contentPopHysteresis` (the content back swipe's 27 pt start), `navigation.interactivePopVelocitySamples` (the release velocity averages the last 3), `navigation.interactivePopRubberBand` (past its start the back swipe's screen follows at 0.71 of the finger) and `springs.navigationInteractivePopReturn` (its return when released there), `springs.navigationBackButton` (the back chevron's fade), and `navigation.backChevronPushDelayMs` (when the chevron starts fading in on a push). The message catalog gains `@astryx.navigationStack.back`, the lab NavigationStack's back button label. The tables are not exported from the package entry point.

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

[chore] Internal: the UIKit constants table gains the iOS 26 search bar's values, measured on iOS 26.2: the activation and cancel clock (383 ms on ease-in-ease-out), the stacked field's geometry and its close button's entrance, the navigation bar's fades over an activation, the field scrolling away with the content, the bottom placement's rest above the keyboard and the clear button, each with its source. Lab's SearchField reads them. Nothing public changes: the table is not exported, and themes do not retune it.

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

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

@vjeux
Loading
Loading