feat: implémentation complete v0.1.0 — daemon de sync clipboard bidirectionnel
CI / Lint (push) Failing after 14m46s
CI / Test (push) Failing after 4m23s
CI / Build (darwin/amd64) (push) Skipped
CI / Build (linux/amd64) (push) Skipped
CI / Build (windows/amd64) (push) Skipped
CI / Build (darwin/arm64) (push) Skipped
CI / Build (linux/arm64) (push) Skipped
CI / Build (windows/arm64) (push) Skipped
CI / Release (push) Skipped

This commit is contained in:
2026-08-08 15:47:22 -04:00
parent 736c9024f3
commit 5655573fc8
25 changed files with 2050 additions and 403 deletions
+28 -45
View File
@@ -1,53 +1,36 @@
# clip-sync — Roadmap
# ROADMAP.md — clip-sync
## v1.0 — Le strict nécessaire (main)
## v0.1.0 ✅ MVP — Sync texte bidirectionnel (actuelle)
- [x] Watch clipboard local (poll 500ms, hash-based dedup)
- [x] Serveur HTTP `POST /clip` pour recevoir les clips des pairs
- [x] Anti-boucle d'écho (lastHash + host+TS filtering)
- [x] Cross-platform clipboard: Linux (xclip/wl-paste), macOS (pbpaste), Windows (PowerShell)
- [x] Configuration TOML statique des pairs
- [x] `install.sh` one-liner multi-OS
- [x] Build cross-platform (`GOOS=linux|windows|darwin`)
- [x] Synchronisation texte entre pairs LAN
- [x] Anti-boucle (hash + timestamp + origine)
- [x] Configuration TOML + env override
- [x] Linux (X11 + Wayland), Windows, macOS
- [x] Tests unitaires + intégration
- [x] Build cross-plateforme
- [x] Service systemd --user
## v1.1 — Robustesse
## v0.2.0 🔒 Sécurité
- [ ] Retry HTTP avec backoff exponentiel (pair down → réessayer)
- [ ] Health check `/health` endpoint
- [ ] Logging structuré (timestamp, niveau, pair)
- [ ] Timeout HTTP (5s) — éviter de bloquer si un pair est down
- [ ] `systemd --user` unit file + `nssm` config Windows
- [ ] GoReleaser pour publier les binaires sur les releases Gitea
- [ ] Chiffrement TLS entre pairs (certificats auto-signés ou clé partagée)
- [ ] Authentification par clé partagée (header `Authorization: Bearer <key>`)
- [ ] Validation de l'origine (rejet des pairs inconnus)
- [ ] Option `--generate-key` pour générer une clé partagée
- [ ] Config : section `[security]` dans peers.toml
## v2.0 — Fonctionnalités
## v0.3.0 📎 Contenu enrichi
- [ ] mDNS discovery automatique (alternative à la config statique)
- [ ] `cb history` — ring buffer local des 50 derniers clips
- [ ] `cb push <machine>` / `cb pull <machine>` — mode explicite en plus du sync auto
- [ ] TLS entre pairs (certificats auto-signés)
- [ ] Token d'authentification partagé
- [ ] Filtrage par type (texte seulement, pas d'images/binaire en v1)
- [ ] Support images (base64 dans le payload JSON, avec taille max configurable)
- [ ] Support images (JPEG/PNG) — payload Base64
- [ ] Support fichiers (chemin + contenu Base64, taille max configurable)
- [ ] Historique du presse-papiers local (derniers N éléments)
- [ ] Commande `clip-sync history` pour afficher l'historique
- [ ] Option `--one-shot` : envoi unique sans daemon
## v3.0 — Intégrations
## v1.0.0 🌐 Stable
- [ ] Intégration Ditto (Windows) — lecture de `Ditto.db` SQLite, push automatique
- [ ] Bridge MQTT pour intégration domotique (Home Assistant)
- [ ] Web UI minimale pour voir l'état des pairs
- [ ] API WebSocket pour push temps réel (alternative au polling HTTP)
## Non-goals (volontairement exclus)
- Cloud relay / sync hors-LAN — utiliser Syncthing ou un autre outil
- Chiffrement bout-en-bout — le LAN est le périmètre de confiance
- Gestionnaire de presse-papier complet — Ditto, CopyQ, Ringboard existent déjà
- App mobile — hors scope
## Calendrier indicatif
| Version | Effort | Cible |
|---------|--------|-------|
| v1.0 | 1 session | Août 2026 |
| v1.1 | 1 session | Septembre 2026 |
| v2.0 | 2-3 sessions | 2027 |
| v3.0 | Au besoin | Quand Ditto devient prioritaire |
- [ ] Découverte automatique des pairs via mDNS (optionnel, activable)
- [ ] Interface web locale de monitoring (`localhost:9137/` : pairs connectés, stats)
- [ ] Notification desktop (DBus/Linux, toast/Windows, Notification Center/macOS)
- [ ] Tests de performance et benchmark
- [ ] Documentation utilisateur finale (site statique ou wiki)
- [ ] Signature GPG des releases