docs: Réorganisation complète de dev.md pour meilleure lisibilité

- Ajout d'une table des matières avec liens d'ancrage
- Résumé rapide des 8 phases en début de document
- Organisation claire par phases numérotées (1 à 8)
- Section 'Référence des commandes' regroupant :
  - Commandes npm
  - Commandes Git
  - Commandes tea (Gitea CLI)
  - Conventions de commits
  - Semantic Versioning
- Amélioration de la mise en forme et de la hiérarchie
- Suppression des redondances
- Date de dernière mise à jour ajoutée
This commit is contained in:
Pierre Marx
2025-10-21 15:08:17 -04:00
parent 6247888770
commit 7182d7af32

View File

@@ -1,6 +1,64 @@
# Workflow complet de développement (de A à Z) # Workflow de développement SimpleConnect
Suivre **systématiquement** ce workflow pour chaque nouvelle fonctionnalité ou correction de bug : Guide complet de A à Z pour le développement et la publication de nouvelles versions.
---
## 📑 Table des matières
1. [Résumé rapide](#résumé-rapide)
2. [Phase 1 : Développement itératif](#phase-1--développement-itératif)
3. [Phase 2 : Préparation de la release](#phase-2--préparation-de-la-release)
4. [Phase 3 : Fusion dans main](#phase-3--fusion-dans-main)
5. [Phase 4 : Build des exécutables](#phase-4--build-des-exécutables)
6. [Phase 5 : Documentation](#phase-5--documentation)
7. [Phase 6 : Publication sur Gitea](#phase-6--publication-sur-gitea)
8. [Phase 7 : Déploiement](#phase-7--déploiement-optionnel)
9. [Phase 8 : Nettoyage](#phase-8--nettoyage-des-branches)
10. [Référence des commandes](#référence-des-commandes)
---
## Résumé rapide
```
Phase 1 : Développement
1. Créer branche feature
2. Développer → Tester → Committer (répéter)
Phase 2 : Release
3. Mettre à jour changelog
4. Bumper version package.json
5. Commit de release
Phase 3 : Fusion
6. Merger dans main (--no-ff)
7. Push vers origin
Phase 4 : Build
8. Build exécutables (macOS, Linux, Windows)
9. Organiser dans dist/vX.X.X/
Phase 5 : Documentation
10. Créer notes de release
11. Commit + push docs
Phase 6 : Publication
12. Créer tag Git
13. Push tag vers Gitea
14. Créer release avec tea
15. Vérifier assets
Phase 7 : Déploiement (optionnel)
16. Déployer sur serveur
Phase 8 : Nettoyage
17. Supprimer branches locales mergées
18. Supprimer branches distantes mergées
19. Prune références locales
```
---
## Phase 1 : Développement itératif ## Phase 1 : Développement itératif
@@ -8,7 +66,7 @@ Suivre **systématiquement** ce workflow pour chaque nouvelle fonctionnalité ou
**Une fonctionnalité = plusieurs petits commits atomiques** **Une fonctionnalité = plusieurs petits commits atomiques**
Éviter de faire un gros commit avec toute la fonctionnalité. Préférer découper en petites étapes testables : Découper le travail en petites étapes testables plutôt qu'un gros commit :
``` ```
Exemple : Ajouter un bouton "Pause" avec confirmation Exemple : Ajouter un bouton "Pause" avec confirmation
@@ -24,18 +82,17 @@ git commit -m "feat: Ajouter bouton Pause avec modal et gestion IPBX"
5. docs: Documenter la fonctionnalité de pause 5. docs: Documenter la fonctionnalité de pause
``` ```
### 1. Créer une branche feature ### Étape 1 : Créer une branche feature
```bash ```bash
git checkout -b feature/nom-de-la-fonctionnalite git checkout -b feature/nom-de-la-fonctionnalite
``` ```
### 2. Cycle itératif (répéter jusqu'à complétion de la fonctionnalité) ### Étape 2 : Cycle itératif
**Pour chaque petite modification :** Répéter jusqu'à complétion de la fonctionnalité :
#### a) Développer une petite partie #### a) Développer une petite partie
- Faire UNE modification logique à la fois - Faire UNE modification logique à la fois
- Ne pas chercher à tout finir d'un coup - Ne pas chercher à tout finir d'un coup
- Rester concentré sur une seule tâche - Rester concentré sur une seule tâche
@@ -52,18 +109,16 @@ npm run dev # Test en mode développement
- Tester les cas limites - Tester les cas limites
- S'assurer qu'aucune régression n'a été introduite - S'assurer qu'aucune régression n'a été introduite
#### c) Committer (commit atomique) #### c) Committer
Seulement après avoir testé avec succès : Seulement après avoir testé avec succès :
- Préfixes : `feat:`, `fix:`, `refactor:`, `docs:`, `style:`, `test:`, `chore:`
- Un commit = une modification logique
- Messages clairs et descriptifs
```bash ```bash
git commit -m "feat: Ajouter le bouton Pause dans le header" git commit -m "feat: Ajouter le bouton Pause dans le header"
``` ```
**Préfixes de commit** : `feat:`, `fix:`, `refactor:`, `docs:`, `style:`, `test:`, `chore:`
**Pourquoi tester avant de committer ?** **Pourquoi tester avant de committer ?**
- Historique Git propre (chaque commit = code fonctionnel) - Historique Git propre (chaque commit = code fonctionnel)
- Rollback facile vers un état stable - Rollback facile vers un état stable
@@ -71,13 +126,11 @@ git commit -m "feat: Ajouter le bouton Pause dans le header"
#### d) Continuer #### d) Continuer
Retour à l'étape **a)** pour la prochaine petite modification, jusqu'à ce que la fonctionnalité soit complète. Retour à l'étape **a)** jusqu'à ce que la fonctionnalité soit complète.
### 3. Fonctionnalité terminée → Passer à la Phase 2 (Release) ### Exception : WIP commits
Une fois tous les commits de la fonctionnalité effectués, passer à la préparation de la release ci-dessous. Pour sauvegarder un travail en cours :
**Exception - WIP commits** (travail en cours à sauvegarder) :
```bash ```bash
git commit -m "wip: Travail en cours sur la fonctionnalité X" git commit -m "wip: Travail en cours sur la fonctionnalité X"
@@ -89,21 +142,43 @@ git commit --amend -m "feat: Ajouter la fonctionnalité X"
## Phase 2 : Préparation de la release ## Phase 2 : Préparation de la release
### 4. Mettre à jour le changelog (`docs/changelog.md`) ### Étape 3 : Mettre à jour le changelog
- Obtenir la date : `date +%Y-%m-%d` Fichier : `docs/changelog.md`
- Format : `## [X.X.X] - AAAA-MM-JJ`
- Catégories : **Ajouté**, **Modifié**, **Corrigé**, **Supprimé**, **Technique**, **Documentation**
- Ajouter en haut du fichier (au-dessus de la version précédente)
### 5. Bumper la version (`package.json`) ```bash
# Obtenir la date
date +%Y-%m-%d
```
**Format** :
```markdown
## [X.X.X] - AAAA-MM-JJ
### Ajouté
- Fonctionnalité 1
### Modifié
- Changement 1
### Corrigé
- Bug 1
```
Catégories : **Ajouté**, **Modifié**, **Corrigé**, **Supprimé**, **Technique**, **Documentation**
### Étape 4 : Bumper la version
Fichier : `package.json`
**Semantic Versioning** :
- **PATCH** (x.x.+1) : Corrections, petits ajustements - **PATCH** (x.x.+1) : Corrections, petits ajustements
- **MINOR** (x.+1.0) : Nouvelles fonctionnalités compatibles - **MINOR** (x.+1.0) : Nouvelles fonctionnalités compatibles
- **MAJOR** (+1.0.0) : Changements majeurs incompatibles - **MAJOR** (+1.0.0) : Changements majeurs incompatibles
- Modifier le champ `"version": "X.X.X"`
### 6. Commit de release Modifier le champ `"version": "X.X.X"`
### Étape 5 : Commit de release
```bash ```bash
git add docs/changelog.md package.json git add docs/changelog.md package.json
@@ -115,22 +190,22 @@ git commit -m "release: Version X.X.X - Titre court
- Bump version X.X.X" - Bump version X.X.X"
``` ```
**Important** : Ne jamais mentionner Claude, Anthropic ou des adresses emails relatives à ces entités **Important** : Ne jamais mentionner Claude, Anthropic ou des adresses emails relatives à ces entités.
--- ---
## Phase 3 : Fusion dans main ## Phase 3 : Fusion dans main
### 7. Basculer sur main et fusionner ### Étape 6 : Merger dans main
```bash ```bash
git checkout main git checkout main
git merge feature/nom-de-la-fonctionnalite --no-ff git merge feature/nom-de-la-fonctionnalite --no-ff
``` ```
- `--no-ff` : Force un merge commit (historique propre et tracé) **Option `--no-ff`** : Force un merge commit pour un historique propre et tracé
### 8. Push vers origin ### Étape 7 : Push vers origin
```bash ```bash
git push origin main git push origin main
@@ -140,7 +215,7 @@ git push origin main
## Phase 4 : Build des exécutables ## Phase 4 : Build des exécutables
### 9. Build pour les plateformes nécessaires ### Étape 8 : Build pour les plateformes
```bash ```bash
# macOS (si développement sur Mac) # macOS (si développement sur Mac)
@@ -153,7 +228,7 @@ npm run build:linux-x64
npm run build:win npm run build:win
``` ```
### 10. Organiser les builds dans `dist/vX.X.X/` ### Étape 9 : Organiser les builds
```bash ```bash
# Créer le dossier de version # Créer le dossier de version
@@ -172,11 +247,13 @@ ls -lh dist/vX.X.X/
--- ---
## Phase 5 : Documentation finale ## Phase 5 : Documentation
### 11. Créer les notes de release (`releases/vX.X.X.md`) ### Étape 10 : Créer les notes de release
- Structure markdown avec sections : Fichier : `releases/vX.X.X.md`
**Structure markdown** :
- Titre et date - Titre et date
- Résumé des changements - Résumé des changements
- Nouveautés principales - Nouveautés principales
@@ -185,7 +262,7 @@ ls -lh dist/vX.X.X/
- Compatibilité - Compatibilité
- Guide d'utilisation (si nécessaire) - Guide d'utilisation (si nécessaire)
### 12. Commit et push de la documentation ### Étape 11 : Commit et push de la documentation
```bash ```bash
git add releases/vX.X.X.md git add releases/vX.X.X.md
@@ -197,7 +274,7 @@ git push origin main
## Phase 6 : Publication sur Gitea ## Phase 6 : Publication sur Gitea
### 13. Créer le tag Git ### Étape 12 : Créer le tag Git
```bash ```bash
# Trouver le commit de release # Trouver le commit de release
@@ -212,21 +289,21 @@ Description des principales fonctionnalités
- Correction 1" - Correction 1"
``` ```
### 14. Push du tag vers Gitea ### Étape 13 : Push du tag
```bash ```bash
git push origin vX.X.X git push origin vX.X.X
``` ```
### 15. Créer la release sur Gitea avec l'outil `tea` ### Étape 14 : Créer la release avec `tea`
**Prérequis** : S'assurer que `tea` est configuré avec le login `simpleconnect` **Prérequis** : `tea` configuré avec le login `simpleconnect`
```bash ```bash
# Vérifier la configuration tea # Vérifier la configuration
tea login list tea login list
# Créer la release avec tous les fichiers binaires # Créer la release avec tous les fichiers
tea release create \ tea release create \
--login simpleconnect \ --login simpleconnect \
--repo pierre/SimpleConnect-client-electron \ --repo pierre/SimpleConnect-client-electron \
@@ -238,18 +315,18 @@ tea release create \
--asset dist/vX.X.X/SimpleConnect-X.X.X-arm64-mac.zip --asset dist/vX.X.X/SimpleConnect-X.X.X-arm64-mac.zip
``` ```
**Notes importantes** : **Notes** :
- L'option `--note-file` utilise le fichier markdown des notes de release - `--note-file` utilise le fichier markdown des notes
- On peut spécifier plusieurs `--asset` pour uploader tous les binaires en une fois - Multiple `--asset` pour uploader tous les binaires
- Le code source (TAR.GZ et ZIP) est ajouté automatiquement par Gitea - Code source (TAR.GZ et ZIP) ajouté automatiquement par Gitea
### 16. Vérifier la release sur Gitea ### Étape 15 : Vérifier la release
```bash ```bash
# Lister toutes les releases # Lister toutes les releases
tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron
# Vérifier les assets d'une release spécifique # Vérifier les assets d'une release
tea release assets --login simpleconnect --repo pierre/SimpleConnect-client-electron vX.X.X tea release assets --login simpleconnect --repo pierre/SimpleConnect-client-electron vX.X.X
``` ```
@@ -259,10 +336,9 @@ tea release assets --login simpleconnect --repo pierre/SimpleConnect-client-elec
- ✅ SimpleConnect-X.X.X-arm64-mac.zip (macOS) - ✅ SimpleConnect-X.X.X-arm64-mac.zip (macOS)
- ✅ Code source (TAR.GZ et ZIP automatiques) - ✅ Code source (TAR.GZ et ZIP automatiques)
### 17. Ajouter des assets manquants (si nécessaire) ### Corrections éventuelles
Si des fichiers ont été oubliés ou doivent être ajoutés après coup :
**Ajouter des assets manquants** :
```bash ```bash
tea release assets create \ tea release assets create \
--login simpleconnect \ --login simpleconnect \
@@ -271,8 +347,7 @@ tea release assets create \
dist/vX.X.X/fichier-supplementaire.ext dist/vX.X.X/fichier-supplementaire.ext
``` ```
### 18. Supprimer des assets en doublon (si nécessaire) **Supprimer des doublons** :
```bash ```bash
tea release assets delete \ tea release assets delete \
--login simpleconnect \ --login simpleconnect \
@@ -284,9 +359,9 @@ tea release assets delete \
--- ---
## Phase 7 : Déploiement sur serveur (optionnel) ## Phase 7 : Déploiement (optionnel)
### 19. Déployer sur le serveur de production ### Étape 16 : Déployer sur le serveur
```bash ```bash
scp dist/vX.X.X/SimpleConnect-X.X.X.AppImage user@server:/path/to/app/ scp dist/vX.X.X/SimpleConnect-X.X.X.AppImage user@server:/path/to/app/
@@ -294,43 +369,103 @@ scp dist/vX.X.X/SimpleConnect-X.X.X.AppImage user@server:/path/to/app/
--- ---
## Résumé du workflow complet ## Phase 8 : Nettoyage des branches
Une fois la release publiée et déployée, nettoyer les branches mergées.
### Étape 17 : Supprimer les branches locales
```bash
# Vérifier les branches mergées
git branch --merged main
# Supprimer automatiquement toutes les branches mergées
git branch --merged main | grep -v "^\*" | grep -v "main" | xargs -n 1 git branch -d
# Ou manuellement
git branch -d feature/nom-de-la-fonctionnalite
# Forcer si la branche a un remote (option -D)
git branch -D feature/nom-de-la-fonctionnalite
``` ```
1. git checkout -b feature/XXX
2. BOUCLE (jusqu'à fonctionnalité complète) : **Pourquoi `-D` peut être nécessaire ?**
a) Développer une petite partie - Git refuse `-d` si la branche a encore un remote associé
b) Tester (npm run dev) - Même mergée dans main, Git veut s'assurer qu'elle est mergée dans origin/branche
c) Committer (git commit -m "...") - `-D` est sûr si on a vérifié le merge dans main
d) Continuer
3. Mettre à jour changelog ### Étape 18 : Supprimer les branches distantes
4. Bumper version package.json
5. Commit de release ```bash
6. Merger dans main (--no-ff) # Supprimer une ou plusieurs branches
7. Push git push origin --delete feature/nom-1 feature/nom-2 feature/nom-3
8. Build des exécutables
9. Organiser dist/vX.X.X/ # Vérifier la suppression
10. Notes de release git branch -a
11. Commit + push docs
12. Créer tag Git
13. Push tag vers Gitea
14. Créer release sur Gitea avec tea
15. Vérifier assets sur Gitea
16. Déployer sur serveur (optionnel)
``` ```
### Étape 19 : Nettoyer les références locales
```bash
# Supprimer les références aux branches distantes supprimées
git remote prune origin
# Ou avec fetch
git fetch --prune
```
**Résultat attendu** : Seules les branches `main` et celles en cours de travail restent.
--- ---
## Commandes `tea` utiles ## Référence des commandes
### Commandes npm
### Gestion des logins
```bash ```bash
tea login list # Lister les logins configurés npm start # Lance l'application en production
tea login add # Ajouter un nouveau login npm run dev # Mode développement avec DevTools
tea login default <nom> # Définir un login par défaut npm run build # Build pour toutes les plateformes
npm run build:win # Build Windows
npm run build:mac # Build macOS
npm run build:linux # Build Linux
npm run build:linux-x64 # Build Linux x64
npm run build:linux-arm64 # Build Linux ARM64
``` ```
### Gestion des releases ### Commandes Git
```bash
# Branches
git checkout -b feature/XXX # Créer une branche
git branch --merged main # Lister branches mergées
git branch -d feature/XXX # Supprimer branche locale
git branch -D feature/XXX # Forcer suppression
git push origin --delete XXX # Supprimer branche distante
# Tags
git tag -a vX.X.X <hash> -m "..." # Créer tag annoté
git push origin vX.X.X # Push tag
git tag -l # Lister tags
# Merge
git merge feature/XXX --no-ff # Merge avec commit
# Nettoyage
git remote prune origin # Nettoyer références
git fetch --prune # Fetch + nettoyage
```
### Commandes `tea` (Gitea CLI)
#### Logins
```bash
tea login list # Lister logins configurés
tea login add # Ajouter un login
tea login default <nom> # Définir login par défaut
```
#### Releases
```bash ```bash
tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron
tea release create --help tea release create --help
@@ -338,16 +473,44 @@ tea release edit vX.X.X --title "Nouveau titre"
tea release delete vX.X.X --confirm tea release delete vX.X.X --confirm
``` ```
### Gestion des assets #### Assets
```bash ```bash
tea release assets list vX.X.X tea release assets list vX.X.X
tea release assets create vX.X.X fichier.ext tea release assets create vX.X.X fichier.ext
tea release assets delete vX.X.X fichier.ext --confirm tea release assets delete vX.X.X fichier.ext --confirm
``` ```
### Options globales #### Options globales
```bash ```bash
--login simpleconnect # Utiliser le login 'simpleconnect' --login simpleconnect # Utiliser le login 'simpleconnect'
--repo pierre/SimpleConnect-client-electron # Spécifier le repository --repo pierre/SimpleConnect-client-electron # Spécifier le repository
--output json # Format de sortie (simple, table, json, yaml) --output json # Format de sortie (json, yaml, table)
``` ```
### Conventions de commits
```bash
feat: # Nouvelle fonctionnalité
fix: # Correction de bug
refactor: # Refactoring
docs: # Documentation
style: # Formatage, style
test: # Tests
chore: # Maintenance, tâches diverses
release: # Commit de release
wip: # Work in progress (temporaire)
```
### Semantic Versioning
```
MAJOR.MINOR.PATCH
MAJOR (X.0.0) # Changements incompatibles
MINOR (x.X.0) # Nouvelles fonctionnalités compatibles
PATCH (x.x.X) # Corrections de bugs
```
---
**Dernière mise à jour** : 2025-10-21