Repository navigation
Update for clusterio master (Vite, error classes, async factories) - #514
Merged
Cooldude2606 merged 4 commits intoOct 29, 2026
Merged
Conversation
clusterio#1130 replaced webpack with Vite and the web interface rejects webpack-built plugin bundles. Each plugin now builds with clusterioPlugin() from @clusterio/web_ui/vite.mjs, and the webpack configs and dependencies are gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
clusterio#1129 replaced DatastoreProvider.bootstrap with async factories and Instance now takes its FactorioServer in the constructor, so the instance tests pass their server stub there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
clusterio#999 removed RequestError. Handlers now throw NotFoundError, ValidationError, ConflictError or UnavailableError, and exp_auto_restart treats any ClientError from the host as a final refusal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
clusterio#1140 no longer reports plugins without a web entrypoint as failing to load, so the empty web modules from 99d47cf can go. The browser tsconfig of these plugins now checks index.ts instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cooldude2606
approved these changes
Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ExpCluster main stopped building against clusterio master after the merges on 27 and 28 October. This brings it back in line. Tested against clusterio master 2fb5300e (Merge pull request #1140).
One commit per clusterio change:
clusterioPlugin()from@clusterio/web_ui/vite.mjs. Thewebpack.config.cjsfiles and the webpack, webpack-cli and webpack-merge dev dependencies are gone,viteand@clusterio/web_uiare dev dependencies everywhere, and.npmignorelistsvite.config.js. The web interface rejects webpack-built bundles, and the catalog no longer has webpack, sopnpm installfailed before this.SubscribableDatastore.fromProviderbecauseDatastoreProvider.bootstrapwas removed. The instance tests pass their server stub to theInstanceconstructor, which now takes theFactorioServerin place of the Factorio directory.webEntrypointandweb/index.tsx. They keep the Vite build, because the browser still loadsindex.tsfrom it to register messages and permissions, and their browser tsconfig now checksindex.ts.RequestErroris gone. Missing records throwNotFoundError, bad inputValidationError, duplicatesConflictError, and seeding without exp_roles/exp_groups loaded throwsUnavailableError. exp_auto_restart treats anyClientErrorfrom the host as a final refusal, which matches whatRequestErrormeant before (the host's restart refusals areConflictErrors now).The hook refactor (#1020), the player_sync rename (#1072), plugin migrations (#1073), the plugin browser (#1010) and the findUnusedName removal (#1128) needed nothing. Every entrypoint already exports a function and nothing references inventory_sync, LockFile or findUnusedName.
Checks run locally:
pnpm installand the node.yml recipe in a fresh clone (install,pnpm --filter "@expcluster/*" run test, and the per-packagetsc --buildreference loop from an empty dist) all pass, as does Lua Lint with emmylua_check 0.24.0 (0 findings).Smoke test: a standalone controller and host from this branch, one instance on Factorio 2.1.24 with all twelve exp_* plugins and the built-in plugins disabled. The save gets patched with the exp modules and registers 104 commands. The plugins page lists every plugin without a load error. I clicked through Roles (the seed button creates 15 roles and 5 groups, and roles sync to the game), a role view, Permission Groups and a group view (its defines load from
staticRootafter a mod pack export), Reports (adding to the watch list works, and adding the same player again shows the ConflictError message), Scenario Features, Statistics, the user page extensions and the Discord login form. Nothing in the cluster log at warn or above besides the missing Factorio credentials.The browser console logs one
MaxListenersExceededWarningper page. Link caps the connector at 20 listeners, and each module-levelMapSubscriberadds a connect and a close listener, so ExpCluster's eight subscribers on top of core's go over. That limit belongs in clusterio, not here.🤖 Generated with Claude Code