3.0 KiB
3.0 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)- settings commands:
settings_snapshotlist_sprite_packsset_sprite_packset_scaleset_visibilityset_always_on_top
debug_overlay_visible/set_debug_overlay_visiblecommands for persisted debug panel controlruntime:snapshotevent after command application.
- React/Vite frontend now renders sprite atlas frames with PixiJS and updates animation/scale from runtime snapshot events.
- For
sprite.pngpacks in tauri runtime, frame size is now derived from atlas dimensions with a fixed8x7grid topology to keep splitting stable across packaged asset resolutions. sprite.pnganimation naming now follows row semantics with backward-compatible aliases:- row1:
idle - row2:
happy/love+ aliasactive - row3:
excited/celebrate+ aliassuccess - row4:
sleepy/snoring - row5:
working - row6:
angry/surprised/shy+ aliaserror - row7:
dragging
- row1:
- React/Vite frontend now supports two window modes:
main: transparent overlay sprite renderersettings: pop-out settings window for character and window controls
- 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.
- Windows-first tray/menu MVP is implemented:
Settings(opens/focuses pop-out settings window)Show/HideAlways on toptoggleDebug overlaytoggleQuit
- Bevy frontend remains intact.
- Runtime QA workflow is defined in
docs/TAURI_RUNTIME_TESTING.md.
Remaining Work
- Extend tray/menu implementation beyond Windows-first MVP and close platform parity gaps.
- Add frontend parity acceptance tests (Bevy vs Tauri state transitions).
- Add sprite-pack previews/thumbnails in the settings window character selector.