mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
Both hosts routed verbs themselves and both policies enumerated their own actions, and all four drifted. Web sent `swipes` to scrollable containers only, so swipe-to-dismiss on a list row was reachable on native and unreachable on web; the model policy folded gestures its own way and could not reach what the seeded picker drew. A host now reports facts about every element and never decides which verb may act on it: targets.ts acceptsTarget owns that for both. pick.ts builtinCandidates is the single enumeration, and the model policy reads it through __sanderlingEnumerateBuiltin__ instead of reimplementing it in Go. Gesture verbs change with it: scrolls stay vertical over scrollable containers, swipes go free-form in all four directions from any element with real bounds. Claude-Session: https://claude.ai/code/session_01Fj4wJUikdABuMQEETwW55J
49 lines
554 B
JSON
49 lines
554 B
JSON
{
|
|
"taps": [
|
|
"save"
|
|
],
|
|
"doubleTaps": [
|
|
"save"
|
|
],
|
|
"longPresses": [
|
|
"save"
|
|
],
|
|
"typing": [
|
|
"amount"
|
|
],
|
|
"scrolls": [
|
|
"root",
|
|
"root",
|
|
"list",
|
|
"list"
|
|
],
|
|
"swipes": [
|
|
"root",
|
|
"root",
|
|
"root",
|
|
"root",
|
|
"save",
|
|
"save",
|
|
"save",
|
|
"save",
|
|
"cancel",
|
|
"cancel",
|
|
"cancel",
|
|
"cancel",
|
|
"amount",
|
|
"amount",
|
|
"amount",
|
|
"amount",
|
|
"list",
|
|
"list",
|
|
"list",
|
|
"list",
|
|
"row",
|
|
"row",
|
|
"row",
|
|
"row"
|
|
],
|
|
"pressKeys": [],
|
|
"waitOnce": []
|
|
}
|