Files
SimpleClient-releases/.claude/commands/dev.md
Pierre Marx 7182d7af32 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
2025-10-21 15:08:17 -04:00

12 KiB

Workflow de développement SimpleConnect

Guide complet de A à Z pour le développement et la publication de nouvelles versions.


📑 Table des matières

  1. Résumé rapide
  2. Phase 1 : Développement itératif
  3. Phase 2 : Préparation de la release
  4. Phase 3 : Fusion dans main
  5. Phase 4 : Build des exécutables
  6. Phase 5 : Documentation
  7. Phase 6 : Publication sur Gitea
  8. Phase 7 : Déploiement
  9. Phase 8 : Nettoyage
  10. 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

Principe : Petit à petit, commit par commit

Une fonctionnalité = plusieurs petits commits atomiques

Découper le travail en petites étapes testables plutôt qu'un gros commit :

Exemple : Ajouter un bouton "Pause" avec confirmation

❌ MAUVAIS : 1 gros commit
git commit -m "feat: Ajouter bouton Pause avec modal et gestion IPBX"

✅ BON : 5 petits commits
1. feat: Ajouter le bouton Pause dans le header
2. style: Ajouter l'icône SVG pour le bouton Pause
3. feat: Implémenter la modal de confirmation
4. feat: Connecter le bouton à SignalR pour pause IPBX
5. docs: Documenter la fonctionnalité de pause

Étape 1 : Créer une branche feature

git checkout -b feature/nom-de-la-fonctionnalite

Étape 2 : Cycle itératif

Répéter jusqu'à complétion de la fonctionnalité :

a) Développer une petite partie

  • Faire UNE modification logique à la fois
  • Ne pas chercher à tout finir d'un coup
  • Rester concentré sur une seule tâche

b) Tester

IMPORTANT : Toujours tester AVANT de committer

npm run dev  # Test en mode développement
  • Vérifier que la modification fonctionne
  • Tester les cas limites
  • S'assurer qu'aucune régression n'a été introduite

c) Committer

Seulement après avoir testé avec succès :

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 ?

  • Historique Git propre (chaque commit = code fonctionnel)
  • Rollback facile vers un état stable
  • git bisect fonctionne correctement

d) Continuer

Retour à l'étape a) jusqu'à ce que la fonctionnalité soit complète.

Exception : WIP commits

Pour sauvegarder un travail en cours :

git commit -m "wip: Travail en cours sur la fonctionnalité X"
# Plus tard, après tests réussis :
git commit --amend -m "feat: Ajouter la fonctionnalité X"

Phase 2 : Préparation de la release

Étape 3 : Mettre à jour le changelog

Fichier : docs/changelog.md

# Obtenir la date
date +%Y-%m-%d

Format :

## [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
  • MINOR (x.+1.0) : Nouvelles fonctionnalités compatibles
  • MAJOR (+1.0.0) : Changements majeurs incompatibles

Modifier le champ "version": "X.X.X"

Étape 5 : Commit de release

git add docs/changelog.md package.json
git commit -m "release: Version X.X.X - Titre court

- Fonctionnalité 1
- Fonctionnalité 2
- Correction 1
- Bump version X.X.X"

Important : Ne jamais mentionner Claude, Anthropic ou des adresses emails relatives à ces entités.


Phase 3 : Fusion dans main

Étape 6 : Merger dans main

git checkout main
git merge feature/nom-de-la-fonctionnalite --no-ff

Option --no-ff : Force un merge commit pour un historique propre et tracé

Étape 7 : Push vers origin

git push origin main

Phase 4 : Build des exécutables

Étape 8 : Build pour les plateformes

# macOS (si développement sur Mac)
npm run build

# Linux x64 (production principale)
npm run build:linux-x64

# Windows (si nécessaire)
npm run build:win

Étape 9 : Organiser les builds

# Créer le dossier de version
mkdir -p dist/vX.X.X

# Copier le changelog
cp docs/changelog.md dist/vX.X.X/CHANGELOG.md

# Déplacer les builds
mv dist/SimpleConnect-X.X.X*.{AppImage,dmg,zip,exe} dist/vX.X.X/ 2>/dev/null
mv dist/SimpleConnect-X.X.X*.blockmap dist/vX.X.X/ 2>/dev/null

# Vérifier le contenu
ls -lh dist/vX.X.X/

