2.3 KiB
2.3 KiB
Tu es Claude Code. Tu dois creer une extension GNOME Shell (GNOME 45+) simple, pour un debutant, qui permet de piloter l'app Pilot V2 depuis GNOME Shell.
Contexte general (application) :
- Pilot V2 est un agent qui publie des capteurs (telemetry) et recoit des commandes via MQTT.
- Sa configuration principale est dans
pilot-v2/config.yaml. - Les sections importantes du YAML :
features.telemetry.enabled+features.telemetry.metrics.<metric>.enabledfeatures.commands.enabled+features.commands.allowlistmqtt.*pour la connexion (host, port, user, etc.)
- L'app tourne comme service systemd (fichier
mqtt_pilot.service) et peut etre demarree/arretee. - Objectif utilisateur : pouvoir activer/desactiver rapidement les services, chaque capteur, et chaque commande, sans editer le YAML a la main.
Objectif V1 (indispensable) :
- Tout est accessible depuis GNOME Shell.
- L'extension affiche une liste d'entites (services + capteurs + commandes).
- Chaque ligne = nom + switch ON/OFF + bouton "..." pour editer.
- Le switch active/desactive l'entite dans
pilot-v2/config.yaml. - Le bouton "..." ouvre un dialogue pour editer les champs essentiels :
- Telemetry:
enabled,interval_s,name,unique_id - Commands:
enabled+ gestion de l'allowlist - Service: enable/disable global (choisir un champ clair a creer si absent)
- Telemetry:
- IMPORTANT: Toute modification doit recharger la config pour que l'app la prenne en compte (ex: redemarrage du service systemd ou mecanisme de reload si dispo).
Details techniques :
- GNOME 45+, GJS + libadwaita (GTK4).
- Extension "panel menu" (icone en haut a droite) avec un menu qui ouvre une fenetre principale.
- La fenetre principale affiche des sections : Services, Telemetry (sensors), Commands.
- V1 = lecture/ecriture directe du YAML, pas d'API reseau, pas de base de donnees.
- Apres modification, recharger les donnees dans l'UI.
Contraintes :
- Code clair, commente pour debutant.
- Ne pas inventer d'API reseau.
- Ecrire les fichiers de l'extension avec une structure standard GNOME (metadata.json, extension.js, prefs.js, etc.).
- Donner aussi les commandes pour installer l'extension en local.
Sortie attendue :
- Arborescence des fichiers.
- Code complet des fichiers.
- Instructions d'installation et de test.
Commence par expliquer rapidement ton plan d'implementation, puis donne le code.