The Ledger

September 13, 2026

Neo Angband: ModForge v1.1.0

Added

  • The real Neo Angband SDK docs are readable inside ModForge. A build-time sync embeds the complete front-door overview, tutorial index and seven-tutorial beginner path, together with the complete requirements, authoring, plugin and compatibility references. The reader uses the workshop’s line-numbered Markdown view with find, while leaving the larger engine lifecycle, design, reach and region-input records out of the shipped plugin.
  • The documentation has real doors. The title screen, title bar, Guide cards, About screen and Start a plugin.js flow now open the relevant tutorial or API reference instead of naming a path that cannot be opened in the game.

Changed

  • The workshop is laid out to one type scale, one gutter and one reading measure. Nine named sizes replace seventeen ad hoc ones, the titlebar, breadcrumb, banner, content and status bar all indent by the same amount so the window has a single left edge, and a screen that is one column stops at a reading width instead of stretching a text box or a picker across the whole display. Two colour tokens were also re-measured: the faintest ink now reads between 4.8 and 6.3 against the surfaces it sits on rather than 3.0 to 3.7, and the hairline that draws every card is visible instead of nearly invisible.

  • A card is built in one place. The guide screen and the mod list each hand-rolled the same section, head and body markup, so a card was three slightly different things depending on which screen it was on. Empty states also settle on two glyphs with two meanings - nothing here yet, and nothing found - rather than three glyphs with two meanings.

  • Every empty state says what happened and offers the way on from it. An unmatched filter offers to clear itself, a mod list with nothing in it offers to name one, a mod with no changes offers the content-kind picker, a screen reached with no mod open offers the mod list, a record part with nothing in it offers the level above, and the Test panel’s browser offers to forge the mod so that what it adds turns up in the list. The one action that already existed no longer needs a negative margin to sit inside the panel it belongs to.

  • A control that is off says why on the control. Each card of Test-panel commands carries the reason it is dead, which is one of two reasons with two different next actions, rather than leaving the reader to scroll back to the paragraph at the top. Delete on the file screen says which files it can and cannot take.

Fixed

  • The workshop no longer claims it cannot start code, carry assets, or round-trip sections. Its Guide and supporting copy now say what it actually does: create a working plugin.js entry template, keep imported binary bytes, and model sections through the draft and review. The file-model comment now matches that behavior.

  • Two cards that could not be opened can be opened. The Test panel’s “What you know” shipped collapsed and had nothing wired to unfold it, so “Learn every item” and “Learn every creature” could never reach the screen at all, and “Before anything works” folds itself once the session has been spent and could not be re-read afterwards.

  • A file that has stopped existing no longer dead-ends the editor. Opening a file that was then deleted elsewhere left every control off and the previous text on screen; it now says so and offers the file list.

  • The banner no longer swallows the empty half of a short screen. The frame declared four grid rows for five children, so the leftover height went to the compatibility banner rather than to the content, and an install with the banner hidden opened the same gap above every screen.

  • The launch screen and the exit screen are set in the workshop’s own typeface. Both sit beside the workshop’s frame rather than inside it, so they had been inheriting the game page’s monospace face, size and ink.

  • The record editor’s side columns behave like side columns. They were missing the classes that give every other screen’s rail and aside their edge, their ground and their own scroll box, so the peer table ran off the side of the window rather than scrolling inside its pane. The review screen’s aside had the same gap.

  • A card head that cannot fold anything no longer looks like a button. Cards built without anything to toggle - the manifest, what a mod contains, the derived values - carried a caret and lit up under the mouse, then did nothing when pressed.

  • A quiet button looks like a button. “Retune many” and “Start from nothing instead” had no border at all beside two bordered controls, so both read as captions rather than as offers.

  • Disabled fields look disabled. Only buttons were dimmed, so the Test panel’s number boxes looked live while refusing every keystroke.

  • The file editor shows where the caret is. It suppresses its own outline because the text it holds is transparent, which left it the one control in the workshop with no keyboard focus state; the frame around it now takes the ring.

  • Bulk retuning now finds numeric fields nested inside record objects. Item qualities expose their live alloc.common, info.cost, and info.rating fields instead of ending at “Nothing to retune here”. Array positions remain excluded because the same index need not represent the same row across records.

  • The in-app README now has a backed, high-contrast card. The launch panel and the persistent About screen use the workshop’s existing surface, edge and ink tokens instead of placing prose directly over the dark scrim.

  • The retune flow now links directly back to the content-kind picker. Its breadcrumb no longer forces a trip through mod details to switch kinds, and a genuinely empty retune offers the same next action with useful alternatives.

  • The workshop now consumes the SDK’s field/vocabulary advisory rule. The SDK checker runs over the composed draft beside the install-time pack checker, replacing the workshop’s duplicate local implementation.