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=back returns to the network chooser; Q cancels 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 to FG['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 pending QWKNodeRequest.
  • FEATURE: Hub admin review queue at Admin → Hub → Node Requests.
    Approve creates a QWKNode with 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 QWKNodeRequest table (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=back returns 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.category field 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.fyi at 1200: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 global EchoArea.is_subscribed flag.
  • 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 via QWK_HUB_ID setting.
  • 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() in echomail/nodelist.py for 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: anetbbs service no longer gets SIGKILLed by systemd on restart. SSH keepalive
    was awaiting create_future() (never resolves) so SIGTERM could not stop it. It now
    waits on a proper asyncio.Event that the signal handler sets — process exits cleanly
    within ~1 second of SIGTERM.
  • FIX: socket.send() raised exception journal spam suppressed. pyftpdlib uses asyncore;
    its WARNING-level log fires on every SCC health-check probe (connect-and-close to port 21).
    asyncore logger 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/akas URL 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 active from before the previous restart are
    automatically marked stale (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.