Skip to content

Releases: zax0rz/darkpawns

Dark Pawns v0.1.8

Choose a tag to compare

@github-actions github-actions released this 31 Oct 17:35
31411d0

Dark Pawns v0.1.8 is the one where the game starts to look and fight like the original. Most of the color the 1990s game had was never wired up in the port, and a long list of combat details ran in a slightly different order than the C code did. Both are fixed. If you play with color on, a lot of screens will look new. That's the original, not a new coat of paint.

What looks different

  • Color is back where the original had it: damage messages, the bleeding line, score, the group listing, report, exits, room listings and the immortal stat screens (#2231, #2236, #2244, #2247, #2248, #2249, #2255, #2256). Use color off, color sparse, color normal or color complete to choose how much. The group listing and parts of score only color at complete, just like the original.
  • With color off, who shows &r and &y on Wizard and Chosen lines. That isn't a bug: the original printed those codes raw to anyone without color (#2248).
  • Hidden characters now appear in who and can be targeted, as in the original. Room listings and exits still hide them (#2239).
  • Fireball was checked against the original at every color level, and it matches (#2237).

Fights

  • Monsters fight back when your spell fails on them. A mob that resists blindness, curse, sleep, charm or a few others now attacks you, and so does one you summon or poison. In the port that never happened (#2251, #2264).
  • Bodies fall the way they did in the original. Survivors keep swinging at a body that's about to drop, and a second death on the same body plays out in full (#2227, #2235).
  • Skills hit like the original: the pain line, the scream, the bleeding line and wimpy all run after a skill lands, and mob specials trigger wimpy too (#2236, #2243).
  • Switcheroo keeps the rest of the round's attacks on the new target (#2252).
  • Spells and skills that change a monster's armor or aim now actually do. Berserk, curse, poison, chill touch and the rest were applied to monsters but never counted in their fighting, so a berserk guard hit and dodged like a calm one (#2259).
  • Kill rewards, group experience with mixed parties, and mob regeneration now match the original (#2215, #2218, #2220, #2221).
  • Corpses, loot gold and attack types match the original (#2224, #2232).

Equipment and the world

  • Equipment display and item effects match the original, including age, height and weight items and spell effects that wear off when you remove an item (#2216, #2219, #2242).
  • Your prompt comes back after a message arrives from elsewhere in the room (#2214).
  • Teleport's two refusals for monsters now work (#2239).
  • Groups: an immortal can force a monster to lead a group, as in the original. A sleeping leader now hears group's answers, and a follower who is shadowing you can't be added by name (#2260, #2263).
  • Room object lists are padded the way the original's were (#2254).
  • Rooms with special details no longer put a stray space in front of the first character listed there (#2257, #2266).

For operators and contributors

  • Release publishing fixes for Homebrew, Scoop, winget and Docker (#2212, #2213, #2217).
  • Background start and update on Windows are sturdier: a slow startup-task check or a file held briefly by a virus scanner now gets one retry, and a failure says why (#2258, #2261, #2262).
  • Immortals: stat <player> shows the age and creation date after age-changing gear, as the original did (#2265).
  • The build now fails if Go silently ignores a source file (#2245).
  • The front page, README and release notes invite players to Discord (#2226).
  • Docs groundwork: a style guide and a docs skill for writing pages (#2223).

Every fix above was checked against the original C source. The release census ran 6,206 scenario runs against the original game across 13 seeds, with every random roll compared: all clean, no divergent draws.

Install on macOS or Linux:

curl -fsSL https://darkpawns.org/install.sh | bash

Existing installations can run darkpawns update --check, then darkpawns update, or update from Admin → Updates.

Questions, war stories, and the live server's #gossip feed all live on the Dark Pawns Discord.

Dark Pawns v0.1.7

Choose a tag to compare

@github-actions github-actions released this 29 Oct 11:12
4440de4

Dark Pawns v0.1.7 is the operator release. The admin console has been rebuilt, and you can now run, configure, update and watch your server from the browser. It installs through Homebrew, Scoop and Docker too. Nothing about the game itself changes, and every census against the original C source came back clean.

Admin console

  • New look and layout: a sidebar, clearer pages and consistent icons (#2195, #2200, #2204).
  • A dashboard showing who's online, new characters and player deaths, including what killed them. Click any tile for details (#2197, #2207, #2208).
  • Server log and in-game log viewers, with export (#2197, #2207).
  • Configuration in the browser: game settings, secrets and the network ports for telnet, TLS and the who-list. Changes that need a restart say so, and a bad change rolls back on its own (#2196, #2199, #2209).
  • Updates: check for a new version and install it with one click. The updater refuses to install an older version by mistake (#2199).
  • A player editor: rename or delete a character, set flags, and see and change everything they carry or wear, slot by slot (#2203, #2210).
  • Notifications rebuilt, with a link to set up a healthchecks.io heartbeat (#2198, #2207).
  • An editor for the message of the day, with a live preview of its colors (#2206).
  • The front page now points new operators at the first step: create your immortal before anyone else logs in. It also links to the admin console (#2207).

Command line

  • The darkpawns command is easier to read: tidier status, update and log output, with color where your terminal supports it (#2201).

Installing

  • New ways to install: Homebrew (brew install darkpawns/tap/darkpawns), Scoop (scoop bucket add darkpawns https://github.com/darkpawns/scoop-bucket, then scoop install darkpawns) and a Docker image at ghcr.io/darkpawns/darkpawns. A winget package is waiting for Microsoft's review. Every channel installs the same signed release (#2205).

Fixes

  • Fixed a crash in the launcher, and the timing problems that made it flaky on macOS (#2202).
  • Settings that came from environment variables when the server was first installed no longer show up as manual overrides, and the release pipeline is hardened further (#2211).

Install on macOS or Linux:

curl -fsSL https://darkpawns.org/install.sh | bash

Read the portable guide for Windows installation, bootstrap trust, management and recovery. Existing installations can run darkpawns update --check, then darkpawns update. From this version on, you can also update from Admin → Updates.

Dark Pawns v0.1.6

Choose a tag to compare

@github-actions github-actions released this 27 Oct 16:06
dac144e

Dark Pawns v0.1.6 fixes more player-reported bugs and closes a set of security holes. The gossip channel can now be mirrored to Discord. Every gameplay fix was checked against the original C source.

Gameplay

  • Sleeping characters no longer see what happens around them: spell chants, items appearing, other players leaving the game (#2186, #2187).
  • retreat and escape never take you through a closed door (#2189, #2193).
  • A death cry is muffled behind closed doors, as in the original (#2192).
  • In a multi-attack round, the attacks stop once a blow ends the fight. Low-level characters are left bleeding and incapacitated, as in the original, instead of being killed by a swing that should never have landed (#2166).
  • Shops accept quantities the original way: buy 3 bread, sell 10 jumpsuit. The invented buy bread 3 and bulk sell all are gone (#2174).
  • If your saved equipment fails to load, you now get the original notice telling you to contact a god, instead of silently entering the game empty-handed (#2172).
  • Coin piles weigh nothing, as they did in the original (#2182).
  • Immortals who switch into a mob get room messages in that body only (#2179).

Security and stability

  • Racing two commands can no longer duplicate gold, items or charges. This covers banking, picking up coins, stealing (carried and worn), casting, potions, wands, staves, reagents, practices, the clan treasury and donations (#2175, #2184, #2191).
  • Inventory and equipment are locked against concurrent access. This closes a crash that could take the server down (#2180, #2181).
  • A cap on total web connections keeps telnet and the admin site working under load (#2176).
  • Text from the Grapevine cross-MUD chat is stripped of hidden control and direction-reversal characters (#2185).

New

  • Gossip can be mirrored, one way, to a Discord channel. It's off by default; operators set it up in Admin → Notifications (#2188, #2190).

Mail

Mail keeps working as it did on the original 32-bit servers. The 64-bit build of the original C code can't store mail at all, and we chose not to copy that (#2178).

Testing

None of these change gameplay:

  • harness fixtures for calendar boundaries, seeded players and fault injection (#2165, #2178);
  • proofs for weather, regeneration, save/load, descriptors, death and shops, plus 29 previously blocked output sites (#2168, #2171, #2177, #2182);
  • play-lab scenarios (#2164, #2170, #2173).

The blocked fidelity inventory fell from 98 units to 50.

Install on macOS or Linux:

curl -fsSL https://darkpawns.org/install.sh | bash

Read the portable guide for Windows installation, bootstrap trust, management and recovery. Existing installations can run darkpawns update --check, then darkpawns update.

Dark Pawns v0.1.5

Choose a tag to compare

@github-actions github-actions released this 26 Oct 03:21
90ff38f

Dark Pawns v0.1.5 fixes bugs that players reported on the live server, and stops a telnet negotiation flood. Every gameplay fix was checked against the original C source.

Gameplay

  • Hunting mobs no longer walk through locked doors. Mobs open and close doors by the original command's rules, including doors whose names have more than one word (#2146, #2147, #2153).
  • Holding a lit light lights the room you are standing in, and room light counts no longer drift as you move, drop or remove lights (#2151).
  • Death clears spell affects, tattoo effects and werewolf and vampire forms, and mobs forget and stop hunting you, on every death path (#2158).
  • Mana-regeneration equipment with a positive bonus counts only while you sleep, as in the original. Regeneration reads each item's own affects (#2161).
  • practice shows the real proficiency for strike of revenge, serpent kick, dragon kick, tiger punch, escape of the mongoose, the kuji-kiri arts, pick lock, flesh alter, aid and search. These skills were always learned; only the list was wrong (#2160).
  • Mobs that use player commands (say, tell, get, wear, flee, headbutt and others) run the real command (#2148).
  • track is available, and visible makes a mortal reappear correctly (#2145).
  • Scrounged food can no longer be duplicated (#2154).

Server

  • The telnet listener no longer answers negotiations it has already agreed to. A client that acknowledges every offer used to start a flood of several megabytes per second (#2162).

Testing

None of these change gameplay: concurrent oracle censuses (#2155), a seed-player harness fixture that turns seven red draw-parity rows green (#2159), play-lab scenarios (#2150, #2157) and fixes for flaky tests (#2156).

Install on macOS or Linux:

curl -fsSL https://darkpawns.org/install.sh | bash

Read the portable guide for Windows installation, bootstrap trust, management and recovery. Existing installations can run darkpawns update --check, then darkpawns update.

Dark Pawns v0.1.4

Choose a tag to compare

@github-actions github-actions released this 23 Oct 19:30
6fbe6fa

What's Changed

  • chore: regenerate requirements-lock.txt without agent-era packages by @zax0rz in #2133
  • fix(session): cap alias creation at 500 entries / 64 KiB (approved divergence) by @zax0rz in #2134
  • fix(server): keep empty worlds off public listeners (L1-005, option B) by @zax0rz in #2135
  • fix(install): verify the installer signature before execution (L1-003) by @zax0rz in #2136
  • fix(portable): strict publisher authentication for on-disk bundles (L1-006/007/021) by @zax0rz in #2137
  • fix: audit free-fix sweep — mudlog visibility, lockout atomics, growth bounds (12 findings) by @zax0rz in #2139
  • fix(admin): re-resolve the panel role from the store on every request (L2-030) by @zax0rz in #2138

Full Changelog: v0.1.3...v0.1.4

Dark Pawns v0.1.3

Choose a tag to compare

@github-actions github-actions released this 21 Oct 16:49
60a5f78

What's Changed

  • feat(specials): the class-3 actor lanes and shop_keeper's boot-time lane (DP-1448) by @zax0rz in #2121
  • docs: README for v0.1 with install, admin and operations captures by @zax0rz in #2118
  • fix(combat): keep a dead body addressable until the extraction pass (carve-depth DRAW row) by @zax0rz in #2124
  • fix: open setup or the default world on Windows double-click by @zax0rz in #2125
  • fix(parser): a mobile with no Race: line is RACE_OTHER (16), not 7 — clears the 19-24 draw cluster by @zax0rz in #2126
  • fix(dprng): an empty dice roll consumes nothing and logs nothing — clears circle-aware-depth by @zax0rz in #2127
  • test(game)+fix(specials): pin the shop sort draw; galeru_alive sends with send_to_char by @zax0rz in #2128
  • fix(session): center the release greeting line under the credits by @zax0rz in #2129
  • fix(specials): port SPECIAL(beholder) as C writes it — it had been invented (clears the last non-stop-tier draw row) by @zax0rz in #2130
  • fix(session): version prints C's Compile Time line, not an invented Go build line by @zax0rz in #2131
  • fix(specials): whirlpool must run on the mobile pulse (R5e) by @zax0rz in #2132

Full Changelog: v0.1.2...v0.1.3

Dark Pawns v0.1.2

Choose a tag to compare

@github-actions github-actions released this 20 Oct 19:15
41f19a5

Dark Pawns v0.1.2 fixes installation and admin entry issues and restores local
telnet access for new portable worlds.

  • New instances listen on 127.0.0.1:7777 for telnet. Choose another port in
    setup, or enter 0 to disable it. Existing instances keep their configuration.
  • Explicit bind addresses are available for telnet, TLS telnet and WHOD. Omitted
    hosted bind settings still mean all interfaces. The splash page lists sockets
    that actually opened, with their observed address and port.
  • Direct /login loads reach the admin app. Room exit editors no longer crash
    when React defers a toggle update (#2117).
  • Launcher help no longer prints the dispatch parser's usage. Setup questions
    have more spacing; operator commands use the short PATH command when it points
    to the same release, retaining an instance argument for custom worlds.
  • Fresh release worlds show their build version instead of the 2008 pwipe notice
    and receive a neutral starter MOTD. The logo and CircleMUD/DikuMUD credits stay
    intact. Existing worlds retain their greeting unless greeting_overlay is
    explicitly enabled; their MOTD files are preserved.

Install on macOS or Linux:

curl -fsSL https://darkpawns.org/install.sh | bash

Read the portable guide
for Windows installation, bootstrap trust, management and recovery. Existing
installations can run darkpawns update --check, then darkpawns update.
Keep a v0.1.2-or-newer recovery launcher before adding new instance fields.

Apple notarization, Windows Authenticode and automatic update scheduling are not
included. Native CI covers Linux, macOS and Windows; this is not a claim about
every desktop security configuration. Network settings in the admin console
remain a design proposal.

Dark Pawns v0.1.1

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:22
88e4455

Dark Pawns v0.1.1 adds explicit hosting configuration and a persistent service
manager for existing worlds. The game engine, world and player-facing text are
unchanged from v0.1.0 (R1 through R5).

  • Configure telnet, TLS telnet and WHOD in instance.json. Ports are validated
    together; TLS and listener availability are checked before startup. Local setup
    keeps these listeners disabled by default.
  • Explicitly configure TLS identity and Mudlet URLs. The launcher continues to
    isolate inherited settings from other installations.
  • Releases now include the Mudlet package. An optional public directory receives
    the matching package atomically before the server advertises its version.
  • darkpawns supervise gives an external service manager a stable foreground
    process across game updates. It respects deliberate stops, restarts a crashed
    game, and waits for interrupted-update recovery. Doctor reports monitor state.

Read the hosting and adoption procedure
before migrating an existing service. Preserve the original JWT, SQLite data,
complete world/state, boards, notification settings and original encryption key.
Sign-in startup and system supervision are separate ownership modes.

Existing v0.1.0 portable instances can use darkpawns update --check, then
darkpawns update. Configure hosting only after upgrading. Older launchers do not
understand the additional hosting fields; retain the original stable entry point
and use its dispatch to the active release. There is no automatic conversion of
an arbitrary checkout service, and no automatic update scheduling in this release.

Archives are available for Linux, macOS and Windows on amd64 and arm64. Native CI
covers each operating system; hosted listeners and system supervision have an
additional Linux integration journey. Cross-building an archive does not certify
every architecture or desktop security configuration. Apple notarization and
Windows Authenticode remain outside this release.

Dark Pawns v0.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 12:10
3c2f3e3

Dark Pawns v0.1.0 is the first portable release of the Go server. It includes the
preserved Dark Pawns world, browser client and web administration console.

Install and play locally

Download the archive for your operating system and architecture, extract it, then
run darkpawns setup (darkpawns.exe setup on Windows). The three-step wizard
chooses an instance folder and local port, reviews the settings, then launches
your world and opens the browser. The default address is http://127.0.0.1:4350/.
The first character created becomes the immortal. Create it before sharing access.

For one-command installation, use the shell or PowerShell instructions in the
portable guide.
Installers verify the publisher signature and archive digest before extracting.
Go, Node and a source checkout are not required to run a release.

Included

  • Linux, macOS and Windows archives for amd64 and arm64.
  • A guided terminal installer with ASCII splash, keyboard navigation and plain
    prompts for screen readers or basic terminals.
  • start, stop, restart, status and doctor, plus optional startup at sign-in
    through systemd user units, macOS LaunchAgents or Windows logon tasks.
  • Manual update, signed official downloads, stopped-instance snapshots and
    recovery after a failed candidate launch. World edits and players live outside
    the replaceable release directory.
  • Web world-building tools and a disconnected-player editor, including stats,
    inventory, equipment and password resets.
  • Configurable Discord and Pushover notifications, with destination credentials
    managed through the admin console.

Boundaries

This is an initial release for local installation and evaluation. Setup binds the
web client and admin console to loopback. Telnet and WHOD are disabled in generated
instances. Public hosting and adoption of an existing production installation
require deliberate configuration and migration; this installer does not convert
an existing checkout or custom system service.

Archives and release metadata are signed by the Dark Pawns publisher. Executables
are not Apple-notarized or Windows Authenticode-signed. Runtime journeys run in CI
on Linux, macOS and Windows; building all six archives does not prove runtime
behavior on every architecture or desktop security configuration.

Automatic updates and updater success/failure notifications are planned. Use
darkpawns update --check and darkpawns update for manual updates as subsequent
releases become available. This is the first versioned release, so a published
version-to-version update has not yet been exercised.

The game preserves the original C command surface and player-facing text under
fidelity rules R1–R5. Installation and administration are separate operator tools.
The original DikuMUD and CircleMUD license notices are included in every archive.