ENiGMA½ BBS Software
  • JavaScript 99.1%
  • Shell 0.4%
  • PEG.js 0.2%
  • HTML 0.2%
Find a file
Lars Vonhof-Hunold 2d489bd100
fix(fse): redraw editor footer after init so static hints aren't lost (#706)
During FSE init the footer art is displayed, then mciReady renders the
body MultiLineEditTextView over the footer row (_footerStartRow ==
header.height + body.height, i.e. the body's last row). The footer is
never redrawn afterward, so its static art text (e.g. the "ESC : menu"
hint next to %SB1) is painted over and stays invisible until a later
action triggers a footer redraw (such as closing the find prompt).

Re-render the footer once after init in edit mode, using the same path
as _closeFindPrompt (switchFooter + _returnFocusToBody). View-mode
footers are unaffected since they use redrawn views.

Fixes #705

Co-authored-by: Lars Vonhof-Hunold <lars@vonhof-hunold.de>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 18:25:58 -06:00
.devcontainer Sync up with master 2023-10-11 19:52:21 -06:00
.github fix: bump Ruby version to 3.1 in Jekyll deploy workflow (#2) 2026-02-26 15:45:05 -05:00
.husky Bump version 2025-09-23 19:08:26 -06:00
.vscode Sync up with master 2023-10-12 20:40:57 -06:00
art Add a user status config module (#696) 2026-05-20 13:04:38 -06:00
config ActivityPub Revamp (#668) 2026-04-20 16:47:07 -06:00
core fix(fse): redraw editor footer after init so static hints aren't lost (#706) 2026-06-22 18:25:58 -06:00
dev_util ActivityPub Revamp (#668) 2026-04-20 16:47:07 -06:00
docker Added missing change directory 2023-10-15 20:43:31 +00:00
docs Add v86 multi-node shared disk support (#698) (#700) 2026-06-03 21:40:43 -06:00
gopher Add gopher/README 2020-11-27 01:03:12 -07:00
misc Fixes + missing config 2026-06-03 20:31:20 -06:00
mods Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs 2020-06-03 20:53:46 -06:00
test Add v86 multi-node shared disk support (#698) (#700) 2026-06-03 21:40:43 -06:00
util First pass formatting with Prettier 2022-06-05 14:04:25 -06:00
www Retro style default profile, constant cleanup, some DRY, etc. 2023-01-29 16:52:01 -07:00
.dockerignore No need to copy the ephemeral directories 2023-08-26 20:03:48 -05:00
.gitattributes Use binary for ansi files, not CRLF 2026-04-15 15:29:26 -06:00
.gitignore ActivityPub Revamp (#668) 2026-04-20 16:47:07 -06:00
.lintstagedrc.json Added json to list of files to update 2023-01-13 09:23:03 -06:00
.prettierignore First pass formatting with Prettier 2022-06-05 14:04:25 -06:00
.prettierrc.json First pass formatting with Prettier 2022-06-05 14:04:25 -06:00
autoexec.sh autoexec.sh environment enhancement 2024-12-04 10:47:23 -05:00
CONTRIBUTING.md View system & FSE Revamp #1 (#641) 2026-03-31 18:52:05 -06:00
DEV.md View system & FSE Revamp #1 (#641) 2026-03-31 18:52:05 -06:00
eslint.config.mjs Pretty, fix up some types 2025-02-23 14:07:35 -07:00
LICENSE.TXT Update copyright 2026 2026-01-18 18:22:50 -07:00
main.js View system & FSE Revamp #1 (#641) 2026-03-31 18:52:05 -06:00
mise.toml Set Python to just 3.x 2025-09-22 21:17:17 -06:00
mkdocs.yml * Some doc changes 2015-11-20 11:56:57 -07:00
oputil.js * Split out oputil stuff into modules based on <command> 2017-02-15 20:27:16 -07:00
package-lock.json Art display fixes (#689) 2026-05-12 11:04:57 -06:00
package.json Official RESTful API v1 (#685) 2026-05-11 13:46:10 -06:00
README.md Native Binkp support (#682) 2026-05-03 18:28:06 -06:00
TROUBLESHOOTING.md Organized and updated upgrade docs 2023-03-19 13:39:21 -06:00
UPGRADE.md Add v86 multi-node shared disk support (#698) (#700) 2026-06-03 21:40:43 -06:00
watch.sh NodeJS Upgrade and watch.sh +x fix 2025-02-22 19:32:31 -05:00
WHATSNEW.md Add v86 multi-node shared disk support (#698) (#700) 2026-06-03 21:40:43 -06:00

ENiGMA½ BBS Software

ENiGMA½ BBS

ENiGMA½ is a modern BBS software with a nostalgic flair!

Features

Below are just some of the features ENiGMA½ supports out of the box:

  • Multi platform — Anywhere modern Node.js runs likely works (known to work under Linux, FreeBSD, OpenBSD, macOS and Windows)
  • Unlimited multi node support
  • Highly customizable via HJSON based configuration, menus, and themes in addition to JavaScript based mods
  • SQLite storage of users, message areas, etc.
  • Strong PBKDF2 backed password encryption.
  • Support for 2-Factor Authentication with One-Time-Passwords
  • Structured Bunyan logging!
  • Telnet, SSH, and both secure and non-secure WebSocket access built in! Additional servers are easy to implement
  • Built-in web server with HTTP(S) support — powers temporary download URLs, file browsing, and more
  • CP437 and UTF-8 output with wide character support — CJK, Hangul, fullwidth forms, and similar scripts display and edit correctly
  • SyncTERM style font support. Display PC/DOS and Amiga style artwork as it should be! In general, ANSI-BBS / cterm.txt / bansi.txt are followed for expected BBS behavior.
  • Baud emulation. View ANSI like the block gods intended.
  • Full SAUCE support.
  • Renegade style pipe color codes.
  • MCI support for lightbars, toggles, input areas, and so on plus many other bells and whistles
  • Message networks with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export, and MRC (Multi-Relay Chat)
  • Native BinkP/1.1 mailer — built-in inbound listener and outbound caller for FTN networks. No external binkd required; outbound mail ships immediately on export ("crashmail"), and a configurable pull cycle keeps echo mail flowing in from quiet hubs.
  • Internet mail — send and receive email directly from the BBS private message system via IMAP/SMTP. See Internet Mail
  • ActivityPub / Fediverse (experimental) — federated messaging with WebFinger, NodeInfo2, actor profiles, and common ActivityPub object types; PNG avatars with auto-generated defaults
  • Message bases exposed via Gopher and NNTP content servers
  • Gazelle (🪦) inspired File Bases including fast fully indexed full text search (FTS), #tags, and legacy X/Y/Z modem support
  • Upload processor supporting FILE_ID.DIZ and NFO extraction, year estimation, and more!
  • Door support including common dropfile formats for legacy DOS doors. Built in BBSLink, DoorParty, and Exodus!
  • Native x86/DOS door emulation via v86 — run classic DOS BBS doors (LORD, PimpWars, TradeWars, etc.) directly inside ENiGMA½ with zero external dependencies. No QEMU, DOSBox, or DOSEMU required. Includes oputil fat for managing FreeDOS disk images and oputil v86 for an interactive browser-based DOS desktop. See Local Doors — v86.
  • Z-Machine interactive fiction — run Infocom classics (Zork, Colossal Cave, and hundreds more from the IF Archive) natively in Node.js. No external emulator required. Supports Z-Machine versions 3, 4, 5, and 8. See Z-Machine Door.
  • Full Screen Editor (FSE) with ANSI art support, real-time cursor/mode indicators, inline find/search (Ctrl-F), file upload to body, and a fully modernized view engine
  • A remote accessible Waiting For Caller (WFC)!
  • Expandable achievement system — BBSing gamified!

...and much much more. Please check out the issue tracker and feel free to request features (or contribute!) features!

Documentation

Browse the docs online. Be sure to checkout the /docs/ folder as well for the latest and greatest documentation.

Installation

On most *nix systems simply run the following from your terminal:

curl -o- https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh | bash

Please see Installation Methods for Windows, Docker, and so on...

Donating

If you feel the urge to donate, you can do so here

Donate using Liberapay

Support

Terminal Clients

ENiGMA has been tested with many terminals. However, the following are suggested for BBSing:

Some Boards

Special Thanks

(in no particular order)

...and so many others! This project would be nothing without the BBS and art scene communities!

Star History Chart

License

Released under BSD 2-clause. See LICENSE.TXT