Skip to content

Engines: stop treating Ironcore as the default - #5

Open
Coldensjo wants to merge 2 commits into
mainfrom
claude/ironcore-references-cleanup-87byvv
Open

Engines: stop treating Ironcore as the default#5
Coldensjo wants to merge 2 commits into
mainfrom
claude/ironcore-references-cleanup-87byvv

Conversation

@Coldensjo

Copy link
Copy Markdown
Owner

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

claude added 2 commits August 20, 2026 16:22
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants