The Windows build took PCRE2 from a hand-built out-of-tree directory
reached through $(Pcre2Dir). engine.vcxproj honoured that property for
its headers but hardcoded ..\..\src\pcre2\{Release,Debug} for its
libraries, so -p:Pcre2Dir= applied to one half and not the other and the
link failed with LNK1104 in any tree where PCRE2 was not at the default.
Declare pcre2 in mux/vcpkg.json instead, alongside grpc and
nlohmann-json, and point netmux, libmux and engine at $(VcpkgDir). All
three now read include and library paths from the same place. Note
vcpkg's layout is lib/ for release and debug/lib/ for debug, not
Release/ and Debug/.
PCRE2's JIT is required -- funceval2.cpp calls pcre2_jit_compile -- and
comes automatically: the port's platform-default-features pulls in jit
everywhere except emscripten and iOS.
Ship mux/vcpkg.json in both source TOCs. It was in neither, so the
source distribution carried no statement of its own dependencies; with
PCRE2 moving to vcpkg, the file that declares it has to travel with the
source or an unpacking reader is worse off than before.
Unix is unaffected -- configure finds system PCRE2 via pkg-config.
Verified on hatsuhara: Release and Debug both build clean with no
hand-built PCRE2 present anywhere on the box.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The TOCs are allowlists. dounix.sh/dowin32.sh start from the previous
release tree and overlay only the paths named by unix/TOC.patchable and
win32/TOC.src.patchable, so a file added since the last release that
nobody lists never reaches the distribution. Five have accumulated
since Build-2.14.0.10:
ganl/include/ganl_debug.h
include/dbt_reloc.h
modules/engine/jit_tier1_stamp.h
modules/engine/list_scratch.h
modules/engine/word_scratch.h
All five are #included by shipped sources -- list_scratch.h by
functions.cpp and funceval.cpp, jit_tier1_stamp.h by six files -- and
ganl_debug.h is additionally named in ganl/Makefile.am's noinst_HEADERS,
so make stops before compiling anything:
make[1]: *** No rule to make target 'include/ganl_debug.h',
needed by 'all-am'. Stop.
This is the same defect that shipped in 2.13.0.16 and had to be re-cut
(#2190). Same file, same cause, other line.
Verified by reproducing a cut rather than by inspection: the real
2.14.0.10 reference tarball plus dounix.sh's overlay logic, built with
--enable-jit --enable-realitylvls --enable-wodrealms.
TOCs as on master: 422 files, 0 of 5 headers, build FAILS above
with this change: 427 files, 5 of 5 headers, build CLEAN
(netmux, libmux.so, engine.so all produced)
Also checked and clean, both platforms: removed intersect (patchable
union unpatched) is empty, and every TOC entry resolves to a file in
the repo.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The 2.14.0.10 source distributions do not build. mux2.14/lib/Makefile.am
names 24 sources; three are absent from the tarball:
mux_nls.cpp LIBMUX_SRC
mux_table.c LIBMUX_C_SRC
shacrypt.cpp LIBMUX_SRC
Their headers are missing too, and mux_table.h is #included by eleven
shipped files, so the build fails at the first compile rather than the
link. Both platforms are affected: unix .tar.gz/.bz2 and win32
.src.zip/.7z.
Cause is the packaging model. dounix.sh and dowin32.sh start from the
PREVIOUS release tree and overlay only what the TOC lists name, so the
lists are an allowlist: a file added to the repo since 2.14.0.9 that
nobody adds to a TOC simply never ships, silently, and every integrity
check still passes. Checksums and all 13 GPG signatures verify on the
current artifacts -- they prove the tarball is intact, not complete.
Adds the seven to unix/TOC.patchable and win32/TOC.src.patchable:
include/mux_format.h, include/mux_nls.h, include/mux_table.h,
include/shacrypt.h, lib/mux_nls.cpp, lib/mux_table.c, lib/shacrypt.cpp.
That is the internationalization, table-formatting and sha-crypt work --
three of this cycle's headline features, named in the build and not
shipped.
The removal lists have the mirror defect. TOC.removed:172 lists
src/timeparser.cpp, but the file sits at lib/timeparser.cpp in the
distribution: it was deleted from the repo in 4884ba3db and the entry
kept the pre-move path, so it has never matched and 56 KB of orphaned
source has propagated forward since. src/modules/Makefile is the same
shape -- the .am and .in are removed, the generated artifact is not.
Both are dead weight rather than build breaks; the stale
src/timeparser.cpp entry is left in place because it costs nothing and
records the pre-move path.
Verified: every build-referenced file that exists now resolves to a TOC
entry, and every TOC entry resolves to a real file. The one remaining
unlisted subsystem is proxy/, which is consistently absent -- no proxy
file ships, none is in any list, and proxy/Makefile.am is not shipped
either, so nothing dangles. Whether that exclusion is intended is a
separate question.
Not verified by rebuilding: producing a corrected tarball needs the
2.14.0.9 reference tree. The lists are correct by construction; the
proof is re-running the audit against freshly built artifacts.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Commit 537b155a2 deleted the dead Hydra-client parser sources but left
references behind: ganl.vcxproj/.filters still compiled the missing
.cpp (hard MSBuild error on Windows), and unix/TOC.patchable +
win32/TOC.src.patchable still listed both files, which aborts
dounix.sh/dowin32.sh (set -e cp of a nonexistent file) at the next
release. Drop the stale references and register the deletions in
TOC.removed/TOC.src.removed so upgraded trees clean up their copies.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- help.txt: Rewrite convtime() help to document all supported formats
(legacy, ISO 8601, European order) with clear grammar descriptions.
Update examples with verified epoch values.
- libmux.vcxproj, .filters: Replace timeparser.cpp with date_scan.cpp
- TOC.patchable (unix, win32): Replace timeparser.cpp with date_scan
- design-date-parser.md: Mark as Implemented, update file layout
- design-libmux-modules.md: timeparser → date_scan in module tables
- functions.cpp: Update fun_convtime comment to describe unified parser
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bump version to 2.14.0.7, update release date to 2026-APR-03,
add new DBT backend files to distribution TOCs, and write CHANGES.md
covering all distributed changes since 2.14.0.6.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add server-side @walk <npc>=<destination> that moves an object one hop
per second along the routed path until arrival, and @patrol <npc>=<rooms>
for continuous waypoint loop movement. Both use the system scheduler
(DeferTask self-rescheduling, same pattern as @cron) and call move_exit()
for full movement side effects.
New route_next_exit() C-level API returns the next-hop exit dbref
directly, avoiding text format/parse overhead for the walk subsystem.
Switches: /stop cancels, /quiet suppresses notifications, /locked
validates exit locks during movement.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add route() softcode function with BFS-based shortest-path routing
over rooms marked NAVIGABLE. The routing table stores only the next-hop
exit for each (source, dest) pair, compressed via diagonal elimination,
adjacent marking, and row redundancy. Lazy rebuild on generation-counter
mismatch triggered by topology changes (@dig, @destroy, @link, @open,
@unlink) and NAVIGABLE flag changes. SQLite schema v10 adds route_nodes,
route_table, route_meta tables for future persistence phases.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- win32/TOC.src.patchable: Add script/muxscript.vcxproj
- win32/TOC.bin.patchable: Add game/bin/muxscript.exe and
game/text/connect_help.txt (was in src TOC but missing from bin)
- dosign.bat: Add muxscript.exe to copy and code-signing loop
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
comsys, engine, exp3, and mail module filter files were present
in the repo and used by the Visual Studio build but missing from
the Win32 source distribution manifest.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The English article rules were never changed by anyone, so hardcode
them into a Ragel-generated DFA (art_scan.rl) instead of parsing
PCRE regexps from netmux.conf at startup. Removes ArtRuleset,
cf_art_rule, and the article_rule config directive.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the naked mux/script/Makefile with a proper Makefile.am so
muxscript builds through the same autotools pipeline as netmux,
stubslave, and muxescape. This ensures it picks up configure-detected
flags (SSL, REALITY_LVLS, etc.) and installs to game/bin automatically.
- Add script/ to SUBDIRS in mux/Makefile.am
- Add script/Makefile to AC_CONFIG_FILES in configure.ac
- Remove mux/script targets from root Makefile (autotools handles it)
- Add script files to unix and win32 source distribution TOCs
- Regenerate autotools files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The rv64blob.h header and softlib.rv64 pre-compiled blob are needed
to build with --enable-jit.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
lua54/ (61/63 files), JIT/DBT engine sources (12 .cpp, 3 .h),
new include/ headers (10 files), and new lib/ sources (3 files)
were all missing from the distribution file lists.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add engine.vcxproj, comsys.vcxproj, mail.vcxproj, exp3.vcxproj to
TOC.src.patchable. Update TOC.bin.patchable to ship engine.dll,
comsys.dll, mail.dll, exp3.dll and drop removed funcs/sample/sum DLLs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comprehensive history document covering the full lineage: MUD1
(Trubshaw/Bartle 1978), AberMUD (Cox 1987), TinyMUD (Aspnes 1989),
TinyMUSH 1.0 (Foard 1990), TinyMUSH 2.0 (1991), PennMUSH (1991+),
TinyMUX 1.x (Passmore 1994), TinyMUSH 3.0 (1999), and TinyMUX 2.x
(Dennis 1998-present). Includes ASCII family tree and references.
Sources: wiki.tinymux.org, Wikipedia MUD/AberMUD/MUSH articles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reflect source tree reorganization (include/, lib/, modules/engine/,
ganl/, sqlite/, announce/) in all 8 unix/ and win32/ TOC files.
Update CHANGES.md with driver/engine split, AST evaluator, PCG64,
@cron, new functions, WebSocket, COM interfaces, and module extraction.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
UPGRADING.md now covers compatible flatfile formats (2.0-2.12),
pre-2.0 conf migration tip, and cross-server conversion via omega.
Remove docs/CONVERSION.md from TOC patchable lists and add to
TOC removed lists.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Step-by-step walkthrough for upgrading from TinyMUX 2.12 or earlier:
backup, export flatfiles, build 2.13, import via db_load, verify,
and start. Covers conf changes, troubleshooting, and ongoing
differences. Referenced from README.md and all TOC files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rename doc entries to .md in TOC.src.patchable and TOC.bin.patchable.
Add old extensionless names to TOC.src.removed and TOC.bin.removed.
Fix Startmux.wsf capitalization in both TOCs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SQLite is the only storage backend now — the CHashFile .dir/.pag path
config options and hash page cache size are unused. Simplify cache_init()
and init_dbfile() to derive the .sqlite path directly from input_database.
Also update TOC manifests for 2.13.0.8 release: add 13 new source files
(SQLite backend, Unicode normalization/grapheme/collation, connect help)
and clear the removed-files lists.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ganl.vcxproj static library project, integrate into netmux.vcxproj
with include paths, linker libs (ws2_32, secur32, crypt32), and project
reference. Update netmux.sln with ganl build configurations. Define
USE_GANL in autoconf-win32.h. Fix context_ typo in telnet_protocol_handler
and clear negotiation debris in connection.cpp. Retarget all vcxproj files
to v145 toolset. Update both unix and win32 TOC distribution files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>