claude 2
This commit is contained in:
144
docs/2026-01-17_12-18-36_backup-feature.md
Normal file
144
docs/2026-01-17_12-18-36_backup-feature.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user