The Ledger

September 30, 2026

Neo Angband v1.20.0

Added

  • VisibleModding-API Mods can check an item’s flags the way the game does, counting the flags its curses grant, with objHasFlag and objCanTakeoff. (#283)
  • VisibleModding-API Mod effects can raise and lower experience the way the game’s own effects do. playerExpGain, playerExpLose and the rest of the experience helpers are now exported, and effectExpDeps(ctx, env) gives a handler what those calls need, so a mod can drain experience without making the loss permanent.
  • VisibleModding-API Mods can add item classes that Angband 4.2 doesn’t have. A tval.json names each class, and the mod’s object_base and objects can then use it. Objects of a new class are called by their own names and can’t be worn or used until the mod says otherwise, and they load correctly from a save even when a different set of mods numbers the class differently.
  • VisibleModding-API Mods can give restored monsters and flavours their old tiles, and tint a tile they share with their replacement. restoredMonsterArt and restoredFlavorArt join restoredItemArt in the manifest, and a flavour can use drawAs to draw another flavour’s tile. A hue rotates the tile’s colours in Linoleum tile packs; Angband’s own tile sheets draw it unchanged.
  • VisibleModding-APISave-Compat A mod section can lock its choice at character creation. A section that declares "lockedAtBirth": true keeps the on/off state it had when the character was made, whatever the toggle says later, and the mod manager marks it new characters only. In a save made before this change, or one with no record for a section, the section stays off unless its default is on. Before loading a character that needs a locked section from a disabled mod, the game warns the player.
  • VisibleModding-APISave-Compat Mods can set up a new character once, when it is created. A plugin’s hooks can include newCharacter(state, registries), which runs after a new character is built and never when a save loads. Anything it sets, including ignore settings, is saved with that character as ordinary state.
  • VisibleModding-API A mod’s own item class can join the ignore menus. A tval.json record with "ignoreMenu": "<label>" lists the class in item ignoring setup after Angband’s own categories and offers kind ignoring for its objects in the k menu.
  • VisibleModding-API Restored flavour art no longer draws over another mod’s flavour when the section that adds it is off.
  • VisibleModding-API Mod plugins can type their host context from Core. ModPluginContext and the panel, network, birth, input, prompt, intent, display and event types it uses are exported from @rpgm-tools/neo-angband-core. The web host uses the same types, so a mod’s types match the objects it receives.
  • VisibleUI A bug button and an idea button sit in the corner of the dungeon view. Either one opens a short form and sends it on as a filled-in GitHub issue or a Discord forum post. A bug report can carry the game’s version, where you play and your mods once you tick the box, copy a screenshot or your character dump, and look for similar reports first. After an update, the game says when an issue you reported is marked fixed. The x beside the buttons hides them, and Subwindow setup brings them back (#326).
  • VisibleModding-API A controller mod can hand the keyboard back when its task ends. ctx.controller.release(reason?) stops the controller, hides the banner and shows the reason in the message line.
  • VisibleModding-API Autoplayer mods can see the floor the way the player does. knownFloorItems(x, y) lists the items the player has seen or remembers at a grid, with the description the look command would give, and inspectKnownFloorItem inspects one only while it is in view. A cell’s knownObjectCount counts remembered piles. Saves keep what the player last saw of each remembered item.
  • VisibleModding-API Mods can add rows to the title screen and start a character in a profile of their own. With ui:title a mod adds a title row and can ask the player to pick from a short list. With profiles:manage it can create a profile, fresh or copied from another without its saves, choose which mods run in it, and switch to it; character creation then starts in that profile after the reload.

Changed

  • VisibleUI New installs open with the dungeon view alone, as the original does, and screens that can also be panels say so. The first few times you open the inventory, equipment, monster or item list, messages, character sheet, or a monster or object recall, a note says that + or the new + button keeps that screen open beside the map. On the first dungeon level, one line points to Subwindow setup. The notes stop once any panel is open, and a Panel tips switch in Subwindow setup turns them off. Existing installs keep their layout (#317).
  • VisibleUI Panels open in the same places whatever order you open them in. Until you move, resize, tab or float a panel, the game arranges the open panels from a fixed side for each, and closing one gives its room back to the rest. Once you arrange anything by hand, a new panel docks beside the dungeon view and the others stay put. A layout saved without its panel positions gets the same automatic arrangement (#317).
  • VisibleUI A controller can keep a screen open beside the map too. On a pad with triggers, hold the left trigger and press the right trigger while the screen is open. The mapping screen can move this to another button (#317).
  • InternalDocs The Cutting Room Floor charter defines which upstream content belongs in the mod and how restorations cite sources, preserve prices, and handle birth-locked content and art.

Fixed

  • VisibleUI The game no longer stops on the crash screen the first time it converts an old pref file that holds a panel layout. The converted layout now applies once startup is far enough along to draw it (#324).
  • VisibleUI Letting go of a dragged panel where it started no longer leaves the yellow drop marker over the map, and Escape now cancels a drag. Escape puts the panel, floating window or divider back where it was instead of opening the game menu. A drag also ends when the window loses focus or the game misses the mouse release (#325).
  • VisibleModding-API A curse that grants STICKY now keeps its item on, as an item’s own STICKY does. You can’t take the item off, drop it, throw it, sell it or wield something in its place, and tunnelling no longer swaps it for a better digger. The game’s own curses grant no flags, so this matters only for curses a mod adds. (#283)
  • VisibleSave-Compat Characters no longer go missing from the desktop game when another program is using its port. The game now loads from its own neo-angband://game address instead of a port on 127.0.0.1, so it no longer opens a network port at all. The first launch after updating copies characters, settings and installed mods from every port an older version used, and leaves the old copies where they were (#323).
  • VisibleModding-API Core installs from npm again. Core 1.19.0 and 1.19.1 listed mod-sdk with a range only this repository can resolve, so installing either one failed. Core now names the mod-sdk version released with it. (#318)
  • VisibleModding-API A mod monster can cast a spell the same mod adds. The game no longer stops loading with “mon: invalid spell name” when a mod declares its own monster spell. (#319)

Downloads