La dernière fois que ce blogue a parlé du Mac, c’était pour la 1.3.0, la version qui apportait la Visionneuse Cube. Trois versions plus discrètes ont suivi au cours de l’été : la 1.3.1 a ajouté Réglages ▸ Points d’accès et l’export de figures propre à la Visionneuse FITS, la 1.3.2 a ajouté les Flux de travail et le français pour chaque chaîne de l’application, et la 1.3.3 a été une passe de fiabilité sur le Stockage. Entre-temps, l’application Windows a pris de l’avance, et Windows 1.4.1 est devenue l’étalon : la 1.4.0 pour Mac a commencé comme un plan pour la rattraper, point par point.
Puis sont venues deux passes d’essais complètes, menées par un assistant IA qui pilotait l’application avec ses propres outils, cas par cas, sous les yeux d’une personne qui regardait l’écran. Elles ont trouvé plus que le plan : des pixels faux, des positions fausses, des réponses fausses données à l’assistant — et une bonne part de cette version est ce qu’elles ont trouvé, corrigé. Si Verbinal pour macOS est nouveau pour vous, l’article sur la 1.3.0 reste une bonne visite de l’application ; celui-ci porte sur ce qui est nouveau.
Les découpes : seulement la partie d’un fichier qu’il vous faut
Une tuile MegaPipe pèse 1,6 Go. Si ce que vous voulez est une galaxie dans l’un de ses coins, la tuile entière représente la majeure partie d’un après-midi de téléchargement et une bonne part de votre disque. La 1.4.0 ajoute les découpes, et il y a deux façons d’en faire une.
Découpé par le CADC. Lorsque l’archive offre son service de découpe SODA, le CADC découpe la région de son côté et n’envoie que celle-ci : quelques mégaoctets, en pleine résolution. Découper…, dans le détail d’une observation dans Rechercher et dans Recherche, ouvre un éditeur sur l’empreinte du fichier : un cercle ou un rectangle, AD et Déc en degrés ou en sexagésimal, tailles en minutes d’arc, et pour un cube une plage de longueurs d’onde en nanomètres. Il part de ce que votre recherche demandait, vérifie à la saisie — hors du fichier, en partie hors, la mauvaise forme pour ce fichier — et vous dit la taille qu’aura la découpe avant que vous ne vous engagiez. Et les cases Découpe spatiale et Découpe spectrale de Rechercher, comme sur la page de recherche du CADC, font que Télécharger ne récupère que la partie d’un fichier comprise dans le cercle de la recherche, ou dans ses longueurs d’onde.
Découpé sur ce Mac. Une fois le fichier d’une observation téléchargé, vous pouvez le découper localement : aussitôt, hors ligne, aussi souvent que vous le voulez — et c’est la seule façon pour les fichiers que le CADC ne découpe pas. Une découpe locale est faite pour être confiée à d’autres outils sans avoir à s’en excuser :
- Les pixels sont copiés, pas convertis — le même
BITPIX, la même mise à l’échelle. - L’en-tête est réécrit pour que le même ciel tombe sur le même pixel :
CRPIXdéplacé,LTV/LTMconsignant la position de la découpe dans son fichier parent, distorsion SIP toujours valide, une ligneHISTORYqui dit d’où elle vient, et unCHECKSUMet unDATASUMneufs. - Les mosaïques gardent les images que vous choisissez, et les cubes sont découpés aux canaux d’une plage de longueurs d’onde, que l’axe soit en fréquence, en longueur d’onde, en nombre d’onde ou en vitesse.
- Les fichiers fpack compressés en
RICE_1sont découpés en ne décodant que les tuiles que touche la région, et la découpe est écrite non compressée. - Les cartes de poids suivent. La carte de poids d’une tuile MegaPipe peut être découpée à côté d’elle avec exactement le même rectangle, une fois que Verbinal a vérifié que les deux reposent sur les mêmes pixels. Un fichier sur une autre grille est proposé grisé, avec la raison.
Une découpe est conservée dans Recherche à côté de son observation, marquée de ce dont elle a été découpée et d’où, avec un chemin de retour vers l’observation complète ; la télécharger de nouveau la découpe de nouveau.
Quelques mégaoctets d’une tuile de 1,6 Go, en pleine résolution — découpés là où vivent les données, ou sur votre propre Mac à partir du fichier que vous avez déjà.
Des marques sur les images et les cubes
Vous pouvez maintenant dessiner sur vos données. Activez Dessiner dans le nouveau panneau Marques de la Visionneuse FITS, cliquez sur l’image — ou glissez pour dimensionner la marque — et tapez son étiquette : un cercle ou un rectangle autour d’une source, une bulle reliée à son étiquette par une ligne de rappel, ou une étiquette seule. Glissez une marque pour la déplacer, une poignée de coin pour la redimensionner, double-cliquez pour la renommer. Un clic droit permet de copier sa position sous la forme que lit la boîte de recherche, de centrer la vue dessus, de Rechercher ici, d’exporter une figure autour, ou de la supprimer.
Lorsque l’image a un WCS, les marques sont ancrées au ciel : une marque retrouve le même endroit dans une autre image du champ. Elles gardent leur taille sur le sujet quand vous zoomez, tournent avec la vue, et sont conservées avec le fichier et son extension — quelle que soit l’écriture de son chemin — si bien qu’elles sont là quand vous le rouvrez. Le panneau les liste avec un filtre, et règle la couleur, le gras, la taille d’étiquette et le contour. Elles s’exportent en fichier de régions DS9 (ciel en fk5 avec les tailles en secondes d’arc, pixels comptés à partir de 1 comme les compte DS9) ou en JSON.
Les cubes ont aussi leurs marques. Une marque de cube vit sur un canal : elle est tracée sur la coupe qui montre ce canal, Centrer sur la marque vous y amène, et le volume montre les marques de chaque canal là où elles se trouvent dans le cube. Votre assistant peut aussi tracer des marques, et les siennes le disent.
Des figures, et des spectres qui s’ouvrent en spectres
Exporter une figure dans la Visionneuse FITS trace maintenant les marques et les étiquettes de l’image — une bascule Marques les retire — et montre soit l’image entière, soit la vue à l’écran, en PNG à 2× ou 4×, ou en PDF. Le menu d’une marque propose Exporter une figure autour de la marque…. La légende donne le centre et le champ de la figure elle-même ; son « centre » était auparavant le point de référence du WCS, qui n’est souvent pas du tout le milieu de l’image. Les figures de la Visionneuse Cube portent aussi les marques du cube : sur une coupe, celles du canal affiché ; dans le volume, là où elles se trouvent.
Un fichier FITS dont les données sont une table s’ouvrait comme une image vide haute d’une rangée d’octets — les spectres _x1d de HST sortaient en 38946×1. Désormais un spectre s’ouvre en spectre : le flux en fonction de la longueur d’onde, dans les unités que donne le fichier, chaque ordre échelle sur sa propre ligne, l’erreur en bande. Une table qui ne contient pas de spectre le dit et liste ses colonnes. Et un spectre s’exporte en figure à part entière, titrée par l’objet (TARGNAME) et l’instrument, avec les unités de ses axes et sa bande d’erreur, et une note sur la taille de l’erreur — la bande d’un spectre à haut S/B peut être plus fine que son trait.
_x1d HST STIS de SN 2023ixf, qui s’ouvrait comme une image vide haute d’une rangée. Il se trace maintenant en spectre, titré par sa cible, et dit que sa bande d’erreur est « plus fine que la courbe ».Votre assistant, à vos conditions
Le serveur MCP intégré de Verbinal permet à Claude Desktop, à Claude Code ou à tout autre client MCP de travailler avec vous dans l’application, au moyen d’environ deux cents outils. Jusqu’ici, les règles du jeu tenaient en un interrupteur : l’application automatique, activée ou non. La 1.4.0 remplace cet interrupteur par des décisions que vous prenez au grand jour.
Vous autorisez chaque session. Un assistant commence désormais par dire qui il est et ce qu’il vient faire, et Verbinal passe au premier plan avec une fenêtre : le client et sa connexion, la façon dont l’assistant se présente — ses propres mots, que Verbinal ne peut pas vérifier — et les instructions qui lui seront données pour cette session, jusqu’à 250 mots, tirées de Réglages ▸ Agent IA ▸ Instructions de session. Autoriser, et il reçoit vos instructions mot pour mot. Refuser, et on lui dit de vous demander d’abord. Tant que vous n’avez pas autorisé une session, aucun outil ne fonctionne hormis start_session et describe_app.
Vous décidez ce qu’il peut faire sans demander, type par type. Réglages ▸ Agent IA liste chaque type de modification qu’un assistant peut faire, chacun Autorisé — il s’applique aussitôt, avec sa raison dans le journal de session — ou Me demander, et il attend dans En attente. Ce qui ajoute ou modifie est séparé de ce qui supprime, remplace ou arrête : permettre à un assistant de ranger ce qu’il a fait ne lui permet pas de supprimer vos fichiers. Par défaut, les notes, les éléments enregistrés, les fichiers, les téléversements, les sessions, les tâches en lot et la suppression de ce que l’assistant a lui-même créé se font sans demander ; le partage et toute autre suppression demandent. Votre ancien choix d’application automatique est repris.
Un type demande toujours : les consignes données à chaque assistant. Ajouter ou modifier un outil du Guide IA, ou réécrire la description d’un outil, change les instructions de chaque assistant qui viendra après celui-ci — un assistant, ou un texte glissé dans un fichier qu’il a lu, pourrait donc orienter le suivant en silence. Ces modifications attendent désormais toujours votre accord, comme les suppressions.
Chaque modification dit pourquoi. Chaque écriture porte une raison d’une phrase, et En attente l’affiche sous la modification — ou « Aucune raison donnée » — : vous lisez pourquoi une suppression est voulue avant de l’appliquer. L’Historique d’En attente dit qui a appliqué chaque modification : vous, l’application automatique, ou le démarrage en arrière-plan de l’assistant. Une proposition que personne n’applique expire après trois heures, au lieu d’attendre, comme l’une l’a fait pendant six jours, d’être appliquée à un monde qui avait changé. Une modification qui échoue dit pourquoi. Et le robot qui ouvre En attente est désormais dans chaque barre d’outils, toujours, avec son compte.
Un journal qui s’explique. Les Journaux de session, eux aussi dans Réglages ▸ Agent IA, conservent chaque session d’assistant : chaque modification avec qui l’a faite et pourquoi, les décisions de l’application et la règle derrière chacune, chaque appel avec les requêtes au CADC et à CANFAR qu’il a faites et ce que signifient leurs résultats, et les services qui tombent en panne et reviennent. Lisez-le session par session, exportez-le en texte ou en JSON Lines, ou supprimez les sessions closes ; il est conservé dix jours sur votre Mac.
Une réponse en 45 secondes. Le client d’un assistant peut abandonner un appel au bout d’une minute, alors que certains appels de Verbinal attendaient deux minutes. Chaque appel répond désormais en 45 secondes ; le travail plus long — un téléchargement de 1,6 Go, une inspection d’image de dix minutes — se poursuit, sur une nouvelle barre d’activité au bas de la fenêtre, qui dit ce qui tourne, qui l’a lancé (vous, votre assistant ou Verbinal lui-même), et pourquoi quelque chose a échoué. Deux courts signaux sonores, ceux que jouent Windows et Linux, marquent le moment où un assistant se met au travail et celui où il se tait.
Un pont qui survit aux redémarrages. Un assistant démarré avant Verbinal échouait à sa poignée de main et abandonnait pour toute la session ; un assistant connecté quand Verbinal quittait perdait ses outils jusqu’à ce qu’on le reconnecte à la main. Le pont que lance un assistant répond maintenant lui-même à la poignée de main, dit à l’assistant que Verbinal ne tourne pas et ce qu’il faut activer, et se connecte quand Verbinal démarre. Il parle toutes les versions de MCP, la plus récente (2026-07-28) comprise.
Un assistant qui voit, qui pointe, et qui garde les mains libres
Un assistant peut désormais regarder. capture_view lui donne une image de la fenêtre de Verbinal au premier plan — quel que soit l’écran, la feuille ou la section des Réglages affichés —, sans autorisation d’enregistrement de l’écran, puisque la fenêtre est celle de Verbinal. get_fits_image et get_cube_image renvoient les visionneuses telles que vous les voyez, avec la correspondance entre un point de l’image et le pixel du fichier : « marque la source la plus brillante » devient une chose qu’il peut vérifier sur l’image.
Et il peut pointer. Verbinal lit ses propres fenêtres comme le fait VoiceOver, si bien que chaque commande de chaque écran, feuille et section des Réglages peut être pointée, jusqu’à chaque entrée d’une liste. show_ui_hints affiche des anneaux et des bulles portant les mots de l’assistant — une visite numérotée, ou le reste de la fenêtre assombri — placés selon des règles : les bulles ne se chevauchent jamais, ne couvrent jamais ce qu’elles pointent, restent dans la fenêtre et évitent les images. Un assistant peut déplier une section ou ouvrir une feuille, choisir un onglet, et fermer une feuille comme le ferait Échap. Il n’appuie jamais sur un bouton qui agit, et ne change jamais vos réglages : open_settings ouvre la bonne section, et c’est vous qui réglez.
show_ui_hints : la nouvelle tuile Calcul à distance, En attente dans la barre d’outils, et la barre d’activité. L’écran d’accueil suit désormais le même ordre que sous Windows — Portail, Calcul à distance et Stockage d’abord.Tout client MCP peut se connecter. AGENTS.md, dans le dépôt, est écrit pour que l’assistant le suive : la commande (Verbinal.app/Contents/MacOS/Verbinal mcp), le nom du serveur verbinal-canfar, et l’entrée pour Claude Code, Claude Desktop, Codex, Cursor, Gemini, Windsurf et VS Code.
Calcul à distance : le code de votre assistant, sous vos yeux
Un assistant pouvait déjà exécuter du code sur CANFAR avec run_code, sans que l’application en garde la moindre trace. Le Calcul à distance est l’écran qui lui est consacré, avec sa propre tuile sur l’écran d’accueil : l’état, la taille et la durée de fonctionnement de la session de calcul, Démarrer la session et Arrêter la session, chaque exécution — celles de l’assistant et les vôtres — avec son code, sa sortie et ses erreurs et Exécuter de nouveau, et une boîte pour exécuter vous-même un extrait Python ou Bash. Il utilise votre propre allocation CANFAR, et tant que vous n’avez pas choisi d’image de calcul, il explique ce qu’il faut, avec un lien vers l’image de surveillance verbinal-execution.
Chaque exécution est mémorisée, avec qui l’a envoyée, quand et comment elle s’est terminée, et suivie jusqu’à l’arrivée de son résultat, que quelqu’un le demande ou non. Une exécution survit à la déconnexion et à la fermeture de l’application : après votre connexion, chaque exécution encore en cours est réexaminée. Une session dont CANFAR n’a pas pu récupérer l’image affiche Pas prêt avec la raison, au lieu de « Démarrage » pour toujours. Une session qui ne correspond plus aux Réglages dit en quoi elle diffère, avec Redémarrer avec les nouveaux réglages. Et l’écran vous dit une chose bonne à savoir avant de dimensionner un groupe de processus : sur CANFAR, os.cpu_count() compte le nœud entier — 192 — et non les cœurs que votre session peut utiliser. Ceux-ci sont fixés par son quota de processeur, dans /sys/fs/cgroup/cpu.max, et l’écran dit comment le lire.
Le Portail, les Tâches en lot et le Stockage
- Le Portail est disposé comme sous Linux et Windows : la charge de la plateforme, le stockage et les tâches en lot en haut, les sessions actives sur toute la largeur, puis les images CANFAR à côté des lancements récents — une seule colonne dans une fenêtre étroite. Lancer la session ouvre le formulaire dans une feuille, la fenêtre de progression se ferme d’elle-même une fois le lancement passé, et un lancement qui échoue garde le formulaire pour qu’on le corrige.
- Les cartes de session affichent le processeur et la mémoire pour chaque session. Une session flexible n’affichait que « FLEX » ; elle montre maintenant ce qu’elle utilise, et une session fixe ce qui lui a été attribué.
- Les images CANFAR par type et par projet, en pastilles avec leurs comptes. Chercher dans le registre… fouille le registre derrière la plateforme pour la version d’un collègue ou une étiquette que le catalogue n’a pas encore reprise, et Ajouter la garde parmi vos images. Les longues listes du formulaire de lancement — projets, images — ouvrent un panneau où l’on peut taper.
- Les Tâches en lot suivent des milliers de tâches. Avec dix mille tâches, ouvrir la liste prenait deux secondes et chaque vérification la figeait de nouveau. Elle affiche maintenant les 500 plus récentes, avec de quoi afficher les suivantes, un filtre sur chaque onglet, et un onglet Historique qui se souvient des tâches terminées — et de la raison d’un échec — après que CANFAR les a oubliées.
- Des notifications pour une session qui démarre ou ne démarre pas, et des interrogations qui suivent ce qui se passe : environ cinq secondes après un changement, en s’espaçant quand rien ne bouge.
- Le Stockage avertit quand un fichier qui contient d’habitude des secrets est public. Un répertoire personnel CANFAR avait
.token,.configet.bashrclisibles par tous, et rien ne le signalait. Un tel fichier est maintenant marqué, avec Rendre privé. Un dossier se supprime avec tout son contenu, et un quota de 200 Go se lit 200 Go, compté comme le compte le Finder.
Rechercher et Recherche, au quotidien
- Un champ Rayon. Une recherche par cône cherchait à moins de 1′ de la cible, à moins de savoir taper un rayon après celle-ci. La section Spatial a maintenant un Rayon — en degrés,
5'ou30 arcsec— conservé avec les recherches enregistrées et récentes. - L’ADQL vérifié à la saisie, contre le schéma même du CADC : chaque problème souligné et listé, Exécuter désactivé tant que la requête ne peut pas s’exécuter —
LIMITlà où l’ADQL écritSELECT TOP n, une colonne que l’archive n’a pas (avec le nom qui existe), une colonne que partagent deux tables jointes. Rien de ce dont il n’est pas sûr n’est signalé. - Annuler une longue recherche, dans le formulaire et dans l’éditeur ADQL (Échap) ; les résultats déjà affichés restent. Quand l’archive du CADC est en panne, une recherche le dit maintenant au bout de deux minutes au lieu de tourner pendant quatre.
- Chaque niveau d’étalonnage est un résultat à part : ouvrir une ligne ne tombe plus sur une autre. Et un transitoire est trouvé quelle que soit son écriture :
AT 2023ixf,2023ixfouSN 2023ixf. - Tout copier. Un clic droit sur un résultat copie une valeur, les détails de l’observation, une ligne ou la page, en texte séparé par des tabulations qui se colle dans un tableur ; la boîte de recherche lit maintenant une position collée comme
00:42:44.3 +41:16:09. - Recherche sans le fichier. Enregistrer dans Recherche garde une observation et une place pour des notes sans la télécharger ; Supprimer le fichier… libère le disque et garde les notes. Une fiche décrit maintenant le fichier qu’elle contient vraiment, à partir des détails que l’archive donne pour son propre plan — l’une indiquait la bande g pour un fichier en bande u.
Ce que les essais ont trouvé
Une partie de ce qu’ont trouvé les passes d’essais était des aspérités. Le reste était des réponses fausses, et celles-là méritent d’être dites franchement :
- La distorsion était ignorée. Sur les images à distorsion SIP — les trames étalonnées de HST, de nombreux pipelines au sol —, le réticule, Aller à, les signets, l’alignement du clignotement et les lectures célestes de l’assistant étaient décalés jusqu’à environ 8 pixels (0,3″) vers les coins d’une trame WFC3. Le polynôme s’applique désormais dans les deux sens et concorde avec astropy à 10−9° et 10−6 px.
- La rotation sur les en-têtes modernes. Les en-têtes qui donnent la rotation par une matrice
PCà côté deCDELT— dont les images i2d de JWST — la voyaient ignorée. Et la valeur sous le curseur venait de la rangée en miroir vertical : l’AD et la Déc étaient justes, le nombre ne l’était pas, sauf sur des données symétriques de haut en bas. - Aucune trame
.fzdu CFHT n’était lisible. Un bloc Rice que fpack stocke brut — du bruit, des rayons cosmiques, tout ce qui est chargé — était lu comme des codes Rice, et le reste de la tuile sortait en stries horizontales, dans la visionneuse comme dans les découpes locales. Le décodeur suit maintenant cfitsio bloc par bloc, est vérifié valeur par valeur contre des fichiers écrits par cfitsio, et lit les images de 8 et 32 bits comme celles de 16 bits. - Viridis n’était pas viridis. Les deux visionneuses traçaient une approximation sarcelle-orangé, et les figures partaient étiquetées VIRIDIS ; inferno, magma et plasma étaient des approximations à 9 points décalées jusqu’à 17/255. Les quatre sont maintenant les tables de 256 entrées de matplotlib.
- Les très grandes images de plus de 4 Go, ou de 500 millions de pixels, étaient refusées quelle que soit la mémoire libre du Mac. C’est maintenant la mémoire libre qui décide : une tuile MegaPipe s’ouvre, tracée à partir d’une moyenne par blocs pour que les étoiles d’un pixel de large survivent, tandis que la lecture, le WCS, les marques et Aller à lisent toujours chaque pixel.
- Un Mac réglé sur un autre calendrier — le bouddhiste, par exemple — affichait des dates en l’an 2569 et demandait à l’archive la mauvaise date de publication. Les dates envoyées au CADC sont maintenant toujours grégoriennes.
- Les positions juste sous une minute ronde s’écrivaient
23h59m60.00s, et Aller à sur un Mac en français refusait10,68. Les deux lisent et écrivent maintenant les positions comme le reste de l’application. - Des téléchargements vides — un paquet de 0 octet, un tar de 1024 octets nuls — étaient enregistrés comme téléchargés, et un téléchargement de plus de cinq minutes échouait, si régulier soit-il. Un téléchargement vide est maintenant refusé, une fiche dont le fichier manque le dit avec Télécharger de nouveau, et seul un arrêt de cinq minutes met fin à un téléchargement.
- Une suppression qui n’avait rien fait disait le contraire. CANFAR répond par un succès à la suppression d’une session qu’il n’a pas, si bien qu’une suppression groupée d’un identifiant réel et d’un identifiant inventé annonçait « 2 sur 2 supprimées ». Verbinal vérifie maintenant les identifiants d’abord, et demande ensuite à la plateforme si la session est vraiment partie.
- Le téléchargement d’un assistant remplaçait votre fichier. Télécharger depuis votre stockage vers Téléchargements supprimait un fichier du même nom déjà présent. Le vôtre est gardé désormais, et le téléchargement prend un horodatage dans son nom.
Confidentialité, code source, et comment l’obtenir
La posture de confidentialité n’a pas bougé. Aucune analytique, aucune télémétrie, aucun service tiers ; vos identifiants restent dans le trousseau macOS, et le trafic va directement à CANFAR et au CADC en HTTPS. Les journaux de session et les détails d’archive que garde Recherche restent sur votre Mac. La seule nouveauté à connaître est mince : une découpe par le CADC envoie au CADC la région demandée, c’est ainsi qu’il sait quoi découper. Une découpe sur votre Mac n’envoie rien du tout.
Verbinal pour macOS est gratuit, libre et open source sous la Mozilla Public License 2.0, avec le code source complet sur github.com/szautkin/canfar-macos. Il fonctionne sous macOS 14 (Sonoma) ou version ultérieure, en anglais et en français, avec VoiceOver qui nomme chaque commande — un test échoue désormais sur toute commande sans nom. Rechercher et les deux visionneuses fonctionnent sans connexion ; le Portail, le Calcul à distance et le Stockage demandent un compte CADC gratuit. Il est sur le Mac App Store, et la page de version sur GitHub propose un .dmg et un .zip non signés, avec leurs sommes de contrôle SHA-256.
Procurez-vous Verbinal pour macOS 1.4.0
Gratuit, libre et open source sous MPL-2.0. macOS 14 ou version ultérieure et un compte CANFAR gratuit. Rechercher et les visionneuses fonctionnent sans connexion — et vos données restent sur votre Mac.