# Implementation de la fonctionnalite Backup **Date** : 2026-01-17 12:18:36 **Version** : 0.2.0 **Auteur** : Claude Code --- ## Resume Ajout d'une fonctionnalite de sauvegarde (backup) permettant d'exporter les donnees de l'extension ClipCoffre vers un dossier configurable. L'export inclut les parametres, l'historique clipboard, et les secrets (toujours obfusques). --- ## Fichiers crees ### `src/services/backupService.js` Service responsable de l'export des donnees. Principales methodes : - `isConfigured()` : Verifie si le chemin de backup est configure et valide - `backup()` : Execute l'export complet des donnees - `_formatTimestamp()` : Genere un timestamp au format `YYYY-MM-DD_HH-mm-ss` - `_ensureBackupDir()` : Cree le dossier de backup avec les bonnes permissions --- ## Fichiers modifies ### Schema GSettings **Fichier** : `schemas/org.gnome.shell.extensions.secretclipboard.gschema.xml` Ajout de la cle `backup_path` : ```xml '' Backup directory path ``` ### Settings Wrapper **Fichier** : `src/storage/settings.js` Ajout du getter/setter pour `backupPath` : ```javascript get backupPath() { return this._settings.get_string('backup_path'); } set backupPath(value) { this._settings.set_string('backup_path', value); } ``` ### Popup Settings (popup3) **Fichier** : `src/ui/popupSettings.js` - Ajout du champ de saisie pour configurer le chemin de backup - Gestion de la valeur temporaire `_tempBackupPath` pour annulation - Sauvegarde dans GSettings via le bouton OK ### Headers UI (Secrets et Clipboard) **Fichiers** : - `src/ui/popupSecrets.js` - `src/ui/popupClipboard.js` Ajout de l'icone backup (`document-save-symbolic`) dans les headers, a cote de l'icone settings. Le callback `onBackupClick` declenche l'export. ### Panel Button et Popup Main **Fichiers** : - `src/ui/panelButton.js` - `src/ui/popupMain.js` - Import du `BackupService` - Ajout de la methode `_doBackup()` qui : 1. Verifie si le backup est configure 2. Execute l'export 3. Affiche une notification avec le resultat ### Styles CSS **Fichier** : `stylesheet.css` ```css .clipcoffre-backup-btn { color: rgba(255, 255, 255, 0.9); } .clipcoffre-backup-btn:hover { background-color: rgba(60, 180, 100, 0.3); } .clipcoffre-backup-path-input { min-width: 280px; } ``` --- ## Format d'export Lors d'un backup, un dossier est cree avec le format : ``` /YYYY-MM-DD_HH-mm-ss/ ``` Contenu du dossier : | Fichier | Description | |---------|-------------| | `settings.json` | Parametres GSettings (history_size, show_passwords, click_mode, backup_path) | | `clipboard.json` | Favoris et historique du clipboard | | `secrets.json` | Secrets obfusques (jamais en clair) | | `manifest.json` | Metadata (uuid, version, timestamp) | ### Permissions - Dossiers : `0700` - Fichiers : `0600` --- ## Utilisation 1. Ouvrir les parametres (icone engrenage) 2. Configurer le "Chemin de backup" (ex: `/home/user/backup/clipcoffre`) 3. Cliquer sur OK pour sauvegarder 4. Cliquer sur l'icone de sauvegarde (disquette) dans le header 5. Une notification confirme "Backup OK" ou affiche l'erreur ### Messages d'erreur possibles - "Chemin de backup non configure" : Le champ est vide - "Chemin de backup invalide" : Le dossier n'existe pas - "Configurer le chemin de backup dans les parametres" : Bouton backup clique sans configuration --- ## Tests manuels Voir `MANUAL_TESTS.md` section "Backup" (points 11-15) pour la procedure de test complete. --- ## Securite Les mots de passe exportes dans `secrets.json` restent obfusques (XOR + base64). Ils ne sont **jamais** exportes en clair. La cle d'obfuscation (`key.json`) n'est pas incluse dans le backup.