Neo Angband 1.0.0
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:
- 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. - Open System Settings -> Privacy & Security and scroll to
Security, near the bottom. - 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
ModHooksextension 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),
andpackOverflowVictim, 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. checkRecordsnow emits an advisoryfield/vocabularyhint when a
record's value falls outside the closed setRECORD_BLUEPRINTSmeasures
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:
PlayerStatusViewnow 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'sindex.htmlalso
gained explicit favicon<link>tags, which it never had before. - The portable data folder beside the executable is named
datainstead
ofneo-angband-data. Only a fresh install or a fresh portable data
folder gets the new name; an existingneo-angband-datafolder 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 aroguelikeparameter 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'sflags:/values:tokens, a curse'stype:entries, a monster's
base:/friends-base:/friends:/shape:, a terrain feature'smimic:,
and a store record whoseowner:list areplacesbody 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 unresolvableitem:line already did; core's own data still fails
loudly. A malformedfieldPatchoperation - anappendwritten with
valueinstead ofvalues, 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-resourcesmod'sen-XApseudo-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 itsconfirmYesNo/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.