Documentation IsoFind : Plugins

Plugins

The plugin system allows you to extend IsoFind's functionality without modifying the software itself. Each plugin is an independent module that integrates directly into the interface and can interact with your isotopic data via the internal API.

Accessing the Plugin Manager

Main menu Plugins Plugin manager
Plugin manager menu Figure 1: "Plugin manager" menu under the "Plugins" menu.

The manager centralises all plugins installed on your instance. It presents a dashboard with the total number of plugins, the number of active plugins and available updates.

When offline mode is enabled, an orange badge appears in the manager title. This mode blocks all network connections initiated by plugins.

Installing a Plugin

Plugin manager Install a plugin
Plugin installation menu Figure 2: Plugin installation menu.

IsoFind offers two installation methods depending on your network configuration.

From a file

Drag an .isplugin or .zip file directly into the drop zone, or click Select a file to open the file browser. IsoFind reads the plugin manifest, verifies the required fields and installs the code automatically.

The installation proceeds through seven steps visible in the progress bar:

Step Operation
1Environment preparation
2File reading
3Archive decompression
4Manifest reading and validation
5Main code extraction
6Conflict detection
7Finalisation and registration

From a URL

Enter the direct URL of an .isplugin file in the provided field and click Download. IsoFind downloads and installs the plugin in a single operation. This method is not available when offline mode is active.

If JSZip is not loaded in your instance, installation from a .zip file will fail with an explicit message. Verify that the library is included in your configuration.

Plugin Structure

Each plugin is an archive containing at minimum two files: a manifest and a main code file. The manifest describes the plugin and its requirements; the code file contains the logic executed by IsoFind.

The manifest file

The manifest is a manifest.json file placed at the root of the archive. Three fields are required.

Field Type Required Description
id string Required Unique plugin identifier, lowercase with hyphens
name string Required Name displayed in the manager
version string Required Version in X.Y.Z format
author string Name of the author or organisation
description string Short description displayed on the plugin card
category string Category: analysis, visualization, data, tools
permissions array Permissions requested by the plugin (see Permissions section)
main string Name of the main code file. Default: plugin.js
language string javascript or python. Default: javascript
github string GitHub repository URL for display in settings
contact string Contact email address

Permissions

A plugin must declare the permissions it needs in its manifest. The user can review these permissions before installation. Four permissions are available.

Permission Identifier Access granted
Sample access samples Read and write isotopic data in the database
Run analyses analysis Execute internal analysis pipelines
Network access network HTTP and HTTPS requests to external servers
File access filesystem Read and write files on the local system
The network permission is automatically blocked when offline mode is active, even if the plugin declares it in its manifest.

IsoFind API for Plugins

Each plugin has access to a global API object that exposes IsoFind interaction functions. This object is injected automatically at plugin execution.

Available functions

Function Description
API.getSamples() Returns the list of samples from the active database
API.getSelectedSamples() Returns only the samples selected by the user
API.showNotification(message, type) Displays a notification in the interface. Types: success, error, info, warning
API.registerMenuItem(label, callback) Adds an entry to IsoFind's main menu
API.createPanel(html) Creates a floating panel in the interface with the provided HTML content
API.getConfig(key) Reads a persistent configuration value specific to the plugin
API.setConfig(key, value) Writes a persistent configuration value specific to the plugin

Python Plugins

Manifest language: "python"

IsoFind supports plugins written in Python via Pyodide, a full Python environment running in the browser. The numpy and pandas packages are loaded automatically. The scipy and matplotlib packages can be requested on demand.

Python code accesses IsoFind data via the isofind module injected automatically into the Pyodide environment:

Python method JavaScript equivalent
IsoFindAPI.get_samples() API.getSamples()
IsoFindAPI.get_samples_df() Returns a directly usable pandas DataFrame
IsoFindAPI.notify(message, type) API.showNotification()
Loading Pyodide from the CDN is blocked in offline mode. To use Python plugins without an internet connection, configure a local path to Pyodide in the plugin settings.

Conflict Detection

Before any installation, IsoFind automatically analyses the plugin code to detect potential conflicts with already-installed plugins and dangerous code patterns.

Checked conflicts

Conflict type Risk level Description
Global variables High The plugin declares a variable already used by an installed plugin
Menu names Medium A menu entry shares the same name as an existing menu
Shared permissions Low Two plugins may modify the same data simultaneously
Similar category Low One or more plugins of the same category are already installed
localStorage.clear() Critical Deletion of all session data
document.write() High Can entirely erase the page content
eval() High Dynamic code evaluation, security risk
innerHTML injection Medium Injection of script tags into the DOM

