Commit Graph
2 Commits
Author SHA1 Message Date
Alex Jbanca e2ca9c7905 poc(qml-dev): AX-first interaction model + HID safety guards
- suffix-first identifier matching (container names no longer resolve to
  their first descendant)
- scroll: pure-AX scrollbar drive (--to/--by), works on background windows
- click/rightclick/hover/key/type/mouse*: real HID events (postToPid is
  dropped by AppKit/Qt) — auto-activate target, restore cursor after; guarded:
  refuse when the user was active <2s ago, when the app cannot become
  frontmost, or when another window covers the target point
- key: esc/enter/tab/arrows/home/end/page + back/forward (mouse nav buttons)
- skill: interaction hierarchy (pure AX first), popup hot-reload and
  occluded-window screenshot gotchas
2026-07-15 16:42:16 +03:00
Alex Jbanca f67d6c3a1f poc: agent QML dev loop — Storybook + macOS accessibility
- tools/ax: Swift CLI to inspect/drive any app via the AX API (tree/find/
  read/press/set/click/type/screenshot); elements addressed by Qt's
  objectName-derived AXIdentifier
- scripts/storybook-agent.sh: start/status/stop lifecycle for a persistent
  Storybook harness launched directly on a page
- storybook/main.qml: fix -- page-from-command-line (currentPage initial
  property landed on ApplicationWindow instead of the Storybook item)
- .claude/skills/qml-storybook-loop: documented agent workflow

Validated end-to-end on SwapModalPage: objectName addressing, AXPress,
AXValue set (triggers QML bindings), and hot reload of production
SwapModal.qml (~4s edit-to-verified, no rebuild/restart).
2026-07-15 16:42:16 +03:00