190 lines
5.0 KiB
Markdown
190 lines
5.0 KiB
Markdown
# 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`.
|
||
|