mirror of
https://github.com/lahfir/agent-desktop.git
synced 2026-07-31 11:19:16 +00:00
20 KiB
20 KiB
Changelog
0.6.0 (2026-07-26)
⚠ BREAKING CHANGES
- private artifacts on Windows are no longer written through ACL-hardened handles. That hardening guarded refmap, trace, and session files on a platform where no command can produce them, and it had never executed. It returns in Phase 2.1, built on Windows against a CI lane that runs it, under the constraints recorded in
docs/solutions/best-practices/never-ship-platform-code-that-ci-cannot-execute.md.
Refactoring
- remove speculative Win32 private-file layer from core, add real Windows/Linux test lanes (#106) (8ad66b8)
- deleted 1,062 LOC of Windows-only
unsafeWin32 file I/O fromagent-desktop-coreand dropped thewindows-sysdependency; Windows now uses the same portablestd::fspath as every other non-unix target - this is a structural fix, not a downgrade:
std::fs::OpenOptionsdefaultsshare_modetoFILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, precisely the flag the deleted code omitted and the cause of its sharing-violation failures cargo testnow runs on windows-latest and ubuntu-latest, so every platform-conditional branch in core is executed on each PR instead of only compiled
- deleted 1,062 LOC of Windows-only
Bug Fixes
- the new platform lanes exposed four pre-existing defects that were unreachable while only macOS ran tests:
- trace files were opened append-only while
trace.rslocks that handle; WindowsLockFileExrejects append-only handles, so all trace writing failed withAccess is denied refs_locktests placed lock files directly in/tmp, which is root-owned and world-writable, so the private-parent check correctly refused them- a trace test interpolated a raw path into a JSON string literal, so Windows paths produced invalid escapes and the event was silently dropped instead of skipped
- the default
SystemOps::permission_reportreturnedDenied, so CLI preflight reportedPERM_DENIEDon Windows and Linux when the adapter is simply unimplemented; it now reportsUnknownand surfaces the honestPLATFORM_NOT_SUPPORTED, including over the FFI
- trace files were opened append-only while
- the pinned toolchain gained
clippyandrustfmt, whichprofile = "minimal"had omitted
0.5.0 (2026-07-20)
⚠ BREAKING CHANGES
- default-on auto-wait changes the timing of every previously-untouched ref-action call (bounded 5000 ms default;
--timeout-ms 0restores single-shot).ENVELOPE_VERSIONis now2.1(adds theAPP_UNRESPONSIVEcode and process state in error details). FFI ABI major is3(append-only struct evolution;wait --eventis intentionally not exposed over FFI). The legacy string clipboard API is removed in favor of typed content.key-down/key-upfail closed until daemon-owned held input exists.close-appverifies termination and the osascript fallback path is removed.--textmatching is subtree containment:find --text X --firstreturns the outermost matching container.
Features
- implement Playwright-grade foundation contract (3f32272)
- default-on auto-wait: every ref action waits for actionability (visible, enabled, stable, unoccluded) before dispatching, under a bounded budget
- live
findlocator plus a serializableLocatorQuery, and honestis --property visible - three-way
hit_testocclusion gate and corescroll_into_viewbefore element actions list-displaysand honest--screenwith per-display scale factor;native_ididentity spine; window-id-first resolutionProcessStateclassification with theAPP_UNRESPONSIVEcode (envelope2.1); typedActionStepdelivery tierLaunchOptions(--arg/--env/--cwd/--no-attach); baseline-diff desktop signals viawait --event- typed clipboard (
Text/Image/FileUrls); mouse modifier chords and amouse-wheelprimitive - capability-supertrait
PlatformAdaptersplit withnot_supported()defaults, so Windows and Linux inherit the contract
0.4.7 (2026-07-02)
Features
- add trace viewer and replay artifacts (e3e1872)
0.4.6 (2026-07-02)
Features
- make sessions the first-class trace container (35fa914)
0.4.5 (2026-06-30)
Features
0.4.4 (2026-06-29)
Features
0.4.3 (2026-06-28)
Bug Fixes
0.4.2 (2026-06-27)
Features
0.4.1 (2026-06-26)
Features
- complete FFI C-ABI surface (Phase A): load-time ABI handshake, session-scoped adapter, JSON-envelope command entrypoints (version, status, snapshot, wait, execute-by-ref), an optional tracing log callback, and a unified error-envelope contract (#67)
0.4.0 (2026-06-24)
⚠ BREAKING CHANGES
- the version command no longer accepts --json; it always emits the standard JSON envelope.
Refactoring
0.3.1 (2026-06-21)
Bug Fixes
0.3.0 (2026-06-20)
⚠ BREAKING CHANGES
- ffi:
AD_POLICY_KIND_PHYSICALis nowAD_POLICY_KIND_HEADED(discriminant2unchanged). - ffi:
AdRefEntryandAdDragParamsinclude additional reliability metadata; C ABI consumers must zero-initialize and validate withAD_REF_ENTRY_SIZE,AD_DRAG_PARAMS_SIZE, and thead_*_size()accessors. close-appgraceful responses now return{ "method": "graceful", "requested": true }instead of claimingclosed: truebefore the app has exited.
Features
- add Playwright-grade ref reliability with strict late resolution, session-scoped snapshots, deterministic stale/ambiguous target handling, and skeleton drill-down preservation (#54).
- add Playwright-style headed/headless interaction policy: accessibility-first dispatch remains default, while
--headedenables focused physical fallbacks only when needed (#54). - add retrying wait predicates, JSONL traces with secret redaction, richer actionability reports, and shared CLI/FFI execution through the same resolver/actionability/dispatch ladder (#54).
Bug Fixes
- harden macOS ref actions across focus/window raising, disclosure expansion, scroll, drag, numeric set-value, menu detection, stale-ref recovery, protected-process errors, and close-app confirmation (#54).
- fail closed on unsafe fallback ambiguity and stale refs, including symlink-safe refstore/latest-snapshot reads and deadline-bound resolver work (#54).
Performance
- reduce repeated live actionability reads and add deadline-bound resolver behavior, with large-app snapshot and per-command CLI wall-clock gates in the E2E suite (#54).
Tests
- add real-app E2E coverage for headless/headed ref actions, sessions, snapshots, traces, waits, skeleton drill-down, menus, surfaces, drag, expand/collapse, and performance checks (#54).
0.2.3 (2026-06-06)
Bug Fixes
- harden macos ax window fallback (3b266fd)
- resolve fullscreen AX tree retrieval returning ref_count: 0 (a52b7c7)
0.2.2 (2026-06-02)
Bug Fixes
0.2.1 (2026-05-23)
Bug Fixes
- stabilize empty accessibility identity refs (1fb5a7d)
0.2.0 (2026-05-20)
⚠ BREAKING CHANGES
- chain execution deadlines now return TIMEOUT instead of ACTION_FAILED when the target app does not respond before the chain deadline.
Refactoring
- unify command execution contracts (1291a9c)
0.1.14 (2026-05-04)
Features
0.1.13 (2026-04-17)
Features
0.1.12 (2026-04-16)
Features
0.1.11 (2026-03-03)
Bug Fixes
- show skill install prompt on all success paths (39b2bc6)
0.1.10 (2026-03-03)
Bug Fixes
- add clawhub login step before sync in CI (208af12)
0.1.9 (2026-03-03)
Features
0.1.8 (2026-03-01)
Features
- add electron/web app compatibility for accessibility tree traversal (a19c1b5)
- implement --compact flag to collapse single-child unnamed nodes (4a300c8)
0.1.7 (2026-02-28)
Features
- add notification command types, adapter trait, and CLI wiring (c5b05ba)
- add notification management commands (macOS) (b1fd368)
- macos: add NC session RAII guard and notification adapter wiring (0d55c21)
- macos: implement dismiss and notification action commands (53d697d)
- macos: implement notification list via AX tree traversal (53549a3)
Bug Fixes
- macos: remove AXPress from dismiss action list (27ef4f3)
- macos: restore frontmost app after notification center interaction (3881bc8)
- macos: use pgrep and async osascript for NC lifecycle (9797585)
0.1.6 (2026-02-24)
Bug Fixes
- handle null bounds in refmap and improve sidebar click resolution (d4197e8)
0.1.5 (2026-02-23)
Features
- add fallback chains for set-value, clear, focus, scroll-to, type and post-action state hints (11f8da0)
- add structured verbose logging across all layers (c7316e8)
Bug Fixes
- add dwell time before drag release for drop target recognition (2a52d62)
0.1.4 (2026-02-23)
Features
- add agent-desktop skill for universal AI agent support (ef45135)
- add Claude Code skills for agent-desktop automation (ad91cd3)
0.1.3 (2026-02-23)
Bug Fixes
- correct GitHub Release download URL and simplify tag format (8f66a93)
- include README and CHANGELOG in npm package (084fc8c)
Performance
- use curl for binary download in postinstall (ebafb71)
0.1.2 (2026-02-23)
Bug Fixes
- use macos-latest for both build targets (91c7677)
0.1.1 (2026-02-23)
Features
- 10-step scroll chain, focus guards, enhanced click chain, bounds fix (595ccb6)
- add 19 new commands, AX-first rewrites, LOC compliance (d3f7e03)
- add 19 new commands, AX-first rewrites, LOC compliance (eca04e8)
- add release automation with GitHub Releases and npm distribution (18fc50c)
- add structural hints to splitter columns in snapshots (48f8470)
- AX-first right-click chain with inline context menu capture (cddc5d3)
- Phase 1 foundation — workspace scaffold, core engine, macOS adapter, 31 commands (a346f24)
- smart AX-first click chain + macOS crate restructure (4616c8f)
- surface-targeted snapshot, menu wait, list-surfaces command (39178b2)
Bug Fixes
- add menubar surface, fix press --app crash and modifier mapping (a231962)
- address code review findings (double-free, CF leaks, injection) (2f495ff)
- align error codes with spec (APP_NOT_FOUND, PERM_DENIED) and add -i shorthand (6dc567a)
- ancestor-path cycle detection + CGEvent click fallback (198d7d7)
- detect open menus via AXMenuBarItem.AXSelected, not AXMenus attribute (7f0d610)
- make all 30 commands work end-to-end on macOS (1d98ab8)
- remove AXShowDefaultUI from activation chain, fix child walk (74242f5)
- resolve all 47 code review findings from Phase 1 audit (218503a)
- right-click uses AXShowMenu; context menus detected via focused element (2c9aee3)
- suppress dead_code lint on BatchCommand deserializer struct (608d4aa)
- use simple release strategy for workspace version bumps (0ab78dd)