release: v0.4.10 - #98
Merged
Merged
Conversation
Rust 1.94's clippy flags both WAYLAND_DISPLAY emptiness checks under nonminimal_bool. Replace the double-negated is_some_and forms with is_none_or, which the tree already uses elsewhere and which reads as the intended "absent or empty" test. Behavior is unchanged; desktop_env_hydration_preserves_explicit_native_x11 and native_x11_pointer_policy_requires_explicit_x11_without_wayland_display both still pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EEbE7ZggVVhWMTUQQg7dAo
Roll the unreleased windowing and input hardening from #96 into 0.4.10 and bump the Cargo, lockfile, npm, and advertised MCP server versions to match. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EEbE7ZggVVhWMTUQQg7dAo
There was a problem hiding this comment.
This is an auto review done by revuto.
Revuto completed the review and found no evidence-backed concerns.
Rust 1.98's clippy adds chunks_exact_to_as_chunks, which fails the -D warnings build on the COSMIC toplevel state decoder. CI tracks stable, so this broke on a toolchain bump rather than on any source change; the line itself predates the current release scope. Use as_chunks::<4>() so the iterator yields fixed-size arrays directly, which also removes the try_into().unwrap() panic path. Remainder handling is unchanged: both forms drop a trailing partial word. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EEbE7ZggVVhWMTUQQg7dAo
There was a problem hiding this comment.
This is an auto review done by revuto.
Revuto completed the review and found no evidence-backed concerns.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cuts 0.4.10, carrying the windowing and input hardening merged in #96, plus two lint fixes.
Changes
chore(lint): simplify negated session-env predicatesRust 1.94's clippy flags both
WAYLAND_DISPLAYemptiness checks undernonminimal_bool.src/diagnostics.rs—preserve_native_x11src/server.rs—native_x11_xdotool_pointer_sessionBoth become
is_none_or(|value| value.trim().is_empty()), the idiom already used insrc/windowing/target.rsandsrc/server.rs. Behavior is identical;desktop_env_hydration_preserves_explicit_native_x11andnative_x11_pointer_policy_requires_explicit_x11_without_wayland_displaycover the two call sites and both still pass.Scope note: this lint is not a CI blocker. Verified against 1.98 with the original code restored,
nonminimal_boolproduces zero hits — the lint only fires on 1.94 and was relaxed upstream since. This is a readability cleanup that happens to be clean on both toolchains, not a fix for a failing check.fix(cosmic): read toplevel state words without a chunk unwrapThis one is the CI blocker. Rust 1.98's clippy adds
chunks_exact_to_as_chunks, which fails the-D warningsbuild atsrc/bin/computer-use-linux-cosmic.rs:705. CI pins the toolchain action by SHA but resolvesstable, so this broke on the 1.98 bump rather than on any source change — the line dates to May 2026 and is untouched by #96 and by this release.as_chunks::<4>()yields fixed-size arrays directly, sou32::from_ne_bytestakes them withouttry_into().unwrap(), removing a panic path. Remainder handling is unchanged — both forms drop a trailing partial word. The COSMIC binary's 7 tests pass.release: v0.4.10Rolls the
Unreleasedblock into## [0.4.10] - 2026-08-22with compare links updated, and bumps the four version sites CI cross-checks:Cargo.toml,Cargo.lock,package.json, and the advertised MCP server version literal insrc/server.rs. Patch bump — the released scope is all fixes.Verification
Re-run locally on Rust 1.98.0, matching CI, after reproducing the clippy failure exactly:
cargo fmt --all -- --checkcargo clippy --locked --all-targets -- -D warningscargo check --locked --all-targetscargo test --bin computer-use-linux-cosmicRUSTDOCFLAGS="-D warnings" cargo doc --locked --no-deps --document-private-itemscargo publish --dry-run --lockedv0.4.10scripts/mcp_safety_check.py0.4.100.4.10=0.4.10Two sandbox-only failures, both reproducing identically on
a8f2f30and pre-merge663930f, neither related to these changes:command_runner/ydotoolprocess-group reaping tests — this container does not reap orphaned process groups.install_sh_test.sh→non-systemd host requires uinput access— asserts achmod 000permission denial, impossible under uid 0.CI runs non-root with working reaping and has already confirmed both:
install.sh regressionsandcargo testare green here.After merge
Tagging
v0.4.10triggersrelease-binary,publish-crate,publish-npm, andvalidate-published.