fix(release): package built-in computer-use files inside the TUI crate - #5890
Conversation
Cargo publication of v0.9.12 stopped at codewhale-tui after 18 crates: its 16 include_str! paths reached outside the package root, so the verified tarball could not compile. Move the existing plugin into the TUI package and update every source, test, CI, documentation, and ignore reference. Keep one canonical bundle, with all 16 embedded runtime files byte-identical to the v0.9.12 release payload. Validation: - Original cargo publish --locked -p codewhale-tui: FAIL, 16 missing-file errors; Cargo refused the upload. - Corrected cargo package --locked --allow-dirty -p codewhale-tui: PASS, including compilation of the unpacked library and binary. - npm test in crates/tui/plugins/computer-use: 31 passed; 0 failed. - Embedded payload comparison: 16/16 original files identical in source and in the verified Cargo tarball. - cargo fmt --all -- --check: PASS. - Coordination npm test && npm run check:web gate: unavailable here; this Rust repository defines neither root script (both report Missing script). No broad-suite or hosted-CI pass is claimed. This is a local packaging repair based on dcd4c20. It does not move the published v0.9.12 tag or alter the already-published release binaries.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_0ea83933-6d7c-4dd9-8a31-10eb3f72eba7) |
|
Claude finished @Hmbown's task in 2m 8s —— View job Claude's Review
SummaryThis is a clean, narrowly-scoped fix: it moves the Correctness verification
I was not able to execute Other checks
No issues found. This looks like a straightforward, correct packaging fix. |
There was a problem hiding this comment.
🔵 Needs a closer look
Confirmed runtime bugs include a destructive temp-dir deletion in hdc file reads and incorrect mouse-down behavior on Windows/Linux backends.
Pull request overview
This PR fixes a Cargo packaging issue by relocating the built-in computer-use plugin bundle under the codewhale-tui crate so its embedded/runtime files are included in the published crate tarball, and updates references + CI/tests accordingly.
Changes:
- Move/update all references to the bundled plugin path to
crates/tui/plugins/computer-use(TUI product catalog, docs, tests). - Add/relocate the plugin’s Node-based test suites, smoke scripts, and MCP server sources under the TUI crate.
- Update repo ignore + CI workflow to run the plugin tests from the new location.
File summaries
| File | Description |
|---|---|
| crates/tui/src/tui/views/extensions.rs | Updates plugin source reference path shown in the TUI UI/catalog. |
| crates/tui/src/plugins/manifest.rs | Adjusts bundled-plugin validation test to new in-crate path. |
| crates/tui/src/plugins/builtin.rs | Updates embedded file include paths and docs to in-crate bundle location. |
| crates/tui/plugins/computer-use/tests/server-protocol.test.mjs | Adds end-to-end MCP stdio protocol tests against a real server process. |
| crates/tui/plugins/computer-use/tests/registry.test.mjs | Adds registry persistence/validation tests for multi-computer support. |
| crates/tui/plugins/computer-use/tests/manifest.test.mjs | Adds packaging/contract validation for plugin.json + mcp.json + bundle layout. |
| crates/tui/plugins/computer-use/tests/exec-transport.test.mjs | Adds exec/transport safety tests (timeouts, ENOENT handling, path safety). |
| crates/tui/plugins/computer-use/tests/backends.test.mjs | Adds backend coverage tests (harmony parsing, linux fail-closed probing, win32 surface). |
| crates/tui/plugins/computer-use/src/transport.mjs | Implements transport/executor selection and ssh/hdc support for remote execution. |
| crates/tui/plugins/computer-use/src/tools.mjs | Defines the single source of truth for tool schemas and name mappings. |
| crates/tui/plugins/computer-use/src/remote-runtime.mjs | Provides a consistent exec facade for local vs. remote agent runtime. |
| crates/tui/plugins/computer-use/src/registry.mjs | Implements the on-disk computer registry and active-computer switching semantics. |
| crates/tui/plugins/computer-use/src/exec.mjs | Adds dependency-free process execution helper (spawn + timeout + capture). |
| crates/tui/plugins/computer-use/src/backends/win32.mjs | Adds Windows backend implementation via PowerShell/.NET + user32 input. |
| crates/tui/plugins/computer-use/src/backends/linux.mjs | Adds Linux backend implementation (X11/Wayland tool probing + actions). |
| crates/tui/plugins/computer-use/src/backends/harmonyos.mjs | Adds HarmonyOS backend implementation via hdc + uitest + snapshots. |
| crates/tui/plugins/computer-use/src/backends/darwin.mjs | Adds macOS backend implementation (JXA + screencapture + CoreGraphics). |
| crates/tui/plugins/computer-use/skills/recording/SKILL.md | Adds recording-focused skill documentation for the plugin toolset. |
| crates/tui/plugins/computer-use/skills/computer-use/SKILL.md | Adds core “computer-use” skill documentation and usage guidance. |
| crates/tui/plugins/computer-use/scripts/smoke.mjs | Adds an end-to-end local smoke runner that produces receipts. |
| crates/tui/plugins/computer-use/README.md | Updates bundle location documentation to the in-crate path. |
| crates/tui/plugins/computer-use/plugin.json | Adds the plugin manifest describing the bundle + Codewhale extension metadata. |
| crates/tui/plugins/computer-use/package.json | Adds Node test/smoke scripts and engine requirements for the plugin bundle. |
| crates/tui/plugins/computer-use/mcp/server.mjs | Adds the MCP stdio server implementation (tool dispatch, state, switching). |
| crates/tui/plugins/computer-use/mcp.json | Adds MCP server declaration (stdio node entrypoint) for consumers. |
| crates/tui/plugins/computer-use/commands/computer.md | Adds the /computer command definition and behavioral contract. |
| crates/tui/plugins/computer-use/agent.mjs | Adds the ssh remote agent with an explicit allow-list. |
| .gitignore | Updates ignore path for plugin smoke receipts under the new location. |
| .github/workflows/ci.yml | Updates CI to run plugin npm test from the new in-crate directory. |
Review details
- Files reviewed: 5/29 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Codewhale review
PR moves the embedded computer-use plugin bundle from the repository-root plugins/computer-use directory into crates/tui/plugins/computer-use and updates the include_str! path, manifest validation test path, CI path, gitignore path, docs, and UI source reference. The core crate-relative path changes are correct and resolve at compile time.
Findings
- [WARNING] README command block likely still points at the old plugin path (
crates/tui/plugins/computer-use/README.md:96)
The README prose path was updated tocrates/tui/plugins/computer-use, but the adjacent bash usage block is outside the diff and appears unchanged. If it still containscd plugins/computer-use, readers following the documentation from the new location will get an invalid path after the directory move. - [INFO] No full workspace automated test run for this path move
The PR verifiescargo package --lockedand the plugin npm test suite, but does not run the full workspace tests or hosted CI. The change is path-only and low risk, but a workspace test run would provide additional confidence.
Assessment
The core packaging fix is correct: the embedded files now live under the TUI crate root, and the updated include_str! and manifest test paths resolve correctly from crates/tui. CI, gitignore, and UI reference updates are consistent. Before merging, confirm the README command block and any other references to the old plugins/computer-use path were updated; otherwise this is low risk.
Advisory review by Codewhale (codewhale review --pr 5890 --post, head 05241f4095462bcd62fff84709f0a811bafae7d4). Line-specific findings are also posted as inline review comments; mechanical fixes arrive as committable suggestions you can apply from the Files tab. CODEOWNERS approval still governs merge.
Summary
Cargo could not publish
codewhale-tui@0.9.12: its 16 embedded computer-use files lived outside the crate root and were missing from the package tarball. Move the existing bundle into the TUI crate and update its source, test, CI, documentation, and ignore paths. All 16 embedded runtime files remain byte-identical to the original release.The founder approved publishing the repaired TUI crate from this commit while preserving the original
v0.9.12tag and release binaries. This PR brings that packaging correction onto main.Testing
cargo package --locked -p codewhale-tui -p codewhale-app-server -p codewhale-cli: passes, including unpacked package builds.npm test: 31 passed, 0 failed.cargo fmt --all -- --check: passes.npm testandnpm run check:webscripts do not exist in this Rust repository.No-Issue: immediate packaging defect reproduced and repaired during the approved v0.9.12 registry publication.
Note
Low Risk
Path and reference updates for an existing embedded bundle; no logic or security-surface changes beyond fixing crate publish layout.
Overview
Fixes
codewhale-tuicrate packaging so the 16include_str!-embedded computer-use runtime files live under the crate atcrates/tui/plugins/computer-useinstead of repo-rootplugins/computer-use, whichcargo packageomitted from the publish tarball.builtin.rsnow embeds from../../plugins/computer-use/(in-crate). CI runs plugin tests from the new path;.gitignore, README, manifest validation test, and Extensions UIsource_referencestrings are updated to match. No runtime behavior change—path and packaging alignment only; bundle content stays the same.Reviewed by Cursor Bugbot for commit 05241f4. Bugbot is set up for automated code reviews on this repo. Configure here.