Documentation IsoFind : Plugins

Plugins

Le système de plugins permet d'étendre les fonctionnalités d'IsoFind sans modifier le logiciel lui-même. Chaque plugin est un module indépendant qui s'intègre directement dans l'interface et peut interagir avec vos données isotopiques via l'API interne.

Accéder au gestionnaire de plugins

Menu principal Plugins Gestionnaire de plugins
Menu Gestionnaire de plugins Figure 1 : Menu "Gestionaire de plugins" dans le menu "Plugins".

Le gestionnaire centralise l'ensemble des plugins installés sur votre instance. Il présente un tableau de bord avec le nombre total de plugins, le nombre de plugins actifs et les mises à jour disponibles.

Lorsque le mode hors-ligne est activé, un badge orange s'affiche dans le titre du gestionnaire. Ce mode bloque toutes les connexions réseau initiées par les plugins.

Installer un plugin

Gestionnaire de plugins Installer un plugin
Menu d'installation de plugin. Figure 2 : Menu d'installation de plugin

IsoFind propose deux méthodes d'installation selon votre configuration réseau.

Depuis un fichier

Glissez un fichier .isplugin ou .zip directement dans la zone de dépôt, ou cliquez sur Sélectionner un fichier pour ouvrir l'explorateur. IsoFind lit le manifeste du plugin, vérifie les champs obligatoires et installe le code automatiquement.

L'installation se déroule en sept étapes visibles dans la barre de progression :

Étape Opération
1Préparation de l'environnement
2Lecture du fichier
3Décompression de l'archive
4Lecture et validation du manifeste
5Extraction du code principal
6Détection des conflits
7Finalisation et enregistrement

Depuis une URL

Saisissez l'URL directe d'un fichier .isplugin dans le champ prévu et cliquez sur Télécharger. IsoFind télécharge et installe le plugin en une seule opération. Cette méthode n'est pas disponible lorsque le mode hors-ligne est actif.

Si JSZip n'est pas chargé dans votre instance, l'installation depuis fichier .zip échouera avec un message explicite. Vérifiez que la librairie est bien incluse dans votre configuration.

Structure d'un plugin

Chaque plugin est une archive contenant au minimum deux fichiers : un manifeste et un fichier de code principal. Le manifeste décrit le plugin et ses exigences ; le fichier de code contient la logique exécutée par IsoFind.

Le fichier manifeste

Le manifeste est un fichier manifest.json placé à la racine de l'archive. Trois champs sont obligatoires.

Champ Type Requis Description
id string Requis Identifiant unique du plugin, en minuscules avec tirets
name string Requis Nom affiché dans le gestionnaire
version string Requis Version au format X.Y.Z
author string Nom de l'auteur ou de l'organisation
description string Description courte affichée dans la carte du plugin
category string Catégorie : analysis, visualization, data, tools
permissions array Permissions demandées par le plugin (voir section Permissions)
main string Nom du fichier de code principal. Par défaut : plugin.js
language string javascript ou python. Par défaut : javascript
github string URL du dépôt GitHub pour affichage dans les paramètres
contact string Adresse email de contact

Permissions

Un plugin doit déclarer les permissions dont il a besoin dans son manifeste. L'utilisateur peut consulter ces permissions avant installation. Quatre permissions sont disponibles.

Permission Identifiant Accès accordé
Accès aux échantillons samples Lecture et écriture des données isotopiques de la base
Lancer des analyses analysis Exécution de pipelines d'analyse internes
Accès réseau network Requêtes HTTP et HTTPS vers des serveurs externes
Accès fichiers filesystem Lecture et écriture de fichiers sur le système local
La permission network est automatiquement bloquée lorsque le mode hors-ligne est actif, même si le plugin la déclare dans son manifeste.

API IsoFind pour les plugins

Chaque plugin a accès à un objet global API qui expose les fonctions d'interaction avec IsoFind. Cet objet est injecté automatiquement à l'exécution du plugin.

Fonctions disponibles

