Catalogue des panneaux
Les panneaux fournis par le noyau, avec leur identifiant et leur dock déclaré. Chacun reçoit d'office une commande <id>.toggle de catégorie panneau, appelable depuis la palette, un raccourci, le menu Affichage ou le sélecteur Tous les panneaux..., seul endroit où apparaissent aussi les panneaux de plugins.
Vue d'ensemble
| Panneau | Identifiant | Dock déclaré | Raccourci |
|---|---|---|---|
| Fichiers | core.fichiers | Gauche | Ctrl+Shift+E |
| Explorateur de base | core.db | Gauche | Ctrl+Shift+D |
| Journal | core.journal | Bas | Ctrl+Shift+J |
| Problèmes | core.problemes | Bas | Ctrl+Shift+M |
| Actions | core.actions | Droite | Ctrl+Shift+A |
| Historique | core.historique | Droite | Ctrl+Shift+H |
| Tableau de bord | core.tableau | Droite | Palette |
| Workflows | core.workflows | Droite | Palette |
| Assistant | core.assistant | Droite | Palette |
| Notebook | core.notebook | Bas | Palette |
| Console Python | core.console | Bas | Palette |
| Acquisition LIMS | core.lims | Bas | Palette |
| Connaissances | core.connaissances | Bas | Palette |
| Campagne | core.campagne | Gauche | Palette |
| Chaine de campagne | core.campagne.chaine | Zone centrale | Palette |
| Tâches | core.taches | Bas | Palette |
| Plugins | core.plugins | Droite | Barre de titre |
| Bandeau de campagne | Bandeau | Hors dock | Commandes dédiées |
Fichiers
Navigation dans les fichiers de l'utilisateur. Un double-clic sur un CSV l'ouvre dans un onglet de la zone centrale via le registre d'éditeurs : le même éditeur que par glisser-déposer ou par appel d'un plugin, avec le même analyseur CSV et les mêmes colonnes typées.
La navigation est bornée par des racines déclarées côté backend (files_routes.py) : dossier personnel, bureau, documents, volumes. Tout chemin hors racine est refusé. L'utilisateur peut ajouter une racine ; l'objet du contrôle est qu'un chemin fabriqué ailleurs dans l'application ne puisse pas atteindre les clés, la base SQLCipher ni le répertoire d'installation.
Explorateur de base
Ouvre une base SQLite externe en lecture : tables, schéma, requêtes. Il ne donne pas accès à la base chiffrée du logiciel, qui passe exclusivement par le point de connexion secure_db.connect.
Journal
Trace de session, filtrable par source. Il capte la console, s'alimente sur command.before, command.after et command.error, et expose K.log(source, message) au reste de l'application.
Problèmes
Agrège les anomalies détectées par les moteurs : incertitudes manquantes, échantillons non exploitables, standards non appariés, étapes de workflow en échec. Un clic sur une ligne ouvre l'objet concerné.
Actions
Les commandes disponibles dans le contexte courant, groupées par catégorie, en liste persistante. L'étoile épingle une commande en favori ; les favoris alimentent un widget du tableau de bord.
Les favoris sont revalidés contre le registre à chaque affichage : une commande favorite dont le plugin a été désinstallé disparait, au lieu d'échouer au clic.
Historique
Lecture du registre signé, échantillon par échantillon. Pour chaque évènement : horodatage, opération, table, acteur (qui décide), agent (ce qui exécute), plus la campagne et le motif si déclarés.
Le panneau écoute l'évènement historique.ouvrir : un clic sur une modification récente du tableau de bord charge directement l'échantillon concerné, sans ressaisir son nom.
Notebook et Console Python
Ni l'un ni l'autre ne possède de runtime. Les deux passent par K.notebooks.noyau('python'), un unique Pyodide exécuté dans un worker. Donner à la console son propre pont démarrerait un second Python : l'utilisateur en verrait deux là où il croit n'en avoir qu'un, et une variable définie dans la console resterait introuvable depuis une cellule.
Les onglets sont des espaces de noms, pas des processus
Chaque onglet de console exécute sous un nom de session distinct : deux onglets ne se marchent pas dessus. Mais ils partagent le même interpréteur.
L'état ne survit pas à la navigation
Chaque lien de la barre latérale détruit le document, donc le worker. La console persiste l'historique des commandes, qui est du texte. Jamais les transcriptions, jamais les onglets : les réafficher au retour laisserait croire que l'état Python correspondant est toujours vivant, alors que le worker a été détruit avec le document.
%pip ne veut pas dire PyPI
La CSP du worker n'autorise que le chemin local de Pyodide, et l'application vise l'air-gap. %pip s'appuie sur micropip, qui résout d'abord dans la distribution Pyodide locale : scipy, sympy et le reste du paquetage s'installent hors ligne.
Au-delà, il faut déposer une roue dans le magasin local (/vendor/wheels/). Quand le réseau est la cause de l'échec, la console énonce la règle au lieu de relayer une trace réseau incompréhensible.
Commandes
| Commande | Effet |
|---|---|
| core.console.new | Nouvel onglet, nouvel espace de noms, même interpréteur. |
| core.console.clear | Efface la transcription de l'onglet. N'efface pas l'état Python. |
| core.console.kill | Tue le noyau Python. Affecte tous les onglets et le notebook. |
Compatibilité IGL
Le noyau Python du carnet expose les liaisons d'IGL, le langage ouvert de modélisation des processus isotopiques, publiées sous le nom igl-lang. Un modèle IGL se charge, se compile et s'exécute depuis une cellule, au même titre que n'importe quelle bibliothèque scientifique.
IGL reste un standard indépendant, avec sa propre spécification, son moteur de référence et son format de données. IsoFind s'adapte à IGL et n'en modifie ni le langage ni les contrats : un modèle écrit dans le carnet vaut à l'identique pour toute implémentation conforme, dans IsoFind ou hors de lui.
Connaissances
Déclare les sources documentaires que l'assistant peut consulter, et les indexe. L'assistant y accède par un appel d'outil, visible dans le fil de conversation comme n'importe quel autre.
Trois genres de sources
| Genre | Sources | Chemin |
|---|---|---|
| Livrée avec IsoFind | isofind, api, modules | Résolu automatiquement, verrouillé. Indexé dès le premier démarrage. |
| Votre laboratoire | wiki, sop, publications | À renseigner. Chemin absolu d'un dossier. |
| Outils externes | phreeqc, r, python | À renseigner si la documentation est installée sur le poste. |
Les sources externes sont vides à l'installation, et c'est délibéré : IsoFind ne peut pas embarquer les documentations de PHREEQC, R et Python. Elles pèsent des centaines de mégaoctets, ont leurs propres licences, et changent de version indépendamment du logiciel.
Le compteur de documents
Chaque source affiche son nombre de documents indexés, et c'est la seule façon de voir qu'une source déclarée est vide.
| Affichage | Signification |
|---|---|
| 42 doc | Source indexée. L'horodatage d'indexation est en infobulle. |
| vide | Source active, mais aucun document. Chemin faux, ou dossier vide. |
| inactif | Source décochée. Elle n'est pas consultée. |
Routes
Les chemins des sources livrées sont montrés mais non modifiables : l'utilisateur doit pouvoir voir où le logiciel a trouvé sa documentation, ne serait-ce que pour comprendre pourquoi elle est vide, sans pouvoir la casser.
Campagne
Deux surfaces portent ce nom. Le bandeau affiche la campagne active de la base, hors dock, avec deux commandes, campagne.declarer et campagne.clore. Le panneau Campagne, lui, ouvre un dossier de travail indexé sur le disque et donne accès à son inventaire et à sa chaine d'aliquotes ; il est décrit en page Campagnes. Le bandeau est ce qui suit : La campagne est propagée à toutes les écritures et entre dans le message signé du registre.
La propagation se fait par enveloppement unique de window.fetch dans le noyau, filtré explicitement aux appels de l'API interne. Un connecteur local, y compris Ollama, ne reçoit jamais l'en-tête de campagne.
Tableau de bord
Monte les mêmes widgets que la page d'accueil, depuis le même registre, dans un dock. Utile pour garder les modifications récentes visibles pendant le travail. Il se remonte sur évènement plutôt que d'afficher indéfiniment l'état de son ouverture.
Acquisition LIMS
Surveille des dossiers, pas une API réseau : les fichiers déposés par l'instrument ou le LIMS sont détectés, analysés et proposés à l'import.
Inspecteur et Atelier de plugin
L'Inspecteur du noyau liste les contributions enregistrées avec leur source, leur catégorie, leur zone et leur capacité. L'Atelier de plugin est réservé à la zone locale : sa commande porte zone: 'local' et n'apparait pas dans la palette hors mode développeur.
En mode développeur, core.dev.dump exporte le registre complet en JSON : commandes, panneaux et clés de contexte, avec leur source et leur zone.