Files
FrenoCorp/src-tauri
Michael Freno da0b3a4997 FRE-606: Add icon generation and tests for Tauri desktop
- Add generate-icons.sh script for cross-platform icon generation
- Generate all required icon sizes (32x32, 128x128, 256x256, 512x512)
- Create Windows .ico and macOS .icns icons
- Add Rust unit tests for core functionality
- Add tauri:test and tauri:icons npm scripts

New files:
- src-tauri/generate-icons.sh
- src-tauri/icons/32x32.png
- src-tauri/icons/128x128.png
- src-tauri/icons/128x128@2x.png
- src-tauri/icons/512x512.png
- src-tauri/icons/icon.ico
- src-tauri/icons/icon.icns
- src-tauri/icons/src/app-icon.svg
- src-tauri/icons/tray-icon.png
- src-tauri/src/tests.rs

Modified:
- src-tauri/src/lib.rs (added tests module)
2026-04-24 16:08:07 -04:00
..

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 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:

# 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