Fonction Description
API.getSamples() Retourne la liste des échantillons de la base de données active
API.getSelectedSamples() Retourne uniquement les échantillons sélectionnés par l'utilisateur
API.showNotification(message, type) Affiche une notification dans l'interface. Types : success, error, info, warning
API.registerMenuItem(label, callback) Ajoute une entrée dans le menu principal d'IsoFind
API.createPanel(html) Crée un panneau flottant dans l'interface avec le contenu HTML fourni
API.getConfig(key) Lit une valeur de configuration persistante propre au plugin
API.setConfig(key, value) Écrit une valeur de configuration persistante propre au plugin

Plugins Python

Manifeste language: "python"

IsoFind supporte les plugins écrits en Python via Pyodide, un environnement Python complet exécuté dans le navigateur. Les packages numpy et pandas sont chargés automatiquement. Les packages scipy et matplotlib peuvent être requis à la demande.

Le code Python accède aux données d'IsoFind via le module isofind injecté automatiquement dans l'environnement Pyodide :

Méthode Python Équivalent JavaScript
IsoFindAPI.get_samples() API.getSamples()
IsoFindAPI.get_samples_df() Retourne un DataFrame pandas directement exploitable
IsoFindAPI.notify(message, type) API.showNotification()
Le chargement de Pyodide depuis le CDN est bloqué en mode hors-ligne. Pour utiliser des plugins Python sans connexion, configurez un chemin local vers Pyodide dans les paramètres des plugins.

Détection de conflits

Avant toute installation, IsoFind analyse automatiquement le code du plugin pour détecter les conflits potentiels avec les plugins déjà installés et les patterns de code dangereux.

Conflits vérifiés

Type de conflit Niveau de risque Description
Variables globales Élevé Le plugin déclare une variable déjà utilisée par un plugin installé
Noms de menus Moyen Une entrée de menu porte le même nom qu'un menu existant
Permissions partagées Faible Deux plugins peuvent modifier les mêmes données simultanément
Catégorie similaire Faible Un ou plusieurs plugins de même catégorie sont déjà installés
localStorage.clear() Critique Suppression de toutes les données de session
document.write() Élevé Peut effacer intégralement le contenu de la page
eval() Élevé Évaluation de code dynamique, risque de sécurité
Injection via innerHTML Moyen Injection de balises script dans le DOM

En cas de conflit détecté, une fenêtre récapitule les problèmes avant de proposer deux options : annuler l'installation ou installer quand même. Les conflits de niveau critique ne peuvent pas être ignorés.

Activer et désactiver un plugin

Chaque carte de plugin dans le gestionnaire dispose d'un interrupteur d'activation. Désactiver un plugin décharge son code de la mémoire sans le désinstaller. Le plugin conserve ses paramètres et peut être réactivé à tout moment.

Activer ou désactiver un plugin Figure 3 : Activer ou désactiver un plugin.

Un plugin activé est chargé automatiquement à chaque démarrage d'IsoFind. Son code s'exécute dans le contexte global de l'application et peut interagir avec l'interface dès le lancement.

Paramètres d'un plugin

Gestionnaire Carte du plugin Paramètres

La fenêtre de paramètres d'un plugin affiche ses informations complètes : version, auteur, description, identifiant, catégorie, date d'installation et adresse de contact. Si le plugin déclare un dépôt GitHub dans son manifeste, un lien direct est affiché.

Accéder aux paramètres d'un plugin. Figure 4 : Accéder aux paramètres d'un plugin.

Un bouton Vérifier mise à jour compare la version installée avec la version disponible dans la bibliothèque en ligne. Si une mise à jour est détectée, une confirmation est demandée avant installation. Cette vérification est désactivée en mode hors-ligne.

Désinstaller un plugin

La désinstallation supprime définitivement le plugin et ses données de configuration. L'opération est irréversible. IsoFind demande confirmation avant de procéder.

Si le plugin était actif au moment de la désinstallation, son code est déchargé de la mémoire avant suppression. Les entrées de menu enregistrées par ce plugin sont retirées immédiatement.

Paramètres globaux des plugins

Plugins Paramètres des plugins
Paramètres globaux des plugins. Figure 5 : Paramètres globaux des plugins.

Sécurité

