Releases: eriknihlen/OpenAC
Release list
OpenAC v0.1.23
OpenAC 0.1.23
- An unanswered spell cast no longer leaves the client permanently busy.
- Added Install from ZIP to the launcher, with a review step and rollback if installation fails.
- Client logs now rotate so recent activity remains available during long sessions.
- Fixed tinkering augmentation labels and stray text in Character Information. Thanks to @AluvianBorderPatrol for reporting #200.
Windows: download launcher-win-x64.zip, unzip it anywhere, and run acdream-launcher.exe.
Linux: download launcher-linux-x64.zip, unzip it anywhere, and run ./acdream-launcher.
macOS (Apple silicon): download launcher-osx-arm64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
macOS (Intel): download launcher-osx-x64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
The launcher installs the client, prepares your data files, and keeps itself and the client up to date. The client-*.zip files are the bare client and headless host. AcDream.Plugin.Abstractions.*.nupkg is the plugin API package for plugin authors.
OpenAC v0.1.22
- Reduced CPU usage and allocations for headless clients.
- Plugin communication starts only when needed and uses a shared local hub instead of peer-file polling.
- Added checked-account filtering and optional automatic relaunch in the launcher.
- Prevented overlapping stop requests while a client exits.
- Update MossTank to 0.5.2 and MosswartMassacre to 0.1.1 for the new peer-sharing support.
OpenAC v0.1.20
Windows: download launcher-win-x64.zip, unzip it anywhere, and run acdream-launcher.exe.
Linux: download launcher-linux-x64.zip, unzip it anywhere, and run ./acdream-launcher.
macOS (Apple silicon): download launcher-osx-arm64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
The launcher installs the client, prepares your data files, and keeps itself and the client up to date.
The client-*.zip files are the bare client and headless host for people who do not want the launcher.
AcDream.Plugin.Abstractions.*.nupkg is the plugin API package for plugin authors.
What's Changed
- Add shared plugin themes, searchable menus, and scrollable transcripts by @eriknihlen in #191
- Fix long chat crashes with reliable outbound fragmentation by @eriknihlen in #192
- OpenAC 0.1.20: plugin hot reload and a friendlier launcher by @eriknihlen in #193
- Plugin tick no longer allocates per handler by @eriknihlen in #194
Full Changelog: v0.1.19...v0.1.20
macOS (Intel): download launcher-osx-x64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
OpenAC v0.1.19
Windows: download launcher-win-x64.zip, unzip it anywhere, and run acdream-launcher.exe.
Linux: download launcher-linux-x64.zip, unzip it anywhere, and run ./acdream-launcher.
macOS (Apple silicon): download launcher-osx-arm64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
The launcher installs the client, prepares your data files, and keeps itself and the client up to date.
The client-*.zip files are the bare client and headless host for people who do not want the launcher.
AcDream.Plugin.Abstractions.*.nupkg is the plugin API package for plugin authors.
What's Changed
- Expose portal destination and level limits to plugins by @johanlundberg in #187
- Perfect is the enemy of good by @eriknihlen in #190
Full Changelog: v0.1.18...v0.1.19
macOS (Intel): download launcher-osx-x64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
OpenAC v0.1.18
Windows: download launcher-win-x64.zip, unzip it anywhere, and run acdream-launcher.exe.
Linux: download launcher-linux-x64.zip, unzip it anywhere, and run ./acdream-launcher.
macOS (Apple silicon): download launcher-osx-arm64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
The launcher installs the client, prepares your data files, and keeps itself and the client up to date.
The client-*.zip files are the bare client and headless host for people who do not want the launcher.
AcDream.Plugin.Abstractions.*.nupkg is the plugin API package for plugin authors.
What's Changed
- ui: support keyboard focus within markup panels by @johanlundberg in #183
- Add plan-only navigation path previews for plugins by @johanlundberg in #182
- OpenAC 0.1.18: memory, headless reconnect, plugin item data, thrown-weapon range, first-person look by @eriknihlen in #186
Full Changelog: v0.1.17...v0.1.18
macOS (Intel): download launcher-osx-x64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
OpenAC 0.1.17
This update is a new installation. Click update in your old launcher as usual: it updates itself first, then sets OpenAC up fresh.
- Everything OpenAC keeps now lives in one folder,
%LOCALAPPDATA%\OpenACby default (Linux~/.local/share/openac, macOS~/Library/Application Support/OpenAC). The launcher's settings show it; click to open it, or use Move… to put OpenAC somewhere else. - Nothing is copied from the old version: add your accounts again and reinstall your plugins. Copy your VTank/MossTank profiles, metas, navs and loot files into the new
vtankfolder if you want them. - Your old folders are left untouched; the launcher shows where they are so you can delete them when you are done.
Fixes:
- Headless bots no longer get stuck at a landblock border when they walk away from where they logged in.
- Plugins read the direction a character is actually facing (it was always 0), so meta rules like "portal ahead" work.
- A corpse that has decayed on the server no longer makes a looting plugin wait forever (
PluginLootContainer.IsAppraisalAnswered). - Using a vendor that is already open again tells plugins it opened, so autovendor runs start.
- Plugins can list all of their own saved files.
Windows: download launcher-win-x64.zip, unzip it anywhere, and run acdream-launcher.exe.
Linux: download launcher-linux-x64.zip, unzip it anywhere, and run ./acdream-launcher.
macOS (Apple silicon): download launcher-osx-arm64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
macOS (Intel): download launcher-osx-x64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
The launcher installs the client, prepares your data files, and keeps itself and the client up to date.
The client-*.zip files are the bare client and headless host for people who do not want the launcher.
AcDream.Plugin.Abstractions.*.nupkg is the plugin API package for plugin authors.
Full changelog: v0.1.16...v0.1.17
OpenAC v0.1.16
Fixes reported by @AluvianBorderPatrol, plus some found along the way.
- Entering combat mode with a bow, crossbow or atlatl works again (#180).
- With a thrown weapon and a shield, or an atlatl, attacks at any power setting work, and so does leaving combat (#174).
- Items that should be see-through, such as phantom weapons, soul crystal shields and shades, are drawn see-through (#175).
- Names in allegiance, fellowship and other channel chat are shown green like in general chat, and clicking one starts a tell (#176).
- Assessing a shield shows its effective shield level with your Shield skill (#172).
- 28 emotes that played the wrong animation or none now play the right one: At Ease, Helper, the sitting and pointing emotes, and others.
- The animated figure in the assess window now shows what the creature is holding: weapons, shields and wands.
Windows: download launcher-win-x64.zip, unzip it anywhere, and run acdream-launcher.exe.
Linux: download launcher-linux-x64.zip, unzip it anywhere, and run ./acdream-launcher.
macOS (Apple silicon): download launcher-osx-arm64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
macOS (Intel): download launcher-osx-x64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
The launcher installs the client, prepares your data files, and keeps itself and the client up to date.
The client-*.zip files are the bare client and headless host for people who do not want the launcher.
AcDream.Plugin.Abstractions.*.nupkg is the plugin API package for plugin authors.
Full changelog: v0.1.15...v0.1.16
OpenAC v0.1.15
Mainly plugin API additions, needed by MossTank 0.2.5.
Plugin API: plugins can broadcast commands to the other clients on this machine, read tinkering values on items, swear and break allegiance, create their storage folders up front, and use recall automation. Plugin windows can be resizable.
Fixed: the vendor window no longer closes by itself when you use a vendor on a step or a slope.
Full changelog: v0.1.14...v0.1.15
OpenAC v0.1.14
OpenAC 0.1.14 — release notes (draft, 2026-09-22)
Paste as the GitHub release body for v0.1.14.
Combat mode: no more casting in the wrong stance
Bots that swap between a weapon and a wand could cast before the server had taken
the mode change. The cast went out in the old stance, the server logged
CombatMode mismatch, and the parked change then landed during the windup and
fizzled the spell — one wasted cast per swap.
- A combat-mode change now waits until the body is in position, the way the
original client does: not while a swing or a stance animation is still
playing, and never during a portal ("You can't change combat mode while
teleporting"). - The headless client now takes the stance the server puts your own body in.
It used to drop it, so the wait above could never happen there. - Plugin API:
PluginCombatSnapshot.ServerMode— the mode the server last
reported (Unknownuntil it has said anything).Modemoves when the client
sends a change;ServerModemoves when the server has taken it. A plugin
that waits for the two to agree casts within ~50 ms of the server accepting
the change. Additive; older plugins seeUnknown. - A mode-change command that is parked until the body is ready now counts as
accepted (it goes out on its own), instead of being reported as rejected.
Measured on the headless client with MossTank on a fixed route (10 minutes):
warnings and fizzles per swap 1 → 0; kills per minute 9.9 → 11.1.
Launcher
- A Console button next to Play opens a window for a headless session:
the session's output in the game's chat colours, and a line to send commands
(/vt start,/quit…).
Plugin API documentation
- Every public member of
AcDream.Plugin.Abstractionsis documented; the
build fails on an undocumented one.
Plugins
- MossTank 0.2.4 (separate release) uses
ServerMode; it needs this client.
Full changelog: v0.1.13...v0.1.14
OpenAC v0.1.13
Plugins move out of the client
OpenAC now has a plugin manager, and the client no longer ships with a plugin inside it.
- Launcher, Plugins tab: browse the plugin list, install, update and remove plugins, or add one from any GitHub repository with Add from URL. Every plugin says what it does (network, chat, input) before you install it, and is installed switched off until you enable it per character (#148, #155, @shaneedwards)
- MossTank is now its own plugin, in its own repository. If you use MossTank, install it from the Plugins tab after this update — it is no longer part of the client. Your profiles, routes and loot files are kept
- Plugin authors: the plugin API is published as a package attached to every release (
AcDream.Plugin.Abstractions.<version>.nupkg), so a plugin builds in its own repository without the client's sources.acdream-pluginchecktells you whether the launcher would install your release. See the plugin development guide
Headless and windowed are now the same client for a plugin
Until now a bot could work in the window and fail without one, or the other way round. Everything a plugin can see or do is now one implementation that both clients share, and the build fails if one client gets something the other lacks. A suite runs both clients side by side through the same scenarios and compares every answer.
- Movement: a headless character runs at the same speed (it was about 12 % slower), turns, walks to an object and uses it, and follows a moving creature exactly as the windowed one does
- Combat: the same swing timing and power bar on both; an attack aimed by a plugin never falls back to "closest hostile"
- Items and loot: picking up from a corpse, opening a chest in the world, using an item that is out of reach, stack merging into a full pack; "busy" and "refused" are answered truthfully instead of "started" with nothing sent
- World state: one answer to "where is that creature now" (its body, not the server's last word), the same events in the same order, the same selection and contract data
- Timing: plugins tick on one fixed 15 ms clock on both clients, independent of frame rate
- Sessions: one session file format for both; plugin settings, tags and character options apply the same way; per-character plugin settings work headless too
- Status file: a session can no longer be silenced by another process reading its status file
- Proven live: MossTank ran ten-minute sessions on each client on the same route. Both fought, looted, buffed, healed and walked the whole route with no deaths and no faults, and damage per hit and loot times matched
MossTank
MossTank left the client and became its own plugin. A major update, released there as 0.2.2: MossTank now works with UCM, melee, casting and missile.
- Proven at normal character stats: melee, looting, buffing, healing and worn-item mana in one unattended run. Missile and magic were tested by hand
- All options wired and tested (about 120 new tests); the one option nothing used is gone
- Mana items are drained the moment they are looted; a refused pickup gives up the item, not the whole corpse; a full pack still takes what stacks
- One profile per character: a relog no longer loads a blank profile, and files are kept under
mosstank\profiles,navs,metasandloot - It says why: "Not attacking Drudge: no usable attack spell (Flame Bolt VII and 6 lower: missing components)" instead of standing still
- No more freeze after a kill with the next shot half charged; "Don't Shoot at Walls" now really checks the path, and never blocks casting when it cannot
- The window title shows the real version
Still to come: metas are the big missing piece, some features are still lacking, and it needs more testing. Reports are welcome in its repository.
Plugin API
- New from @johanlundberg: world interaction and semantic state, activation results, recall and portal tracking with stale-data guards (#156), revisioned navigation events (#140), clickable chat coordinates routed to plugins (#141), contract and navigation reliability tests (#149, #150, #151)
Projectiles.EvaluatePath("would this shot get there?") really answers, identically on both clients. It answered "unavailable" everywhere before- A plugin text box follows its value: a setting loaded after the window was built is shown, and
onchangeonly reports what the player types acdream-plugincheckchecks a plugin release the way the launcher will install it
Fixed
- Login commands: the first command was lost when it was one the server carries out (a say, an
@command). The list now waits until the server is listening, on both clients - Mana cost on a magic item read "1 point per -20 seconds" (#143, @AluvianBorderPatrol)
- Fellowship, patron, vassal and allegiance chat read "[ch 2048]"; each channel has its own wording again (#142, @AluvianBorderPatrol)
- "Innate" attributes on the Character Information page showed buffed numbers (#144, @AluvianBorderPatrol)
- Ammunition count on the combat button was small and centred; it uses its own font at the foot of the button (#145, @AluvianBorderPatrol)
- An item held over a full pack, or a focus, showed the green arrow instead of the refusal (#146, @AluvianBorderPatrol)
- Experience to the next level read 0 at the top level (#137)
- Another player's weapon could vanish after you teleported, and an old weapon stayed after a swap
- A completely full pack refused a stackable item that only needed to join a stack
- Linux: the data preparation's free-space check failed on separate mounts (#153, @johanlundberg)
For testers
A second release train: vX.Y.Z-dev.N builds from the dev branch are pre-releases that players are never offered. See "Testing a pre-release" in the launcher guide (#161).
Contributors
@johanlundberg, @shaneedwards, @AluvianBorderPatrol
Windows: download launcher-win-x64.zip, unzip it anywhere, and run acdream-launcher.exe.
Linux: download launcher-linux-x64.zip, unzip it anywhere, and run ./acdream-launcher.
macOS (Apple silicon): download launcher-osx-arm64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
macOS (Intel): download launcher-osx-x64.zip, unzip it, drag OpenAC.app to ~/Applications, then open it in Finder.
The launcher installs the client, prepares your data files, and keeps itself and the client up to date.
The client-*.zip files are the bare client and headless host for people who do not want the launcher.
Full Changelog: v0.1.12...v0.1.13