claude-app/CLAUDE.md
Ole-Morten Duesund 101c91c4d8 Rename to claudify, add docs and .deb packaging
- Rename package from claude-app to claudify (v0.1.0)
- Add README.md with install/usage instructions
- Add CLAUDE.md with architecture, build, and known issues
- Add .desktop file for application menu integration
- Build target set to .deb only
- Remove failed CSD button workarounds, document upstream bug
- Remove gtk dependency (no longer needed)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 13:31:33 +01:00

2.1 KiB

Claudify

Native desktop wrapper for 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 codesrc/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

# 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

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:

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