Files
ClipCoffre/CLAUDE.md
2026-01-17 13:10:10 +01:00

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_path configurable dans popup3