Cette page décrit Calíope 1.5, la version que nous construisons en ce moment. La 1.4 est terminée et en cours d'examen par Apple, et la boutique propose aujourd'hui la 1.3 sur le Mac et la 1.2 sur iPad. Le changelog indique dans quelle version chaque fonction est arrivée.

Ajoute un bouton « Ouvrir dans Calíope » à chaque sujet. Ne fonctionne qu'avec l'app installée.

Widgets

Widget Calíope

Surveillez les connexions actives, les QPS et l'état du serveur depuis l'écran d'accueil ou le bureau sans ouvrir l'application.

Où le trouver : Widget › Général

Le Widget Calíope affiche les métriques clés du serveur —MySQL, MariaDB ou PostgreSQL— en temps réel directement sur le bureau macOS ou l'écran d'accueil de l'iPad, sans avoir à ouvrir l'application.

Métriques affichées :
- Connexions actives — nombre de connexions ouvertes et le maximum configuré sur le serveur.
- QPS ou TPS — le débit du serveur : requêtes par seconde sur MySQL et MariaDB, transactions par seconde sur PostgreSQL. Ce sont deux grandeurs différentes, donc l'étiquette indique laquelle vous regardez.
- Uptime — temps en ligne du serveur au format Nd Nh Nm.
- Fils actifs (versions moyenne et grande du widget) — nombre de fils d'exécution en cours.
- Requêtes lentes/sec (moyenne et grande) — taux de requêtes lentes.
- Succès cache (moyenne et grande) — pourcentage de lectures servies depuis le cache du serveur.
- Badge d'état — vert (actif et données fraîches), rouge (le serveur n'a plus répondu au dernier sondage) ou ambre (les données ne peuvent plus être présentées comme actuelles). Quand il n'y a encore aucune donnée, il n'y a pas de badge : le widget vous demande de choisir un serveur et n'affirme rien d'autre.
- Barre de connexions — barre visuelle à couleur sémantique : cyan (faible), ambre (>65 %), rouge (>85 %).

Tailles disponibles :
- Petit — connexions actives avec leur barre, le nom du serveur et le badge d'état. Rien d'autre : c'est la taille où le chiffre doit tenir en entier.
- Moyen — ajoute le débit, les fils actifs et le taux de succès du cache — ou l'uptime à la place, si le moteur ne publie pas de cache.
- Grand — tout ce qui précède plus l'uptime et les requêtes lentes par seconde.
- Très grand — la même chose répartie en deux vraies colonnes. Sur iPad il va sur l'écran d'accueil ; sur le Mac uniquement sur le bureau, car le Centre de notifications n'accepte pas cette taille.
- Écran de verrouillage — rectangulaire (iPad) — nom du serveur, connexions actives/max et QPS.
- Écran de verrouillage — circulaire (iPad) — anneau affichant le taux d'utilisation des connexions avec le nombre absolu au centre.
- Écran de verrouillage — en ligne (iPad) — une seule ligne à côté de l'horloge indiquant le nombre de connexions actives.

Comment ajouter le widget :
- macOS : faites un clic droit sur le bureau et sélectionnez Modifier les widgets. Recherchez Calíope et faites glisser la taille souhaitée vers le bureau ou le Centre de notifications.
- iPad : appuyez longuement sur l'écran d'accueil jusqu'à ce que les icônes vibrent, appuyez sur Modifier en haut à gauche, puis sur Ajouter un widget, recherchez Calíope et sélectionnez la taille.

Fréquence de mise à jour :
C'est vous qui choisissez la cadence, et tout le reste en découle. Avec le Tableau de bord ouvert, les métriques sont écrites au rythme de son sélecteur de rafraîchissement (de 1 à 30 secondes). Tableau de bord fermé, il faut activer Préférences › Widget › Actualisation en arrière-plan et y choisir l'intervalle : 30 secondes, 1, 5 ou 15 minutes.

Quand le badge passe à l'ambre :
Quand les données n'ont pas été renouvelées depuis plus de trois fois cette cadence, avec un plancher de 90 secondes. Avec un intervalle de 5 minutes, le widget reste vert pendant 15 ; avec 15 minutes, pendant 45. Le plafond est dérivé de votre réglage au lieu d'être un nombre fixe, car un widget qui passe à l'ambre alors que l'actualisation fonctionne exactement comme demandé n'avertit de rien.

