Files
pilot/PROMPT_CLAUDE_CODE_GNOME.md
2026-01-10 20:24:11 +01:00

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>.enabled
    • features.commands.enabled + features.commands.allowlist
    • mqtt.* 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)
  • 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.