- Consolidated duplicate UndoManagers to single instance - Fixed connection promise to only resolve on 'connected' status - Fixed WebSocketProvider import (WebsocketProvider) - Added proper doc.destroy() cleanup - Renamed isPresenceInitialized property to avoid conflict Co-Authored-By: Paperclip <noreply@paperclip.ing>
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:
brew install pkg-config libappindicator
Windows:
# WebView2 is automatically installed on Windows 10+
# For development:
winget install Microsoft.VisualStudio.2022.Community
Linux:
# 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
# From project root
npm run tauri:dev
This starts both the Vite dev server and the Tauri application.
Building for Production
# 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
# 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
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 frameworktauri-plugin-fs- File system accesstauri-plugin-http- HTTP requeststauri-plugin-dialog- Native dialogstauri-plugin-shell- Shell commandstauri-plugin-store- State persistencetokio- Async runtime
CI/CD Integration
The build scripts are designed for CI/CD integration:
# 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
-
WebView2 not found (Windows)
- Install WebView2 runtime or enable auto-download
-
GTK not found (Linux)
- Install libgtk-3-dev and libwebkit2gtk-4.0-dev
-
Code signing failed (macOS)
- Configure signing identity in tauri.conf.json
- Or disable for development
-
Permission denied (Linux)
- Ensure proper file permissions on build artifacts