ANetBBS Changelog
Versions are internal build numbers. Public releases are tagged
separately. Current release: v1.0b2.33 (July 2026). Full release: August 1 2026.
v1.0b2.2 — Mode-aware sub-menu art + stock chat/game_center files (July 2026)
- FEATURE:
load_menu_ansi(slot, mode)is now mode-aware. Wide terminals check{slot}132.ans; ASCII terminals check{slot}.asc. Both fall back toanetbbs/screens/menus/bundled stock art before returning None. - FEATURE:
chatandgame_centermenus now ship with stock CP437/ANSI art for all three modes (.ans,.asc,132.ans). - FIX: All
load_menu_ansi()callers passself.session.term_mode.
v1.0b2.1 — Seed stock screens to data/text/ on install/update (July 2026)
- FIX:
update.shnow seedsanetbbs/screens/→data/text/andanetbbs/screens/menus/→data/text/menus/usingcp -n(no-overwrite). Sysop files are never touched; missing files are filled in on every update. - FEATURE:
anetbbs/screens/menus/shipsmain.ans,main.asc,main132.ansas stock main menu art.
v1.0b2.0 — Stock slot screens as real files (July 2026)
- FEATURE:
welcome,newuser,goodbyenow ship as.ans/.asc/132.ansinanetbbs/screens/. All three terminal modes get a proper stock screen._show_ansi_screenfalls back to these before returning nothing. - REMOVE: Inline
_stock_ascii_screen()replaced by the file-based system.
v1.0b1.9 — ASCII mode: strip ANSI from all writes (July 2026)
- FIX:
write()now strips ANSI escape sequences whenterm_mode == 'ascii', covering all hardcoded color strings (bot-gate, security questions, new-user questionnaire, post-login notifications, sysop broadcasts, etc.) without needing per-call changes.
v1.0b1.8 — ASCII mode login screen fix (July 2026)
- FIX:
login_screen()rendered the 1/2/3 login menu with hardcoded ANSI escape codes regardless of terminal mode. ASCII-mode connections now get a plain+---+box-draw login menu with no escape codes.
v1.0b1.7 — Telnet TTYPE second-round fix (July 2026)
- FIX: Telnet TTYPE detection was missing the second round of the RFC 1091 handshake. After the client sends
WILL TTYPE, the server must sendIAC SB TTYPE SEND IAC SEbefore the client reports its type string.init_session()now sends that request and reads the response, soTERM=dumb(and other dumb-terminal types) correctly trigger ASCII mode.
v1.0b1.6 — Terminal detection fixes: SSH PTY size + telnet NAWS drain (July 2026)
- FIX: SSH sessions now read
process.term_typeandprocess.term_sizefrom asyncssh immediately after session creation soterm_modeis correct for SSH logins. - FIX: Telnet NAWS/TTYPE responses are now drained and parsed after the negotiation settle period instead of being discarded by
_buffer.clear(). - FIX: Negotiation settle time increased 100ms → 300ms.
v1.0b1.5 — Multi-terminal mode: ASCII + widescreen detection (July 2026)
- TERMINAL: Telnet NAWS and TTYPE subnegotiation responses are now parsed (previously negotiated but discarded). Window size and terminal type are stored on the session.
- TERMINAL: New
term_modeproperty:wide(cols ≥ 132),ansi(default),ascii(dumb/TTY). - TERMINAL:
_show_ansi_screenpicks{slot}132.ansfor wide,{slot}.ascfor ASCII (each falling back gracefully). DB ANSI content is skipped in ASCII mode; stock plain-text fallbacks cover welcome/newuser/goodbye. - TERMINAL: Menu engine uses
{name}132.ans/{name}.asc/{name}.ansindata/text/menus/. Auto-render: ASCII gets plain-text layout (no escape codes), wide gets 128-column ANSI layout. - TERMINAL: Pause prompt strips ANSI color for plain-text screens.
v1.0b1.4 — Terminal MRC /me fix (June 2026)
- FIX: Terminal MRC
/mewas sending IRC CTCP format (\x01ACTION ...\x01), which the MRC bridge doesn't recognise — it displayed asACTION andwhatyoutypedinstead of* Nick action. Changed to* text(matching the web client) so the bridge formats it correctly.
v1.0b1.3 — Auto-update beta version fix (June 2026)
- FIX:
deploy/run_upgrade.shrejected beta version strings (v1.0b1.N) with "does not match expected vX.YaZ.NN form" — the validation regex only accepted alpha (a) phase markers. Updated to accept[ab]. - FIX:
admin.pyrelease-notes parser had the same alpha-only pattern for finding section boundaries in RELEASE.md.
v1.0b1.2 — Message viewer position indicator fix (June 2026)
- TERMINAL: ANView message viewer status bar now shows the last visible line instead of the first.
Ln:29/29 ENDat the bottom of a 29-line message makes it clear you have reached the end; previouslyLn:8/29looked like line 8 of 29 with more to scroll.
v1.0b1.1 — Beta 1 Release (June 2026)
Milestone: first public Beta. Version scheme changes from v1.0a2.NNN (alpha) to v1.0b1.NNN (beta). The auto-update scanner now recognises both a and b phase markers; beta is ranked higher than any alpha of the same major/minor release so existing installs will detect this as a newer version.
Includes all features and fixes through v1.0a2.232:
- Echomail area list and message list: arrow-key lightbar (no more -- more --; 300-message load)
- RSS terminal: CP437 sanitiser; pager exit keys corrected; PgUp/PgDn SyncTERM CSI fix (ESC[V/ESC[U)
- Message viewer status bar: Up/Dn label matches actual key behaviour
- QWK inbound: blank messages (header-only records, kludge-only bodies) are skipped instead of stored
v1.0a2.232 — Message viewer hint bar: Up/Dn label (June 2026)
- TERMINAL: ANView message viewer status bar now shows
Up/Dninstead ofPgUp/PgDn— arrow keys are what scroll the message; label now matches reality
v1.0a2.231 — PgUp/PgDn SyncTERM CSI sequence fix (June 2026)
- TERMINAL: Fixed PgUp/PgDn keys in all arrow-key lightbars and the RSS pager — SyncTERM ANSI mode sends
ESC[V(PgUp) andESC[U(PgDn) which were not in the CSI lookup table inread_key_arrow(); they fell through toreturn 'ESC'which quit the lightbar. Addedb'V'→PGUPandb'U'→PGDNto the lookup table insession.py.
v1.0a2.230 — Echomail lightbar + RSS CP437/PgKey fixes (June 2026)
- TERMINAL: Echomail area list replaced with smooth arrow-key lightbar (Up/Dn/PgUp/PgDn/Home/End); no more
-- more --page breaks - TERMINAL: Echomail message list replaced with arrow-key lightbar; removed 30-message hard limit (now loads up to 300)
- TERMINAL: RSS article pager no longer exits on ESC (only Q/Enter/Ctrl-C); eliminates spurious exits from unrecognized key sequences
- TERMINAL: Fixed root cause of PgUp/PgDn "exits RSS" bug — trailing
\nfrom CR+LF Telnet Enter was being consumed by the pager as an ENTER keystroke (added\ndiscard inread_key_arrow) - TERMINAL: RSS article body, title, author, and feed name are now passed through
_sanitize_cp437()before display — common Unicode typographic chars (smart quotes, em-dash, ellipsis, bullet, etc.) map to CP437-safe equivalents instead of showing as? - TERMINAL: RSS item-list and river lightbar rows also sanitize titles through
_sanitize_cp437()for consistent display