ADR-0001: Workspace layout & toolchain
Status |
Accepted |
|---|---|
Area |
Build & tooling |
Context
The mission file was delivered into an existing tv-remote directory, while the product itself is fernweh — so the repo root folder and the workspace/app name diverge and must be reconciled.
The ui/ crate targets wasm32-unknown-unknown and is built by Trunk, so it cannot be compiled for the host triple like the rest of the crates.
The mission’s CI fallback command is cargo check -p fernweh-tauri, which constrains how the src-tauri package must be named.
Toolchain compatibility and current-at-build-time dependency majors also had to be pinned.
Decision
-
Repo root folder is
tv-remote/, and the workspace/app name isfernweh. -
ui/is excluded from the cargo workspace. -
The
src-tauripackage name isfernweh-tauri, to match the mission’s CI fallback commandcargo check -p fernweh-tauri.productNameintauri.conf.jsonisfernweh. -
Use Edition 2021 (not 2024) for maximum toolchain compatibility.
-
Use thiserror v2 — the current major at build time.
Consequences
Keeping ui/ out of members means cargo test --workspace only compiles host-buildable crates (tv-core, tv-mock, fernweh-tauri) and never tries to build the wasm frontend for the host triple:
cargo test --workspace
The src-tauri package name aligns with the mission’s CI fallback:
cargo check -p fernweh-tauri