From 4289d2d0bae831574d1cd7b00ee4bc1b21b7c105 Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Fri, 14 Aug 2026 11:05:59 -0400 Subject: [PATCH] docs: Windows notification test checklist + GPG signing steps --- .gitea/workflows/ci.yml | 9 +++++- README.md | 61 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 01e43bf..d142ed8 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -107,9 +107,16 @@ jobs: - name: Sign artifacts if: ${{ secrets.GPG_PRIVATE_KEY != '' }} + env: + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} run: | for f in artifacts/*/clip-sync-*; do - gpg --batch --yes --armor --detach-sign "$f" + if [ -n "$GPG_PASSPHRASE" ]; then + gpg --batch --yes --pinentry-mode loopback \ + --passphrase "$GPG_PASSPHRASE" --armor --detach-sign "$f" + else + gpg --batch --yes --armor --detach-sign "$f" + fi done - name: Create release diff --git a/README.md b/README.md index cf7b015..1122a30 100644 --- a/README.md +++ b/README.md @@ -369,6 +369,67 @@ make sign # signer les binaires de release avec GPG make test-race # tests avec détecteur de race ``` +## Validation manuelle — notifications Windows + +Le code des notifications Windows (bulle via `Shell_NotifyIconW`) compile, mais +n'a pas été validé sur un vrai poste. Voici exactement quoi tester : + +1. **Installer et lancer** : sur Windows, `irm …/install.ps1 | iex`, ou `go build` + puis exécuter `clip-sync`. +2. **Activer les notifications** dans `~/.config/clip-sync/peers.toml` : + ```toml + [daemon] + notify = true + ``` +3. **Envoyer un clip** depuis une autre machine du LAN, ou en local : + ```powershell + curl -X POST http://127.0.0.1:9137/clip -H "Content-Type: application/json" ` + -d '{"text":"test notification","ts":1700000000000000000,"origin":"autre-machine"}' + ``` +4. **Vérifier** qu'une bulle intitulée `clip-sync` apparaît dans la zone de + notification (coin bas-droit), avec le message « Clip reçu de autre-machine ». +5. **Tester une image** : activer `sync_images = true`, envoyer une image + (copier/coller d'une autre machine), vérifier la bulle « Image reçue de … ». +6. **Vérifier l'icône** : une icône clip-sync doit rester dans la barre des + tâches pendant que le daemon tourne (comportement attendu de `Shell_NotifyIcon`). +7. **Robustesse** : envoyer plusieurs clips rapprochés — pas de crash, bulles successives. +8. **Noter la différence Windows 10 vs 11** : bulle classique vs conversion en toast + (selon les réglages système), et signaler tout écart observé. + +## Signer les releases (GPG) + +La CI signe automatiquement les binaires si une clé est configurée. Étapes : + +1. **Générer une clé** (si absente) : + ```bash + gpg --full-generate-key + # choisir RSA/RSA 4096, saisir nom + email, et une passphrase + ``` +2. **Récupérer l'ID de la clé** (la partie après `rsa4096/`) : + ```bash + gpg --list-secret-keys --keyid-format LONG + # sec rsa4096/AAAAAAAAAAAAAAAA 2026-08-14 [SC] + ``` +3. **Exporter la clé privée** (bloc armoré) : + ```bash + gpg --armor --export-secret-keys AAAAAAAAAAAAAAAA + ``` +4. **Ajouter les secrets Gitea** : dépôt → *Settings* → *Actions* → *Secrets* : + - `GPG_PRIVATE_KEY` = le contenu exporté (le bloc `BEGIN PGP PRIVATE KEY BLOCK`) + - `GPG_PASSPHRASE` = la passphrase (seulement si la clé en a une) +5. **Publier une release** : + ```bash + git tag v0.2.0 + git push origin v0.2.0 + ``` + La CI importe la clé, signe chaque binaire et attache les fichiers `.asc`. +6. **Vérifier** une signature : + ```bash + gpg --verify clip-sync-linux-amd64.asc + ``` + (nécessite la clé publique : `gpg --recv-keys AAAAAAAAAAAAAAAA`, ou publiez-la + sur un serveur de clés / dans le README). + ## Licence MIT © 2026