# FrenoCorp Desktop (Tauri) Cross-platform desktop application built with Tauri v2. ## Architecture ``` src-tauri/ ├── src/ │ ├── main.rs # Application entry point │ ├── lib.rs # Library exports │ ├── menu.rs # Native menu bar │ ├── tray.rs # System tray │ └── updater.rs # Auto-updater logic ├── icons/ # App icons ├── Cargo.toml # Rust dependencies ├── tauri.conf.json # Tauri configuration └── build.rs # Build script ``` ## Platform Support - **macOS**: 10.15+ (Catalina and later) - **Windows**: 10+ (WebView2 required) - **Linux**: Ubuntu 18.04+, Debian 10+, or equivalent (WebKit2GTK required) ## Development ### Prerequisites **macOS:** ```bash brew install pkg-config libappindicator ``` **Windows:** ```bash # WebView2 is automatically installed on Windows 10+ # For development: winget install Microsoft.VisualStudio.2022.Community ``` **Linux:** ```bash # Ubuntu/Debian sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev # Fedora sudo dnf install gtk3-devel webkit2gtk4.0-devel ``` ### Running in Development ```bash # From project root npm run tauri:dev ``` This starts both the Vite dev server and the Tauri application. ### Building for Production ```bash # Build for current platform npm run tauri:build # Build for specific platform npm run tauri:build:macos npm run tauri:build:windows npm run tauri:build:linux ``` ### Output Locations - **macOS**: `src-tauri/target/release/bundle/macos/` - **Windows**: `src-tauri/target/release/bundle/msi/` and `/msi/` - **Linux**: `src-tauri/target/release/bundle/deb/` and `/appimage/` ## Features ### Native Menu Bar Platform-specific menus are implemented in `src/menu.rs`: - File menu (New, Open, Save, etc.) - Edit menu (Undo, Redo, Cut, Copy, Paste) - View menu (Zoom, Fullscreen) - Window menu - Help menu ### System Tray Implemented in `src/tray.rs`: - Show/Hide application - Quit from tray - Platform-specific tray icons ### Auto-Updater Implemented in `src/updater.rs`: - Check for updates on startup - Periodic background checks - Download and install updates - Platform-specific installation logic ### Window State Persistence - Window position and size - Maximized state - Last known state restoration ## Configuration Main configuration is in `tauri.conf.json`: - Bundle identifiers - Icon paths - Window settings - Plugin configuration - Security settings ## Testing ```bash # Run Rust tests cargo test --manifest-path src-tauri/Cargo.toml # Run with logging RUST_LOG=debug npm run tauri:dev ``` ## Debugging ### Enable Debug Logging ```bash export RUST_LOG=debug npm run tauri:dev ``` ### View Tauri Logs - **macOS**: `~/Library/Logs/frenocorp-desktop/log.log` - **Windows**: `%APPDATA%/frenocorp-desktop/log.log` - **Linux**: `~/.cache/frenocorp-desktop/log.log` ## Dependencies See `Cargo.toml` for complete list. Key dependencies: - `tauri v2` - Core framework - `tauri-plugin-fs` - File system access - `tauri-plugin-http` - HTTP requests - `tauri-plugin-dialog` - Native dialogs - `tauri-plugin-shell` - Shell commands - `tauri-plugin-store` - State persistence - `tokio` - Async runtime ## CI/CD Integration The build scripts are designed for CI/CD integration: ```yaml # Example GitHub Actions - name: Build macOS run: npm run tauri:build:macos - name: Build Windows run: npm run tauri:build:windows - name: Build Linux run: npm run tauri:build:linux ``` ## Troubleshooting ### Common Issues 1. **WebView2 not found (Windows)** - Install WebView2 runtime or enable auto-download 2. **GTK not found (Linux)** - Install libgtk-3-dev and libwebkit2gtk-4.0-dev 3. **Code signing failed (macOS)** - Configure signing identity in tauri.conf.json - Or disable for development 4. **Permission denied (Linux)** - Ensure proper file permissions on build artifacts