23 Commits
Author SHA1 Message Date
Hornwitser 5df5af7ca8 Rename Ctl's usage of "control" to "ctl" (#1039)
Ctl ended up calling its main class for "Control" for historical
reasons, along with its config file and plugin entrypoint.

The plugin entrypoint was renamed to ctl in 808eda0513.  This
finishes that renaming by also renaming the main class, default config
file, config-control command, and main entrypoint.

The config-control command is renamed to config to be consistent with
the host and controller's config commands.

The term "control" is still kept in the config and message locations as
a common specifier for both ctl and web_ui.
2026-09-14 20:18:41 +02:00
7122cbccf8 Add typed hook system for plugins
Replace invokeHook and the per plugin on* methods with AsyncHook
collections on the controller, host, instance, clusterioctl and web
control objects. Plugin entrypoints export a default function that
receives a load context and attaches handlers to the hooks it needs.
Class exports still load through fromContext with a deprecation
warning. The create templates and docs use the entrypoint function.

This is clusterio/clusterio#921 recreated on top of master after the
ESM migration and the PluginDeclaration permissions change.

Closes #730

Co-Authored-By: Cooldude2606 <25043174+Cooldude2606@users.noreply.github.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 22:49:09 +00:00
8c03ac15ab Define permissions on PluginDeclaration (#988)
Adds a permissions array to PluginDeclaration, a type-level Permissions
registry that plugins extend with module augmentation, and
registerPluginPermissions() called from all entrypoints. checkPermission
and the web UI hasPermission helpers now take PermissionName so typos are
compile errors. Core definitions move into a corePermissions array that
the interface derives its keys from.

Closes #987

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Cooldude2606 <25043174+Cooldude2606@users.noreply.github.com>
2026-09-11 23:28:30 +01:00
Hornwitser 5dcaca4d0b Migrate to ECMAScript Modules
Migrate the usage of CommonJS specific code and imports to ESM.  Roughly
summarised this:
- Changes all require() calls to import statement or expressions.
- Changes usage of module.exports to export statements.
- Replaces require.resolve with import.meta.resolve.
- Replaces conditional imports with conditional subpath imports.
- Replaces module === require.main with import.meta.main.
- Adds the full filename with extention to all relative imports.
- Changes all usage of __dirname and __filename to their import.meta
  equivalents.
- Sets "type": "module" in package.json files.
- Removes usage of "use strict".
- Adds .ts an an alias of .js for the webpack build.

Due to differences in how require and import resolves files the plugin
entrypoints will have to include the filename and extension after this
migration in order to work.
2026-09-11 22:43:57 +02:00
Hornwitser b69111dda3 Fix obsolete usage of EventSubscriber in template
This functionality was moved to the MapSubscriber class in e49b82842d.
2026-09-11 20:18:49 +02:00
Cooldude2606 7ceb786143 Add onExit to instance template 2025-08-08 21:41:49 +01:00
Cooldude2606 174d9d5b07 Bug Fixes 2025-08-07 19:14:23 +01:00
Cooldude2606 379d2575a0 Improve comments 2025-08-07 17:42:52 +01:00
Danielv123 7e2f10e842 Fix linting issues with new rules 2025-08-01 22:26:25 +00:00
Cooldude2606 1f47f6dfc9 Update all pages to use PageHeader 2024-06-14 19:20:07 +02:00
Cooldude2606 498638c0c9 Improve config, message, and module templates (#641)
* Improve config, message, and module templates

* Update global handler in template module

* Add comments to empty instance template
2024-06-08 13:53:23 +01:00
Cooldude2606 50687515fa Merge branch 'feature/plugin-template' of https://github.com/Cooldude2606/clusterio into feature/plugin-template 2024-03-08 22:00:55 +00:00
Cooldude2606 6f81216e7c Addressed remaining review comments 2024-03-08 22:00:38 +00:00
Cooldude2606andHornwitser 3423e0a30c Apply suggestions from code review
- Copy paste errors.
- Incorrect capitalisation.
- Incorrect exports.
- Missed find and replace.

Co-authored-by: Hornwitser <github@hornwitser.no>
2024-03-08 20:08:16 +00:00
Cooldude2606 a66b1af454 Extra touch ups 2024-03-05 00:56:01 +00:00
Cooldude2606 a168f7db5e Add call to action for config desc 2024-02-27 23:57:13 +00:00
Cooldude2606 283aba70df Update descriptions 2024-02-27 23:53:20 +00:00
Cooldude2606 62abfa903b Change to new preprocessor style 2024-02-27 23:07:38 +00:00
Cooldude2606 46309ce5b8 Lint Fixes 2024-02-18 17:58:16 +00:00
Cooldude2606 f392b258f7 Add subscriptions and luacheck 2024-02-17 03:11:54 +00:00
Cooldude2606 58231cc02c Add IPC to templates and handle helper function server 2024-01-24 00:40:22 +00:00
Cooldude2606 224a451bbd Fix lint for jsx template 2024-01-23 00:34:46 +00:00
Cooldude2606 9b0293501f Add js templates and config templates 2024-01-23 00:14:08 +00:00