Files
ObsiGate/desktop/README.md
T
bruno db72e6f055
CI / lint (push) Successful in 30s
CI / security (push) Successful in 13s
CI / test (push) Successful in 27s
CI / build (push) Successful in 5s
CI / e2e (push) Failing after 13s
feat: Tauri desktop shell — Rust backend + config files + build scripts
- desktop/Cargo.toml: Tauri + plugins (dialog, notification, fs, updater)
- desktop/tauri.conf.json: Windows (.msi/.nsis) + Linux (.deb/.AppImage) config
- desktop/src/main.rs: spawn Python backend, health check, tray icon, commands
- desktop/build.rs: Tauri build hook
- desktop/python-embed/sidecar.py: uvicorn launcher with port auto-detect
- build-windows.bat: automated Windows build with Python embed download
- build-linux.sh: automated Linux build with venv
- desktop/README.md: architecture doc + usage guide
- desktop/validate-structure.sh: CI validation script
- ROADMAP.md: #77 Tauri Desktop section added
2026-07-24 18:01:33 -04:00

81 lines
2.4 KiB
Markdown

# ObsiGate Desktop
Application desktop native pour [ObsiGate](https://git.dracodev.net/Projets/ObsiGate) — construite avec [Tauri](https://tauri.app/).
> 🚧 **Phase de conception** — les binaires ne sont pas encore disponibles.
## Prérequis
### Windows
- [Rust](https://rustup.rs/) (stable ≥ 1.75)
- Tauri CLI : `cargo install tauri-cli`
- NSIS (inclus dans le build)
- Python 3.11 embed (téléchargé automatiquement)
### Linux
```bash
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev
cargo install tauri-cli
```
## Build
### Windows
```cmd
cd desktop
build-windows.bat
```
→ Produit `target/release/bundle/msi/ObsiGate_2.0.0_x64.msi` + `.exe` NSIS
### Linux
```bash
cd desktop
chmod +x build-linux.sh
./build-linux.sh
```
→ Produit `target/release/bundle/deb/obsigate_2.0.0_amd64.deb` + `.AppImage`
## Architecture
```
desktop/
├── Cargo.toml # Dépendances Rust
├── tauri.conf.json # Config Tauri (fenêtre, bundle, plugins)
├── build.rs # Script build Tauri
├── src/
│ └── main.rs # Point d'entrée Rust : spawn backend + webview
├── python-embed/
│ ├── sidecar.py # Lance uvicorn sur 127.0.0.1:17890
│ └── ... # Python 3.11 + site-packages (gelés)
├── build-windows.bat # Script build Windows
├── build-linux.sh # Script build Linux
└── icons/ # Icônes desktop (.ico, .png, .icns)
```
## Fonctionnalités desktop natives
| Fonctionnalité | Web | Desktop |
|---|---|---|
| Accès fichiers local | Via upload | Natif (sélecteur dossier) |
| Thème système | Manuel | Auto (suit OS dark/light) |
| Notifications | Service Worker | Natif OS |
| Associations `.md` | ❌ | ✅ « Ouvrir avec ObsiGate » |
| Tray icon | ❌ | ✅ Barre des tâches |
| Auto-update | ❌ | ✅ Vérifie releases Gitea |
| Mode hors-ligne | Limité | Complet (backend local) |
## Cycle de vie
```
Démarrage :
1. Tauri lance python-embed/python → uvicorn backend.main:app
2. Health check GET /api/health (timeout 15s)
3. Webview ouvre http://127.0.0.1:17890
Arrêt (tray → Quitter ou fermeture fenêtre) :
1. SIGTERM envoyé au processus Python
2. Backend s'arrête proprement (10s timeout)
3. Tauri ferme la webview
4. Processus nettoyé — aucun résidu
```