ANetBBS Changelog
Current release: v1.1.15 (September 2026). This file covers v1.0.0
onward, which follows standard semantic versioning — patch releases are
v1.0.1, v1.0.2, and so on. The full internal beta build-number
history (v1.0a1.1 through v1.0b2.239) that got the project to this
release is preserved in
CHANGELOG-beta.md.
v1.1.15 — anetbbs-monitor: fixed missing /usr/local/bin/ shortcut (September 2026)
Fixed a real gap that left anetbbs-monitor reporting "command not found" for every sysop, on both fresh installs and existing ones running update.sh: the internal list of console scripts that get a /usr/local/bin/ shortcut (so a sysop doesn't need the venv's own path on their shell's PATH) was missing anetbbs-monitor entirely — it was added after that list was last updated for anetbbs-cfg's equivalent gap. install.sh also never called this mechanism on a fresh install at all (only update.sh and the separate installer wizard did) and now does.
v1.1.14 — anetbbs-monitor: cfg-launch crash fix, visual redesign (September 2026)
Fixed a crash in anetbbs-monitor's one-key anetbbs-cfg launch (added in v1.1.12): it shelled out to a python -m anetbbs.cfg.app subprocess, which re-resolves Python's module search path from scratch in the child process and inserts the caller's current directory first — if that directory happens to look like an anetbbs path, the wrong thing can get imported instead of the real installed package, crashing with a confusing ImportError. It now calls the same code directly in the already-running process instead, which needs no new path resolution at all.
Gave anetbbs-monitor's dashboard a real visual pass: the activity stats panel is now a proper bordered box with today's figures picked out in color against the totals, a live/idle status indicator on the title bar, and colored hotkey letters in the footer.
v1.1.13 — sysop core-override loader disconnect-handling fix (September 2026)
Fixed a logging/reliability gap in the sysop core-override loader (data/mods/core/<name>.py, used for things like a customized login menu): a caller disconnecting mid-render was being mislabeled as a broken override and logged as an error with a full traceback, then a fallback attempt was made against the same already-dead connection. A normal disconnect during an override now propagates and unwinds the session cleanly, the same way it already does everywhere else in the codebase — a genuinely broken override file (missing function, syntax error, runtime exception unrelated to the connection) still degrades to the stock screen as before.
v1.1.12 — anetbbs-monitor dashboard rework (September 2026)
anetbbs-monitor is now a real dashboard, not just a live node list: a Today/Total activity stats panel (logons, connect time, new users, posts, e-mail, uploads, downloads), a scrollable log viewer for bbs.log that never loads the whole file into memory, one-key access to anetbbs-cfg without leaving the tool, a light/dark theme toggle (shared with anetbbs-cfg, so a choice made in one carries over to the other), and mouse support for selecting nodes and pressing hotkeys on terminals that support it. The live node list and kick functionality are unchanged.
Found and fixed a real gap while building the new stats panel: file_download has been a documented UserActivity event type for a while, but nothing anywhere actually logged one — the only download tracking that existed was a lifetime cumulative counter with no per-day breakdown. All three real download paths (web file downloads, shared file links, and terminal ZMODEM/YMODEM/XMODEM) now log it correctly.
v1.1.11 — DOOR32.SYS fix for more native door types; command-line dropfile-path guidance (September 2026)
Fixed DOOR32.SYS not working for some native door games: the fallback that tells a door to use stdin/stdout instead of a real socket handle (there is no real socket under this BBS's process-launch model) was only being applied to one of four door types that all share the exact same launch mechanism. It now applies to all four.
Documented a real gap found while investigating a different reported hang: passing a drop file's path on a door's command line requires the flag and the path to be two separate arguments (-D %f, with a space) — writing them as one combined argument (-D%f) causes the door's own command-line parser to silently ignore the flag entirely and fall back to guessing at a drop file instead, with no error of any kind. Added guidance directly in the affected admin form field, and in the code, so this doesn't cost the next person a multi-hour debugging session the way it did this time.
v1.1.10 — CI test fix, no functional change (September 2026)
Fixed a test left asserting the old behavior of the previous release's Send InterBBS Message picker fix, which broke the automated test suite (and with it, the Docker image build) without affecting the live BBS itself. No functional changes in this release.
v1.1.9 — Send InterBBS Message: Q/ESC now actually cancel (September 2026)
Fixed the "Send InterBBS Message" BBS/recipient pickers: pressing Q or ESC to back out silently landed in the manual user@host entry prompt instead of actually cancelling, because both outcomes were treated as the same thing internally. Manual entry now has its own dedicated M key at every step of the picker; Q and ESC genuinely cancel the whole send instead.
v1.1.8 — Terminal lightbar readability, echomail/file search, MSP who's-online fix (September 2026)
Found and fixed the real cause of the highlighted row becoming unreadable on several of the terminal lightbar screens added in the previous release: the reverse-video highlight used to mark the selected row doesn't render visibly on some real terminal clients, regardless of what color the row's own text uses. Every affected screen (message boards, echomail networks, the file-area browser, the private-message inbox, the BBS directory browser, and the Inter-BBS instant-message pickers) now cancels the reverse-video highlight on the selected row and draws its own clearly visible marker and color instead, matching a fix already proven correct on the tagline picker.
Fixed the message-board list overrunning 80 columns and getting cut off mid-word at that width — the column-width math never accounted for the thread-count field's own width. Converted the echomail networks list from typing a number to the same arrow-key lightbar as the other list screens, added a message-search hotkey there, and clarified the network-apply hotkey to say what it applies for (a QWK node). Fixed the file browser's status line overflowing 80 columns and wrapping a word in half.
Added search to file areas (by filename or by text in a file's description) and to the terminal BBS directory browser and Inter-BBS IM recipient picker (by name, hostname, sysop, or location), matching the equivalent search already available on the web UI.
Found and fixed the real reason the terminal "who's online" probe kept reporting nobody online at a real, reachable peer BBS: that peer's reply used the opposite column order from what this BBS's own who's-online service produces (a genuine, differently-ordered real-world reply, confirmed by probing it directly), and the parser only recognized its own column order. It now recognizes either.
Private-message reading now goes through the same scrollable ANetView reader already used for message-board threads and echomail, replacing the older page-by-page pager, and now supports replying directly from the reader.
v1.1.7 — Federation directory IP publishing; login-message-scan feedback (September 2026)
Fixed the terminal Inter-BBS IM directory picker still failing to probe federation-network (A-Net) directory entries even after the previous release's hostname-to-IP fallback. Root cause traced further back: the federation hub already captured each peer's real connecting IP address at registration, but never published it in the directory feed it distributes to other BBSes, so nothing ever had an IP on file to fall back to. The hub now publishes that address (kept fresh on every heartbeat, not just initial registration), and the directory picker can actually use it.
Fixed the terminal login-time "scan for new messages?" feature answering with no feedback at all when there was nothing new — it looked exactly like the feature wasn't working. It now always says something, even when the answer is "No new messages," matching classic BBS convention.
Converted six more terminal list screens from typing a number to a real arrow-key lightbar, matching the file-area picker and BBS directory browser: the file listing inside a file area (which previously used N=Next/P=Prev paging — the batch-download and extended-description-view features already existed, this only changes how files get selected for them, via Space to mark and B to download everything marked), the message-board list and its thread list, the private-message inbox, and the Inter-BBS instant-message inbox (reply and delete are now R/D hotkeys against the highlighted message instead of typed R#/D# prefixes).
Added message search to the terminal client — a real gap, not just a UI conversion: there was previously no way to search messages from the terminal at all. Reachable via the new S hotkey on the message-board list, it searches subject and body text across both local message boards and echomail (FidoNet-style network messages), across every board/area the caller can actually access, and opens a matching result into its full thread/area context rather than showing it in isolation.
v1.1.6 — Pre-login "Matrix" connection banner (terminal + web); login redirect fix (September 2026)
Added an optional pre-login "Matrix" connection-options banner, on the classic dial-up BBS idea of a chooser shown before the normal login prompt. Two independent settings in Admin → Settings, both off by default: TERMINAL_MATRIX_ENABLED shows a banner plus a live list of ways to reach the BBS (whichever of Telnet/SSH/Rlogin/PETSCII/FTP/the web terminal are actually enabled) before the Login/New User/Exit menu; WEB_MATRIX_ENABLED shows an equivalent landing page to logged-out web visitors before the home page, shown once per browser session. The terminal banner's art can be fully customized by dropping data/mods/text/matrix.ans or editing the matrix slot from Admin → BBS Menus → ANSI screens, same as the existing welcome/goodbye screens; the connection list itself always reflects live configuration. A sysop who wants a fully custom pre-login page or menu, not just different art, can still use a data/mods/core/login_menu.py or web_landing.py override, which continues to take priority over either toggle.
Fixed a real bug affecting every login-required page on the site, not just the new Matrix banner's own terminal link: after being redirected to log in from a page that requires an account, the login form discarded where the visitor was originally headed and always sent them to the home page afterward instead of back to the page they wanted.
v1.1.5 — Inter-BBS instant messages corrected against real Synchronet behavior (September 2026)
Fixed the terminal Inter-BBS IM directory picker reporting "No reply, or nobody online there" for every BBS in the directory, even ones confirmed online. The web UI's own who's-online probe already falls back to a directory entry's IP address when the hostname alone doesn't resolve or reply; the terminal picker never had that fallback and always gave up after the hostname alone.
Corrected how outbound Inter-BBS instant messages identify their sender, verified directly against Synchronet's own real source. A message with no distinct display name set was showing up on the receiving end with the sender's name doubled (e.g. "Instant Message from StingRay StingRay"), and the BBS name wasn't appearing at all — instead showing the raw sending IP address and a "(no name)" placeholder. Both are now fixed: the field that was duplicating the username is left empty unless there's a genuinely different display name, and the BBS name is now sent in the correct protocol field, which also removes the "(no name)" placeholder entirely.
v1.1.4 — Terminal admin tool scrolling fix; file area descriptions restored; drop file guidance clarified (September 2026)
Fixed the anetbbs-cfg terminal admin tool's editing forms (for example, editing or managing a door game) having no scrolling at all once a form had more fields than fit on a short terminal — content past the visible rows, including the Save/Cancel row itself, simply never rendered, with no way to reach it on a fixed-size SSH session. Its list screens already scrolled correctly; the same scroll-into-view behavior has now been added to every form and menu screen too.
Restored the ability to set a description for each file area from Admin → File Areas. The field was still present in the database and already shown to callers browsing the web file area listing, but had dropped out of the admin page's own create and edit forms, so a sysop had no way left to actually enter or change one.
Reviewed the guidance shown next to the Drop File Type field on the door game admin page, against the real DOOR32.SYS specification and this project's own OpenDoors-based door games. The original note was accurate as far as it went, but has been clarified: RDQ3, ANetCHESS, and ANetCRAFT are unaffected by the caveat described there, since each already carries its own fix for the exact sentinel involved, and only CHAIN.TXT and BBSDEV.DRP currently report a caller's real terminal size — the other drop file types, DOOR32.SYS included, have no such field in their own spec at all.
v1.1.3 — Sysop-controlled password recovery; MSP directory in the terminal; MRC mentions fixed in every theme (September 2026)
Password recovery is no longer a fixed, mandatory 3-security-question step. A sysop can now edit or retire individual questions, add new ones, and turn the whole security-question step on or off from Admin → Users → Password Recovery in the web UI — and that same control has also been added to the anetbbs-cfg terminal admin tool (Users & Security → Security Questions / Password Recovery Settings), so it's no longer a web-only capability. Email-based recovery already existed underneath (a reset link is sent automatically whenever SMTP is configured), but is now shown explicitly as its own recovery method on that same settings page, alongside the security-question toggle. Turning the security-question step off skips it entirely at registration and during a password-reset request, landing straight on a neutral "check your email" confirmation — the exact same page and wording whether or not the entered account actually exists, preserving the anti-enumeration protection that recovery flow already relied on.
Native SSH/telnet users can now browse the InterBBS (MSP) directory of known BBSes — a new V) BBS Directory entry on the main menu, using the same scrollable lightbar list already used throughout the rest of the terminal UI. Selecting an entry shows a full detail screen (sysop, location, software and version, MSP/SYSTAT ports, last seen, and any notes) rather than jumping straight into composing a message; sending a message still has its own directory picker built in. Previously this was only browsable from the web UI.
Fixed the terminal MRC chat mentions counter staying stuck at 00 in every theme except the default one (original/minimal/bitchx/2leet4u/least — the five "Mystic BBS"-style layouts). Those themes render through a separate status-bar drawing path that never actually wrote the live count into the screen position their own bundled art reserves for it, so it displayed whatever the static border art happened to bake in there and never changed no matter how many real mentions came in.
v1.1.2 — Security/audit pass on the new umrc-client support; install docs reorganized (September 2026)
A full review of the native umrc-client support added over the last couple of releases found and fixed two real gaps in its raw-TCP listener: the newline-delimited packet read loop had no cap on buffered bytes while waiting for a line terminator (the same unbounded-buffer bug class already closed elsewhere in this project — BinkP, the MRC↔IRC bridge, both IRC clients, QWK — just missed here since this listener is brand new), and the notice-expiry task added in the previous release wasn't tracked or cancelled on disconnect the way every other background task in that code already is. Both fixed and covered by dedicated regression tests. Neither was reachable by anything beyond the local box under this feature's loopback-only default.
Documentation pass alongside the review: docs/PORTS.md, docs/SECURITY.md, and the Docker Compose walkthrough now cover the umrc-client listener's port and security posture, which had been missed when that feature first landed; a stale "untested" note on TradeWars support was corrected (it's been launch-confirmed for a while); and a few lingering "nothing's published to a registry yet" lines were cleaned up in the Docker docs — pre-built images have actually been published on every release for a long time.
Also reorganized how the README and Quick Start guide present install options — a short table up top now points straight at whichever path fits (Linux with sudo, Linux without root, Docker, or Windows) instead of only surfacing the Linux path by default.
v1.1.1 — MRC login/logout alert no longer sticks on screen inside chat (September 2026)
Fixed a bug where the classic " X just logged in/out " alert (shown wherever a caller currently is in the BBS when someone else logs in or out) could stay on screen indefinitely once shown inside terminal MRC chat, instead of clearing on its own. Root cause: that alert writes directly into whatever the caller's screen is currently showing, but MRC chat manages its own fixed status-bar/scroll-region layout — the raw write landed somewhere MRC's own screen-drawing logic didn't know about, so it only ever got papered over by the next unrelated bit of chat activity, which during a quiet room could take a while. Now integrated into MRC chat's own display properly and auto-clears itself 30 seconds after it appears, regardless of how quiet the room is.
Also confirmed both Windows install paths in docs/INSTALL-WINDOWS.md (WSL2 and Docker Desktop) end-to-end on a real Windows machine — that page no longer carries its earlier "unconfirmed" caveat.