# Publication d'Oleafly

Construisez un brouillon complet depuis un tag de version, relisez chaque artefact de plateforme, puis publiez via le workflow de publication protégé.

Les versions d'Oleafly ont deux étapes délibérées. Un tag de version construit et vérifie un brouillon. Un mainteneur publie ce même brouillon avec une exécution distincte du workflow.

Pousser sur `main` déclenche la CI mais ne crée pas de version.

## Construire le brouillon

Partez d'une branche `main` à jour avec une CI verte.

```sh
git switch main
git pull --ff-only
./scripts/bump-version.sh 0.3.6
git commit -am "chore: release v0.3.6"
git push origin main
git tag v0.3.6
git push origin v0.3.6
```

Le tag déclenche `.github/workflows/release.yml`. Il construit ces cibles :

| Cible | Installateurs |
|---|---|
| macOS Apple Silicon | `.dmg` |
| Windows x64 | `.msi` et `-setup.exe` |
| Linux x64 | `.AppImage` et `.deb` |
| Linux ARM64 | `.AppImage` et `.deb` |

Chaque cible récupère et vérifie ses sidecars de compilation épinglés. Le workflow fusionne ensuite les quatre fragments de mise à jour en un seul `latest.json`. Le brouillon n'est considéré comme prêt que lorsque chaque installateur requis et chaque entrée de mise à jour est présent.

## Relire le brouillon

Ouvrez le brouillon sur la [page des versions GitHub](https://github.com/Oleafly/Oleafly/releases). Vérifiez les notes de version, les noms des installateurs, les sommes de contrôle, les signatures et `latest.json`. Ne publiez pas un brouillon partiel.

## Publier

Ouvrez **Actions → Release → Run workflow**. Saisissez le même tag et sélectionnez **Publish the release**.

L'exécution de publication répète les vérifications de build et d'artefacts. Elle lance aussi des tests de contrat en conditions réelles contre Anthropic et Google avec le candidat à la publication. Le dernier travail refuse de publier si une plateforme prise en charge manque ou si le flux de mise à jour est incomplet.

Publier rend `latest.json` visible pour les applications installées. Considérez cette action comme une action de production irréversible. Si l'exécution de publication échoue, laissez la version en brouillon, corrigez la cause, puis relancez-la.

## Numéros de version

Oleafly suit la gestion sémantique de version :

- **Correctif**, comme de `0.3.5` vers `0.3.6`, pour des corrections compatibles.
- **Version mineure**, comme de `0.3.5` vers `0.4.0`, pour des fonctionnalités compatibles.
- **Version majeure**, comme de `0.3.5` vers `1.0.0`, pour des changements cassants ou la première version stable.

## Vérifications importantes

- Le tag doit correspondre à `package.json`, `src-tauri/tauri.conf.json`, `src-tauri/Cargo.toml` et `src-tauri/Cargo.lock`. Utilisez `scripts/bump-version.sh` plutôt que de les modifier séparément.
- Les notes de version proviennent de la section correspondante de `CHANGELOG.md`.
- Ne réutilisez pas un tag déjà publié. Pour un brouillon qui a échoué, corrigez la branche et créez une nouvelle version, sauf raison claire de remplacer le tag non publié.
- La signature et la notarisation macOS utilisent les secrets de publication Apple. Windows Authenticode utilise Azure Artifact Signing quand ses secrets sont configurés. Les signatures de mise à jour utilisent la clé de signature Tauri distincte.

Voir [Mises à jour automatiques](/docs/engineering/updates/) pour la signature et le comportement de retour arrière des mises à jour. Les instructions d'installation pour l'utilisateur se trouvent dans [Télécharger et installer](/docs/install/).
