# ori-desktop — une coquille de bureau Wails pour ori `ori-desktop` enveloppe le client web [ori](../README.md) dans une fenêtre native construite avec [Wails v2](https://wails.io) (Go + la webview de la plateforme). Il ne réimplémente **pas** ori : le serveur ori continue de servir la SPA React et les points d'entrée `/ws`, `/api/files`, `/ws/terminal`. L'application de bureau se contente de 1. afficher un petit **écran de connexion** avec l'URL du serveur ori (par défaut `http://localhost:8888`), mémorisée d'une exécution à l'autre dans un fichier JSON ; 2. vérifier le serveur avec **`GET /healthz`** via une méthode Go exposée au frontend ; 3. puis afficher **la webapp ori elle-même** dans la fenêtre. C'est un module Go séparé (`rickub.com/bots-garden/ori-desktop`) : le `go test ./...` et le `make build` du dépôt parent ne sont pas affectés. ## Prérequis - Go 1.25+ (exigence de Wails v2.16, reprise par le module). - La CLI Wails v2 : `go install github.com/wailsapp/wails/v2/cmd/wails@v2.16.0` (puis vérifier que `$(go env GOPATH)/bin` est dans le `PATH`). - La chaîne d'outils graphique attendue par Wails — `wails doctor` liste ce qui manque : - **Linux** : `gcc`, `pkg-config`, `libgtk-3-dev`, `libwebkit2gtk-4.0-dev` (ou `-4.1-dev` avec `-tags webkit2_41`) ; - **macOS** : les Xcode command line tools ; - **Windows** : le runtime WebView2 (préinstallé sur Windows 10/11) ; NSIS seulement pour l'installeur. - Un serveur ori en marche. Depuis la racine du dépôt : `make run` ou `make run-mock`. Aucun Node/npm n'est nécessaire : le frontend est du HTML/CSS/JS pur embarqué tel quel (pas de bundler). ## Lancer en mode développement ```bash cd ori-desktop wails dev ``` `wails dev` compile la partie Go, ouvre la fenêtre et recharge le frontend à chaque modification sous `frontend/src/` (`assetdir` dans `wails.json`). Il sert aussi l'application sur http://localhost:34115 pour l'ouvrir dans un navigateur classique avec les devtools tout en appelant les méthodes Go. ## Construire un binaire distribuable ```bash cd ori-desktop wails build # → build/bin/ori-desktop (ou .app / .exe) # ou, depuis la racine du dépôt : make desktop ``` La compilation croisée vers Windows depuis Linux/macOS fonctionne sans chaîne C : `wails build -platform windows/amd64` → `build/bin/ori-desktop.exe`. ## Tests La logique de connexion est en Go pur et testée sans aucune dépendance graphique : ```bash cd ori-desktop && go test ./internal/... # ou, depuis la racine du dépôt : make desktop-test ``` `internal/settings` couvre les allers-retours chargement/sauvegarde, les valeurs par défaut au premier lancement, les fichiers invalides et la normalisation d'URL ; `internal/health` couvre `/healthz` face à un serveur `httptest` (sain, non-ori, injoignable, contexte annulé). ## Comment il se connecte à ori ``` ┌──────────────── ori-desktop (fenêtre Wails) ───────────────┐ │ frontend/src (embarqué, origine wails://) │ │ écran de connexion ──► window.go.main.App.Connect(url) │ │ │ Go : NormalizeURL → GET /healthz → sauvegarde des réglages │ ▼ │ │