This workspace hosts the cross-platform WakFocus rewrite built in Rust. The legacy Java client still lives under reference/java-app/ solely as a behaviour reference.
apps/desktop– Tauri desktop shell (Rust backend + Svelte/shadcn frontend) that renders the frameless settings window and notification overlay.crates/core– shared runtime (config, heuristics, async polling) reused by every platform.crates/platform-win/crates/platform-mac– low-level bindings per OS.crates/audio– rodio-based playback for bundled/custom notification sounds.openspec/– specs, proposals, and tasks that describe the desired behaviour.reference/java-app/– copy of the original Java sources (not built or shipped).
# Install dependencies
cd apps/desktop
pnpm install
# Launch the desktop shell with hot reload
pnpm tauri devThe Tauri process bootstraps the shared Rust runtime (wakfocus-core + platform crates) and renders the UI through the bundled Svelte/shadcn frontend. Player-turn notifications open in a dedicated always-on-top window; toggles, dropdowns, and logs live inside the main settings window.
- The Tauri app ships two windows:
main(settings/logs) andnotify(overlay). Both talk to the same runtime over Tauri commands/events. - Install Node.js 18+ and pnpm (
corepack enable pnpm) before running UI commands. Rust 1.78+ is required for the backend crates. - All user-facing toggles persist to
~/.wakfocus/config.json(or the macOS Application Support path) and migrate the legacy.propertiesfile on first launch. - The legacy Java artifacts are not part of the build; keep them untouched unless you need to refresh reference screenshots/specs.
Tauri's bundler now generates signed .app bundles and Windows installers from a single command:
cd apps/desktop
# Create production bundles for macOS + Windows
pnpm tauri buildThe build artefacts land under apps/desktop/src-tauri/target/release/bundle/ (MSI, NSIS, .app, DMG). Follow Apple's notarisation/codesign process on the generated .app if you plan to distribute outside of the local machine.
-
pnpm tauri buildsucceeds for every target OS. - macOS bundle signed/notarised if shipping to other machines.
- Windows MSI verified in a VM before publishing.
-
README.mdand release notes updated with any behaviour changes.