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 to anetbbs/screens/menus/ bundled stock art before returning None.
  • FEATURE: chat and game_center menus now ship with stock CP437/ANSI art for all three modes (.ans, .asc, 132.ans).
  • FIX: All load_menu_ansi() callers pass self.session.term_mode.

v1.0b2.1 — Seed stock screens to data/text/ on install/update (July 2026)

  • FIX: update.sh now seeds anetbbs/screens/data/text/ and anetbbs/screens/menus/data/text/menus/ using cp -n (no-overwrite). Sysop files are never touched; missing files are filled in on every update.
  • FEATURE: anetbbs/screens/menus/ ships main.ans, main.asc, main132.ans as stock main menu art.

v1.0b2.0 — Stock slot screens as real files (July 2026)

  • FEATURE: welcome, newuser, goodbye now ship as .ans / .asc / 132.ans in anetbbs/screens/. All three terminal modes get a proper stock screen. _show_ansi_screen falls 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 when term_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 send IAC SB TTYPE SEND IAC SE before the client reports its type string. init_session() now sends that request and reads the response, so TERM=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_type and process.term_size from asyncssh immediately after session creation so term_mode is 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_mode property: wide (cols ≥ 132), ansi (default), ascii (dumb/TTY).
  • TERMINAL: _show_ansi_screen picks {slot}132.ans for wide, {slot}.asc for 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}.ans in data/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 /me was sending IRC CTCP format (\x01ACTION ...\x01), which the MRC bridge doesn't recognise — it displayed as ACTION andwhatyoutyped instead 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.sh rejected 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.py release-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 END at the bottom of a 29-line message makes it clear you have reached the end; previously Ln:8/29 looked 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/Dn instead of PgUp/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) and ESC[U (PgDn) which were not in the CSI lookup table in read_key_arrow(); they fell through to return 'ESC' which quit the lightbar. Added b'V'PGUP and b'U'PGDN to the lookup table in session.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 \n from CR+LF Telnet Enter was being consumed by the pager as an ENTER keystroke (added \n discard in read_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