Files
ObsiGate/docs/GUIDES/DESKTOP.md
T
bruno fe9f7b49f7
CI / lint (push) Successful in 2m50s
CI / security (push) Successful in 2m1s
CI / test (push) Successful in 4m44s
CI / build (push) Successful in 1m54s
CI / e2e (push) Successful in 16m25s
feat: premier lancement ObsiGate + section Configuration harmonisée (#160)
- Premier lancement : %USERPROFILE%\ObsiGate créé et monté comme vault de
  démarrage « ObsiGate » (remplace voute_obsidian), vault_path dessus,
  racine home nommée d'après son dernier segment (fin du « bruno » codé en
  dur), champs de fenêtre préservés.
- Document « Prise en main.md » embarqué dans le binaire
  (include_str!) et écrit dans ce répertoire si absent — jamais écrasé.
- Section « 🖥️ Vaults & dossiers (Desktop) » refondue : markup à classes
  (zéro style inline), bloc CSS desktop-roots-* sur variables (motif
  webauthn-key-item), boutons .config-btn-sm primaire/secondaire,
  cibles tactiles 44px en mobile.
- Tests : test_default_first_run_config, test_welcome_doc_embedded
  (cargo test 28 passed), suites frontend vertes, E2E 123/123.
2026-10-03 10:02:16 -04:00

8.3 KiB

🖥️ Guide de l'application desktop (Tauri)

ObsiGate Desktop est une application native construite avec Tauri (Rust + webview système). Elle embarque le backend Python et le frontend dans un exécutable autonome — zéro Docker, zéro ligne de commande.

Public : tous les utilisateurs · Statut : version 2.x, binaires en cours de stabilisation (build depuis les sources recommandé) Fiche technique : features/desktop-tauri.md · Checklist E2E : DESKTOP_E2E_CHECKLIST.md


1. Fonctionnalités natives

