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

145 lines
3.7 KiB
Markdown

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