mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 15:04:52 +09:00
1003 lines
82 KiB
Markdown
1003 lines
82 KiB
Markdown
# Changelog
|
|
|
|
<!-- Template for entries. Add sections that apply as changes are made.
|
|
## Version 2.0.0-alpha.xx
|
|
|
|
### Major Features
|
|
|
|
- Major additions and/or major improvements to managing clusters.
|
|
|
|
### Features
|
|
|
|
- New features added.
|
|
|
|
### Changes
|
|
|
|
- Small changes to existing behaviour.
|
|
|
|
### Fixes
|
|
|
|
- Bugfixes
|
|
|
|
### Breaking Changes
|
|
|
|
- Changes which break backwards compatibility with older hosts or plugins code.
|
|
|
|
### Meta
|
|
|
|
- Changes to the project activities / structure worth highlighting but have no impact on the published package.
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@username](https://github.com/username)
|
|
-->
|
|
|
|
## Version 2.0.3
|
|
|
|
### Features
|
|
|
|
- Added per instance options to choose which parts of the player inventory sync covers. [#968](<https://github.com/clusterio/clusterio/issues/968>)
|
|
- Added opt-in UDP messaging between instances and the Factorio server via `factorio.enable_lua_udp`, with a `sendUdp` plugin API, `clusterio_api.send_udp` in-game and a `LuaUdp` plugin feature flag. [[#969](<https://github.com/clusterio/clusterio/issues/969>)](<https://github.com/clusterio/clusterio/issues/969>)
|
|
- Added notes that can be attached to hosts, instances, users, roles, mod packs, mods and saves in the web interface and through ctl. [#903](<https://github.com/clusterio/clusterio/issues/903>)
|
|
- Added tools to inspect, replace, delete and unlock player data stored by inventory sync, in the web interface and as `clusterioctl inventory-sync` commands. [#1003](<https://github.com/clusterio/clusterio/issues/1003>)
|
|
- Notes in the web interface render as Markdown and link `@<type>/<id>` mentions to the resource. [#1000](<https://github.com/clusterio/clusterio/pull/1000>)
|
|
- Added timestamps to log lines in the web interface console. [#1137](<https://github.com/clusterio/clusterio/pull/1137>)
|
|
- Added syncing of quick bar slots that hold a specific blueprint, blueprint book or planner, including ones from the player's blueprint library, on Factorio 2.1. [#1092](<https://github.com/clusterio/clusterio/issues/1092>)
|
|
- Added a `set_destination` remote interface to Player Sync. A plugin that moves a player to another instance calls it before `connect_to_server`, and the player's data is sent to that instance while the client reconnects, so the join applies it without a download. [#1099](<https://github.com/clusterio/clusterio/issues/1099>)
|
|
- Added a cluster research queue to research_sync: servers can follow one research queue, set from the research screen on any following server, with a checkbox on the lab window. [#1115](<https://github.com/clusterio/clusterio/pull/1115>)
|
|
|
|
### Fixes
|
|
|
|
- Fixed instances that start at the same time each downloading a new Factorio version into the same files and leaving a corrupt install. [[#1105](<https://github.com/clusterio/clusterio/issues/1105>)](<https://github.com/clusterio/clusterio/issues/1105>)
|
|
- Fixed `controller.max_send_buffer_size` counting buffered messages in UTF-16 code units instead of UTF-8 bytes, which let non-ASCII messages go over the limit. [[#1108](<https://github.com/clusterio/clusterio/issues/1108>)](<https://github.com/clusterio/clusterio/issues/1108>)
|
|
- Removed incompatible Server Select and Discord Bridge releases from the installer's plugin choices so selecting all offered plugins no longer installs them. [#1102](<https://github.com/clusterio/clusterio/issues/1102>)
|
|
- Fixed reading map exchange strings from Factorio 2.1.18 and later, which gave wrong enemy evolution and expansion settings and made `instance load-scenario --map-exchange-string` fail. [[#1131](<https://github.com/clusterio/clusterio/issues/1131>)](<https://github.com/clusterio/clusterio/issues/1131>)
|
|
- Fixed Player Sync erroring when the controller returned no data for a downloading player, which left the player waiting for the timeout. [#1094](<https://github.com/clusterio/clusterio/issues/1094>)
|
|
- Fixed spoilable items arriving fresh after being serialized, the spoil percent is now kept. [#1093](<https://github.com/clusterio/clusterio/issues/1093>)
|
|
- Fixed named personal logistic groups losing their requests and trash rules when joining a server where the group was missing or empty. [#1091](<https://github.com/clusterio/clusterio/issues/1091>)
|
|
- Fixed Player Sync leaving quick bar slots from an earlier visit in place, which made moved or cleared slots come back after changing server. [#1092](<https://github.com/clusterio/clusterio/issues/1092>)
|
|
- Fixed research_sync sending research it received from the controller back to it, so every instance got the research again each time an instance started. [#1110](<https://github.com/clusterio/clusterio/issues/1110>)
|
|
- Fixed items in main inventory slots from armor equipment such as toolbelts not fitting in the inventory when joining another server. [#1100](<https://github.com/clusterio/clusterio/issues/1100>)
|
|
|
|
### Changes
|
|
|
|
- Replaced jszip with yauzl and yazl so saves and mods are no longer loaded fully into memory when patched, read or exported. [#1002](<https://github.com/clusterio/clusterio/issues/1002>)
|
|
- Bumped dependency versions, including typebox 0.34 and react-router 7. Plugins using `@sinclair/typebox` should update to ^0.34. [#1113](<https://github.com/clusterio/clusterio/pull/1113>)
|
|
|
|
### Contributors
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@psihius](<https://github.com/psihius>), [@ILLISIS](<https://github.com/ILLISIS>), [@bbassie](<https://github.com/bbassie>), [@ColumbusLabs](<https://github.com/ColumbusLabs>)
|
|
|
|
### Statistics
|
|
|
|
Commits: 101 Pull Requests: 29 Files Changed: 135 Additions: +8,830 Deletions: -994
|
|
|
|
## Version 2.0.2
|
|
|
|
### Fixes
|
|
|
|
- Fixed installation with selected plugins by relying on automatic plugin discovery, and ensured installer failures return a nonzero exit status. [#1082](<https://github.com/clusterio/clusterio/pull/1082>), [#1084](<https://github.com/clusterio/clusterio/issues/1084>)
|
|
- Fixed web plugin `controllerConnectionEvent` handlers receiving the connector's event data instead of the event name. [#1083](<https://github.com/clusterio/clusterio/issues/1083>)
|
|
- Updated installation instructions to recommend latest Node.js LTS and corrected outdated mod management, CLI, plugin, and release documentation. [#1086](<https://github.com/clusterio/clusterio/pull/1086>)
|
|
|
|
### Meta
|
|
|
|
- Made player-auth login tests independent of wall-clock timing and added verification-token expiry coverage. [#1087](<https://github.com/clusterio/clusterio/pull/1087>)
|
|
- Added Node.js 26 to the CI test matrix across all tested Factorio versions. [#1088](<https://github.com/clusterio/clusterio/pull/1088>)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@psihius](<https://github.com/psihius>), [@bbassie](<https://github.com/bbassie>)
|
|
|
|
## Version 2.0.1
|
|
|
|
### Fixes
|
|
|
|
- Removed obsolete development-branch warnings from controller, host and ctl startup. [#1078](<https://github.com/clusterio/clusterio/pull/1078>)
|
|
- Removed the obsolete alpha label and development warning from the Clusterio Library mod title and description. [#1079](<https://github.com/clusterio/clusterio/pull/1079>)
|
|
- Fixed Factorio mod release uploads to use valid multipart requests and files from the requested output directory, uploading variants in version order. [#1080](<https://github.com/clusterio/clusterio/pull/1080>)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@psihius](<https://github.com/psihius>)
|
|
|
|
## Version 2.0.0
|
|
|
|
### Features
|
|
|
|
- Mod packs now show informational notices for disabled recommended mods and available compatible updates. [#949](<https://github.com/clusterio/clusterio/issues/949>)
|
|
- Added host, server name, save copy and start options to the create instance dialog in the web UI. [#405](<https://github.com/clusterio/clusterio/issues/405>)
|
|
- Added `InstanceSaveGameRequest` and `clusterioctl instance save-game` to save the running game of an instance. [#405](<https://github.com/clusterio/clusterio/issues/405>)
|
|
- Added `permissions` to `PluginDeclaration` and a `Permissions` type registry so plugin permission names are checked at compile time. [#987](<https://github.com/clusterio/clusterio/issues/987>)
|
|
- Added Update All to the web interface and `--all` to the ctl update commands, updating the core package and all npm installed plugins in one npm call. [#910](<https://github.com/clusterio/clusterio/issues/910>)
|
|
- Added typed hook system for plugin registration. ([#730](<https://github.com/clusterio/clusterio/issues/730>))
|
|
- Added `plugin install <package>` command to controller, host and ctl which installs a plugin from npm and adds it to the plugin list. [#1008](<https://github.com/clusterio/clusterio/issues/1008>)
|
|
- Added a guard that prevents controller and host restart requests from unintentionally downgrading Clusterio. [#950](<https://github.com/clusterio/clusterio/issues/950>)
|
|
- Added option to load static assets from a separate URL from where the controller's web API is hosted at. [#983](<https://github.com/clusterio/clusterio/pull/983>)
|
|
- Added `clusteriocontroller copy-static` command to copy static web assets to a folder to ease hosting assets on a separate server. [#983](<https://github.com/clusterio/clusterio/pull/983>)
|
|
- Added Mark Restart Required to the host and controller pages and matching ctl commands, for plugins installed by other means than the install request. [#1043](<https://github.com/clusterio/clusterio/pull/1043>)
|
|
- Added the RoleViewPageBeforePermissions web extension slot for plugin components above the permissions on the role page. [#1045](<https://github.com/clusterio/clusterio/pull/1045>)
|
|
- Added a list of permission groups to the role page, highlighting groups with granted permissions. [#1044](<https://github.com/clusterio/clusterio/pull/1044>)
|
|
- Added `clusteriohost create-scenario` to create a scenario with the Clusterio modules patched in for use outside of Clusterio. [#1014](<https://github.com/clusterio/clusterio/pull/1014>)
|
|
- Plugins can declare a `migrationEntrypoint` to migrate the config fields and role permissions core stores for them. Configs track the plugin version they were last loaded with in a hidden `<plugin>.version` field. [#1073](<https://github.com/clusterio/clusterio/pull/1073>)
|
|
|
|
### Fixes
|
|
|
|
- Deprecation warning DEP0190 is no longer printed when installing. [#851](<https://github.com/clusterio/clusterio/issues/851>)
|
|
- Events sent to subscribers are no longer addressed to the request id of the request that created the subscription. [#847](<https://github.com/clusterio/clusterio/issues/847>)
|
|
- Factorio account token no longer written to the log when a mod download fails. [#795](<https://github.com/clusterio/clusterio/issues/795>)
|
|
- Failed downloads no longer leave a temporary file and an open file handle behind, which could shift the file names used by later downloads. [#957](<https://github.com/clusterio/clusterio/pull/957>)
|
|
- Requests that could not be forwarded to the next hop are no longer answered a second time when the link disconnects. [#650](<https://github.com/clusterio/clusterio/issues/650>)
|
|
- Events broadcast from an instance to all hosts are now delivered to every host instead of only the one running the instance. [#575](<https://github.com/clusterio/clusterio/issues/575>)
|
|
- Web interface now asks to be reloaded when the controller's plugins change, instead of continuing against plugins that are no longer loaded. [#804](<https://github.com/clusterio/clusterio/issues/804>)
|
|
- Plugin list no longer reports a plugin added since the page was opened as having failed to load. [#729](<https://github.com/clusterio/clusterio/issues/729>)
|
|
- Instance console no longer hides the Factorio server's replies to console commands, or Factorio's own errors, when filtering to game activity. [#853](<https://github.com/clusterio/clusterio/issues/853>)
|
|
- Allow player online autosave slots to be disabled while autosaves are enabled. [#966](<https://github.com/clusterio/clusterio/issues/966>)
|
|
- Plugin web bundles are now loaded relative to `staticRoot` instead of `webRoot`. [#980](<https://github.com/clusterio/clusterio/issues/980>)
|
|
- Fixed inventory_sync not preserving the personal roboport toggle, the equipment movement bonus toggle, game view settings such as alt mode, and toggleable mod shortcuts between instances. [#898](<https://github.com/clusterio/clusterio/issues/898>)
|
|
- Schema validation errors are now included when an InvalidMessage is logged from IPC and event handlers. [#986](<https://github.com/clusterio/clusterio/issues/986>)
|
|
- Fixed clusterioctl not being able to reference hosts, instances, mod packs and roles by an integer like name. [#886](<https://github.com/clusterio/clusterio/issues/886>)
|
|
- Fixed the web-only plugin template referencing a permission that was never defined. [#987](<https://github.com/clusterio/clusterio/issues/987>)
|
|
- Config files are no longer world readable by default. [#1005](<https://github.com/clusterio/clusterio/issues/1005>)
|
|
- Fixed failed recipe notification names being duplicated on every upload from the same instance in inventory sync. [#964](<https://github.com/clusterio/clusterio/issues/964>)
|
|
- Instances refuse to start with a mod pack for a newer Factorio version than the instance runs, instead of Factorio silently loading default mod settings. [#1006](<https://github.com/clusterio/clusterio/issues/1006>)
|
|
- Documented the config options missing from configuration.md, marked the internal ones and noted the validation rules. [#985](<https://github.com/clusterio/clusterio/issues/985>)
|
|
- Fixed concurrent saves of the same file racing on a shared temporary file. [#1026](<https://github.com/clusterio/clusterio/pull/1026>)
|
|
- Fixed control connections leaving their log subscription and debug dump listeners attached after closing. [#1027](<https://github.com/clusterio/clusterio/pull/1027>)
|
|
- Fixed the Load Scenario modal reading the wrong field for map settings. [#1032](<https://github.com/clusterio/clusterio/pull/1032>)
|
|
- Fixed the controller exiting when a control message's permission check threw an unexpected error. [#1033](<https://github.com/clusterio/clusterio/pull/1033>)
|
|
- Fixed the host exiting on server log lines that look like actions but do not match the expected format. [#1034](<https://github.com/clusterio/clusterio/pull/1034>)
|
|
- Fixed the controller crashing when a control connection with the WebSocket debug dump active was resumed. [#1035](<https://github.com/clusterio/clusterio/pull/1035>)
|
|
- Fixed deleted users keeping their permissions on any open connection until they disconnected. [#1030](<https://github.com/clusterio/clusterio/pull/1030>)
|
|
- Restored pagination on the instance save list. [#967](<https://github.com/clusterio/clusterio/issues/967>)
|
|
- Mod dependency resolution now only picks releases made for the mod pack's Factorio version. [#965](<https://github.com/clusterio/clusterio/issues/965>)
|
|
- Inventory sync no longer uploads an empty inventory over the stored one after a failed download. [#912](<https://github.com/clusterio/clusterio/issues/912>)
|
|
- Inventory sync now releases players who leave while using a temporary inventory, instead of showing them as busy until the instance stops. [#975](<https://github.com/clusterio/clusterio/pull/975>)
|
|
- Fixed reading map exchange strings from Factorio 2.1.13 and later, which broke `instance load-scenario --map-exchange-string` on current Factorio. [#977](<https://github.com/clusterio/clusterio/pull/977>)
|
|
- Fixed instances getting stuck on a host after a failed assign, and instance create requests no longer accept `instance.assigned_host`. [#1029](<https://github.com/clusterio/clusterio/pull/1029>)
|
|
- Fixed the host exiting when an instance's whitelist or server settings config changed while it was starting, or when tags contained non-string values. [#1028](<https://github.com/clusterio/clusterio/pull/1028>)
|
|
- Fixed a host being able to modify the controller's stored save list for, or forge log messages attributed to, instances assigned to other hosts. [#1036](<https://github.com/clusterio/clusterio/pull/1036>)
|
|
- Fixed a stop request or RCON command hanging when the Factorio process exited before its RCON connection was established. [#1031](<https://github.com/clusterio/clusterio/pull/1031>)
|
|
- Fixed core plugins needlessly installing the web_ui, controller, host and ctl packages. [#1021](<https://github.com/clusterio/clusterio/pull/1021>)
|
|
- Installing a plugin on a host or the controller now marks it as needing a restart. [#1042](<https://github.com/clusterio/clusterio/pull/1042>)
|
|
- Fixed plugin manifest path resolution when loading web assets. [#1046](<https://github.com/clusterio/clusterio/issues/1046>)
|
|
- A plugin whose web build is expected but missing is reported again: `Controller.loadJsonObject(path, true)` throws on a missing file instead of returning `{}`, and a malformed JSON file always throws. [#1046](<https://github.com/clusterio/clusterio/issues/1046>)
|
|
- Preserve full configuration field names when using the CLI config editor. [#796](<https://github.com/clusterio/clusterio/issues/796>)
|
|
- Plugin metrics hook handlers may return nothing. [#1052](<https://github.com/clusterio/clusterio/pull/1052>)
|
|
- Fixed save names given when starting an instance or creating a save not being checked, allowing files outside the instance directory to be written or modified. [#1053](<https://github.com/clusterio/clusterio/pull/1053>)
|
|
- Fixed access tokens from request headers being written to the controller and cluster logs. [#1054](<https://github.com/clusterio/clusterio/pull/1054>)
|
|
- Fixed subscriptions and log following continuing after the user lost permission for them. [#1056](<https://github.com/clusterio/clusterio/pull/1056>)
|
|
- Fixed web interface data staying marked as up to date after the user lost permission to view it, and not loading after permission was granted. [#1058](<https://github.com/clusterio/clusterio/pull/1058>)
|
|
- Fixed ctl config edit showing fields that cannot be edited and leaving out field descriptions. [#1051](<https://github.com/clusterio/clusterio/issues/1051>)
|
|
- Fixed the reason an instance failed to start being logged as "undefined". [#1065](<https://github.com/clusterio/clusterio/issues/1065>)
|
|
- Fixed subspace inventory combinators missing items after instance startup. [#1069](<https://github.com/clusterio/clusterio/issues/1069>)
|
|
- Fixed the controller crashing when a WebSocket client sent an invalid frame before completing the handshake. [#1063](<https://github.com/clusterio/clusterio/issues/1063>)
|
|
- Fixed an instance reusing a stored game port that another process holds, which made it fail to start until the port was freed. [#1065](<https://github.com/clusterio/clusterio/issues/1065>)
|
|
- Fixed credentials in request query parameters, such as OAuth codes, being written to the controller's HTTP log. [#1074](<https://github.com/clusterio/clusterio/pull/1074>)
|
|
- Fixed plugin `ctlConfigFields` not being registered in the clusterioctl config. [#1075](<https://github.com/clusterio/clusterio/pull/1075>)
|
|
- Fixed startup failures and plugin loading when installing Clusterio from published npm packages after the ES module migration. [#1070](<https://github.com/clusterio/clusterio/pull/1070>)
|
|
|
|
### Changes
|
|
|
|
- Global chat now filters server-specific GPS, blueprint, train, and train-stop rich-text tags before relaying messages between instances. [#593](<https://github.com/clusterio/clusterio/issues/593>)
|
|
- Instance console filter is now a labelled Game/Instance control instead of a single-label toggle, and Factorio's output in the log consoles is prefixed with `[server]` like every other log level. [#853](<https://github.com/clusterio/clusterio/issues/853>)
|
|
- Inventory sync sends only the recipe notifications that differ from the destination instance's state on download. [#964](<https://github.com/clusterio/clusterio/issues/964>)
|
|
- Log the source of responses received without a pending request, the peer of timed out connections and the number of messages resent on session resume. [#1007](<https://github.com/clusterio/clusterio/issues/1007>)
|
|
- Plugins that are not expected to have a web build are no longer shown with an error in the plugins page. [#1004](<https://github.com/clusterio/clusterio/issues/1004>)
|
|
- Plugins should now return a function to register handlers via hooks. ([#730](<https://github.com/clusterio/clusterio/issues/730>))
|
|
- Plugin templates from `@clusterio/create` use entrypoint functions and hooks. ([#730](<https://github.com/clusterio/clusterio/issues/730>))
|
|
- Improved typing for plugin APIs and webui extension points. ([#730](<https://github.com/clusterio/clusterio/issues/730>))
|
|
- Plugin hooks run concurrently instead of one plugin at a time. ([#730](<https://github.com/clusterio/clusterio/issues/730>))
|
|
- Access tokens are also accepted as an `Authorization: Bearer` header on HTTP API endpoints. [#1009](<https://github.com/clusterio/clusterio/issues/1009>)
|
|
- `plugin install` and `plugin add` with a package name now check that they are run from a Clusterio installation directory. [#1008](<https://github.com/clusterio/clusterio/issues/1008>)
|
|
- Bumped pnpm to 12, the GitHub Actions used by CI to their current majors, and the CI Factorio version to 2.1.17. [#1022](<https://github.com/clusterio/clusterio/pull/1022>)
|
|
- Bumped dependencies, including eslint 10, yargs 18, chalk 6, @types/express 5 and @types/node 24. [#1023](<https://github.com/clusterio/clusterio/pull/1023>)
|
|
- Plugin discovery now traverses dependencies only after confirming the parent package is a Clusterio plugin. [#963](<https://github.com/clusterio/clusterio/pull/963>)
|
|
- Converted the project to using ES Modules. [#984](<https://github.com/clusterio/clusterio/pull/984>)
|
|
- Converted the bundled plugins to entrypoint functions. [#1052](<https://github.com/clusterio/clusterio/pull/1052>)
|
|
- Added `controller.max_subscription_filters` config to limit the number of filters a connection can subscribe with for one event. [#1055](<https://github.com/clusterio/clusterio/pull/1055>)
|
|
- Added `controller.max_send_buffer_size` config to limit how much the controller buffers for a connection that does not acknowledge messages. [#1057](<https://github.com/clusterio/clusterio/pull/1057>)
|
|
- Added links to the ExpCluster and Chat Relay community plugins in the README. [#1062](<https://github.com/clusterio/clusterio/pull/1062>)
|
|
|
|
### Breaking Changes
|
|
|
|
- `staticRoot` in the web interface now includes the `static/` prefix. Plugins that fetch assets with `${staticRoot}static/...` should drop the `static/` part. [#980](<https://github.com/clusterio/clusterio/issues/980>)
|
|
- `checkPermission` and the web UI `hasPermission` helpers take `PermissionName`; TypeScript plugins must augment the `Permissions` interface. [#987](<https://github.com/clusterio/clusterio/issues/987>)
|
|
- Replaced `plugins` map with `loadedPlugins` set across core classes (except WebUi). ([#730](<https://github.com/clusterio/clusterio/issues/730>))
|
|
- The `/metrics` endpoint requires a user token with the new `core.controller.metrics` permission. Concurrent scrapes share a single gather from the hosts. [#1009](<https://github.com/clusterio/clusterio/issues/1009>)
|
|
- Config files now have to be explicitly created. Use the `--create-config` flag to get the old behaviour of creating it if missing. [#548](<https://github.com/clusterio/clusterio/issues/548>)
|
|
- Renamed clusterioctl's config-control subcommand to config. [#1039](<https://github.com/clusterio/clusterio/pull/1039>)
|
|
- Renamed clusterioctl's main class from Control to Ctl. [#1039](<https://github.com/clusterio/clusterio/pull/1039>)
|
|
- Renamed clusterioctl's config entries from control.[name] to ctl.[name]. [#1039](<https://github.com/clusterio/clusterio/pull/1039>)
|
|
- Plugin entrypoints must now specify the full filename including the `.js` extension. [#984](<https://github.com/clusterio/clusterio/pull/984>)
|
|
- Renamed the inventory_sync plugin to player_sync, published as `@clusterio/plugin-player_sync`. Config fields, the inventory view permission, the controller database file and save data are migrated on load. Uninstall `@clusterio/plugin-inventory_sync` before installing the new package. [#1072](<https://github.com/clusterio/clusterio/pull/1072>)
|
|
|
|
### Meta
|
|
|
|
- Added a `NO_EXTERNAL_TEST` flag to skip tests that use external APIs. [#976](<https://github.com/clusterio/clusterio/pull/976>)
|
|
- Added a CI check that the controller and host stay compatible with the latest published release. [#978](<https://github.com/clusterio/clusterio/pull/978>)
|
|
- Added a Lua lint CI job using emmylua_check. [#979](<https://github.com/clusterio/clusterio/pull/979>)
|
|
- Added a plugin migration guide for 2.0 and documented that minor versions may contain breaking changes for the plugin API. [#1050](<https://github.com/clusterio/clusterio/pull/1050>)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@bbassie](<https://github.com/bbassie>), [@lntutor](<https://github.com/lntutor>), [@ColumbusLabs](<https://github.com/ColumbusLabs>), [@floze-the-genius](<https://github.com/floze-the-genius>), [@Cooldude2606](<https://github.com/Cooldude2606>), [@solarcloud7](<https://github.com/solarcloud7>), [@Hornwitser](<https://github.com/Hornwitser>), [@ILLISIS](<https://github.com/ILLISIS>), [@Danielv123](<https://github.com/Danielv123>), [@PHIDIAS0303](<https://github.com/PHIDIAS0303>)
|
|
|
|
## Version 2.0.0-alpha.27
|
|
|
|
### Features
|
|
|
|
- Added a cluster overview landing page. [#928](<https://github.com/clusterio/clusterio/issues/928>)
|
|
- Remember the instance console chat/log toggle. [#932](<https://github.com/clusterio/clusterio/pull/932>)
|
|
- Show the public address on the instance details page. [#934](<https://github.com/clusterio/clusterio/issues/934>)
|
|
- Navigation links can now be opened in a new tab. [#929](<https://github.com/clusterio/clusterio/issues/929>)
|
|
- Instances can target a Factorio release channel (e.g. `stable` or `experimental`) as their version, resolved from `factorio.com/api/latest-releases`. [#937](<https://github.com/clusterio/clusterio/pull/937>)
|
|
- The instance console in the Web UI can be resized by dragging its bottom edge, and the chosen height is remembered across page reloads. [#938](<https://github.com/clusterio/clusterio/issues/938>)
|
|
- Tables now remember their sort and filters in the URL. [#927](<https://github.com/clusterio/clusterio/issues/927>)
|
|
- Display Factorio server version in login server list. [#906](<https://github.com/clusterio/clusterio/issues/906>)
|
|
- Add "Connect via Steam" button to login server list. [#915](<https://github.com/clusterio/clusterio/pull/915>)
|
|
|
|
### Fixes
|
|
|
|
- Silenced two Ant Design console warnings in the Web UI: the deprecated Modal `destroyOnClose` prop, and a duplicate-value warning from the instance version selector. [#940](<https://github.com/clusterio/clusterio/pull/940>)
|
|
- Surface the mod portal's own error when downloading mods for an unsupported Factorio version. [#941](<https://github.com/clusterio/clusterio/pull/941>)
|
|
- Instances always create their config file on assignment preventing duplicate folder creation. [#945](<https://github.com/clusterio/clusterio/pull/945>)
|
|
|
|
### Changes
|
|
|
|
- Reworked the site layout into a fixed sidebar with a top bar. [#924](<https://github.com/clusterio/clusterio/pull/924>)
|
|
- The builtin "recycler" mod is now included correctly as builtin. [#925](<https://github.com/clusterio/clusterio/issues/925>)
|
|
- Mod `info.json` versions (a mod's version and its `factorio_version`) are now parsed leniently, matching how the game reads them, instead of being validated against a fixed list of Factorio versions. [#941](<https://github.com/clusterio/clusterio/pull/941>)
|
|
- SubscriptionFilter now directly extends Set<string>. [#942](<https://github.com/clusterio/clusterio/pull/942>)
|
|
- EventSubscriber now exposes network errors, include permission errors. [#942](<https://github.com/clusterio/clusterio/pull/942>)
|
|
- Quick bar syncing now supports quality filters. [#944](<https://github.com/clusterio/clusterio/pull/944>)
|
|
- Added support for recommended mod dependencies. [#946](<https://github.com/clusterio/clusterio/pull/946>)
|
|
|
|
### Meta
|
|
|
|
- Node 20 is no longer officially supported as it went EoL in March 2026. Please update to v22 or v24. [#943](<https://github.com/clusterio/clusterio/pull/943>)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@bbassie](<https://github.com/bbassie>)
|
|
[@Cooldude2606](<https://github.com/Cooldude2606>)
|
|
|
|
## Version 2.0.0-alpha.26
|
|
|
|
### Features
|
|
|
|
- Added filter state to `EventSubscriber` allowing plugings to more easilly filter events. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
- Added `replace` subscription action allowing filter state to be fully replaced with a single request. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
- Added `ValueSubscriber` and `MapSubscriber` as subclasses of `EventSubscriber`. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
- Added changelog viewer accessible from the version number in the web interface. [#907](<https://github.com/clusterio/clusterio/issues/907>)
|
|
- Added about popup to user menu containing support links, build, clusterio, and debug info. [#914](<https://github.com/clusterio/clusterio/pull/914>)
|
|
- Added user status filtering (admin, whitelisted, banned) to the users table. [#905](<https://github.com/clusterio/clusterio/issues/905>)
|
|
- Added instance selector to users page to scope user stats by instance. [#905](<https://github.com/clusterio/clusterio/issues/905>)
|
|
|
|
### Fixes
|
|
|
|
- Online user table on instance page now correctly defaults to online only filter. [#909](<https://github.com/clusterio/clusterio/pull/909>)
|
|
- Fixed popup not opening when pressing kill within the instance control button. [#859](<https://github.com/clusterio/clusterio/issues/859>)
|
|
- Fix division by zero in CPU usage calculation. [#916](<https://github.com/clusterio/clusterio/issues/916>)
|
|
- Fixed permissions list not including `grantByDefault` in the json representation. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
- Fixed subscription resources being `synced = false` if the remote data was empty. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
- Fix incorrect use of `path.parse` within create template for plugins. [#919](<https://github.com/clusterio/clusterio/pull/919>)
|
|
- Fixed active filter icon behaviour in user search using empty string. [#917](<https://github.com/clusterio/clusterio/pull/917>)
|
|
|
|
### Changes
|
|
|
|
- Player auth now uses a scroll pane for listing instance names. [#909](<https://github.com/clusterio/clusterio/pull/909>)
|
|
- `subscriptionUpdate` now fires for all subscription requests rather than just added subscriptions. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
- Unified instance and global user table columns for consistent behaviour. [#917](<https://github.com/clusterio/clusterio/pull/917>)
|
|
- Improved loading states for tables and inputs using synced state. [#917](<https://github.com/clusterio/clusterio/pull/917>)
|
|
- Refactored username rendering into a reusable component. [#917](<https://github.com/clusterio/clusterio/pull/917>)
|
|
|
|
### Breaking Changes
|
|
|
|
- Renamed `lib.Address.index` to `requestIndex` and added `addressIndex`. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
- `EventSubscriber` no longer includes a values map, use `MapSubscriber` instead. [#913](<https://github.com/clusterio/clusterio/pull/913>)
|
|
|
|
### Meta
|
|
|
|
- Version dependencies now use `^` which enables updates to be applied one package at a time. [#803](<https://github.com/clusterio/clusterio/issues/803>)
|
|
- Updated change log creation to include new lines and user contributions. [#909](<https://github.com/clusterio/clusterio/pull/909>)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](<https://github.com/Cooldude2606>)
|
|
|
|
## Version 2.0.0-alpha.25
|
|
|
|
### Features
|
|
|
|
- Added double interrupt logic to ctl to force immediate exit. [#887](<https://github.com/clusterio/clusterio/issues/887>)
|
|
- Allow selection of factorio versions not listed on the Wube website for instances and mod packs. [#867](<https://github.com/clusterio/clusterio/issues/867>)
|
|
|
|
### Fixes
|
|
|
|
- Fix the webui being unable to set host config values and that no error was displayed. [#891](<https://github.com/clusterio/clusterio/issues/891>)
|
|
- Fix instance config not updating on changes being applied. [#901](<https://github.com/clusterio/clusterio/pull/901>)
|
|
- Incorrect acccessing of player inventory during crafting queue serialisation when in remote view. [#892](<https://github.com/clusterio/clusterio/issues/892>)
|
|
- Use physical location and controller for syncing player to prevent teleporting with remote view. [#894](<https://github.com/clusterio/clusterio/pull/894>)
|
|
- Fixed player exiting space platform hub on sync and other remote view edge cases. [#894](<https://github.com/clusterio/clusterio/pull/894>)
|
|
|
|
### Changes
|
|
|
|
- Config validation errors are no longer logged when raised during an request handler. [#888](<https://github.com/clusterio/clusterio/issues/888>)
|
|
- Updated role permission editor to use grouped layout with search and improved formatting. [#902](<https://github.com/clusterio/clusterio/pull/902>)
|
|
|
|
### Breaking Changes
|
|
|
|
- Removed obsolete functionality to download headless server in the installer. [#890](<https://github.com/clusterio/clusterio/pull/890>)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](<https://github.com/Cooldude2606>)
|
|
[@Daniel](<https://github.com/Daniel>)
|
|
[@Hornwitser](<https://github.com/Hornwitser>)
|
|
|
|
## Version 2.0.0-alpha.24
|
|
|
|
### Features
|
|
|
|
- Added `FactorioIcon` component for showing icons from the game in the web UI. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Added `useDefaultModPack` hook to the web UI. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Added types for the exported metadata for mod packs. [#526](https://github.com/clusterio/clusterio/issues/526)
|
|
- Added config value validation beyond simple type checks. [#856](https://github.com/clusterio/clusterio/pull/856)
|
|
- Added config staging to allow setting many values at once. [#856](https://github.com/clusterio/clusterio/pull/856)
|
|
- Added a warning when attempting to set player autosave slots lower than autosave slots. [#855](https://github.com/clusterio/clusterio/issues/855)
|
|
- Added `controller.authSecret` as the type of config field `controller.auth_secret` was inconsistent. [#856](https://github.com/clusterio/clusterio/pull/856)
|
|
- Added support for the `node:` prefix in import statements in web UI code. [#881](https://github.com/clusterio/clusterio/pull/881)
|
|
- Added config validation to load plugin to error when save patching or script commands are disabled [#884](https://github.com/clusterio/clusterio/issues/884)
|
|
|
|
### Fixes
|
|
|
|
- Fixed host printing a deprecation warning on startup. [#855](https://github.com/clusterio/clusterio/issues/855)
|
|
- Fixed exported prototype metadata missing localised_name. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Fixed headless download option in installer failing with `TypeError: callback is not a function`. [#860](https://github.com/clusterio/clusterio/issues/860)
|
|
- Fixed controller crashing if a host attempted to download a mod that had been deleted from the controller's filesystem while the controller was running. [#860](https://github.com/clusterio/clusterio/issues/860)
|
|
|
|
### Changes
|
|
|
|
- Moved `/icon-reference` to `/mods/mod-packs/:id/icon-reference` and linked it from the mod pack page. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Made the `useAccount`, `useModPacks`, `useMods`, `useRoles`, `useSaves`, `useSystems`, `useUsers` and related hooks in the web UI available to plugins. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Exported prototypes are now based on the `defines.prototypes` mapping from the game. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Removed usage of fs-extra. [#860](https://github.com/clusterio/clusterio/issues/860)
|
|
|
|
### Breaking Changes
|
|
|
|
- Removed `useExportManifest` from the web UI. Use `.exportManifest` on a mod pack from one of the `useModPack` hooks instead. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Replaced the 8 `useTypeMetadata` hooks in the web UI such as `useItemMetadata` with `useExportPrototypeMetadata`. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- `.item-name` css classes are no longer created in the web UI, and will not render icons from the game. Use the `FactorioIcon` component instead and pass it a prototype from `useExportPrototypeMetadata`. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Renamed `useLocale` hook in web UI to `useExportLocale` which now requires the mod pack to load the exported locale from as an argument. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
- Fluids are no longer merged with items in the exported prototype metadata for mod packs. [#875](https://github.com/clusterio/clusterio/pull/875)
|
|
|
|
### Meta
|
|
|
|
- Changelog entries are now parsed with a script from pull request descriptions. [#871](https://github.com/clusterio/clusterio/pull/871)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Hornwitser](https://github.com/Hornwitser)
|
|
|
|
## Version 2.0.0-alpha.23
|
|
|
|
### Major Features
|
|
|
|
- Added automatic headless download and update on linux. [#330](https://github.com/clusterio/clusterio/issues/330)
|
|
- Added recipe notification sync to inventory sync. [#506](https://github.com/clusterio/clusterio/issues/506)
|
|
|
|
### Features
|
|
|
|
- Added config lock files to prevent process duplication. [#815](https://github.com/clusterio/clusterio/issues/815)
|
|
- Added process and system start times to system metrics. [#826](https://github.com/clusterio/clusterio/issues/826)
|
|
- Added icons to status tags for host and instances. [#827](https://github.com/clusterio/clusterio/issues/827)
|
|
- Extended export-data to produce icons for recipes, signals, technologies, planets, qualities and entities. [#838](https://github.com/clusterio/clusterio/pull/838)
|
|
- Added Icon Reference page to web interface at `/icon-reference` for browsing all exported icons. [#838](https://github.com/clusterio/clusterio/pull/838)
|
|
- Added visual flash to RCON result box to confirm command execution, even when the output is identical to the previous result. [#793](https://github.com/clusterio/clusterio/issues/793)
|
|
|
|
### Changes
|
|
|
|
- Login screen now displays the cluster name. [#818](https://github.com/clusterio/clusterio/issues/818)
|
|
- Instance versions can now be set using Major.Minor without specifying a patch version. [#820](https://github.com/clusterio/clusterio/issues/820)
|
|
- Versions for factorio and mod packs can now be selected using a drop down menu. [#820](https://github.com/clusterio/clusterio/issues/820)
|
|
- The controller will now refuse to start if no users were loaded from file. [#814](https://github.com/clusterio/clusterio/issues/814)
|
|
- Improved wording and display of the generate host token modal. [#828](https://github.com/clusterio/clusterio/issues/828)
|
|
- Installations where multiple conflicting clusterio/lib packages have been installed will now fail with an error [#863](https://github.com/clusterio/clusterio/issues/863).
|
|
- Export completion now logs per-category icon counts. [#838](https://github.com/clusterio/clusterio/pull/838)
|
|
|
|
### Fixes
|
|
|
|
- Removed debug log statement from equipment grid serialization. [#807](https://github.com/clusterio/clusterio/pull/807)
|
|
- Fix that the documentation had a dead link to details of the message passing protocol [#812](https://github.com/clusterio/clusterio/issues/812)
|
|
- Fixed case where achievements were not disabled. [#817](https://github.com/clusterio/clusterio/pull/817)
|
|
- Fix headless download on linux install. [#816](https://github.com/clusterio/clusterio/issues/816)
|
|
- Fix option `--no-download-headless` being ignored. [#816](https://github.com/clusterio/clusterio/issues/816)
|
|
- Fixed action buttons overflowing on narrow screens across the web interface. [#810](https://github.com/clusterio/clusterio/issues/810)
|
|
- Fixed player logistics failing to load on servers without unlocked logistics networks. [#806](https://github.com/clusterio/clusterio/issues/806)
|
|
- Fixed mod dependency parser breaking with inconsistent spaces. [#834](https://github.com/clusterio/clusterio/issues/834)
|
|
- No longer attempts to sync inventory in single player. [#835](https://github.com/clusterio/clusterio/issues/835)
|
|
- Fixed tests failing when the configured factorio_directory contains stuff other than Factorio installs [#540](https://github.com/clusterio/clusterio/issues/540).
|
|
- Always create a whitelist file so it can be watched for changes. [#865](https://github.com/clusterio/clusterio/issues/865)
|
|
- Added missing await statements which could cause an instance to start with an outdated admin/ban/whitelist. [#869](https://github.com/clusterio/clusterio/issues/869)
|
|
- Fixed metrics breaking when labels contain comma or equal signs [#861](https://github.com/clusterio/clusterio/issues/861)
|
|
- Fixed Host page show repeated errors when viewing an offline local host [#848](https://github.com/clusterio/clusterio/issues/848)
|
|
- Fixed bad mod paths in icon specifications crashing the export. [#841](https://github.com/clusterio/clusterio/issues/841)
|
|
- Fixed prototypes with no icon data causing errors during export. [#841](https://github.com/clusterio/clusterio/issues/841)
|
|
|
|
### Breaking Changes
|
|
|
|
- Custom permission methods should use `IUser` rather than `IControllerUser` [#837](https://github.com/clusterio/clusterio/pull/837)
|
|
- `controller.userManager` has been refactored, see PR for details. [#837](https://github.com/clusterio/clusterio/pull/837)
|
|
- `controller.instances` has been refactored, see PR for details. [#837](https://github.com/clusterio/clusterio/pull/837)
|
|
- `User/Instance/HostInfo` renamed to `User/Instance/HostRecord` [#837](https://github.com/clusterio/clusterio/pull/837)
|
|
- Removed `host.tls_ca` and `control.tls_ca` config options, see [section on self signed certificates](https://github.com/clusterio/clusterio/blob/master/docs/setting-up-tls.md#creating-and-using-a-self-signed-certificate) for the replacement for this option [#857](https://github.com/clusterio/clusterio/issues/857)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Daniel](https://github.com/Danielv123)
|
|
[@Double](https://github.com/DoubleThoughtTheProgrammer)
|
|
[@Hornwitser](https://github.com/Hornwitser)
|
|
[@Ryan Walker](https://github.com/solarcloud7)
|
|
|
|
## Version 2.0.0-alpha.22
|
|
|
|
### Major Features
|
|
|
|
- Added a download dependencies button which downloads missing dependencies. [#726](https://github.com/clusterio/clusterio/issues/726)
|
|
- Added an update mod button which downloads the latest compatible version of a mod. [#725](https://github.com/clusterio/clusterio/issues/725)
|
|
|
|
### Features
|
|
|
|
- Added online player list to instance details page. [#666](https://github.com/clusterio/clusterio/issues/666)
|
|
- Added ability to restart instances as a single action. [#779](https://github.com/clusterio/clusterio/issues/779)
|
|
- Added ability to exclude instances from the 'Start all' web UI button. [#451](https://github.com/clusterio/clusterio/issues/451)
|
|
- Added plugin update detection for restart required [#759](https://github.com/clusterio/clusterio/issues/759)
|
|
- Added detection for mismatched mod and mod pack factorio version. [#727](https://github.com/clusterio/clusterio/issues/727)
|
|
- Added detection for dependency issues such as incompatible or wrong version. [#727](https://github.com/clusterio/clusterio/issues/727)
|
|
- Added a quick fix button for resolving detected dependency issues. [#801](https://github.com/clusterio/clusterio/issues/801)
|
|
|
|
### Changes
|
|
|
|
- Restart host / controller is now the default action with stop moved to a dropdown. [#780](https://github.com/clusterio/clusterio/issues/780)
|
|
- Restart host / controller no longer shows unless it is enabled for that machine. [#780](https://github.com/clusterio/clusterio/issues/780)
|
|
- Plugin templates no longer depend on a dev install of Clusterio. [#786](https://github.com/clusterio/clusterio/issues/786)
|
|
- Better error message for when a plugin is missing an index file. [#799](https://github.com/clusterio/clusterio/pull/799)
|
|
- `ModStore.downloadMods` no longer checks if the mod is already downloaded. [#801](https://github.com/clusterio/clusterio/issues/801
|
|
- Mod version for buildins will always be fully qualified, matching the requirement enforced on other mods. [#801](https://github.com/clusterio/clusterio/issues/801))
|
|
- Subscriptions can now be filtered. [#788](https://github.com/clusterio/clusterio/pull/788)
|
|
|
|
### Fixes
|
|
|
|
- Fixed the missing space between action buttons on the users and hosts list. [#780](https://github.com/clusterio/clusterio/issues/780)
|
|
- Fixed "rendered more hooks" error when refreshing hosts page. [#769](https://github.com/clusterio/clusterio/issues/769)
|
|
- Fixed inventory combinator time signal not always updating [#610](https://github.com/clusterio/clusterio/issues/610)
|
|
- Renamed templates for `.gitignore` and `.npmignore` that caused `create --plugin-template` to fail. [#800](https://github.com/clusterio/clusterio/pull/800)
|
|
- Fixed npm update button failing to apply update and restart.
|
|
|
|
### Breaking changes
|
|
|
|
- `ModPortalDownloadRequest` now requires an array of mod version pairs rather than a single mod name and version. [#801](https://github.com/clusterio/clusterio/issues/801)
|
|
- Version strings (e.g. `1.0`, `1.0.0`) now have stricter typing and validation, passing unchecked strings to functions will error. [#801](https://github.com/clusterio/clusterio/issues/801)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Danielv123](https://github.com/Danielv123)
|
|
[@Hornwitser](https://github.com/Hornwitser)
|
|
|
|
## Version 2.0.0-alpha.21
|
|
|
|
### Major Features
|
|
|
|
- Added import, export, and restore of user lists (bans / admins / whitelist / combined). [#717](https://github.com/clusterio/clusterio/issues/717)
|
|
- Added remote update for core packages and third party plugins. [#761](https://github.com/clusterio/clusterio/issues/761)
|
|
- Added config cloning on instance creation. [#720](https://github.com/clusterio/clusterio/issues/720)
|
|
|
|
### Features
|
|
|
|
- Added social links and instructions to error page. [#742](https://github.com/clusterio/clusterio/issues/742)
|
|
- Added button to download control config. [#740](https://github.com/clusterio/clusterio/issues/740)
|
|
- Added server action filter (aka "chat filter") to instance log in web ui. [#744](https://github.com/clusterio/clusterio/issues/744)
|
|
- Added `factorio.console_logging` to enable dedicated console log file for servers. [#748](https://github.com/clusterio/clusterio/issues/748)
|
|
- Added a recovery mode to host and controller accessible as an option on the run command. [#752](https://github.com/clusterio/clusterio/issues/752)
|
|
- Added username search to the users list. [#751](https://github.com/clusterio/clusterio/issues/751)
|
|
- Added log level filtering to the web ui. [#745](https://github.com/clusterio/clusterio/issues/745)
|
|
- Added pending update detection for host and controller. [#758](https://github.com/clusterio/clusterio/issues/758)
|
|
- Added restart required indicator for host and controller. [#758](https://github.com/clusterio/clusterio/issues/758)
|
|
- Added version mismatch indicator in host list. [#758](https://github.com/clusterio/clusterio/issues/758)
|
|
- Added host plugin list command to crl where previously only controller plugin list existed. [#760](https://github.com/clusterio/clusterio/issues/760)
|
|
- Added optional feature which allows new plugins to be installed remotely.
|
|
- Added bidirectional whitelist syncing. [#716](https://github.com/clusterio/clusterio/issues/716)
|
|
- Added support for v2 map exchange strings. [#700](https://github.com/clusterio/clusterio/issues/700)
|
|
|
|
### Fixes
|
|
|
|
- Fixed handling of zip files with multiple top-level folders. [#739](https://github.com/clusterio/clusterio/issues/739)
|
|
- Fixed looping between instances of ban and admin sync events. [#736](https://github.com/clusterio/clusterio/issues/736)
|
|
- Fixed quality being stripped from power armour equipment when moving between servers [#753](https://github.com/clusterio/clusterio/pull/753)
|
|
- Resolved webpack type export warnings [#750](https://github.com/clusterio/clusterio/pull/750)
|
|
- Reduce page load time on users list by enabling pagination. [#718](https://github.com/clusterio/clusterio/issues/718)
|
|
- Corrected stack trace and enabled source mapping during bootstrap. [#764](https://github.com/clusterio/clusterio/pull/764)
|
|
- Fixed map gen settings using the incorrect name for cliff settings following exchange string decode.
|
|
|
|
### Meta
|
|
|
|
- Silent testing is now truly silent. [#764](https://github.com/clusterio/clusterio/pull/764)
|
|
- Node 18 has reached end of life and is no longer maintained, we no longer guarantee support for it.
|
|
- CI testing now runs on node 20 & 22 as well as factorio 1.1.110 & 2.0.47.
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Danielv123](https://github.com/Danielv123)
|
|
[@Hornwitser](https://github.com/Hornwitser)
|
|
|
|
## Version 2.0.0-alpha.20
|
|
|
|
### Features
|
|
|
|
- Update subspace storage to 2.0 and space age. [#733](https://github.com/clusterio/clusterio/pull/733)
|
|
- A fresh install of Clusterio will include default mod packs. [#719](https://github.com/clusterio/clusterio/issues/719)
|
|
|
|
### Fixes
|
|
|
|
- Fix crash when leaving a server without a logistic requester point [#731](https://github.com/clusterio/clusterio/pull/731)
|
|
- Use floor instead of round to prevent "1 minute and 60 seconds" being shown [#723](https://github.com/clusterio/clusterio/issues/723)
|
|
- Fixed production statistics overwriting consumption statistics and vise versa [#734](https://github.com/clusterio/clusterio/pulls/734)
|
|
- Hot patch to add the updated 2.0.29 control.lua freeplay hash to know scenarios. [commit](https://github.com/clusterio/clusterio/commit/26269df7d4d8f39042c59653008bc8f034a4f3b4)
|
|
|
|
### Meta
|
|
|
|
- We have now introduced a new [decisions log](https://github.com/clusterio/clusterio/blob/master/docs/decisions.md) to aid tracking all the technical and design decisions we make and their reasons. [#714](https://github.com/clusterio/clusterio/pull/714)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Danielv123](https://github.com/Danielv123)
|
|
[@psihius](https://github.com/psihius)
|
|
|
|
## Version 2.0.0-alpha.19
|
|
|
|
### Major Features
|
|
|
|
- Added support for 2.0 builtin mods during mod pack creation. [#684](https://github.com/clusterio/clusterio/pull/684)
|
|
- Added basic 2.0 support to clusterio lua api and 1st party plugins. [#685](https://github.com/clusterio/clusterio/pull/685)
|
|
|
|
### Features
|
|
|
|
- Added Datastore and Datastore Provider classes to the library to support savable Maps. [#629](https://github.com/clusterio/clusterio/pull/629)
|
|
- Added clean script to speed up publishing and debugging of build steps. [#640](https://github.com/clusterio/clusterio/pull/640)
|
|
- Added sub-tile option on plugin page headers. [#642](https://github.com/clusterio/clusterio/pull/642)
|
|
- Greatly improved plugin and module template generation. [#641](https://github.com/clusterio/clusterio/pull/641)
|
|
- Duplicate host connections from the same address will kill the older host process. [#647](https://github.com/clusterio/clusterio/pull/647)
|
|
- Controller will refuse duplicate host connections from different addresses. [#647](https://github.com/clusterio/clusterio/pull/647)
|
|
- Monorepos are now supported for external plugins. [#654](https://github.com/clusterio/clusterio/pull/654)
|
|
- Changed default role selection to be a dropdown menu rather than id. [#664](https://github.com/clusterio/clusterio/pull/664)
|
|
- Added credential option to config entries to allow writing sensitive data that can't be read back remotely.
|
|
- Allow hidden and readonly graphical representations of config values. [#665](https://github.com/clusterio/clusterio/pull/665)
|
|
- Added locale exporting for all builtin mods, not just for the base mod. [#684](https://github.com/clusterio/clusterio/pull/684)
|
|
- Added option for silent testing which only shows the results, can be ran using `pnpm silent-test` [#680](https://github.com/clusterio/clusterio/pull/680)
|
|
- Added prompt for http port on installation of Clusterio. [#564](https://github.com/clusterio/clusterio/issues/564)
|
|
- Added drag and drop overlay to upload button on mods page and save table on instance page. [#591](https://github.com/clusterio/clusterio/issues/591)
|
|
- Automatically add plugins from ./plugins, ./external_plugins and installed npm modules. [#692](https://github.com/clusterio/clusterio/pull/692)
|
|
- `compat.table_to_json` and `compat.json_to_table` supported in all stages in pre 2.0 [#687](https://github.com/clusterio/clusterio/issues/687)
|
|
- Add "connect to server" button to web interface, launches with steam api. [#608](https://github.com/clusterio/clusterio/issues/608)
|
|
- Add space platform name mapping to space platform statistics. [#706](https://github.com/clusterio/clusterio/pull/706)
|
|
- Track space platform speed metric clusterio_statistics_exporter_platform_speed. [#706](https://github.com/clusterio/clusterio/pull/706)
|
|
- Track space platform weight metric clusterio_statistics_exporter_platform_weight. [#706](https://github.com/clusterio/clusterio/pull/706)
|
|
- Added bidirectional sync to admin and ban list. [#709](https://github.com/clusterio/clusterio/pull/709)
|
|
|
|
### Fixes
|
|
|
|
- Fixed IPC errors reporting undefined when no stack trace was present. [#624](https://github.com/clusterio/clusterio/pull/624)
|
|
- Fixed loopback routing for instances reporting the wrong error message. [#625](https://github.com/clusterio/clusterio/pull/625)
|
|
- Fixed docs linking to non-existing js files after ts migration. [#633](https://github.com/clusterio/clusterio/pull/633)
|
|
- Fixed CI workflows using deprecated version of nodejs. [#637](https://github.com/clusterio/clusterio/pull/637)
|
|
- Fixed linux only tests to run on windows. [#661](https://github.com/clusterio/clusterio/pull/661)
|
|
- Fixed log events being sent from a host over an invalid websocket. [#639](https://github.com/clusterio/clusterio/pull/639)
|
|
- Fixed spaces passed in arguments to the installer causing it to break. [#620](https://github.com/clusterio/clusterio/issues/620)
|
|
- Fixed numeric admin name breaking login. [#536](https://github.com/clusterio/clusterio/issues/536)
|
|
- Fixed issues with subscriptions which prevented them from working on instances or generic events. [#655](https://github.com/clusterio/clusterio/pull/655).
|
|
- Fixed unreliable datastore tests. [#662](https://github.com/clusterio/clusterio/pull/662).
|
|
- Fixed 2.0 version extraction from linux headless. downloaded during installation of clusterio. [#671](https://github.com/clusterio/clusterio/pull/671)
|
|
- Fixed invalid transient state during server start. [#676](https://github.com/clusterio/clusterio/issues/676)
|
|
- Fixed host user sync to instances after reconnecting to the. controller. [#678](https://github.com/clusterio/clusterio/pull/678)
|
|
- Fixed WebUI adding and displaying the wrong base mod version. [#684](https://github.com/clusterio/clusterio/pull/684)
|
|
- Fixed WebUI inconsistent pattern matching for factorio version. [#684](https://github.com/clusterio/clusterio/pull/684)
|
|
- Fixed `safeOutputFile` not being atomic because of a missing path separator. [#659](https://github.com/clusterio/clusterio/pull/659)
|
|
- Fixed built-in mods showing as missing in the WebUI. [#581](https://github.com/clusterio/clusterio/issues/581)
|
|
- Fixed dirty flag not being set when only the config of an instance is updated. [#675](https://github.com/clusterio/clusterio/pull/675)
|
|
- Fixed incorrect command being used to remove players from the whitelist. [#679](https://github.com/clusterio/clusterio/pull/679)
|
|
- Fixed CI following undocumented breaking change from downstream dependency. [#683](https://github.com/clusterio/clusterio/pull/683)
|
|
- Fixed instance crash when missing saves folder. [#698](https://github.com/clusterio/clusterio/issues/698)
|
|
- Fixed statistics exporter not working on newer versions of windows 11 due to wmic deprecation. [#707](https://github.com/clusterio/clusterio/issues/707)
|
|
|
|
### Changes
|
|
|
|
- Added prompt for the HTTP port to host the controller to the installer. [#619](https://github.com/clusterio/clusterio/pull/619)
|
|
- Added tests for sendEvent and sendRequest throwing the correct error messages. [#638](https://github.com/clusterio/clusterio/pull/638)
|
|
- Updated all web ui pages to use correct page header component. [#643](https://github.com/clusterio/clusterio/pull/643)
|
|
- Bumped Typescript version to 5.5 and implemented `${configDir}` in base configs for "outDir". [#648](https://github.com/clusterio/clusterio/pull/648).
|
|
- Added factorio.executable_path option which allows overriding the default path to the Factorio executable run.
|
|
- Added instance version display. [#573](https://github.com/clusterio/clusterio/pull/573)
|
|
- Added `factorio.shutdown_timeout` config to set the time the host will wait for a Factorio server to shut down befor killing it.
|
|
- Changed shutdown logic to prefer sending a /quit command via RCON instead of using diverging logic on Windows and Linux.
|
|
- Added `controller.factorio_username` and `controller.factorio_token` config to set Factorio credentials used for the whole cluster.
|
|
- Added `controller.share_factorio_credential_with_hosts` config to optionally require hosts to provide their own credentials.
|
|
- Added `host.factorio_username` and `host.factorio_token` config to set Factorio credentials used on a given host.
|
|
- Changed `instance.rcon_password` config to be a credential field that can not be read by the control interface.
|
|
- Changed `host.id` `instance.id` and `instance.assign_host` config to be hidden fields that can not be seen on the web ui.
|
|
- Updated display name and description of `controller.external_address` to avoid confusion. [#674](https://github.com/clusterio/clusterio/pull/674)
|
|
- Renamed config value `controller.external_address` to `controller.public_url`, migrations are applied automatically.
|
|
- String config values with whitelisted values (enum) now display as a selection dropdown. [#701](https://github.com/clusterio/clusterio/pull/701)
|
|
- Existing selection dropdowns now support search filtering. [#701](https://github.com/clusterio/clusterio/pull/701)
|
|
- Added surface label to clusterio_statistics_exporter_instance_force_flow_statistics. [#691](https://github.com/clusterio/clusterio/issues/691)
|
|
- Compat lib now supports versions from 0.17 to 2.0 [#711](https://github.com/clusterio/clusterio/pull/711)
|
|
- Add bidirectional sync to admin and ban list. [#709](https://github.com/clusterio/clusterio/pull/709)
|
|
|
|
### Breaking Changes
|
|
|
|
- Previously silent errors for controller.sendEvent now throw exceptions [#625](https://github.com/clusterio/clusterio/pull/625).
|
|
- @clusterio/controller export InstanceInfo has added factorioVersion parameter.
|
|
- Argument order for `Config.canAccess` changed to require an access mode passed as the second argument.
|
|
- Instances can now have `factorio.enable_script_commands` disabled which will throw an error when any script command is used over rcon. [#681](https://github.com/clusterio/clusterio/pull/681).
|
|
- User IDs are now case insensitive, duplicate users will be automatically merged with a backup created. [#682](https://github.com/clusterio/clusterio/pull/682)
|
|
- Plugins now require the keyword "clusterio-plugin" in package.json to be automatically loaded [#692](https://github.com/clusterio/clusterio/pull/692)
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@CCpersonguy](https://github.com/CCpersonguy)
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Danielv123](https://github.com/Danielv123)
|
|
[@Hornwitser](https://github.com/Hornwitser)
|
|
[@Laar](https://github.com/Laar)
|
|
[@psihius](https://github.com/psihius)
|
|
|
|
|
|
## Version 2.0.0-alpha.18
|
|
|
|
### Features
|
|
|
|
- Added logging of HTTP requests and errors on the controller [#556](https://github.com/clusterio/clusterio/pull/556).
|
|
- Added caching of data parsed from mods to speed up startup time [#606](https://github.com/clusterio/clusterio/pull/606).
|
|
- Added command to installer to generate the code for making a new plugin [#570](https://github.com/clusterio/clusterio/pull/570).
|
|
|
|
### Changes
|
|
|
|
- Fixed Inventory Sync reporting a negative database size [#598](https://github.com/clusterio/clusterio/pull/598).
|
|
- Fixed plugin events being invoked while a host connection was in an invalid state.
|
|
- Suppresed bogus warning about event listener leak in the browser's console [#600](https://github.com/clusterio/clusterio/pull/600).
|
|
- Fixed installer breaking on Windows after Node.js released a security fix [#614](https://github.com/clusterio/clusterio/pull/614).
|
|
- During a data export the mod settings in mod packs will now be corrected to the type of the settings prototype if the type is incorrect.
|
|
- Fixed missing color setting causing the Mod Pack view in the Web UI to show an error [#609](https://github.com/clusterio/clusterio/issues/609).
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Danielv123](https://github.com/Danielv123)
|
|
[@Hornwitser](https://github.com/Hornwitser)
|
|
|
|
|
|
## Version 2.0.0-alpha.17
|
|
|
|
### Features
|
|
|
|
- Made the host an instance is assigned to link to the host page for that host in the Web UI [#587](https://github.com/clusterio/clusterio/pull/587).
|
|
- Added pagination to the saves list.
|
|
|
|
### Changes
|
|
|
|
- Fixed an unhandled error in Subspace Storage crashing the host.
|
|
- Fixed an unhandled rejection in disconnect logic crashing the host.
|
|
- Fixed instance screen in Web UI not updating when an instance was reassigned.
|
|
- Fixed an error thrown in the rendering of one page in the Web UI causing all pages to become inaccessible.
|
|
- Fixed Web UI not showing instance saves when the permission to list and subscribe the saves is granted but the user is not a cluster admin.
|
|
- Similarly fixed Web UI not showing the mod pack create, delete, list and host revoke token actions if the user is not a cluster admin.
|
|
- Fixed Research Sync applying progress of a previous techology level to the level on the controller when it's the active research during instance startup.
|
|
- Fixed data export with a mod using shorthand notation for the default value of a color-setting causing the ModPack data to be set to invalid data.
|
|
- Fixed per user per instance player stats not being deleted when the instance it's for is deleted.
|
|
- Fixed mods setting the item prototype icons property to an object mapping instead of an array breaking the data export.
|
|
- Fixed a bad mod in the host's mods folder causing instance start to fail instead of the host re-downloading the mod.
|
|
|
|
### Breaking Changes
|
|
|
|
- Renamed the permission `core.instance.save.list.subscribe` to `core.instance.save.subscribe`.
|
|
|
|
Many thanks to the following for contributing to this release:
|
|
[@Cooldude2606](https://github.com/Cooldude2606)
|
|
[@Danielv123](https://github.com/Danielv123)
|
|
[@Hornwitser](https://github.com/Hornwitser)
|
|
|
|
|
|
## Version 2.0.0-alpha.16
|
|
|
|
### Changes
|
|
|
|
- Fixed message sequences not being renumbered when forwarded between links causing reconnects to send duplicated messages.
|
|
|
|
|
|
## Version 2.0.0-alpha.15
|
|
|
|
### Features
|
|
|
|
- Added support for `color-settings` Mod settings [#568](https://github.com/clusterio/clusterio/issues/568).
|
|
- Added `clusterio_controller_pending_requests` and `clusterio_host_pending_requests` metrics.
|
|
|
|
### Changes
|
|
|
|
- Fixed generated systemd file for clusteriohost not enabling source maps.
|
|
- Fixed ctl not exporting types used for adding commands to ctl plugins.
|
|
- Fixed controller only plugins throwing an error about missing a config field on startup out when added to hosts.
|
|
- Fixed installer incorrectly claiming the options --factorio-dir and --no-download-headless conflicts with each other.
|
|
- Fixed a memory leak on every request sent over the WebSocket.
|
|
- Fixed assertion error on closing or invalidating a link with messages forwarded from a virtual link.
|
|
- Fixed host hanging if stopped while an instance is in the process of creating a save during startup.
|
|
- Fixed `instance.auto_start` option.
|
|
- Fixed host log spammed with errors when plugins broadcast messages to instances with the plugin disabled.
|
|
- Fixed properties of object config fields not being possible to remove.
|
|
|
|
|
|
## Version 2.0.0-alpha.14
|
|
|
|
This release does not retain backwards compatibility with 2.0.0-alpha.13 meaning all parts of the cluster needs to updated at the same time.
|
|
See the [migration guide](https://github.com/clusterio/clusterio/blob/e0755cb4ee7bce0068c844ab6271da481a843e62/docs/migrating-from-2.0.0-alpha.13.md) for how to update.
|
|
|
|
### Major Features
|
|
|
|
- Added mod management. Mods can be uploaded to the controller and included in mod packs that can be assigned to instances and run.
|
|
- Added host port ranges which the instance ports will be automatically assigned a port from if factorio.game_port is not set.
|
|
- Added system info such as CPU model, hostname and kernel along with basic metrics for CPU usage, memory usage and disk usage for the controller and hosts.
|
|
- Added ability to remotely view and modify the configuration of hosts.
|
|
|
|
### Features
|
|
|
|
- Added logging of Clusterio version on startup
|
|
- Added `clusterio_controller_log_bytes` metric counting the size of the log files on the controller.
|
|
- Added warning logged when plugins on a connecting host does not match the ones installed on the controller.
|
|
- Added ability to revoke user tokens.
|
|
- Added restart required indicator to config fields in the Web UI.
|
|
- Added ability to revoke host tokens.
|
|
- Added support for plugins to run in the context of a host.
|
|
- Added more feedback when the web UI and or its plugins fails to load.
|
|
- Added autosaving of data held in memory on the controller such as configs, instances, users, mods to prevent large data loss on crashing.
|
|
- Added `system_info` metric with kernel, instruction set, CPU Model, hostname and Node.js version of the controller.
|
|
- Added `clusterio_host_system_info` metric with kernel, instruction set, CPU Model, hostname and Node.js version of hosts.
|
|
- Added `system_cpu_seconds_total`, `system_cpu_idle_seconds_total`, `system_memory_capacity_bytes`, `system_memory_available_bytes`, `system_disk_capacity_bytes`, `system_disk_available_bytes` metrics for CPU, memory and disk usage on the controller.
|
|
- Added `clusterio_host_system_cpu_seconds_total`, `clusterio_host_system_cpu_idle_seconds_total`, `clusterio_host_system_memory_capacity_bytes`, `clusterio_host_system_memory_available_bytes`, `clusterio_host_system_disk_capacity_bytes`, `clusterio_host_system_disk_available_bytes` metrics for CPU, memory and disk usage on hosts.
|
|
- Added support for reading the client's IP address from the `X-Forwarded-For` header when the source address is in the `controller.trusted_proxies` config option.
|
|
- Added field showing the IP address a host is connecting from.
|
|
- Added per player statistic tracking when they were first seen joining a particular server.
|
|
- Added ability to remotely restart and/or stop the controller and hosts.
|
|
|
|
### Changes
|
|
|
|
- Fixed filenames with extensions that are invalid on Windows such as "con.zip" not being treated as invalid.
|
|
- Fixed generate host token modal not using a random id when the optional id field is unset.
|
|
- Exported Factorio data is now tied to mod packs instead of being per cluster.
|
|
- Fixed export failing if a mod uses a different root folder mod_version in its zip file.
|
|
- Fixed sorting of user last seen column in the Web UI.
|
|
- The list users permission is now granted by default to players.
|
|
- Fixed incorrect handling of hosts and instance with an id of 0 causing them to not update properly.
|
|
- Fixed unable to unassign instances in the Web UI.
|
|
- Fixed host crashing if the Factorio server is not marked executable.
|
|
- Fixed errors logged from instance not being attributed to the instance in certain situations.
|
|
- Hosts no longer print messages from instances into their console.
|
|
- Clusterio now treat unhandled Node.js errors and promise rejections as fatal and exit immediately.
|
|
- Fixed a potential for data loss after a hard system crash due to fsync not being called on files written.
|
|
- Fixed Factorio server crashing in the research_sync plugin when a mod enables a previously disabled technology and a player attempts to research it.
|
|
- Fixed Factorio server crashing when the game starts with tick_paused = true
|
|
- Removed migration of alpha 10's single file log format.
|
|
- Log errors linking mods on Windows instead of preventing startup.
|
|
- Added locale support for modules patched into to the game save.
|
|
- Added support for defining a module_exports.lua file for modules patched into the game save.
|
|
- Fixed controller logs being split on server's local time day boundary instead of UTC day boundary.
|
|
- Fixed Unicode BOM in mod locale files breaking instance data export.
|
|
- Added a warning to the server-setting.json that is automatically written to instance folders stating changes will be overwritten.
|
|
- Changed save patching to use a `.tmp.zip` extension for the temporary file created instead of `zip.tmp`.
|
|
- Fixed Inventory Sync wiping the player's inventory when logging out while in the Space Exploration remote view mode.
|
|
- Fixed the public /api/plugins endponit leaking filesystem paths on the controller.
|
|
- Refactored list subscriptions in the Web UI to cache and only fetch updated entries when navigating to previously seen list.
|
|
- Added caching of save lists on the controller, enabling the saves of instances on offline hosts to still be seen.
|
|
- Hosts in the assign instance dropdown is now sorted by name.
|
|
- Added `non_blocking_saving` as one of the default settings added to `factorio.settings` on new instances.
|
|
|
|
### Breaking Changes
|
|
|
|
- Renamed usage of the terms master and slave to controller and host in all places they occur.
|
|
- Mods located in `sharedMods` are no longer copied to instances' mods folder.
|
|
- The instances' mods folder is now managed through mod packs, mods not part of the mod pack will be automatically deleted.
|
|
- Removed ability to import sub packages like `@clusterio/lib/link` from.
|
|
- Replaced `clusterio_controller_http_hits_total` metric with `clusterio_controller_http_endpoint_duration_seconds`.
|
|
- Replaced `clusterio_controller_last_query_log_duration_seconds` metric with `clusterio_controller_query_log_duration_seconds` summary.
|
|
- Reworked the network protocol to be simpler to work and reason with.
|
|
- Bumped minimum supported Node.js version to v18.
|
|
- Ported the codebase to TypeScript
|
|
- Changed the config format stored on disk to be much simpler.
|
|
|
|
### Contributors
|
|
|
|
Many thanks to the following for contributing code in this release:
|
|
[@Hornwitser](https://github.com/Hornwitser) [@Luciole0x](https://github.com/Luciole0x) [@Cooldude2606](https://github.com/Cooldude2606) [@Danielv123](https://github.com/Danielv123) [@Reavershark](https://github.com/Reavershark) [@Laar](https://github.com/Laar) [@rstrom1763](https://github.com/rstrom1763)
|
|
|
|
## Version 2.0.0
|
|
|
|
### Major Features
|
|
|
|
- Replaced Hotpatch with save patching.
|
|
Removed the Hotpatch scenario and the depency on it for getting code into the game.
|
|
Added a save patcher than runs before starting up Factorio that patches in lua modules based on the event_loader lib into the savegame.
|
|
Regular freeplay games can now be used with Clusterio and will be compatible without having to convert them to Hotpatch.
|
|
- Daemonized hosts.
|
|
Hosts now have the ability to run multiple Factorio instances, starting and stopping them individually.
|
|
To manage this the local command line interface has been replaced with a remote interface on the controller that can be accessed through the clusterioctl cli tool.
|
|
- Rewritten the communication between hosts and the controller from scratch.
|
|
The new system is based on a WebSocket connection between the hosts and the controller and provides efficient validated bi-directonal communication.
|
|
- Rewritten the plugin system from scratch.
|
|
Plugins now inherit from a base class and use the same WebSocket connection Clusterio uses to communicate.
|
|
- New configuration system with support for initializing configs when needed, modifying config entries using built-in commands, and updating instance configuration remotely.
|
|
- Packaged and uploaded to npm again, greatly simplifying distribution and installation of both Clusterio and plugins.
|
|
- Added centralized logging for the cluster.
|
|
All logs from both Clusterio and Factorio is stored in a shared log which can be inspected and queried.
|
|
- Added remote save management with the ability to list, create, rename, copy, upload, download, transfer, delete and load saves for instances.
|
|
|
|
### Features
|
|
|
|
- Added export of pollution statitics.
|
|
- Reconnection logic that esures no data is dropped talking to the controller provided the session can be resumed.
|
|
- Added support for having multiple Factorio installs and selecting which version to use on a per instance basis.
|
|
- Added config to specify which path the controller interface is accessed under, allowing it to be proxied behind web-server.
|
|
- Added WebSocket usage statistics.
|
|
- Added commands sent statistic.
|
|
- Added Factorio server CPU and memory usage statistic.
|
|
- Added Factorio autosave size statistic.
|
|
- Added support for extracting locale and item icons from Factorio and mods.
|
|
- Added integrated user management for controlling access and storing per player data.
|
|
- Added synchronization of in-game adminlist, banlist and whitelist to Clusterio core.
|
|
Previously this was handled by the playerManager plugin.
|
|
- Added stripping of long paths in the Factorio server log.
|
|
- Added option to configure maximum number of commands to send in parallel.
|
|
- Added option to auto start instances on host startup.
|
|
- Added metric mapping of host and instance ids to their names, allowing them to be displayed by name in queries that join with the mapping.
|
|
- Added option to configure timeout for exported Prometheus metrics.
|
|
- Added option to set address to bind HTTP(S) port to.
|
|
- Added an overview of the installed plugins to the web interface.
|
|
- Added clusterioctl command to list plugins on the controller.
|
|
- Added Player Auth plugin for logging in to the web interface by proving the ability to log in to a server as a given user.
|
|
- Added Node.js based installer to simplify setting up a cluster.
|
|
|
|
### Changes
|
|
|
|
- Added error handling during controller startup.
|
|
- Factorio game and rcon port now defaults to a random port above 49151.
|
|
- Removed unimplemented mods update command.
|
|
- Fixed rcon password being generated with Math.random().
|
|
- Added plugins directory to the views path.
|
|
This makes it possible for plugins to render their own ejs views or pages in their own folders by using paths of the format "pluginName/path/to/page-or-view".
|
|
- Replaced the per instance copy of the shared Factorio mods with symlinks.
|
|
On Windows hard links are used instead due to the privileges requirements of symlinks.
|
|
- Changed the per instance scenario folder to be linked instead of copied on instance creation.
|
|
- Instance id is no longer derived from the rcon password, instead it's generated upon instance creation and stored in the instance config.
|
|
- The game port, RCON port and RCON password instance config entries are are now null by default, indicating that a random one will be generated every time the instance is started.
|
|
- Removed the broken client download command as this would download pre-releases.
|
|
- Moved the item database and HTTP definitions for /api/place, /api/remove, /api/inventory, /api/inventoryAsObject and the web interface view for the storage page into the clusterioMod plugin.
|
|
If you disable this plugin then these things will not be available.
|
|
- Removed undocumented --port and --rcon-port arguments to client.
|
|
- Removed undocumented FACTORIOPORT and RCONPORT enviroment variable handling in client.
|
|
- Removed redundant call to /api/slaves in globalChat plugin.
|
|
- Removed broken serverManager plugin.
|
|
- Removed factorio_version from config.
|
|
The version installed is auto detected and used instead.
|
|
- Removed the playerManager specific command CLI tools/delete_player.js.
|
|
- Creating an instance, assigning it to a host, creating a save for an instance and starting an instance is now four separate commands.
|
|
- Removed oddball limits to hosts.json size.
|
|
- Moved host specific and instance specific configuration into their own configuration files.
|
|
- Removed unused binary option from plugin config.
|
|
- Removed info and shout command from globalChat plugin - Removed mirrorAllChat and enableCrossServerShout configuration options for globalChat plugin.
|
|
- Removed UPSdisplay plugin.
|
|
UPS statistics is exported by the statistics exporter plugin.
|
|
- Controller now defaults to hosting on https on port 8443.
|
|
- Renamed client to slave.
|
|
- Removed rotation of factorio-current.log files.
|
|
|
|
### Breaking Changes
|
|
|
|
- Removed lib/authenticate.
|
|
Breaks playerManager.
|
|
- The masterIP and masterPort config entries has been merged into masterURL.
|
|
Breaks discordChat, playerManager, serverSelect, trainTeleports and clusterioModel.
|
|
- Removed config management from the command line and the server manager.
|
|
- Moved ejs templates into views folder and changed their extension to .ejs.
|
|
Breaks playerManager.
|
|
- Mods are no longer copied from the per instance instanceMods directory.
|
|
If you need per instance mods you can now place them directly in the mods directory inside the instance folder.
|
|
- Hotpatch scenarios and code loading is no longer compatible with Clusterio.
|
|
Breaks playerManager, serverSelect, and tranTeleports.
|
|
- Removed getLua and getCommand from lib/clusterTools.
|
|
If you need to run more than the most trivial of code in commands use the save patcher and add in a remote interface.
|
|
- Removed mod uploading and distributing from the HTTP interface.
|
|
Breaks the old unmaintained and no longer needed factorioClusterioClient.
|
|
- Removed the remoteCommands plugin and the old runCommand interface.
|
|
Breaks playerManager and external tools sending commands.
|
|
- Removed broken serverManager plugin.
|
|
- Removed fields info, time, rconPort, rconPassword, serverPort, unique, mods, instanceName, playerCount, mac, and meta from the hosts in the host database.
|
|
- Removed getInstanceName and lib/clusterTools.
|
|
Breaks playerManager, and discordChat.
|
|
- Removed the /api/rconPasswords, and /api/slaves endpoints.
|
|
Breaks web interface, trainTeleports, and discordChat.
|
|
- Removed the /api/getSlaveMeta and /api/editSlaveMeta endpoints.
|
|
Breaks researchSync, and UPSdisplay.
|
|
- Removed the hello event from the socket connection handshake.
|
|
Breaks playerManager, trainTeleports, serverSelect, and discordChat
|
|
- Changed the format of database/hosts.json.
|
|
- Removed the output file subscription system.
|
|
Breaks inventoryImports, playerManager, trainTeleports, serverSelect and researchSync.
|
|
- Removed the factorioOutput hook from instance plugins.
|
|
The onOutput hook provides parsed output instead.
|
|
- Removed the onLoadFinish hook from master plugins.
|
|
- Moved plugins from the sharedPlugins directory to plugins directory.
|
|
- Implemented a new plugin system that replaces the old.
|
|
Breaks all plugins.
|
|
- Removed express metric http_request_duration_milliseconds metric.
|
|
- Removed socket.io metrics socket_io_connected, socket_io_connect_total, socket_io_disconnect_total, socket_io_events_received_total, socket_io_events_sent_total, socket_io_recieve_bytes, and socket_io_transmit_bytes,
|
|
- Removed clusterio_connected_instaces_gauge and added clusterio_master_connected_clients_count in its place.
|
|
- Renamed clusterio_player_count_gauge to clusterio_statistics_exporter_instance_player_count
|
|
- Removed clusterio_UPS_gauge and added clusterio_statistics_exporter_instance_game_ticks_total in its place.
|
|
- Renamed clusterio_endpoint_hit_gauge to clusterio_http_enpoint_hits_total
|
|
- Renamed clusterio_statistics_gauge to clusterio_statistics_exporter_instance_force_flows
|
|
- Renamed clusterio_nn_dole_gauge to clusterio_subspace_storage_nn_dole_gauge.
|
|
- Renamed clusterio_dole_factor_gauge to clusterio_subspace_storage_dole_factor_gauge.
|
|
- Renamed clusterio_import_gauge to clusterio_subspace_storage_import_total.
|
|
- Renamed clusterio_export_gauge to clusterio_subspace_storage_export_total.
|
|
- Renamed clusterio_master_inventory_gauge to clusterio_subspace_storage_master_inventory.
|
|
- Removed clusterioMod plugin specific config options logItemTransfers, disableFairItemDistribution useNeuralNetDoleDivider, autosaveInterval, and disableImportsOfEverythingExceptElectricity from the master config.
|
|
- Removed msBetweenCommands config option.
|
|
The RCON is instead limited to 5 concurrent commands.
|
|
- Removed allowRemoteCommandExecution config option.
|
|
Remote commands are always allowed with the move to controller managing hosts/instances.
|
|
- Removed `--databaseDirectory`, `--controllerPort`, and `--sslPort` command line arguments from the controller.
|
|
- Implemented a new config system that replaces the old.
|
|
Breaks all plugins.
|
|
- Removed usage of socket.io entirely in favor of a plain WebSocket connection.
|
|
- Renamed clusterioMod plugin to subspace_storage.
|
|
- Controller no longer creates secret-api-token.txt.
|
|
- Removed automatic creation of self-signed TLS certificate.
|
|
- Node.js versions below 12 are no longer supported.
|
|
|
|
## Version 1.2.4
|
|
|
|
- Removed broken remote combinator signaling.
|
|
- Fixed research sync endlessly updating already researched technologies
|
|
- Removed obsolete item/fluid statistics from clusterioMod
|
|
- Removed per mod upload logging when config.uploadModsToMaster disabled
|
|
- Fixed bcrypt failing to install on windows due to the new version not having Windows binaries.
|
|
|
|
|
|
## Version 1.2.3
|
|
|
|
- Disabled uploading mods to the master server by default as this is mostly just a waste of bandwidth with the mod portal being integrated into the game now.
|
|
- Fixed researchSync breaking with heavily modded games due to the tech tree exceeding the default 100kb limit on JSON payloads.
|
|
- Fixed the command inventoryImport sends referencing player instead of character, and trying to count the non-existant quick bar slots.
|
|
- Fixed inventoryImport never receiving the script output after the default mode for reading script output changed to tail mode.
|
|
- Fixed desync caused by the mods and loaded mods arrays in Hotpatch getting out of sync when plugins update their scenario mod code.
|
|
To fix existing games you will need copy lib/scenarios/Hotpatch/hotpatch/mod-tools.lua over the existing mod-tools.lua in the save's hotpatch folder.
|
|
- Updated the Windows install instructions.
|
|
|
|
|
|
## Version 1.2.2
|
|
|
|
- Fixed possible crash with modded technologies named the same as a built-in Object prototype property in researchSync.
|
|
- Fixed progress of a current infinite tech carrying over to the next one when researching it and another node completes it in researchSync.
|
|
- Fixed progress of a previous infinite tech from another node being applied to the current one in researchSync.
|
|
- Fixed crash in researchSync when modded technologies are present only on some nodes.
|
|
- Fixed install failing due to bcrypt version less than 3 not being supported on node v10.
|
|
- Reordered install instructions to avoid problem with npm creating files owned by root in the home directory.
|
|
- Swapped curl out with wget in the install instructions as the latter comes pre-installed on Ubuntu.
|
|
|
|
### Breaking Changes
|
|
|
|
- Node.js versions below 10 are no longer supported.
|
|
|
|
|
|
## Version 1.2.1
|
|
|
|
- Updated node-factorio-api to v0.3.8 to fix mod downloads randomly breaking ([#229][#229]).
|
|
- Fixed SIGINT being sent twice to Factorio server when interrupted by CTRL+C on Linux ([#217][#217]).
|
|
- Fixed package.json incorrectly reporting the license as ISC.
|
|
|
|
[#217]: https://github.com/clusterio/clusterio/issues/217
|
|
[#229]: https://github.com/clusterio/clusterio/issues/229
|
|
|
|
### Breaking Changes
|
|
|
|
- Added authentication to the socket.io server running on the master.
|