If a conflict is detected, a summary window lists the issues before presenting two options: cancel the installation or install anyway. Critical-level conflicts cannot be bypassed.

Enabling and Disabling a Plugin

Each plugin card in the manager has an activation toggle. Disabling a plugin unloads its code from memory without uninstalling it. The plugin retains its settings and can be re-enabled at any time.

Enable or disable a plugin Figure 3: Enabling or disabling a plugin.

An enabled plugin is loaded automatically each time IsoFind starts. Its code runs in the global application context and can interact with the interface from launch.

Plugin Settings

Manager Plugin card Settings

The plugin settings window displays its complete information: version, author, description, identifier, category, installation date and contact address. If the plugin declares a GitHub repository in its manifest, a direct link is displayed.

Accessing plugin settings Figure 4: Accessing plugin settings.

A Check for update button compares the installed version against the version available in the online library. If an update is detected, confirmation is requested before installation. This check is disabled in offline mode.

Uninstalling a Plugin

Uninstalling permanently removes the plugin and its configuration data. The operation is irreversible. IsoFind requests confirmation before proceeding.

If the plugin was active at the time of uninstallation, its code is unloaded from memory before deletion. Menu entries registered by the plugin are removed immediately.

Global Plugin Settings

Plugins Plugin settings
Global plugin settings Figure 5: Global plugin settings.

Security

Setting Description Default value
Verify signatures Validates plugin authenticity before installation Enabled
Sandbox mode Runs plugins in an isolated environment Enabled
Automatic updates Installs updates without requesting confirmation Disabled

Default permissions

These settings define the permissions granted by default to newly installed plugins. They do not modify the permissions of plugins already in place.

Permission Default value
Network access Disabled
File access Disabled

Offline Mode (Air-Gap)

Plugin settings Offline mode
Air-gap mode settings Figure 6: Air-gap mode settings.

Offline mode is designed for environments without internet access, particularly sensitive infrastructures or isolated network workstations. When active, all network connections initiated by plugins are blocked at the system level.

The following features are disabled in offline mode:

Feature Behaviour in offline mode
Installation from a URL Tab hidden in the installer
Online library Access blocked with notification
Update checks Blocked with notification
Pyodide loading (CDN) Blocked unless a local path is configured
Plugin network permission Blocked even if declared in the manifest

Local path for Pyodide

To use Python plugins in offline mode, you must download Pyodide and serve it locally. Enter the path to pyodide.js in the Local Pyodide path field. Example: /static/pyodide/.

Pyodide can be downloaded at github.com/pyodide/pyodide/releases. Place all files in a directory served by your IsoFind instance and enter the full path in the settings.

Exporting and Importing Plugins

The Export plugins section in settings allows you to save all installed plugins to an .isoplugins file. This file contains the metadata of all plugins and can be imported on another IsoFind instance.

To import a bundle, click Import an archive and select an .isoplugins file. IsoFind adds plugins absent from the instance without overwriting those already present.

The .isoplugins format contains only plugin metadata, not their source code. For a complete installation in an offline environment, also provide the corresponding .isplugin files.

Creating a Plugin

Plugins Create a plugin

The creation wizard guides you through building a plugin in four steps. No prior knowledge of archive structure is required: IsoFind generates the manifest and prepares the exportable file.

Plugin creation wizard Figure 7: Plugin creation wizard.
Step Content
1. Information Name, version, description, author, email
2. Configuration Language (JavaScript or Python), required permissions
3. Code Code editor with starter templates
4. Finalisation Summary, export options (README, icon), file generation

Available templates

Four starter templates are offered at the Code step. Each contains a functional structure ready to modify.

Template Typical use
Empty Start from scratch, minimal structure only
Basic Simple plugin with notification and menu entry
Analyser Isotopic data processing and result display
Visualiser Creating a graphical panel in the interface

Plugin Library

Plugins Browse the library

The library lists published plugins compatible with your version of IsoFind. It allows filtering by category and sorting by popularity, publication date or rating. Installation is one click from each plugin's details page.

The library is not accessible in offline mode. To distribute plugins in this context, use the .isoplugins bundle export and import.

To submit a plugin to the official library, see the Contribute page on the IsoFind website. Third-party plugins are subject to a code review before publication.