mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-01-11 06:20:24 +01:00
3.3 KiB
3.3 KiB
Claude Context: Detaching Tauri from Yaak
Goal
Make Yaak runnable as a standalone CLI without Tauri as a dependency. The core Rust crates in crates/ should be usable independently, while Tauri-specific code lives in crates-tauri/.
Project Structure
crates/ # Core crates - should NOT depend on Tauri
crates-tauri/ # Tauri-specific crates (yaak-app, yaak-tauri-utils, etc.)
crates-cli/ # CLI crate (yaak-cli)
Completed Work
1. Folder Restructure
- Moved Tauri-dependent app code to
crates-tauri/yaak-app/ - Created
crates-tauri/yaak-tauri-utils/for shared Tauri utilities (window traits, api_client, error handling) - Created
crates-cli/yaak-cli/for the standalone CLI
2. Decoupled Crates (no longer depend on Tauri)
- yaak-models: Uses
init_standalone()pattern for CLI database access - yaak-http: Removed Tauri plugin, HttpConnectionManager initialized in yaak-app setup
- yaak-common: Only contains Tauri-free utilities (serde, platform)
- yaak-crypto: Removed Tauri plugin, EncryptionManager initialized in yaak-app setup, commands moved to yaak-app
- yaak-grpc: Replaced AppHandle with GrpcConfig struct, uses tokio::process::Command instead of Tauri sidecar
3. CLI Implementation
- Basic CLI at
crates-cli/yaak-cli/src/main.rs - Commands: workspaces, requests, send (by ID), get (ad-hoc URL), create
- Uses same database as Tauri app via
yaak_models::init_standalone()
Remaining Work
Crates Still Depending on Tauri (in crates/)
- yaak-git (3 files) - Moderate complexity
- yaak-plugins (13 files) - Hardest - deeply integrated with Tauri for plugin-to-window communication
- yaak-sync (4 files) - Moderate complexity
- yaak-ws (5 files) - Moderate complexity
Pattern for Decoupling
- Remove Tauri plugin
init()function from the crate - Move commands to
yaak-app/src/commands.rsor keep inline inlib.rs - Move extension traits (e.g.,
SomethingManagerExt) to yaak-app or yaak-tauri-utils - Initialize managers in yaak-app's
.setup()block - Remove
taurifrom Cargo.toml dependencies - Update
crates-tauri/yaak-app/capabilities/default.jsonto remove the plugin permission - Replace
tauri::async_runtime::block_onwithtokio::runtime::Handle::current().block_on()
Key Files
crates-tauri/yaak-app/src/lib.rs- Main Tauri app, setup block initializes managerscrates-tauri/yaak-app/src/commands.rs- Migrated Tauri commandscrates-tauri/yaak-app/src/models_ext.rs- Database plugin and extension traitscrates-tauri/yaak-tauri-utils/src/window.rs- WorkspaceWindowTrait for window statecrates/yaak-models/src/lib.rs- Containsinit_standalone()for CLI usage
Git Branch
Working on detach-tauri branch.
Recent Commits
c40cff40 Remove Tauri dependencies from yaak-crypto and yaak-grpc
df495f1d Move Tauri utilities from yaak-common to yaak-tauri-utils
481e0273 Remove Tauri dependencies from yaak-http and yaak-common
10568ac3 Add HTTP request sending to yaak-cli
bcb7d600 Add yaak-cli stub with basic database access
e718a5f1 Refactor models_ext to use init_standalone from yaak-models
Testing
- Run
cargo check -p <crate>to verify a crate builds without Tauri - Run
npm run app-devto test the Tauri app still works - Run
cargo run -p yaak-cli -- --helpto test the CLI