agent-desktop/.github
Lahfir 41fc178e5e
feat: uia element wrapper & tree walk (sub-phase 2.2) (#114)
Fills crates/windows/src/tree/ with the four things every later observation sub-phase consumes: an element wrapper with delegated refcounting, a timeout-bounded UIA client and window-root resolver, a tree walk with a cycle guard and honest completeness, and provider-class-conditional CacheRequest batching. Ships the secure-field gate, an out-of-process fixture, committed COM censuses as dev-box evidence, and corrections to docs/phases.md.

Measurement changed the design repeatedly, and each result is a ledger row rather than a silent correction:

- A14-3: the end-of-list discriminator is not inverted - code() 0 with result() None, on both builds.
- A14-4/A14-9: a dead provider is invisible on both the sibling and property axes, so neither carries liveness. Recorded for 2.4, which owns the snapshot path.
- A14-8: IsOffscreen disagrees with itself inside one minimized window, contradicting A1-2 off the managed stack.
- A14-10: 2.1's owned-process COM bootstrap is thread-local behind a process-wide guard.
- A14-11/A14-12: ElementFromHandle against a non-dispatching window hangs rather than timing out, and the bound that stops it is reachable only from CUIAutomation8. There is no fallback to an unbounded client.
- A14-13: UI Automation's client core initialises lazily and not re-entrantly, so concurrent first touches fail with E_FAIL. The accessor serialises that first touch.

Every control was observed failing before being claimed: the cycle guard, the discriminator, the secure-field gate, error redaction, capture normalisation, fixture teardown and both hang bounds.

ObservationOps::observe_tree still returns PLATFORM_NOT_SUPPORTED; no ref is allocated anywhere in crates/windows.
2026-07-28 19:37:28 -07:00
..
ISSUE_TEMPLATE docs: add community health files for GitHub community standards (#83) 2026-06-28 21:41:39 -04:00
workflows feat: uia element wrapper & tree walk (sub-phase 2.2) (#114) 2026-07-28 19:37:28 -07:00
actionlint.yaml feat!: implement Playwright-grade foundation contract 2026-07-20 00:21:38 -07:00
dependabot.yml refactor!: unify command execution contracts 2026-05-19 18:27:08 -07:00
FUNDING.yml chore: add GitHub Sponsors funding config 2026-04-29 20:16:21 -07:00
PULL_REQUEST_TEMPLATE.md docs: add community health files for GitHub community standards (#83) 2026-06-28 21:41:39 -04:00