diff --git a/CHANGELOG.md b/CHANGELOG.md index 94f109f..0205945 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.4.9] - 2026-08-12 + ### Fixed - Bounded AT-SPI traversals now use concurrent indexed child reads, count both queued references and failed child lookups against their work budgets, and @@ -435,7 +437,8 @@ pages; also bumps the MCP server's advertised version string to match. - Validated against GNOME 50.1 on Wayland (Ubuntu 25.10). - KDE / Sway / Hyprland untested — see README support matrix. -[Unreleased]: https://github.com/agent-sh/computer-use-linux/compare/v0.4.8...HEAD +[Unreleased]: https://github.com/agent-sh/computer-use-linux/compare/v0.4.9...HEAD +[0.4.9]: https://github.com/agent-sh/computer-use-linux/compare/v0.4.8...v0.4.9 [0.4.8]: https://github.com/agent-sh/computer-use-linux/compare/v0.4.7...v0.4.8 [0.4.7]: https://github.com/agent-sh/computer-use-linux/compare/v0.4.6...v0.4.7 [0.4.6]: https://github.com/agent-sh/computer-use-linux/compare/v0.4.5...v0.4.6 diff --git a/Cargo.lock b/Cargo.lock index fc5c2b8..f9ec15a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -313,7 +313,7 @@ dependencies = [ [[package]] name = "computer-use-linux" -version = "0.4.8" +version = "0.4.9" dependencies = [ "anyhow", "atspi", diff --git a/Cargo.toml b/Cargo.toml index b9243f5..b197d49 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "computer-use-linux" -version = "0.4.8" +version = "0.4.9" edition = "2021" authors = ["Avi Fenesh "] license = "MIT" diff --git a/package.json b/package.json index 8007e8a..aab61e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@agent-sh/computer-use-linux", - "version": "0.4.8", + "version": "0.4.9", "description": "Linux desktop-control MCP server: AT-SPI accessibility trees, Wayland/X11 input, screenshots, and compositor window targeting.", "license": "MIT", "type": "commonjs", diff --git a/src/server.rs b/src/server.rs index e819534..ebc70f1 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1689,7 +1689,7 @@ impl ComputerUseLinux { // The rmcp tool_handler macro only accepts a string literal here, so this // can't be env!("CARGO_PKG_VERSION"); the MCP safety check (CI) fails the // build if it drifts from the Cargo version. - version = "0.4.8", + version = "0.4.9", instructions = "Begin every turn that uses Computer Use by calling get_app_state. If diagnostics report disabled GNOME accessibility, call setup_accessibility before asking the user to retry. Use list_windows/focused_window before targeted keyboard input. If diagnostics report windowing.can_list_windows=false on GNOME, call setup_window_targeting to install the optional GNOME Shell extension backend, then ask the user to log out and back in if the setup report says a shell reload is required. This Linux backend can capture size-bounded screenshots through GNOME Shell or XDG Desktop Portal, read AT-SPI trees with action/value metadata, invoke native AT-SPI actions, set AT-SPI values or editable text, list/focus compositor windows through registered Linux window backends when the session permits it, attach best-effort terminal tty/process metadata to terminal windows, send coordinate or element-targeted click/scroll/drag input through the Wayland remote desktop portal when available, and send layout-safe literal type_text through KDE clipboard integration on Plasma Wayland or through portal keysyms on other Wayland sessions before falling back to ydotool. Screenshot results include width/height for the returned image plus coordinate_width/coordinate_height and scale for desktop coordinate conversion; request more detail with max_width, max_height, max_bytes, format=jpeg, quality, or a smaller target/crop instead of relying on unbounded screenshots. Tools with readOnlyHint=false may mutate local desktop or application state; hosts should require approval for actions that can submit, delete, send, purchase, or overwrite data. For element-targeted actions, prefer element_index from the latest get_app_state result; click, perform_action, and set_value can also use semantic role/name/text/states selectors when the target is unique. type_text and press_key accept optional window_id, pid, app_id, wm_class, title, tty, terminal_pid, terminal_command, or terminal_cwd selectors and refuse targeted input if focus cannot be verified. After targeted keyboard input, results append focused-element feedback from AT-SPI (role, name, editable) and warn when no editable element holds focus — treat that warning as the input not landing. Screenshot, click, and input results warn when the target window or coordinate is partially or fully off-screen; use move_window/resize_window (GNOME Shell extension backend) to bring a window fully on-screen before retrying. scroll accepts the same window targeting and relative coordinates as click. get_app_state returns a compact readiness block by default; pass verbose=true for the full diagnostics dump. Electron apps expose no AT-SPI tree unless launched with --force-renderer-accessibility." )] impl ServerHandler for ComputerUseLinux {}