Fonctionnalité Web Desktop
Accès fichiers local Via upload Natif (sélecteur de dossier)
Thème système Manuel Auto (suit l'OS clair/sombre)
Notifications Service Worker Natif OS
Association .md ❌ ✅ « Ouvrir avec ObsiGate »
Icône de barre des tâches (tray) ❌ ✅
Auto-update ❌ ✅ (vérifie les releases Gitea)
Mode hors-ligne Limité Complet (backend local)
Gestion vaults & dossiers Fichiers de config serveur ✅ UI dédiée + menu contextuel

Gestion des vaults et dossiers (#159)

Deux surfaces, réservées à l'application desktop :

  • Menu contextuel : clic droit sur un vault ou un dossier racine dans la sidebar → « Retirer de l'application » (confirmation, déregistration de la configuration locale — aucun fichier n'est supprimé), puis redémarrage automatique du backend.
  • Configuration : section « 🖥️ Vaults & dossiers (Desktop) » listant les vaults et dossiers chargés, avec boutons « Ajouter un vault » (sélecteur de dossier natif) et « Ajouter un dossier ».

Premier lancement (#160)

Au tout premier démarrage (aucun vault configuré), l'application :

  1. crée et monte %USERPROFILE%\ObsiGate comme vault de démarrage (« ObsiGate ») et ouvre l'interface dessus ;
  2. y écrit le document Prise en main.md — présentation, premières étapes, raccourcis (Ctrl+Espace, Ctrl+Alt+Espace, Ctrl+F, Ctrl+W/Ctrl+Tab) et accès au guide complet (bouton d'aide de l'en-tête). Le fichier n'est jamais réécrit : modifiez-le ou supprimez-le librement ;
  3. ajoute votre dossier personnel comme seconde racine (nommée d'après son chemin).

2. Téléchargement des binaires

Les releases sont publiées sur Gitea :

Plateforme Formats
Linux .deb + .AppImage
Windows .msi + .exe (NSIS)

Linux

# .deb (Debian / Ubuntu / Deepin)
sudo dpkg -i obsigate_2.0.0_amd64.deb
# Lancer : ObsiGate depuis le menu applications, ou `obsigate-desktop`

# .AppImage (toute distribution)
chmod +x ObsiGate_2.0.0_amd64.AppImage
./ObsiGate_2.0.0_amd64.AppImage

Windows

:: Double-cliquer sur ObsiGate_2.0.0_x64.msi (ou le setup NSIS)
:: Ou lancer ObsiGate depuis le menu Démarrer

3. Démarrage

  1. Lancez l'application depuis le menu ou la ligne de commande.
  2. Le backend Python démarre automatiquement sur 127.0.0.1:17890 (splash « Démarrage… » pendant le boot).
  3. La fenêtre s'ouvre et charge l'interface ObsiGate.
  4. Premier lancement : sélectionnez le dossier de vos vaults Obsidian via le sélecteur natif.
  5. Pour fermer : icône tray → Quitter (arrêt propre du backend).

4. Construire depuis les sources

Guide détaillé : desktop/README.md.

4.1 Prérequis communs

Outil Version Installation
Rust (cargo) ≥ 1.75 rustup
Tauri CLI ≥ 2.0 cargo install tauri-cli
Git — —
Dépendances système Linux — sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev

Important — staging : tauri.conf.json embarque backend/** et frontend/** depuis le dossier desktop/. Les scripts de build copient automatiquement ../backend et ../frontend dans desktop/ avant cargo tauri build. Sans ce staging, le build échoue avec « glob pattern backend/**/* path not found ».

4.2 Windows — build-windows.bat

REM Prérequis (via Scoop) : rustup, curl, git
scoop install rustup curl git
rustup default stable
cargo install tauri-cli

cd desktop
build-windows.bat

Étapes du script :

  1. Tue les processus Python résiduels (taskkill /F /IM python.exe).
  2. Télécharge Python 3.11 embed (python.org) → desktop\python-embed\ + active pip (python311._pth).
  3. pip install -r ..\backend\requirements.txt dans l'embed.
  4. Staging : copie ..\backend et ..\frontend dans desktop\.
  5. cargo tauri build --target x86_64-pc-windows-msvc --bundles nsis.
  6. Copie python-embed à côté de l'exécutable pour le mode dev local.
  7. Nettoie les dossiers stagés.

→ Artefact : desktop\target\x86_64-pc-windows-msvc\release\bundle\nsis\ObsiGate_2.0.0_x64-setup.exe

4.3 Linux — build-linux.sh

cd desktop
chmod +x build-linux.sh
./build-linux.sh

Étapes du script :

  1. Vérifie Rust + Tauri CLI, installe les dépendances système (apt).
  2. Crée un venv desktop/python-embed/venv + pip install -r ../backend/requirements.txt.
  3. Staging : copie ../backend et ../frontend dans desktop/.
  4. cargo tauri build --target x86_64-unknown-linux-gnu --bundles deb,appimage.
  5. Copie le runtime (python-embed/, backend/, frontend/) à côté de l'exécutable.

→ Artefacts :

  • desktop/target/x86_64-unknown-linux-gnu/release/bundle/deb/obsigate_2.0.0_amd64.deb
  • desktop/target/x86_64-unknown-linux-gnu/release/bundle/appimage/ObsiGate_2.0.0_amd64.AppImage

5. Builds CI/CD automatiques

Le workflow .gitea/workflows/desktop-build.yml construit les binaires desktop à chaque push sur main touchant desktop/**, frontend/** ou backend/** (et manuellement via workflow_dispatch), sur des runners self-hosted :

Job Runner Artefacts (30 jours)
build-windows [self-hosted, windows, desktop] desktop/target/release/bundle/msi/*.msi
build-linux [self-hosted, linux, desktop] *.AppImage + *.deb

Les artefacts sont téléchargeables depuis la page Actions du run Gitea ; la publication en Gitea Release est prévue sur les tags v*.


6. Architecture desktop

┌────────────────────────────────────────────┐
│ Tauri (Rust)                               │
│  ├─ Webview (webview système)              │
│  │   └─ Frontend (HTML/JS/CSS)             │
│  └─ Sidecar Python                         │
│      └─ uvicorn backend.main:app           │
│           └─ port 127.0.0.1:17890          │
└────────────────────────────────────────────┘

Cycle de vie : Tauri spawn le backend Python → health check → splash → webview. À la fermeture : arrêt propre du backend (SIGTERM / kill).


7. Mises à jour

L'application vérifie les releases Gitea et propose la mise à jour (updater Tauri signé). Le manifeste latest.json est généré automatiquement.

La signature de code Windows n'est pas retenue (pas de certificat) : le binaire peut déclencher un avertissement SmartScreen. Alternatives possibles : SignPath.io (OSS gratuit), Certum OSS, Azure Trusted Signing, certificat EV.


8. Logs & dépannage

Les logs du backend sont écrits dans :

  • Windows : %APPDATA%\ObsiGate\logs\backend.log
  • Linux : ~/.config/obsigate/logs/backend.log
Symptôme Piste
« Backend ne répond pas » Vérifier le port 17890 (conflit) et relancer
Build « glob pattern backend/**/* not found » Le staging n'a pas été fait — utiliser les scripts fournis
Le sélecteur de dossier ne s'ouvre pas Permissions système / dialogue natif bloqué
Fenêtre blanche Consulter backend.log ; le backend a peut-être échoué au boot
Mise à jour non proposée Vérifier la connectivité aux releases Gitea

Voir aussi Prise en main et Authentification & sécurité.