Add cua-driver-bin, the Cua computer-use driver, to the fast ring - #306
Conversation
cua-driver ships prebuilt from the trycua/cua monorepo release feed. The declarative github provider reads a release feed as a single product and trips on the monorepo's foreign and hyphenated tags, so a bespoke .omarchy/upstream.sh selects the newest stable cua-driver-rs release by tag shape (upstream flags every driver release prerelease; nightlies are distinguished by tag prefix instead) and reads its checksums.txt manifest. The vendor tree stays together under /usr/lib/cua-driver with a /usr/bin symlink, matching upstream's own layout: the CLI resolves its cursor-theme compiler as a sibling of /proc/self/exe. Verified by installing the built package into a clean archlinux:base container and exercising the CLI.
7b5e51c to
d9127d7
Compare
|
Reviewed exact head Medium — On a disposable credential-free Omabot worker, exact hashes of all four changed files matched this head; the three repository self-tests passed; live sync was a no-op at 0.23.2; an older-version fixture advanced to 0.23.2 with both manifest checksums; and the x86_64 package built, installed through pacman, passed Codex GPT-5.6 Sol XHigh supplied the self-update mechanism as the second opinion; process-level independence is not guaranteed because the named T3 reviewer shares the readable workspace. Its initial Nothing was pushed. Waiting on the author to disable the vendor update path; I did not approve, request changes, or merge. 🤖 Generated by GPT-5.6 Sol XHigh in T3 Code. Reviewed by Codex GPT-5.6 Sol XHigh. |
cua-driver update --apply pipes the vendor installer into bash, which installs a second copy under ~/.cua-driver and links it into ~/.local/bin, stepping around pacman and the repository's release gate. Upstream offers no switch for that path, and a /usr/bin wrapper would not cover it either: the MCP configurations the binary generates record the resolved executable. prepare() rewrites the installer URL inside the binary, in place and at equal length, to file:///usr/lib/cua-driver/pm.sh, a stand-in that declines and names pacman. The build asserts the URL appears exactly twice before the rewrite and not at all after it, so an upstream change to the updater stops the build instead of shipping a live self-updater. Verified in a clean archlinux:base container: pacman -Qkk is clean, the CLI and cursor-theme helper still run, and on the nightly channel update --apply prints the notice, exits 1, and creates nothing under ~/.cua-driver/packages or ~/.local/bin.
|
Re-reviewed current head Medium — On a fresh disposable credential-free Omabot worker, exact hashes of all five package files matched this head and all three offline repository self-tests passed. The x86_64 package built in the repository's Docker builder, installed through pacman with 21 clean owned files, and preserved the ELF size and build ID while changing exactly 50 bytes: both vendor URLs were absent and both pacman-stub URLs present. The stub exited 1, named pacman, and created no user-local binary or release tree. A checksum-validating structural aarch64 build also passed with both replacements in its AArch64 ELF; native ARM execution was not run. The live unauthenticated sync and full Codex GPT-5.6 Sol XHigh classified the prior finding as fixed narrowly and supplied the remaining discovery/channel mismatch; process-level independence is not guaranteed because the named T3 reviewer shares the readable workspace. Its binary-corruption, architecture-selection, and unpatched-installer-path suspicions were rejected after direct verification. Nothing was pushed. Waiting on the author to integrate or disable update discovery; I did not approve, request changes, or merge. 🤖 Generated by GPT-5.6 Sol XHigh in T3 Code. Reviewed by Codex GPT-5.6 Sol XHigh. |
Chessing234
left a comment
There was a problem hiding this comment.
nice work blocking the vendor curl|bash self-updater via binary url rewrite + pm.sh stub. checksums look solid.
Build on #306 without replacing its package or updater workaround. Exhaust the component feed before selecting a release and cover quarantine, version ordering, invalid input, and transport failures with offline fixtures.
Feed GitHub release pages to jq through stdin so real pages do not exceed Linux argument limits. Generate an oversized fixture response in the curl mock, and run hook fixtures against a temporary pinned PKGBUILD so routine package updates do not break repository self-tests. Co-Authored-By: Codex GPT-6 XHigh <noreply@openai.com>
|
Reviewed unchanged head The earlier comment's remaining updater-discovery finding was overstated as medium and merge-blocking. It is a low-severity UX mismatch: vendor checks can recommend releases before pacman offers them, but applying that recommendation safely fails with pacman guidance. On this run's disposable Omabot worker, the actual The unchanged 0.23.2 x86_64 package built through the repository builder and installed with pacman; CLI/version, cursor-theme helper, session-aware doctor and a standard-permission daemon call worked. With #347's fixes, all three native repository self-tests passed, and a separate live-sync copy advanced to quarantined 0.24.0 with both checksums and retained passing tests. Native ARM execution and GUI input were not tested. The optional plugin in #346 still needs its own ABI and compositor qualification. Codex GPT-6 XHigh reviewed the inherited updater workaround and the final #347 changes with no remaining concrete blocker. Process-level independence is not guaranteed because the named T3 reviewer shares the readable filesystem; the reported failure and containment paths were verified on the worker. Upstream trycua/cua#3636 is merged, but keep the packaging workaround until a release containing it reaches the package through the normal update gate. #347's final-head Arch self-tests pass. Waiting on the maintainer's merge decision, starting with #347. No merge performed. 🤖 Generated by GPT-6 in T3 Code. Reviewed by Codex GPT-6 XHigh. |
Fix Cua Driver release discovery across feed pages
|
Fresh Omabot review after #347 merged: no new blocking findings at Current
Codex GPT-6 XHigh reviewed the full package and current-master integration without a concrete defect. Its dependency question was checked against actual ELF dependencies and the clean-container install. The named T3 reviewer shares a readable filesystem, so process-level independence is not guaranteed. Current CI passes both self-tests and build-isolation. Native ARM execution and GUI input were not tested; this does not qualify the separate #346 Hyprland plugin. No source changes were needed. Ready for the maintainer's merge decision; no merge performed. 🤖 Generated by GPT-6 in T3 Code. Reviewed by Codex GPT-6 XHigh. |
Adds Cua Driver as a vendor-tracked binary package for x86_64 and aarch64 in the fast ring, with a 24-hour minimum release age. The monorepo's release feed interleaves several products and marks Driver releases as prereleases, so a package hook scans the paginated feed and selects the highest eligible version with a stable Driver tag. It validates publication dates and both architecture checksums, rejects incomplete scans, and handles large release pages through stdin.
The vendor payload stays together under
/usr/lib/cua-driver, exposed through/usr/bin/cua-driver, because the CLI resolves its cursor-theme compiler relative to its real executable. The SDK library, Node module, ABI header and GNOME helper extension ship alongside it. This package does not include the optional Hyprland plugin proposed in #346.The packaged 0.23.2 binary's vendor updater would otherwise install another copy under the user's home directory, bypassing pacman and the release-age gate.
prepare()replaces both embedded installer URLs with an equal-length URL for the packagedpm.shrefusal stub. Occurrence-count and file-size checks stop the build if the expected rewrite no longer applies. The stub directs updates to pacman; it also covers configurations that invoke the resolved binary directly. Keep the workaround until a release containing trycua/cua#3636 reaches this package through its normal update path.The existing repository self-test entry point runs deterministic release-hook fixtures against a temporary pinned PKGBUILD, keeping fixture versions independent of future package updates.
🤖 Generated by GPT-6 in T3 Code. Reviewed by Codex GPT-6 XHigh.