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 is fernweh.

  • ui/ is excluded from the cargo workspace.

  • The src-tauri package name is fernweh-tauri, to match the mission’s CI fallback command cargo check -p fernweh-tauri. productName in tauri.conf.json is fernweh.

  • 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