Files
2026-08-10 22:06:49 +02:00

149 lines
5.5 KiB
Markdown

# 🔄 Mises à jour automatiques
Plus besoin d'envoyer un `.exe` à chaque correctif. L'application va chercher
elle-même la dernière version publiée.
```
Toi Ton collègue
─── ────────────
npm run release -- 0.3.0 "…"
├─ construit + signe l'installeur
├─ le dépose sur Supabase
└─ écrit latest.json
au lancement :
lit latest.json → 0.3.0 > 0.2.0
🔔 « Version 0.3.0 disponible »
clic → installe → redémarre
```
---
## Installation (une seule fois)
### 1. Créer le bucket
Supabase → **SQL Editor****New query** → colle
[`supabase/releases_bucket.sql`](supabase/releases_bucket.sql) → **Run**.
### 2. Donner au script la clé de publication
Supabase → **Settings → API** → copie la clé **`service_role`**.
Mets-la dans le fichier `.env.local` à la racine du projet :
```env
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOi...
```
> `.env.local` est ignoré par git (règle `*.local`). Cette clé sert **uniquement**
> à téléverser depuis ta machine : elle n'entre jamais dans l'application
> distribuée à l'équipe.
### 3. 🔑 Sauvegarder la clé de signature — **le point important**
Le fichier `.tauri-signing-key.local` à la racine du projet signe chaque mise à
jour. Les applications déjà installées **n'acceptent que** les paquets signés
avec cette clé.
> ⚠️ **Si tu la perds, aucune mise à jour ne pourra plus être installée.**
> Il faudrait générer une nouvelle clé, reconstruire, et redistribuer un `.exe`
> à la main à chaque membre de l'équipe.
Copie-la maintenant dans un endroit sûr — gestionnaire de mots de passe, clé USB,
disque de sauvegarde. **Pas** dans le dépôt git.
### 4. La dernière distribution manuelle
Les versions déjà installées chez tes collègues ne connaissent pas encore le
système de mise à jour. Il faut donc leur livrer **une dernière fois** un
installeur à la main :
```bash
npm run tauri:build
```
Envoie le fichier `src-tauri/target/release/bundle/nsis/GameDev Tracker_0.2.0_x64-setup.exe`.
C'est le dernier. À partir de cette version, tout est automatique.
---
## Publier une nouvelle version
```bash
npm run release -- 0.3.0 "Filtres multiples sur les tâches, correction du Kanban"
```
Le script :
1. écrit `0.3.0` dans `package.json` et `tauri.conf.json` ;
2. construit et **signe** l'installeur (quelques minutes) ;
3. le téléverse dans le bucket `releases` ;
4. écrit `latest.json` — c'est ce fichier que les applications lisent.
Ensuite, pense à valider les deux fichiers de version :
```bash
git add package.json src-tauri/tauri.conf.json && git commit -m "v0.3.0"
```
### Quel numéro de version ?
Format `X.Y.Z`, toujours croissant.
| Ce que tu as fait | Numéro |
|---|---|
| Correction de bug | `0.2.0``0.2.1` |
| Nouvelle fonctionnalité | `0.2.1``0.3.0` |
| Refonte, changement cassant | `0.3.0``1.0.0` |
Le texte entre guillemets s'affiche dans le bandeau chez tes collègues : écris
ce qui **change pour eux**, pas le détail technique.
---
## Côté équipe : ce qu'ils voient
Une bande fine en haut de l'application :
```
┌────────────────────────────────────────────────────────────────────┐
│ ✨ Version 0.3.0 disponible. Filtres multiples sur les tâches │
│ [⬇ Installer et redémarrer] [✕ plus tard]│
└────────────────────────────────────────────────────────────────────┘
```
- Jamais de fenêtre bloquante : on peut ignorer et continuer à travailler.
- « Plus tard » masque le bandeau ; la proposition revient au lancement suivant.
- Vérification au démarrage, puis toutes les 2 heures pour les sessions longues.
- Le menu **Aide** (touche `?`) affiche la version installée et un bouton
« Rechercher une mise à jour ».
---
## En cas de problème
| Symptôme | Cause probable | Solution |
|---|---|---|
| Aucun bandeau n'apparaît | `latest.json` absent ou version identique | Ouvre l'URL du manifeste dans un navigateur, vérifie le champ `version` |
| « Signature invalide » | L'installeur a été signé avec une autre clé | Republie avec la bonne `.tauri-signing-key.local` |
| Le script dit « bucket not found » | Étape 1 non faite | Exécute `supabase/releases_bucket.sql` |
| Le script dit « clé introuvable » | `.tauri-signing-key.local` absent | Restaure ta sauvegarde (étape 3) |
| Le téléchargement échoue chez un membre | Bucket non public | Rejoue `releases_bucket.sql` |
URL du manifeste (à ouvrir dans un navigateur pour vérifier) :
```
https://<ton-projet>.supabase.co/storage/v1/object/public/releases/latest.json
```
---
## Coût
Un installeur pèse ~8 Mo. L'offre gratuite Supabase donne 1 Go de stockage et
5 Go de transfert par mois : à 6 personnes, c'est environ **100 mises à jour par
mois** avant de s'en approcher. Tu peux supprimer les vieux installeurs du
bucket de temps en temps (garde le dernier).