Et s'il n'y a jamais eu de données — parce que vous n'avez pas choisi de serveur — le widget ne dit pas Pas de données : il vous demande d'en choisir un.

Mots-clés : widget, bureau, écran d'accueil, connexions, qps, uptime, cache, innodb, état, badge, métriques, home screen, macOS, iPad

Le widget de santé du parc

Un second widget qui montre tout le parc au lieu d'un seul serveur : combien sont surveillés, combien demandent attention et lequel va le plus mal.

Où le trouver : Widget › Widget, galerie, écran d'accueil

Le widget Métriques regarde un serveur. Celui-ci les regarde tous, et répond à une autre question : y a-t-il quelque chose que je doive aller voir ?

Où il fonctionne
- iPhone et iPad. Sur macOS, seul le widget de métriques existe.

Tailles disponibles :
- Petit — le pire état du parc et le nombre de serveurs surveillés.
- Moyen — la liste, jusqu’à trois serveurs, les pires devant.
- Grand — la même liste, jusqu’à six. Dans les deux, ce qui ne tient pas est annoncé par « et N de plus », et aux tailles d’accessibilité il tient moins de lignes.

D'où vient la donnée
- Du Moniteur de santé, dans cette même app. Chaque sondage écrit le résultat dans le conteneur que le widget lit.
- Elle ne passe pas par le réseau et ne dépend pas d'iCloud : ce que vous voyez sur l'écran d'accueil a été mesuré sur cet appareil.
- Si la publication iCloud est désactivée, le widget continue de fonctionner. Cet interrupteur décide de ce qui sort de l'appareil, pas de ce que votre écran vous montre.

Quand il ne dit rien
- Ouvrez le Moniteur de santé une fois : rien n'a encore été mesuré sur cet appareil.
- Aucun serveur n'est surveillé : le moniteur a tourné et sa liste est vide.

La couleur n'est jamais le seul signal : chaque état porte sa forme, et ce que prononce VoiceOver dit le décompte, le pire et combien demandent attention.

Un appui ouvre le Moniteur de santé.

Mots-clés : parc, widget, santé, moniteur, écran d'accueil, serveurs, sévérité

Toucher le widget ouvre le serveur

Un toucher ou un clic sur le widget ouvre Calíope et se connecte automatiquement au serveur épinglé.

Où le trouver : Widget › Lien profond

Lorsque vous touchez ou cliquez sur le widget Calíope, l'application s'ouvre et se connecte directement au serveur que ce widget a choisi, en vous amenant au Tableau de bord de l'espace de travail correspondant.

Comment ça fonctionne :
- Le widget inclut un lien profond de la forme caliope://server/<id> qui pointe vers le serveur choisi dans la configuration de ce widget, et non vers celui qu'il affiche à cet instant. La différence compte quand il n'y a pas encore de métriques : le widget dit « Choisissez un serveur » et ouvre quand même le sien.
- Si l'application n'était pas ouverte, elle se lance d'abord puis ouvre la session.
- Si l'application était déjà ouverte et qu'une session active existe pour ce serveur, elle est simplement ramenée au premier plan.

Quel serveur il ouvre :
- Celui que vous avez choisi en ajoutant le widget, ou celui que vous avez défini ensuite : appui long sur le widget (iPad) ou clic droit (Mac) → Modifier le widgetServeur.
- Si ce widget n'en a aucun, il ouvre celui des données qu'il affiche, c'est-à-dire le dernier Tableau de bord actif.
- Le profil épinglé de Préférences › Widget est autre chose : c'est le serveur rafraîchi en arrière-plan, pas celui qu'ouvre le lien.

Si aucun serveur n'est choisi, le widget vous demande d'en choisir un ; le toucher ouvre Calíope sur l'écran du gestionnaire de connexions.

Mots-clés : widget, deep link, lien profond, toucher, cliquer, ouvrir, épingler, tap, caliope://, url scheme

Choisir le serveur de chaque widget

