ANetBBS Changelog
Versions are internal build numbers. Public releases are tagged
separately. Current release: v1.0b2.58 (July 2026). Full release: August 1 2026.
v1.0a2.224 — Terminal compose echomail: network-first selection (June 2026)
- UX: Terminal echomail compose (
E → C) now mirrors the reading flow — choose a network,
then choose an area within that network, then compose. Previously showed a flat list of
all areas across all networks. - Areas in the compose picker are grouped by category with
── Group ──headers, same as
the read flow.B=backreturns to the network chooser;Qcancels at any point. - Access controls (sysop-only, min_access_level) applied to both the network area-count
display and the per-network area list.
v1.0a2.223 — ANotherNetwork QWK node self-registration; terminal echomail crash fix (June 2026)
- FIX: Terminal echomail crash "Menu action failed" —
FG['cyn']key does not exist;
corrected toFG['cyan']in both the network chooser and per-network area list. - FEATURE: QWK node self-registration via BBS terminal (Option B).
From E → Echomail Networks, sysops type A to apply for an ANotherNetwork QWK node.
Wizard collects BBS name, desired packet ID (validated unique), sysop name, email,
BBS address, and notes. Saves as a pendingQWKNodeRequest. - FEATURE: Hub admin review queue at Admin → Hub → Node Requests.
Approve creates aQWKNodewith a 16-char auto-generated password.
Deny with optional reason. Hub dashboard shows pending count badge. - FEATURE: Approved/denied status shown to applicant on their next visit to the
echomail networks terminal screen, including credentials for approved nodes. - MODEL: New
QWKNodeRequesttable (auto-migrated).
v1.0a2.222 — Echomail network-first browsing; web + terminal (June 2026)
- UX:
/echomail/is now a network chooser — one card per network with type, area count, unread badge. - NEW:
/echomail/network/<id>— per-network area list grouped by category; area cards with
unread count, message count, quick Enter / Next Unread / Compose buttons. - FIX: "All Areas" back button on area pages replaced with "← [Network Name]" to the network view.
- TERMINAL: Echomail menu now shows network list first; selecting a network shows areas grouped by
category with── Group ──headers;B=backreturns to network list.
v1.0a2.221 — Echomail bulk area management; network-first UI (June 2026)
- UX: Echomail "Manage Areas" now shows a network chooser first (card grid with area stats).
- NEW: Per-network area view — areas grouped by category, individual toggles and edit/delete.
- NEW: Bulk action toolbar — select All/None/Active/Subscribed, then apply one action to all:
Set Active/Inactive, Subscribe/Unsubscribe, Set Active+Subscribed, Set/Clear Sysop-Only,
Set Access Level, Delete Selected. - FIX: All per-row and per-network actions (toggle, rescan, AreaFix, QWK quick-add, bulk import)
now redirect back to the correct network's area list rather than the global chooser. - MOVED: AreaFix quick panel and QWK quick-add panel now live in the per-network view.
v1.0a2.220 — ANotherNetwork QWK/FTP seeded; 26 conference areas (June 2026)
- FEATURE: ANotherNetwork (QWK) seeded alongside BinkP — FTP transport, hub ID
ANET.
FTP to bbs.a-net.fyi with your packet ID: download ANET.qwk, upload .rep. - NEW: FTP server authenticates QWK nodes by packet_id/password (Hub Management → QWK Nodes).
QWK packet generated fresh on login; .rep processed + fanned out to BinkP nodes on upload. - NEW:
echomail/qwk_hub_ftp.py— packet builder, REP importer, tosser integration. - EXPANDED: ANotherNetwork areas grown from 5 to 26 across 8 named groups (General, Technology,
BBS Scene, Retro, Hobby, Trading, Data, SysOp, Test). - MODEL:
EchoArea.categoryfield added (VARCHAR 80, nullable); auto-migrated.
v1.0a2.219 — ANotherNetwork Zone 1200 seeded; nodelist endpoint (June 2026)
- FEATURE: ANotherNetwork (Zone 1200) seeded on every fresh install.
Five echo areas pre-created: ANN.GENERAL, ANN.SYSOP, ANN.TEST, ANN.BBSDEV, ANN.RETRO.
Network is inactive by default; sysop enters their assigned address and password
to activate. Hub:bbs.a-net.fyiat1200:1/1. - NEW: Public nodelist endpoint at
/admin/echomail/hub/nodelist— serves the
current ANotherNetwork NODELIST (FTS-5000 format, plain text) without requiring login.
Filename:NODELIST.NNN(day of year). Includes all active registered BinkP nodes.
v1.0a2.218 — Hub mode: BinkP hub + QWK hub (June 2026)
- FEATURE: ANetBBS can now act as an echomail hub (not just a leaf node).
- NEW: BinkP hub — register downstream nodes; per-node echo area subscriptions;
outbound hold queue fanned out to subscribers on every BinkP connection. - NEW: Areafix robot now handles per-node subscriptions for downstream peers
separately from the globalEchoArea.is_subscribedflag. - NEW: QWK hub — HTTP endpoints for node download (
/qwkhub/<id>.qwk) and
upload (/qwkhub/<id>.rep); per-node conference subscriptions with
high-water mark tracking; configurable hub system ID viaQWK_HUB_IDsetting. - NEW: Hub tosser (
echomail/tosser.py) — automatic fan-out to downstream
BinkP nodes for all inbound messages (BinkP listener, QWK hub, upstream poll). - NEW: Admin → Echomail → Hub Management — full CRUD for BinkP and QWK nodes,
area subscriptions, catchup, hold queue viewer. - NEW:
generate_nodelist()inechomail/nodelist.pyfor hub operators. - Admin navbar: new "Hub Management" link under Echomail.
v1.0a2.217 — Pre-beta audit: bug fixes + doc corrections (June 2026)
- FIX: Private message bodies were always blank — template referenced wrong model
field name. PM read view, thread sidebar previews, and Quote Reply pre-fill all
affected. Fixed in template and compose view. - FIX: File area storage path no longer visible to regular users; shown to admins only.
- FIX: Synchronet compat doc table now scrolls horizontally on narrow screens instead
of overflowing the page container. - DOC: Install commands corrected to current format throughout all doc pages.
- DOC: Stale draft notes and outdated version references corrected.
- DOC: Raspberry Pi 3 confirmed working; hardware table and recommendations updated.
- DOC: DSR references removed from Image Galleries doc.
- DOC: Network list updated (tqwNet + zer0net).
- DOC: Incorrect systemd service name corrected in PORTS.md.
v1.0a2.216 — Clean shutdown fix + socket.send() suppression (June 2026)
- FIX:
anetbbsservice no longer gets SIGKILLed by systemd on restart. SSH keepalive
was awaitingcreate_future()(never resolves) so SIGTERM could not stop it. It now
waits on a properasyncio.Eventthat the signal handler sets — process exits cleanly
within ~1 second of SIGTERM. - FIX:
socket.send() raised exceptionjournal spam suppressed. pyftpdlib uses asyncore;
its WARNING-level log fires on every SCC health-check probe (connect-and-close to port 21).
asyncorelogger now set to ERROR in main.py alongside the existing asyncssh suppression.
v1.0a2.215 — BinkP service + AKA admin move (June 2026)
- FR: BinkP inbound listener (
anetbbs.echomail.binkp_server) now installed as a
separate systemd service (anetbbs-binkp), visible in the Service Control Center
with port probe on 24554, restart/stop/start buttons, and journal log access. - FR: FTN AKA management moved from the profile dropdown to Admin → Echomail config.
Accessible via the "FTN AKAs" button on the Echomail Admin dashboard. The old
/profile/akasURL redirects to the new location.
v1.0a2.214 — HACKERS theme: secret "Hack the Planet" easter egg modal (July 2026)
- HACKERS (1995) theme: "HACK THE PLANET" in the navbar is now a clickable secret link.
Opens a tribute modal with the full crew roster (Zero Cool, Acid Burn, Crash Override,
Cereal Killer, Lord Nikon, Phantom Phreak, The Plague), iconic movie quotes, a heartfelt
tribute paragraph, and a typewriter terminal that types "HACK THE PLANET / ACCESS GRANTED".
Rainbow-animated title, lime-green crew handles, blinking cursor. Closes with [ LATER, HACKER ].
v1.0a2.213 — Two epic themes: VOID SIGNAL + HACKERS (1995) (July 2026)
- New built-in theme: VOID SIGNAL ◈ — Triple neon (electric green + cyan + magenta) on
pure black. Full-page CRT scanlines, moving phosphor beam sweep, animated brand glitch,
cycling card border stripe, neon glow buttons, animated rainbow footer sweep line. - New built-in theme: HACKERS (1995) ◈ — Neon violet + lime + cyan on black. For those
who ride the information superhighway. Rainbow cycling navbar border, full rainbow brand
glitch animation, rainbow card top stripe, rotating footer sweep, "HACK THE PLANET"
navbar watermark. Orbitron font, all-caps labels throughout. - Both themes seeded automatically on first run / upgrade — no manual step needed.
- Base template now supports an extended stylesheet marker (
--theme-stylesheet) in any
theme's CSS variables, enabling full layout/animation overrides beyond color vars.
v1.0a2.212 — Fix casino wallet saves; fix stale door game sessions (July 2026)
- Casino wallet saves now work: CSRF token was being read from a cookie that doesn't
exist (token lives in<meta name="csrf-token">). Every POST was silently rejected with - All 4 casino templates fixed.
- Door game WebSocket disconnect now calls
terminate_session()so sessions end when
the browser tab closes or disconnects. - On startup, any game sessions still marked
activefrom before the previous restart are
automatically markedstale(in-memory PTY state is gone after restart). - Admin → Game Sessions now has a "Terminate All" button for bulk cleanup.
v1.0a2.211 — Web casino games: persistent wallet + weekly reset + leaderboard (July 2026)
Blackjack, Slots, Video Poker, and Hold'em now have a persistent wallet. Balance
carries between sessions and resets every Monday. If you hit zero, play locks until
the next weekly reset. Peak balance posts to the leaderboard. Starting amounts are
configurable per-game in Admin → Settings (CASINO_BLACKJACK_START,
CASINO_SLOTS_START, CASINO_VIDEOPOKER_START, CASINO_HOLDEM_START).
v1.0a2.210 — Fix upgrade checker error when REGISTRY_URL is not configured (July 2026)
Admin → Upgrades no longer shows a MissingSchema error when REGISTRY_URL is not set. It now shows "upstream not configured" instead.