# upgrade_1.md ## Extension GNOME Shell : Icône dans la barre + Popup configurable + YAML Ce document définit les nouvelles directives pour faire évoluer l’application actuelle vers une intégration complète dans GNOME Shell. --- # 1. Objectif général L’application doit désormais inclure **une extension GNOME Shell** qui : 1. Ajoute **une icône dans la barre supérieure** (Top Bar). 2. Ouvre, au clic sur cette icône, **une fenêtre popup dédiée** affichant un tableau interactif d’équipements et de services. 3. Génère ce tableau **à partir d’un fichier YAML**, permettant de modifier les équipements sans toucher au code. 4. Gère l’ouverture d’URL (SSH, HTTP, HTTPS…) associées à chaque service. Ce fichier décrit également le **processus à suivre pour Claude Code** afin d’analyser, proposer, puis implémenter les fonctionnalités. --- # 2. Nouvelle architecture fonctionnelle ## 2.1 Extension GNOME Shell : icône dans la barre supérieure L’extension doit : - Ajouter une **icône** dans le panel, visible en permanence. - Au clic, afficher un **popup** ou un **panneau flottant** contenant la liste des équipements. - Le popup doit pouvoir être **fermé**, soit via un second clic sur l’icône, soit par toute action prévue par GNOME Shell. ### Contenu du popup Le popup devra afficher : - Une liste d’**équipements** (PC, serveurs, VM…) - Pour chaque équipement : - Un label (nom) - Une liste de **services** associés - Pour chaque service : - une icône - un nom - une URL à ouvrir --- # 3. Fichier de configuration YAML Créer le fichier : ``` config/equipements.yaml ``` Structure attendue : ```yaml equipements: - nom: "PC Bureau" ip: "10.0.0.24" services: - nom: "SSH" icon: "terminal" url: "ssh://gilles@10.0.0.24" - nom: "Interface Web" icon: "web-browser" url: "http://10.0.0.24:8080" - nom: "Serveur Proxmox" ip: "10.0.0.10" services: - nom: "SSH" icon: "terminal" url: "ssh://root@10.0.0.10" - nom: "Proxmox UI" icon: "server" url: "https://10.0.0.10:8006" ``` Notes : - Un équipement peut contenir plusieurs services. - Chaque service doit afficher une icône. - Tous les champs doivent être extensibles (ajouter plus d’attributs dans le futur si besoin). --- # 4. Contraintes techniques GNOME Shell Il est important de tenir compte des restrictions : - **WebKitGTK est interdite dans les extensions GNOME Shell**. Impossible d’intégrer du vrai HTML directement. Donc le popup devra être : - soit un **ensemble de widgets St.*** créés depuis le YAML, - soit une **fenêtre externe GTK** (possible via un script ou app séparée). L’analyse devra tenir compte de ces contraintes. --- # 5. Analyse obligatoire avant développement (Claude) Claude doit impérativement produire une **analyse complète** avant toute modification du projet. ## 5.1 Ce que Claude doit analyser Claude doit étudier plusieurs architectures possibles, notamment : ### **A : Popup GNOME Shell natif (widgets St)** - Parsing YAML dans l’extension. - Construction d’interfaces entièrement via St.BoxLayout / St.Icon / St.Button. ### **B : Extension + application GTK externe (WebKit)** - L’extension déclenche une application GTK qui affiche du vrai HTML. ### **C : Extension GNOME Shell + navigateur en mode app** - L’extension ouvre une fenêtre Chromium/Webkit en mode application. ### **D : Serveur local + widgets GNOME Shell générés depuis un JSON/YAML** - Génération HTML ou JSON via fichier local. Pour chaque solution, Claude doit fournir : - avantages, - inconvénients, - complexité, - compatibilité, - performances, - ergonomie. ### Il doit produire : - un **tableau comparatif**, - une **recommandation ordonnée**. **Aucun code ne doit être généré avant mon choix explicite.** --- # 6. Protocole de travail imposé à Claude Code ### **`UPGRADE:1 ANALYSE`** Claude réalise : - analyse complète, - comparaison des options, - pas de code. ### **`UPGRADE:1 CHOIX `** Je choisis l’architecture souhaitée. Claude : - confirme l’impact, - annonce quels fichiers seront créés ou modifiés, - pas encore de code. ### **`UPGRADE:1 APPLY`** Claude applique : - création et mise à jour des fichiers, - ajout de l’extension GNOME Shell, - parser YAML, - popup dynamique, - URLs fonctionnelles. ### **`UPGRADE:1 DOC`** Claude met à jour la documentation utilisateur. --- # 7. Résultat attendu À la fin de cette évolution : - Une **icône** apparaît dans la barre GNOME. - Un **popup dynamique** s’ouvre avec la liste des équipements. - Le contenu du popup provient du fichier **YAML**. - Les clics déclenchent l’ouverture des URLs. - L’extension est propre, documentée, testable. --- # 8. Résumé Ce fichier sert de **référence officielle** pour diriger l’analyse et le développement par Claude Code : - Analyse → Choix → Implémentation → Documentation. - Aucun code avant `UPGRADE:1 APPLY`.