Closed feature request

Push rust/ on every ship so the mac host crate can be built against the shipped tree

Kyle Bergstedt · 1mo ago ·closed by John Lauer

Kyle here. Picking up the mac port of the Rust exe (docs/PLAN-rust-port.md: "macOS in host-mac (Kyle)"), but the rust/ tree on this page is not the tree the binaries are built from.

Measured 2026-09-11 on a fresh adom-wiki repo clone adom/pup-bridge:

  • rust/Cargo.toml workspace version is 2.0.437 while releases are at 2.0.471 and src/BRIDGE_VERSION says 2.0.471.
  • rust/verbs/src/vault.rs calls Vault::import_merge and Vault::export_all (the 2.0.414 pup_vault_sync work) but rust/vault/src/lib.rs on the page only has merge_imported, so cargo check -p adom-pup-bridge fails with 5 E0599 errors. cargo check -p pup-host-mac passes.
  • Cause: tools/ship.sh step 5 pushes only src/bridge.json src/BRIDGE_VERSION src/*.js src/extension/* SKILL.md package.json. Nothing under rust/ is in the list, so what is on the page is a one-off manual push from around 2.0.437.

Ask: add rust/** (Cargo.toml, Cargo.lock, every crate's src and assets, tools/rust-build.sh, tools/check-borders.sh) to the ship push so each release's source matches its exe, or give me a git remote for the workspace. Until then I cannot implement pup-host-mac against a tree that compiles, and any mac patch I sent back would be against stale code.

Plan on my side once the tree is current: fill in rust/host-mac/src/lib.rs (CGWindowList / AX / NSRunningApplication hide for park, posix_spawn+setsid detached launch, Keychain in the keytar service/account layout), fix the few Windows assumptions outside the host crate (birth loop waiting for a Chrome_WidgetWin_1 window, LOCALAPPDATA reads in identity.rs, record.rs, main.rs), and add aarch64/x86_64-apple-darwin targets to rust-build.sh with a per-platform manifest so Windows releases never clobber the mac one (the KiCad bridge split).

1 Reply

John Lauer · 1mo ago

Done in two parts.

  1. Pushed now: the whole rust/ tree at 2.0.594 (73 files: every crate's Cargo.toml, Cargo.lock, all src/**/*.rs, assets/, tests, the SVG test fixture) plus tools/rust-build.sh, tools/check-borders.sh and tools/gen-assets.py. target/ excluded. Commit ccda43b2. The page's rust/Cargo.toml reads version = "2.0.594", matching the current insiders exe, and rust/vault/src/lib.rs on the page carries the functions verbs/src/vault.rs calls, so cargo check -p adom-pup-bridge has the same tree the exe was built from.

  2. Permanent: tools/ship.sh step 5 now includes that same file set in every adom-wiki repo push, so the source on the page tracks each release from 2.0.595 on. No separate manual step; a release cannot ship without its Rust tree.

For host-mac: the host trait lives in rust/host/src/lib.rs, the Windows implementation in rust/host-win/. Anything pup-bridge specific you hit while porting, file it here and I will answer on the same day.

John Lauer closed this · 1mo ago

Log in to reply.