Phase 5 : Documentation

Étape 10 : Créer les notes de release

Fichier : releases/vX.X.X.md

Structure markdown :

  • Titre et date
  • Résumé des changements
  • Nouveautés principales
  • Corrections
  • Fichiers disponibles
  • Compatibilité
  • Guide d'utilisation (si nécessaire)

Étape 11 : Commit et push de la documentation

git add releases/vX.X.X.md
git commit -m "docs: Ajout des notes de release pour vX.X.X"
git push origin main

Phase 6 : Publication sur Gitea

Étape 12 : Créer le tag Git

# Trouver le commit de release
git log --oneline --grep="X.X.X" -5

# Créer le tag annoté
git tag -a vX.X.X <commit-hash> -m "Release vX.X.X - Titre court

Description des principales fonctionnalités
- Fonctionnalité 1
- Fonctionnalité 2
- Correction 1"

Étape 13 : Push du tag

git push origin vX.X.X

Étape 14 : Créer la release avec tea

Prérequis : tea configuré avec le login simpleconnect

# Vérifier la configuration
tea login list

# Créer la release avec tous les fichiers
tea release create \
  --login simpleconnect \
  --repo pierre/SimpleConnect-client-electron \
  --tag vX.X.X \
  --title "SimpleConnect vX.X.X - Titre de la release" \
  --note-file releases/vX.X.X.md \
  --asset dist/vX.X.X/SimpleConnect-X.X.X.AppImage \
  --asset dist/vX.X.X/SimpleConnect-X.X.X-arm64.dmg \
  --asset dist/vX.X.X/SimpleConnect-X.X.X-arm64-mac.zip

Notes :

  • --note-file utilise le fichier markdown des notes
  • Multiple --asset pour uploader tous les binaires
  • Code source (TAR.GZ et ZIP) ajouté automatiquement par Gitea

Étape 15 : Vérifier la release

# Lister toutes les releases
tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron

# Vérifier les assets d'une release
tea release assets --login simpleconnect --repo pierre/SimpleConnect-client-electron vX.X.X

Résultat attendu :

  • SimpleConnect-X.X.X.AppImage (Linux x64)
  • SimpleConnect-X.X.X-arm64.dmg (macOS)
  • SimpleConnect-X.X.X-arm64-mac.zip (macOS)
  • Code source (TAR.GZ et ZIP automatiques)

Corrections éventuelles

Ajouter des assets manquants :

tea release assets create \
  --login simpleconnect \
  --repo pierre/SimpleConnect-client-electron \
  vX.X.X \
  dist/vX.X.X/fichier-supplementaire.ext

Supprimer des doublons :

tea release assets delete \
  --login simpleconnect \
  --repo pierre/SimpleConnect-client-electron \
  --confirm \
  vX.X.X \
  nom-du-fichier.ext

Phase 7 : Déploiement (optionnel)

Étape 16 : Déployer sur le serveur

scp dist/vX.X.X/SimpleConnect-X.X.X.AppImage user@server:/path/to/app/

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

# 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

Pourquoi -D peut être nécessaire ?

  • Git refuse -d si la branche a encore un remote associé
  • Même mergée dans main, Git veut s'assurer qu'elle est mergée dans origin/branche
  • -D est sûr si on a vérifié le merge dans main

Étape 18 : Supprimer les branches distantes

# Supprimer une ou plusieurs branches
git push origin --delete feature/nom-1 feature/nom-2 feature/nom-3

# Vérifier la suppression
git branch -a

Étape 19 : Nettoyer les références locales

# 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.


Référence des commandes

Commandes npm

npm start           # Lance l'application en production
npm run dev         # Mode développement avec DevTools
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

Commandes Git

# 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

tea login list                     # Lister logins configurés
tea login add                      # Ajouter un login
tea login default <nom>            # Définir login par défaut

Releases

tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron
tea release create --help
tea release edit vX.X.X --title "Nouveau titre"
tea release delete vX.X.X --confirm

Assets

tea release assets list vX.X.X
tea release assets create vX.X.X fichier.ext
tea release assets delete vX.X.X fichier.ext --confirm

Options globales

--login simpleconnect              # Utiliser le login 'simpleconnect'
--repo pierre/SimpleConnect-client-electron  # Spécifier le repository
--output json                      # Format de sortie (json, yaml, table)

Conventions de commits

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