Skip to content

Releases: neostryder/neo-angband

Neo Angband 1.0.1-edge.96 (edge)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Aug 14:35

This is an automatic build of every commit on master. It is the
early channel of the in-game updater, and it is not a release.

Built from e1be8ef: Neo Angband 1.0.0

No release notes, no changelog entry, and no promise that it works.
It has passed the same test suite every commit passes and nothing else -
in particular nobody has played it. Saves made here are still saves: a
format change ships its conversion like any other build. If you want
something that has been looked at by a human, switch the channel to
beta on the update screen.

This release is REPLACED, tag and all, by the next commit.

Neo Angband 1.0.0

Choose a tag to compare

@github-actions github-actions released this 26 Aug 14:37

What you can download

Platform File
Windows (installer) Neo Angband Setup 1.0.0.exe
Windows (portable, one file) Neo Angband-1.0.0-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-1.0.0.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


Added

  • Two new ModHooks extension points for the bug-fixes mod: partialStackMerge,
    a veto on combinePack's uneven-stack merge (the point a mod can refuse to
    drain an already-full source stack into a smaller one, #115),
    and packOverflowVictim, a decision hook that lets a mod redirect
    pack_overflow's NULL-victim shed to the item that actually displaced out of
    the quiver rather than the last inventory slot (#116).
    With no hook installed, both call sites are byte-identical to 4.2.6.
  • checkRecords now emits an advisory field/vocabulary hint when a
    record's value falls outside the closed set RECORD_BLUEPRINTS measures
    for that field - the same measurement the workshop's record-screen
    dropdown and file editor already read independently of each other. The two
    consumers now share one answer instead of each deciding on its own
    (#48).
  • Agent API 1.4.0: PlayerStatusView now exposes thirteen buff timers
    (fast, sprint, protection from evil, hero, berserker strength, mystic
    shield, stoneskin, blessed, fastcast, and the five temporary elemental
    resists) alongside the eight negative afflictions it already carried,
    the same read-only, add-only way. Unblocks a mod-side buff cross-check
    against real engine state instead of the mod's own message-based
    bookkeeping (#121).
  • The desktop build now bundles README.md and the other root policy/legal
    docs (CHANGELOG, LICENSE, TERMS, PRIVACY, SECURITY, CODE_OF_CONDUCT,
    CONTRIBUTING, AI_USAGE_POLICY) at the install folder's own root, beside
    the executable - they were never copied there before.

Changed

  • The browser tab icon, PWA install icon, and iOS home-screen icon are now
    the actual app icon (the same mascot artwork the desktop build ships)
    instead of a placeholder green "@" glyph. The web app's index.html also
    gained explicit favicon <link> tags, which it never had before.
  • The portable data folder beside the executable is named data instead
    of neo-angband-data. Only a fresh install or a fresh portable data
    folder gets the new name; an existing neo-angband-data folder is found
    and used in place, exactly as before, both at startup and across an
    in-place update - nothing migrates and no save is moved, and neither
    name is ever deleted out from under an install that has it.

Fixed

  • A message longer than the display line took up a whole page of its own;
    upstream splits it at the rightmost space and recurses on the rest
    instead. The pager now does the same (#7).

  • Selecting a Linoleum tile pack that had never been converted before blocked
    the whole game until the entire source atlas finished slicing into loose
    files - long enough on a large pack (Shockbolt) to look identical to a
    hang. The game now hands control back immediately and shows a banner
    naming what is converting; the tileset applies once it finishes. Streaming
    individual tiles in as they convert, instead of applying the whole pack at
    once at the end, remains open (#124).

  • The birth point-buy stat allocation screen never showed the gold-rectangle
    cursor upstream draws just after the current stat's cost (ui-birth.c:1135),
    because that screen is hand-rolled rather than built on the shared menu
    widget every other cursor-driven screen in the game already gets it from.
    Up/down now moves a real cursor there like everywhere else
    (#60).

  • menuNav, the one navigation helper every overlay and menu screen shares,
    never recognized h/j/k/l, even with the roguelike keyset selected - a
    game-wide gap, not limited to the birth screen where it was first
    reported. It now takes a roguelike parameter and resolves h/j/k/l
    through the same direction mapping arrows and numpad already use.
    Reported by Nate (#127).

  • The store's item context menu (Examine/Buy/Buy One) printed its labels
    directly over the live stock list with no backdrop, so the stock row's own
    text bled through around and behind them. It now draws as a bordered,
    backed popup near the selected row instead. Reported by Nate
    (#128).

  • A mod's unresolvable reference or malformed patch could take the whole game
    down at boot in six places the mod-resilience audit had not yet reached: an
    artifact's flags:/values: tokens, a curse's type: entries, a monster's
    base:/friends-base:/friends:/shape:, a terrain feature's mimic:,
    and a store record whose owner: list a replaces body dropped entirely.
    Each now drops only the mod's own bad entry (or, where the field is the
    whole record's foundation, the one record) and reports it, the same way an
    ego's unresolvable item: line already did; core's own data still fails
    loudly. A malformed fieldPatch operation - an append written with
    value instead of values, for instance - used to abort composition
    entirely with no partial result and could drop every installed mod at once
    when the resulting error named none of them; it is now refused the same way
    a missing patch target already was (#8).

  • Nearly every screen in the web front end still wrote its UI text as a
    hardcoded English literal, so a mod-supplied locale could not reach it no
    matter what it declared: context menus, the mods and mod-browse screens,
    options, keymap editing, pref-file screens, the wizard/debug console, the
    shop, the character sheet, the knowledge browser, the title screen's
    credits, and birth and character-select. All of it now routes through
    t() - over a thousand message ids added in this pass - and the bundled
    demo-resources mod's en-XA pseudo-locale catalog grew to match, so
    switching to it no longer shows plain English for anything that is in fact
    translatable. main.ts's combat messages and its confirmYesNo/getCheck
    prompts were outside this pass's scope and remain untranslated
    (#95).

  • An autoplayer mod (the Borg) took over the keyboard with no way to hand it
    back short of force-quitting: its own answer to a blocking prompt reached
    the game the same way a real keypress did, so opening the game menu to
    disable it just closed again on the mod's next tick. Any real keypress now
    interrupts an autoplayer immediately, only while the window actually has
    focus, so one left running in the background does not hand back control on
    a keystroke meant for another window. Ctrl-Z also now offers to start one,
    through upstream's own warn-and-confirm prompt, rather than a silent
    mod-manager toggle that took effect on the next reload
    (#125).


Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.34.2

Neo Angband 0.34.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Aug 07:45

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.34.2.exe
Windows (portable, one file) Neo Angband-0.34.2-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.34.2.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


Fixed

  • The desktop build's injected mod-origin-merge script carried its own copy of
    the save database's schema, out of sync with a store added earlier: it still
    expected schema version 2 and did not know about the linoleum tile-cache
    store, so an install landing on that path could fail to open a save
    (#122).

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.34.1

Neo Angband 0.34.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Aug 05:04

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.34.1.exe
Windows (portable, one file) Neo Angband-0.34.1-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.34.1.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


Fixed

  • The desktop in-place updater refused to download any release after GitHub
    renamed the CDN host release downloads redirect to, failing every update
    attempt with "the release download redirected to an unexpected host." The
    trusted-host check now matches any *.githubusercontent.com subdomain
    instead of one specific hostname, so a future rename does not repeat this.
    A copy already stuck on the old check has to be reinstalled by hand once
    (see the README) since the broken check runs in the copy that is already
    installed, not in whatever is published next.

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.33.0

Neo Angband 0.33.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Aug 18:56

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.33.0.exe
Windows (portable, one file) Neo Angband-0.33.0-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.33.0.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


Added

  • Character history now exposes a write-time mod seam that can retain raw input
    with a display-expansion marker, plus a display-time formatter shared by the
    history screen and character dump. Unused seams preserve the faithful 4.2.6
    stored text and rendering.
  • A mod can now decide the radius a blast is built from, through a new
    projectionRadius hook on the behaviour seam (ModHooks). Core reads it in
    computeProjection before any grid is collected, and it is folded chained,
    so two mods narrowing one blast for two unrelated reasons both get their
    narrowing. With no mod contributing one the member is absent and the radius is
    used exactly as it was given, which is Angband 4.2.6's own behaviour: 4.2.6
    sizes its damage-at-distance table by max_range and never checks the radius
    against it, so a radius above the maximum reaches distances the table has no
    entry for. Upstream corrected that after the tag
    (f0f6bd223,
    upstream issue #6671); core
    stays pinned to the tag and holds only the point at which the radius is
    decided, and the correction ships as the upstream-catchup mod's
    catchup.projections rule. The hook is RNG-free by contract - the radius
    decides how many grids the blast collects, so a draw there would move the
    stream by an amount that depends on the terrain.

Fixed

  • Long capability descriptions and other scrollable table text now wrap instead
    of being silently cut off at the edge of the terminal. Reported by neostryder.

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.31.0

Neo Angband 0.31.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Aug 04:50

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.31.0.exe
Windows (portable, one file) Neo Angband-0.31.0-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.31.0.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


Security

  • The desktop updater no longer accepts a download URL or checksum from the
    renderer. The main process re-reads the named release from GitHub and
    resolves the platform asset's URL, digest, and size itself; redirects are
    followed manually with a host check on every hop, and extraction now
    enforces archive size, entry count, and expansion-ratio limits.
  • A content patch path such as __proto__.x no longer reaches
    Object.prototype. Every path-walking entry point in the patch and compose
    modules now rejects __proto__, prototype, and constructor and reads
    only a container's own properties.
  • Repository mod downloads and imported .neochar saves now decompress
    within the same resource limits the local mod importer already enforced,
    instead of expanding an untrusted archive or save with no ceiling.
  • The game window no longer navigates away from its own origin on a
    same-window navigation. The check that decides what counts as the game's
    own address now parses the URL instead of matching a string prefix.
  • Three dependencies pinned to versions with published advisories
    (fast-uri, js-yaml, nanoid) are updated.

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.30.0

Neo Angband 0.30.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Aug 19:31

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.30.0.exe
Windows (portable, one file) Neo Angband-0.30.0-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.30.0.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


Added

  • The mod conflict report now includes a row for two or more mods that both
    provide the player's own tile. TileRegistry.playerTile already took the
    first non-null answer in load order; a later provider's opinion was
    silently discarded with nothing to show for it, unlike every other
    contested slot the report already covers.

Changed

  • Mod sizes now display as their exact byte count instead of a KiB/MiB
    approximation. Every size in the pipeline was already measured exactly;
    only the display step was rounding it.

Fixed

  • Text-entry prompts (including the mod install "Repository" prompt) now
    accept a pasted value, and no longer insert a character typed while
    composing text through an IME.
  • A session-only mod's consent now refreshes when a re-staged draft changes
    the archive's bytes, instead of carrying the original consent across the
    edit.

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.29.0

Neo Angband 0.29.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Aug 17:40

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.29.0.exe
Windows (portable, one file) Neo Angband-0.29.0-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.29.0.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


Added

  • Mod authors can now put renamedSectionFlags on a PackSection to preserve
    a player's explicit on/off decision when a section is renamed or when a rule
    becomes a section to gate content. The host imports the first matching legacy
    rule or section choice before applying the section default.
  • A save's manifest now records the content digest of every present pack.
    Loading warns when a still-present pack's digest no longer matches what the
    save was written with, catching a session-only mod that patched a core
    record (rather than only adding one) differently, or dropped the patch
    entirely, even though nothing was orphaned. Only session mods are measured
    today; a regular installed mod's digest is a documented follow-up
    (docs/modding/MOD_SEAMS.md section 4d).
  • The agent view can answer "does this player's class have flag X."
    PlayerView.classFlags reports the PF_* codes on the player class's own flag
    set (class.txt's player-flags: lines) - COMBAT_REGEN for a Blackguard, ZERO_FAIL
    for a Mage, and so on. The view already carried equipment-derived object flags
    and derived skills, but nothing that read the class definition itself, so a mod
    asking a class-flag question had no seam to ask it through. A new field on an
    existing view rather than a new accessor, so the agent API is now 1.3.0.

Fixed

  • flavor.txt's fixed:/flavor: order is now recoverable from the
    compiled record.
    The content compiler used to split the two directives
    into separate arrays, so a record that interleaved them could not be
    reproduced from the compiled shape at all - the entry index cannot stand
    in for file order either, since flavor.txt's own numbering is not the order
    the file writes lines in. Nothing shipped interleaves the two directives, so
    this was latent rather than live; it would have become live the moment a
    mod's flavor.txt did. The compiler now emits one ordered entries list per
    record, each entry tagged with which directive produced it, so binding
    follows the file's real line order regardless of how a flavor.txt
    interleaves fixed: and flavor:.

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.28.1

Neo Angband 0.28.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Aug 07:48

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.28.1.exe
Windows (portable, one file) Neo Angband-0.28.1-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.28.1.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


A fixes release: two keymap defects are corrected, and the Mod Builder mod is
renamed to ModForge.

Fixed

  • Home/PageUp/End/PageDown now walk the same diagonal the numpad digits
    7/9/1/3 do with Num Lock on, matching the numpad's own orthogonal keys
    (Arrow keys), which already worked either way.
  • A custom keymap can now be triggered by a plain F-key (F1-F12, no modifier)
    or by Enter, and an action sequence can now include Enter as one of its
    keypresses - so a macro ending in Enter, such as the rest command
    R&[Enter], can be bound. Both the keymap editor's capture prompt and the
    keymap resolver that fires a bound key during play now accept the same set
    of trigger keys, so a trigger the editor accepted could no longer silently
    fail to ever fire.

Changed

  • The Mod Builder mod is now named ModForge, with a new manifest id (forge).
    An existing install's enabled and consent choices carry over automatically.

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.

Neo Angband 0.28.0

Neo Angband 0.28.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Aug 07:41

What you can download

Platform File
Windows (installer) Neo Angband Setup 0.28.0.exe
Windows (portable, one file) Neo Angband-0.28.0-portable.exe
macOS .dmg, or the .zip if you prefer to unpack it yourself
Linux .AppImage (no install), .deb, or .tar.gz
Self-hosting neo-angband-web-0.28.0.zip - static files, any web server

The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.

These builds are not code-signed

There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.

Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.

macOS is not one click, and the dialog it shows you does not contain the
way through
- it offers only Done and Move to Trash. Do this:

  1. Drag the app out of the .dmg, then double-click it and press Done
    on the refusal. This step is required: it is what makes the permission
    below appear, and it expires about an hour later.
  2. Open System Settings -> Privacy & Security and scroll to
    Security, near the bottom.
  3. Press Open Anyway on the line naming Neo Angband, authenticate, and
    launch it again.

Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"

The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.

On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.

If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.

Your save

Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.


A mod-authoring release: a plugin now gets the SDK's authoring stack and the
game's own composed records live in ctx, and can apply a staged mod with a
proper reload instead of asking the player to press one - alongside a fix for
two windows open on the same character overwriting each other's saves, and a
Turbo speed tier for a mod's autoplayer.

Fixed

  • Two windows open on the same character no longer overwrite each other's saves.
    The character a window writes to is now that window's own, held for as long as
    it is open, instead of being read from a setting every window on the origin
    shared. Opening a character that is already being played somewhere else is
    refused with an explanation rather than allowed and then silently lost, and a
    window that ends up without the character - a duplicated tab, which resumes
    without passing the character select - says so instead of playing on unsaved.
    neo-angband-active still records which character to offer at the next launch;
    it no longer decides where a save goes.

Added

  • A player-visible speed control for a mod's autoplayer: the mod's own Fixes &
    tweaks screen (Mods -> the mod) now shows an Autoplayer speed row - Turbo,
    Fast, Normal or Slow - beside the rule that hands it the keyboard in the
    first place, once it holds the controller slot. Takes effect at once, no
    reload. Fast, Normal and Slow match the debug agent seam's existing
    ?speed=fast|normal|slow tiers; Turbo (10ms) has no named equivalent there,
    since the debug seam already reaches 10ms by passing a raw millisecond
    value instead of a tier name.
  • ctx.authoring: the mod SDK's authoring stack, handed to a plugin. The
    whole public barrel, live, on the terms ctx.core is handed over: blueprints
    measured from core's own records, peersFor, suggestFields, templateRecord,
    draftRecord, checkRecords and ModProject. Always present and gated by no
    capability, because these are pure functions over data the caller supplies. A
    tool that helps somebody write a monster could reach none of it before: a plugin
    resolves no bare specifier, so the published npm package was out of reach of the
    game it describes.
  • ctx.composedRecords: the records the running game was composed from.
    Every content record as JSON, keyed by pack-file stem with no extension, which
    is the shape the authoring functions accept. This is the unbound twin of
    ctx.registries: a bound MonsterRace has no base, because the binder
    resolved the name into a pointer, so a table of comparable records could not be
    built from the registry. Mod-added records are in it on the same terms as
    core's, each carrying its provenance, so a draft based on another mod's content
    can name the dependency it just acquired. Absent during content composition,
    for the reason ctx.registries is.
  • ctx.reloadGame: a mod can apply what it just staged. The game's own
    mod-change sequence, behind either mod:install or mod:session - whichever
    capability the mod already holds - because content composes at load and
    staging plus reload are one act: a mod that cannot follow a stage with a
    reload leaves the player holding something the running process will never
    load. What the host does that a mod cannot do for itself is the sequence -
    every plugin's uninstall() runs, the autoplayer hands the keyboard back, the
    live character is written down, and the session comes back on that character
    instead of on the title screen. It is not a permission to reload: a plugin
    runs in the page and reaches location with no grant at all, and a mod
    calling that directly loses the player's progress since the last save.
  • An install outcome now carries the game's own wording.
    ctx.installMod(bytes) answers with lines on both arms: the lines the Mods
    screen itself prints for that same install, including one row per unmet
    requirement and the author's advice under them. A mod built inside the game
    therefore fails a standards check in the same words as one somebody downloaded,
    rather than in a second vocabulary a player cannot look up. problem is
    unchanged and is still one whole sentence.
  • A second API-surface ratchet, over the SDK.
    packages/mod-sdk/mod-sdk-api-surface.json records its 94 runtime exports and
    mod-authoring-surface.test.ts fails in both directions against it. Handing a
    namespace to a plugin puts every name in it beyond the compiler's reach, which
    is why core has had this since 2026-08-02; node tools/api-surface.mjs now
    checks and updates both baselines in one run.

Changed

  • The download screen's size line now shows the exact byte count, comma-grouped,
    instead of rounding to KB or MB - "162,343,507 Bytes" rather than "155 MB".
    The screen already reads as a terminal (the ASCII progress bar); an unrounded
    count fits that and visibly climbs while the download runs, where a
    one-decimal MB figure barely moves.

Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.