📝 Note
pro/syncs3 app/journal
electronreactrcloner2cloudflarevitetypescriptnode-cronkeytar
Journal — syncS3-app
Sessions de travail · ordre antéchronologique Liens : Architecture · Decisions · TODO
2026-06-01
✅ Fait
- Application complète scaffoldée manuellement (electron-vite react-ts, sans scaffold interactif)
- Main process :
rclone.ts— détection binaire, écriturerclone.confisolé, spawn sync avec streaming stdout/stderr, dry-run - Main process :
credentials.ts— keytar (OS keychain) avec fallback AES-256-GCM sur fichier chiffré - Main process :
tray.ts— icône systray 3 états (idle/syncing/error), menu contextuel “Sync Now” / “Open” / “Quit” - Main process :
scheduler.ts— wrapper node-cron, supporte interval (minutes/heures) et expression cron - Main process :
index.ts— cycle de vie Electron, fenêtre minimize-to-tray, tous les handlers IPC - Preload :
index.ts— contextBridge complet, aucun nodeIntegration renderer - Renderer :
Config.tsx— picker dossier natif, formulaire R2 (accountId, bucket, accessKey, secretKey), test connexion (rclone lsf) - Renderer :
Sync.tsx— toggle dry-run (défaut ON), log live, barre de progression parsée depuis--progress, stats dernière sync - Renderer :
Scheduler.tsx— mode disabled/interval/cron, validation expression - CSS dark theme complet (sans dépendance UI externe)
- Icônes tray PNG 16×16 générées (vert/orange/rouge)
- Build propre :
npm run build→ 3 bundles sans erreur - Voir aussi : Architecture Decisions
🧠 Décisions
- electron-vite (pas de setup custom Electron+Vite) → voir Decisions
- Credentials : keytar prioritaire, fallback chiffré local → voir Decisions
- rclone.conf isolé dans
userData→ pas de conflit avec config rclone globale utilisateur → voir Decisions
⚠️ Points d’attention
keytarnécessite recompilation native (node-gyp) selon plateforme — à tester sur Windows/macOS cibles- Icônes tray 16×16 minimales (PNG monochrome) — à remplacer par vraies icônes avant livraison
electron-builderconfiguré mais non testé en mode package complet (NSIS/DMG)- Pas de mise à jour automatique (electron-updater non intégré — hors scope)
- Parsing progress
--progressrclone : regex(\d+)%— à valider sur output rclone réel
➡️ Prochain
- Tester
npm run devsur machine cible (Windows + macOS) - Vérifier compilation keytar native (
npm rebuild keytar) - Remplacer icônes tray placeholder par assets définitifs
- Tester connexion R2 réelle (accountId + bucket + credentials)
- Valider format output
rclone --progresspour parsing correct
2026-06-01 — Initialisation du projet
- Création de la documentation vault via
/init - Répertoire source vide — projet en phase de démarrage
- Stack et périmètre à définir avec le client/équipe