Engines: stop treating Ironcore as the default - #5
Open
Coldensjo wants to merge 2 commits into
Open
Conversation
Ironcore is one of seven supported engines, but the repo still read as though it were the one MONx is for — and in two places that was not just prose. The fallbacks: - `default_profile()` returned Ironcore. It now returns TFS, and the comment says why: TFS is the shape the other XML engines are variants of and the most conservative of them, so a wrong guess under-declares and rides along as unknown attributes rather than dropping data. - `detection()` was worse than a named fallback. `detect` sorts stably, so when nothing scored, `best` was whichever profile sat first in `ALL` — table order dressed as evidence, which is what made every unrecognisable corpus come back "Ironcore". It now names the default profile explicitly when the top score is zero; `confident: false` already said it was a guess. `ALL` and the frontend's `ENGINES` are reordered to match, and neither order means anything any more. - The frontend's `engineInfo()` fell back to Ironcore independently. Now TFS, pointing at the backend as the reason the two must agree. The UI: - The `✦ (Ironcore)` marker on boolean and numeric flags is gone. It was wrong on `isboss`, which TFS and TVP both read, and redundant everywhere else — the section already filters flags by `engine.boolFlags`, so a flag that renders is one this engine has. The `ironcore` row field goes with it; the `MAGIC_EFFECTS` one stays, since ids 81-104 really are only in Ironcore's table. - Pacifist & Events rendered the two Ironcore pacifist strings on every engine. That half now gates on `engine.pacifist` and the labels drop the "(Ironcore)" they no longer need to carry. The prose: AGENTS.md no longer says Ironcore is the default profile, ENGINES.md's table no longer calls it "The default" (and its comparison tables lead with TFS, cells moved with the headers), and the manifest description, issue template, fixture README and run-monx skill are engine-neutral. Statements about what Ironcore actually does are left alone — those are documentation of a supported engine, not framing. Gates: bun run i18n / build / catalog / commands, bun test (161 pass), cargo check, and probe_monster --mutate --lint --crud against all seven engine fixtures, each still detecting itself. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpsR8Uq4Cuu53LoqEqGLPA
The last Ironcore string in the repo was `com.ironcore.monx`, the Tauri bundle identifier. This is not cosmetic for anyone who already has MONx installed, and the release notes need to say so: - The NSIS installer keys its upgrade on the identifier, so an existing install is not upgraded in place — the new version installs alongside it and the old one wants uninstalling by hand. - The WebView2 (and, on Linux, the WebKitGTK) user-data folder is keyed on it too, and every MONx setting lives in that profile's localStorage. Recent and saved workspaces, hotkey overrides, editor tab preferences, ignored lint codes, loot presets, hidden monsters, custom effects and the patch-notes cut-off will all read as unset on first launch after upgrading. Nothing on disk is touched — no monster, item or client file is involved — so the only loss is the app's own preferences. No migration shim: reading the previous profile's localStorage means going into the webview's storage backend from Rust, which is a lot of machinery for a one-time reset of preferences a user can restore in a minute. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpsR8Uq4Cuu53LoqEqGLPA
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.
Ironcore is one of seven supported engines, but the repo still read as
though it were the one MONx is for — and in two places that was not just
prose.
The fallbacks:
default_profile()returned Ironcore. It now returns TFS, and thecomment says why: TFS is the shape the other XML engines are variants
of and the most conservative of them, so a wrong guess under-declares
and rides along as unknown attributes rather than dropping data.
detection()was worse than a named fallback.detectsorts stably,so when nothing scored,
bestwas whichever profile sat first inALL— table order dressed as evidence, which is what made everyunrecognisable corpus come back "Ironcore". It now names the default
profile explicitly when the top score is zero;
confident: falsealready said it was a guess.
ALLand the frontend'sENGINESarereordered to match, and neither order means anything any more.
engineInfo()fell back to Ironcore independently. NowTFS, pointing at the backend as the reason the two must agree.
The UI:
✦ (Ironcore)marker on boolean and numeric flags is gone. It waswrong on
isboss, which TFS and TVP both read, and redundanteverywhere else — the section already filters flags by
engine.boolFlags, so a flag that renders is one this engine has. Theironcorerow field goes with it; theMAGIC_EFFECTSone stays,since ids 81-104 really are only in Ironcore's table.
engine. That half now gates on
engine.pacifistand the labels dropthe "(Ironcore)" they no longer need to carry.
The prose: AGENTS.md no longer says Ironcore is the default profile,
ENGINES.md's table no longer calls it "The default" (and its comparison
tables lead with TFS, cells moved with the headers), and the manifest
description, issue template, fixture README and run-monx skill are
engine-neutral. Statements about what Ironcore actually does are left
alone — those are documentation of a supported engine, not framing.
Gates: bun run i18n / build / catalog / commands, bun test (161 pass),
cargo check, and probe_monster --mutate --lint --crud against all seven
engine fixtures, each still detecting itself.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01WpsR8Uq4Cuu53LoqEqGLPA