Paramètre Description Valeur par défaut
Vérifier les signatures Valide l'authenticité des plugins avant installation Activé
Mode sandbox Exécute les plugins dans un environnement isolé Activé
Mises à jour automatiques Installe les mises à jour sans demander confirmation Désactivé

Permissions par défaut

Ces paramètres définissent les permissions accordées par défaut aux nouveaux plugins installés. Ils ne modifient pas les permissions des plugins déjà en place.

Permission Valeur par défaut
Accès réseau Désactivé
Accès fichiers Désactivé

Mode hors-ligne (air-gap)

Paramètres des plugins Mode hors-ligne
Paramètres du mode air-gap. Figure 6 : Paramètres du mode air-gap.

Le mode hors-ligne est conçu pour les environnements sans accès à internet, notamment les infrastructures sensibles ou les postes en réseau isolé. Lorsqu'il est actif, toutes les connexions réseau initiées par les plugins sont bloquées au niveau du système.

Les fonctionnalités suivantes sont désactivées en mode hors-ligne :

Fonctionnalité Comportement en mode hors-ligne
Installation depuis une URL Onglet masqué dans l'installeur
Bibliothèque en ligne Accès bloqué avec notification
Vérification des mises à jour Bloquée avec notification
Chargement Pyodide (CDN) Bloqué sauf si un chemin local est configuré
Permission réseau des plugins Bloquée même si déclarée dans le manifeste

Chemin local pour Pyodide

Pour utiliser des plugins Python en mode hors-ligne, vous devez télécharger Pyodide et le servir localement. Renseignez le chemin vers pyodide.js dans le champ Chemin local Pyodide. Exemple : /static/pyodide/.

Pyodide peut être téléchargé sur github.com/pyodide/pyodide/releases. Placez l'ensemble des fichiers dans un répertoire servi par votre instance IsoFind et renseignez le chemin complet dans les paramètres.

Exporter et importer des plugins

La section Exporter les plugins dans les paramètres permet de sauvegarder l'ensemble des plugins installés dans un fichier .isoplugins. Ce fichier contient les métadonnées de tous les plugins et peut être importé sur une autre instance IsoFind.

Pour importer un bundle, cliquez sur Importer une archive et sélectionnez un fichier .isoplugins. IsoFind ajoute les plugins absents de l'instance sans écraser ceux déjà présents.

Le format .isoplugins ne contient que les métadonnées des plugins, pas leur code source. Pour une installation complète en environnement hors-ligne, fournissez également les fichiers .isplugin correspondants.

Créer un plugin

Plugins Créer un plugin

L'assistant de création guide la construction d'un plugin en quatre étapes. Aucune connaissance préalable de la structure des archives n'est requise : IsoFind génère le manifeste et prépare le fichier exportable.

Paramètres du mode air-gap. Figure 7 : Menu de création d'un plugin.
Étape Contenu
1. Informations Nom, version, description, auteur, email
2. Configuration Langage (JavaScript ou Python), permissions requises
3. Code Éditeur de code avec templates de départ
4. Finalisation Résumé, options d'export (README, icône), génération du fichier

Templates disponibles

Quatre templates de départ sont proposés à l'étape Code. Chacun contient une structure fonctionnelle prête à modifier.

Template Usage typique
Vide Partir de zéro, structure minimale uniquement
Basique Plugin simple avec notification et entrée de menu
Analyseur Traitement des données isotopiques et affichage de résultats
Visualiseur Création d'un panneau graphique dans l'interface

Bibliothèque de plugins

Plugins Parcourir la bibliothèque

La bibliothèque recense les plugins publiés et compatibles avec votre version d'IsoFind. Elle permet de filtrer par catégorie et de trier par popularité, date de publication ou note. L'installation se fait en un clic depuis la fiche de chaque plugin.

La bibliothèque n'est pas accessible en mode hors-ligne. Pour distribuer des plugins dans ce contexte, utilisez l'export et l'import de bundles .isoplugins.

Pour proposer un plugin dans la bibliothèque officielle, consultez la page Collaborer sur le site IsoFind. Les plugins tiers sont soumis à une revue de code avant publication.