feat: clip-sync v1.0 — daemon de sync clipboard bidirectional en Go

- Daemon Go ~150 lignes, zéro dépendance hors stdlib + toml
- Watch clipboard local (poll 500ms, hash-based dedup)
- Serveur HTTP POST /clip pour réception des pairs
- Anti-boucle d'écho (lastHash + host+TS filtering)
- Cross-platform: Linux (xclip/wl-paste), macOS, Windows
- Configuration TOML statique des pairs
- install.sh one-liner multi-OS
- ARCHITECTURE.md + ROADMAP.md + README.md
This commit is contained in:
2026-08-08 12:02:58 -04:00
commit 736c9024f3
9 changed files with 503 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
# clip-sync — Roadmap
## v1.0 — Le strict nécessaire (main)
- [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`)
## v1.1 — Robustesse
- [ ] 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
## v2.0 — Fonctionnalités
- [ ] 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)
## v3.0 — Intégrations
- [ ] 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 |