# Claudify Native desktop wrapper for [claude.ai](https://claude.ai) built with Tauri v2 and WebKitGTK. ## Architecture - **Tauri v2** with Rust backend, system WebKitGTK webview on Linux - **Direct webview navigation** to `https://claude.ai` (not iframe — claude.ai blocks iframes via CSP) - **No frontend code** — `src/index.html` is a placeholder required by Tauri's build system; the actual UI is claude.ai loaded via `WebviewUrl::External` - All app logic lives in `src-tauri/src/lib.rs` inside the `setup()` closure ## Key Files | File | Purpose | |------|---------| | `src-tauri/src/lib.rs` | All app logic: window, tray, notifications, navigation filter | | `src-tauri/src/main.rs` | Entry point, calls `claudify::run()` | | `src-tauri/tauri.conf.json` | Tauri config: app identity, bundle targets, security | | `src-tauri/capabilities/` | Tauri v2 permission grants for local window and remote claude.ai | | `src-tauri/Cargo.toml` | Rust dependencies | ## Building ### Prerequisites ```bash # Debian/Ubuntu system packages sudo apt install libwebkit2gtk-4.1-dev libxdo-dev librsvg2-dev libayatana-appindicator3-dev # Tauri CLI cargo install tauri-cli --version "^2.0" --locked ``` ### Build ```bash cargo tauri build # Produces .deb in target/release/bundle/deb/ cargo tauri dev # Development mode with hot reload ``` ## Known Issues - **CSD titlebar buttons non-interactive after hide/show** — Upstream bug in TAO's client-side decoration handling. Titlebar buttons (minimize/maximize/close) become unresponsive after the window is hidden to tray and restored. The close button still works via the tray menu. No known workaround — GTK decoration layout overrides, header bar replacement, resize nudges, and present() were all attempted without success. Tracked at: - https://github.com/tauri-apps/tauri/issues/11856 - https://github.com/tauri-apps/tao/issues/1046 ## Conventions - Keep all app logic in `lib.rs` — avoid splitting into multiple modules unless complexity demands it - Navigation allowlist in `is_allowed_navigation()` — add new OAuth providers here if needed - Test changes with `cargo tauri dev` before building .deb