3.3 KiB
3.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Projet
ClipCoffre est une extension GNOME Shell (GNOME 47+, Debian 13) combinant :
- Un gestionnaire de secrets (user/password) avec obfuscation XOR+base64
- Un gestionnaire de clipboard (favoris + historique)
UUID : clipcoffre@gilles
Dépôt : https://gitea.maison43.duckdns.org/gilles/ClipCoffre.git
Commandes de développement
# Installation de l'extension dans GNOME
./install.sh
# Compilation manuelle du schéma GSettings
glib-compile-schemas schemas/
# Redémarrage de GNOME Shell (X11 seulement)
# Alt+F2 puis taper "r"
# Logs de l'extension
journalctl -f -o cat /usr/bin/gnome-shell
# Activer/désactiver l'extension
gnome-extensions enable clipcoffre@gilles
gnome-extensions disable clipcoffre@gilles
Architecture
extension.js # Point d'entrée (init/enable/disable)
├── src/ui/
│ ├── panelButton.js # Icône topbar + dispatch click_mode (unifie/separe)
│ ├── popupMain.js # Mode unifié avec onglets
│ ├── popupSecrets.js # Popup secrets (popup1)
│ ├── popupClipboard.js # Popup clipboard (popup2)
│ └── popupSettings.js # Popup réglages (popup3)
├── src/services/
│ ├── secretService.js # CRUD secrets + encode/decode passwords
│ └── clipboardService.js # Gestion favoris/historique
├── src/storage/
│ ├── settings.js # Wrapper GSettings
│ ├── jsonStore.js # Helpers lecture/écriture JSON + permissions
│ ├── secretsStore.js # Obfuscation XOR + gestion key.json/secrets.json
│ └── clipboardStore.js # Persistance favoris/historique
└── schemas/
└── org.gnome.shell.extensions.secretclipboard.gschema.xml
GSettings
Schema ID : org.gnome.shell.extensions.secretclipboard
| Clé | Type | Description |
|---|---|---|
history_size |
int | Limite historique clipboard (défaut: 50) |
show_passwords |
bool | Afficher mots de passe en clair (défaut: false) |
click_mode |
string | unifie ou separe |
Stockage des données
Chemin : ~/.local/share/gnome-shell/extensions/clipcoffre@gilles/data/
secrets.json- Secrets obfusqués (perms 0600)key.json- Clé d'obfuscation générée au 1er lancement (perms 0600)clipboard.json- Favoris et historique
Sécurité MVP : obfuscation XOR+base64 avec clé locale (pas un vrai chiffrement). TODO: migrer vers libsecret/GNOME Keyring.
Conventions GJS/GNOME Shell
- Imports :
const { Gio, St, GLib } = imports.gi; - Modules internes :
Me.imports.src.module.SubModule - Export :
var ModuleName = { Class }; - Ne jamais loguer de mots de passe ou secrets
Tests
Pas de tests automatisés. Checklist manuelle dans MANUAL_TESTS.md.
Spécifications fonctionnelles
Modes de clic (click_mode)
- unifie : clic gauche → popover avec onglets Secrets/Clipboard
- separe : clic gauche → Secrets, clic droit → Clipboard
Fonctionnalité backup (à implémenter)
- Icône "document-save-symbolic" dans l'en-tête
- Export dans
<backup_path>/YYYY-MM-DD_HH-mm-ss/ - Fichiers : settings.json, clipboard.json, secrets.json (obfusqué), manifest.json
- Setting
backup_pathconfigurable dans popup3