Chaque widget peut surveiller un serveur différent — configurez-le lors de l'ajout ou modifiez-le ensuite.

Où le trouver : Widget › Configuration

Le widget Calíope est configurable : en l'ajoutant au bureau ou à l'écran d'accueil, le système demande quel serveur il doit afficher. Vous pouvez ainsi avoir plusieurs widgets simultanés, chacun montrant les métriques d'un serveur différent (production, préproduction, réplique, etc.).

Configurer à l'ajout du widget
- macOS : faites un clic droit sur le bureau et choisissez Modifier les widgets, puis faites glisser la variante voulue sur le bureau. Le dépôt n'ouvre aucun sélecteur : le serveur se choisit ensuite, par un clic droit sur le widget posé → Modifier « Calíope »Serveur.
- iPad : appuyez longuement sur l'écran d'accueil, touchez ModifierAjouter un widget, cherchez Calíope et choisissez la taille. Le serveur se choisit ensuite, par un appui long sur le widget posé → Modifier le widgetServeur.

Modifier le serveur d'un widget existant
- macOS : clic droit sur le widget → Modifier « Calíope » → changez le paramètre Serveur.
- iPad : appui long sur le widget → Modifier le widget → changez le paramètre Serveur.

Ce qui est partagé via l'App Group
- Calíope publie un catalogue minimal (id, name, host) de vos profils au lancement de l'app et chaque fois que vous sauvegardez des changements dans le Gestionnaire de connexions. Le widget lit ce catalogue pour peupler le sélecteur ; n'y entrent que les profils dont le moteur peut publier des métriques —ceux de MongoDB ne sont pas proposés, car les choisir laisserait le widget vide pour toujours— et il ne voit jamais mots de passe, clés SSH ni certificats.
- Les métriques sont stockées par profil (caliope_widget_metrics_<id>.json), donc chaque widget lit ses propres données indépendamment de la session active dans l'app.

Widget sans serveur configuré
- Si vous ne choisissez aucun serveur, le widget affiche les métriques du dernier serveur actif dans l'app. Mais si vous en choisissez un et qu'il n'y a pas encore de métriques pour lui, il n'affiche pas celles d'un autre : il dit qu'il n'y a pas de données. Un widget fixé à un serveur ne peut jamais finir par afficher le nom et les chiffres d'un autre.

Mots-clés : widget, configuration, choisir serveur, AppIntent, multi-serveur, plusieurs widgets, sélecteur, modifier widget, profil

App Group du Widget

Comment Calíope partage les métriques avec l'extension Widget sur les trois.

Où le trouver : Calíope › Préférences › Widget

Le widget Calíope vit dans une extension séparée qui ne peut pas lire la mémoire de l'application principale. Pour que les données en temps réel apparaissent, l'application et l'extension partagent un conteneur commun via un App Group.

Identifiant
- iPad : group.org.caliope.widget.
- macOS : le même, précédé de l'identifiant de l'équipe (ASH9Q9BLUY.group.org.caliope.widget) — le système l'exige sous cette forme.

Le même conteneur alimente les deux widgets iOS : celui des métriques et celui de la santé du parc. Sur iPhone et iPad c'est le même binaire, donc le même App Group.

Ce qui est partagé
- Les métriques les plus récentes de chaque serveur (connexions actives, débit —QPS ou TPS selon le moteur—, uptime, threads, requêtes lentes/s, taux de succès du cache).
- Le timestamp de la dernière mise à jour et la cadence avec laquelle elle a été écrite. Le widget utilise les deux pour décider quand passer le badge à l'ambre : le plafond vaut trois fois la cadence, avec un plancher de 90 secondes.
- L'identifiant du profil épinglé et l'URL caliope://server/<id> pour le lien profond.

Comment c'est mis à jour
- Tant que l'application principale est ouverte et connectée, WidgetDataStore écrit dans l'App Group à chaque tick de polling.
- Après écriture, Calíope appelle WidgetCenter.shared.reloadAllTimelines() afin que le widget se rafraîchisse à la prochaine opportunité accordée par le système.
- Si l'application se ferme, le widget continue d'afficher les dernières données jusqu'à ce que le système demande un nouveau timeline. Une fois dépassé le plafond dérivé de la cadence, le badge devient ambre et l'étiquette devient Aucune donnée.

