tdccccc_arxiv-daily/docs/rust-development.md
Da-Chuan Tian 140451550a docs(rust): record standalone release readiness
Add user operations and maintainer guides covering Desktop/headless setup, migration, backup, service management, troubleshooting, privacy, dependency policy, soak, release candidates, and cutover rollback.\n\nRecord a requirement-level P7 evidence matrix with Linux measurements and explicitly leave Windows, macOS, real-user migration, long-duration soak, prerelease, and authorized release gates unresolved. Update goal and P7 plan status without claiming completion.\n\nVerified current Linux release binaries by rebuilding the deb and passing packaging/linux/smoke-deb.sh; cargo deny and actionlint also pass.
2026-07-14 08:44:44 +08:00

1.8 KiB

Rust standalone development

The standalone rewrite is a pure Rust Cargo workspace. Building and testing it does not require Node.js, Python, a JVM, Electron, or a WebView runtime.

Toolchain

Install Rust 1.92 or newer with rustfmt and clippy. The repository's rust-toolchain.toml selects the stable toolchain and these components automatically when using rustup.

Common commands

cargo check --workspace
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo deny check

The binaries can be inspected with:

cargo run -p arxiv-dailyd -- --help
cargo run -p arxiv-dailyctl -- --help
cargo run -p arxiv-daily -- --help

Headless setup and operational commands are documented in Headless daemon and CLI.

Desktop, migration, backup, privacy, and troubleshooting are documented in Standalone operations. Architecture maintenance, soak tests, dependency policy, and release-candidate gates are documented in Standalone maintenance.

The compatibility tests use committed, synthetic fixtures under fixtures/legacy/; they never read a live Obsidian Vault.

Workspace boundaries

  • apps/daemon: background process and sole business-data writer;
  • apps/cli: headless control client;
  • apps/desktop: native egui desktop client;
  • crates/domain: stable domain types and validation;
  • crates/protocol: loopback Control API DTOs;
  • crates/storage: redb, atomic files, imports, exports, and migrations;
  • crates/platform: cross-platform application paths;
  • other crates isolate application, pipeline, scheduling, search, and client concerns.

Do not make Desktop or CLI read redb directly. They communicate with arxiv-dailyd through the versioned Control API.