Files
ClipCoffre/docs/2026-01-17_12-18-36_backup-feature.md
2026-01-17 13:10:10 +01:00

3.7 KiB

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 :

<key name="backup_path" type="s">
  <default>''</default>
  <summary>Backup directory path</summary>
</key>

Settings Wrapper

Fichier : src/storage/settings.js

Ajout du getter/setter pour backupPath :

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

.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 :

<backup_path>/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.