1.9 KiB
1.9 KiB
Tauri 2.0 Frontend Design (Bevy Alternative)
Date: 2026-02-12
Goal
Add a Tauri 2.0 frontend path as an alternative to Bevy while keeping the existing Bevy implementation and API behavior.
New Components
crates/sprimo-runtime-core- shared runtime bootstrap for config/snapshot/API/channel setup
- shared command-to-snapshot/config application
crates/sprimo-tauri- Tauri 2.0 desktop shell
- command consumer loop bound to runtime core
- invoke command
current_statefor UI state
frontend/tauri-ui- React + Vite UI shell for status/control surface
Selected Crates
Rust:
tauritauri-buildtauri-plugin-logtauri-plugin-global-shortcut- existing internal crates:
sprimo-runtime-coresprimo-platformsprimo-protocol
Frontend:
reactreact-domvitetypescript@tauri-apps/api
Current State
- Tauri binary crate is scaffolded and starts runtime core + API server.
- Runtime core receives API commands and updates shared snapshot/config state.
- Tauri backend exposes:
current_statecommand (structured snapshot DTO)load_active_sprite_packcommand (manifest + atlas as base64 data URL)runtime:snapshotevent after command application.
- React/Vite frontend now renders sprite atlas frames with PixiJS and updates animation/scale from runtime snapshot events.
- Tauri window drag is implemented for undecorated mode:
- left-mouse drag starts native window dragging
- moved position is synced into runtime-core snapshot/config state.
- Bevy frontend remains intact.
- Runtime QA workflow is defined in
docs/TAURI_RUNTIME_TESTING.md.
Remaining Work
- Move Bevy runtime flow to consume
sprimo-runtime-coreas primary state authority. - Add tray/menu parity and window behavior parity with Bevy path.
- Extend packaging scripts to include
sprimo-tauriartifact path. - Add frontend parity acceptance tests (Bevy vs Tauri state transitions).