claude 2
This commit is contained in:
96
CLAUDE.md
Normal file
96
CLAUDE.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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_path` configurable dans popup3
|
||||
Reference in New Issue
Block a user