mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-01-11 20:00:29 +01:00
73 lines
3.3 KiB
Markdown
73 lines
3.3 KiB
Markdown
# 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/`)
|
|
1. **yaak-git** (3 files) - Moderate complexity
|
|
2. **yaak-plugins** (13 files) - **Hardest** - deeply integrated with Tauri for plugin-to-window communication
|
|
3. **yaak-sync** (4 files) - Moderate complexity
|
|
4. **yaak-ws** (5 files) - Moderate complexity
|
|
|
|
### Pattern for Decoupling
|
|
1. Remove Tauri plugin `init()` function from the crate
|
|
2. Move commands to `yaak-app/src/commands.rs` or keep inline in `lib.rs`
|
|
3. Move extension traits (e.g., `SomethingManagerExt`) to yaak-app or yaak-tauri-utils
|
|
4. Initialize managers in yaak-app's `.setup()` block
|
|
5. Remove `tauri` from Cargo.toml dependencies
|
|
6. Update `crates-tauri/yaak-app/capabilities/default.json` to remove the plugin permission
|
|
7. Replace `tauri::async_runtime::block_on` with `tokio::runtime::Handle::current().block_on()`
|
|
|
|
## Key Files
|
|
- `crates-tauri/yaak-app/src/lib.rs` - Main Tauri app, setup block initializes managers
|
|
- `crates-tauri/yaak-app/src/commands.rs` - Migrated Tauri commands
|
|
- `crates-tauri/yaak-app/src/models_ext.rs` - Database plugin and extension traits
|
|
- `crates-tauri/yaak-tauri-utils/src/window.rs` - WorkspaceWindowTrait for window state
|
|
- `crates/yaak-models/src/lib.rs` - Contains `init_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-dev` to test the Tauri app still works
|
|
- Run `cargo run -p yaak-cli -- --help` to test the CLI
|