Réinstaller l'application ou changer d'Apple ID
- L'App Group est lié au Team ID du développeur. Lorsque vous installez Calíope depuis le Mac App Store ou l'App Store, macOS/iOS crée le conteneur automatiquement. Aucune configuration n'est nécessaire.
- Si vous transférez l'iPad vers un autre Apple ID, le conteneur est supprimé avec l'application et le widget reste vide jusqu'à ce que vous ouvriez Calíope au moins une fois.

La langue ne passe pas par ici. Elle se choisit par application dans les réglages du système, et ce choix atteint aussi l'extension : le widget lit la sienne et parle la même que l'app sans que personne ait à la lui transmettre.

Mots-clés : app group, widget, group.org.caliope.widget, WidgetDataStore, WidgetCenter, reloadAllTimelines, conteneur, extension, team id, métriques partagées

Le widget affiche « Aucune donnée » : comment résoudre

Diagnostic pas à pas lorsque le badge est ambre et qu'aucune métrique n'apparaît.

Où le trouver : Widget › Dépannage

Si le widget Calíope affiche le badge ambre avec l'étiquette Aucune donnée, c'est que les données ne se sont pas renouvelées depuis trop longtemps. « Trop longtemps » n'est pas un nombre fixe : c'est trois fois la cadence avec laquelle elles ont été écrites, avec un plancher de 90 secondes.

D'abord, regardez ce qu'affiche le widget :
- Choisissez un serveur — il n'y a jamais eu de données. C'est le point 1.
- Aucune donnée — il y en a eu et elles ont expiré. C'est tout le reste.
- Offline, en rouge — le rafraîchissement en arrière-plan a tenté un sondage et le serveur n'a pas répondu. Les chiffres affichés sont les derniers vrais, et c'est pour cela qu'ils sont atténués.

1. Un serveur est-il choisi ?
- Chaque widget choisit le sien : appui long (iPad) ou clic droit (Mac) sur le widget → Modifier le widgetServeur.
- Si vous n'en choisissez aucun, le widget se rabat sur le dernier serveur actif dans l'application ; s'il n'y en a pas non plus, il n'a rien à afficher.

2. Qui écrit les métriques ?
Il n'y a que deux rédacteurs, et si aucun ne tourne le widget reste immobile par définition :
- Le Tableau de bord ouvert sur ce serveur. En fermant l'onglet, les chiffres restent : le widget continue d'afficher la dernière mesure et la marque comme ancienne le moment venu. Avant ils étaient effacés à la fermeture, ce qui laissait tous les widgets sans rien juste au moment de quitter l'app.
- L'actualisation en arrière-plan, dans Préférences › Widget. Il faut l'activer et y choisir le profil épinglé ; c'est ce qui maintient le widget en vie avec l'application en arrière-plan.

3. Et si l'intervalle est long ?
À 15 minutes, le widget reste vert pendant 45 puis passe à l'ambre même si tout fonctionne : le temps entre deux écritures s'est simplement écoulé. Si vous préférez que l'ambre arrive plus tôt, baissez l'intervalle dans Préférences › Widget.

4. Avez-vous redémarré l'appareil ?
Après un redémarrage, le widget n'a pas d'état tant que l'application principale ne s'est pas exécutée au moins une fois.

5. Le système le bloque-t-il ?
- Sur iPad, Réglages › Général › Actualisation en arrière-plan doit être activé pour Calíope, sinon l'actualisation programmée ne s'exécute jamais.
- Sur Mac il n'y a pas d'équivalent, mais il n'y a pas non plus de rédacteur pendant que Calíope est fermée : le widget conserve la dernière chose reçue et la marque comme ancienne le moment venu.

6. Si rien de tout cela ne correspond
Retirez le widget du bureau ou de l'écran d'accueil et rajoutez-le : cela oblige le système à reconstruire le timeline de zéro.

Mots-clés : aucune donnée, no data, widget, badge ambre, diagnostic, résoudre, épingler profil, actualisation arrière-plan, réinitialiser cache, diagnostic