# 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 <A/B/C/...>`**
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`. 

