Releases: ViSiON-3/vision-3-bbs
Release list
Vision/3 Bundle v0.6.1
Vision/3 Full Distribution v0.6.1
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
WFC console security hardening, from a security audit of the console and its
admin channel, plus an expanded WFC sysop guide.
Waiting-For-Caller console
- Terminal escape injection closed: caller handles are stripped of control bytes before the WFC TUI renders them (node table, event feed, details view), and handles with control characters are rejected at registration. A hostile handle could previously replay escape sequences — title changes, screen clears — into the sysop's terminal. Note: the sanitization is client-side, so remote sysops need this release's rebuilt
wfcbinary to pick it up. - Revoked admins are disconnected live: open wfc-admin sessions re-check authorization every 30 seconds and drop when it no longer holds (WFC access disabled, user demoted or banned). Removing a public key still requires a BBS restart to take effect; the security guide documents this.
- Refresh requests are rate-limited to the configured tick interval, so a compromised admin key can no longer flood the CPU and logs with forced snapshot rebuilds.
- Unknown public-key offers are logged (debug level) with their SHA256 fingerprint for auditing.
Docs
- WFC sysop guide expanded: console functions reference, key generation → transfer → registration walkthrough, auth troubleshooting, and an updated security model (re-authorization window, revocation caveat, what co-sysop-level admins can see).
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh (Unix) / setup.ps1 + setup.bat (Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 Bundle v0.6.0
Vision/3 Full Distribution v0.6.0
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
V3Net node management: hubs that don't auto-approve subscribers can now
approve, ban, and remove nodes entirely from the config editor — no database
surgery or hub restart required.
V3Net
- Node Management for hub-hosted networks: press N on a hosted network in the config editor to open a node list showing each subscriber's ID, BBS details, status, and join date — with approve, ban, unban, and delete (with confirmation) actions. Requests are keystore-signed and take effect on the live hub immediately, so a pending node can start polling without a BBS restart. (Previously a hub with
autoApprove: falseleft registrations stuck in pending with no approval path.) - New hub endpoints back the screen (operator-only, signed): list nodes plus approve/ban/unban/remove, with guards against self-lockout and invalid status transitions. Banned nodes are refused at authentication.
- New "Managing Subscriber Nodes" section in the sysop V3Net configuration guide.
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh (Unix) / setup.ps1 + setup.bat (Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 Bundle v0.5.0
Vision/3 Full Distribution v0.5.0
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
FTN wizard nodelist lookup with hub autofill, smarter newscan defaults,
conditional menu art regions, extended-character input at every prompt, and a
security fix closing an SSH login path for deleted users.
FidoNet / FTN
- Nodelist lookup in the FTN Setup Wizard: after entering your FTN address, a new Node Lookup row downloads the network's nodelist, finds your node and its uplink hub, and autofills Hub Address / Hostname / BinkP Port with real values instead of registry defaults. Brand-new nodes not yet in the weekly nodelist still get their hub inferred from the net's Host/Hub lines.
- A missing
binkd.confnow self-heals everywhere: both the config editor and the BBS regenerate it from your JSON configuration at startup, so deleting it (or a fresh restore without it) no longer strands the mailer. A blank sysop name no longer produces a config the mailer rejects as a template. - Duplicate FTN echo tags within a network are now rejected when adding or editing areas (previously the second area silently shadowed the first, and inbound echomail for that tag could switch destinations between restarts). Configs that already contain duplicates still load, with a warning naming both areas.
V3Net
- Area Browser hub connection failures now show short, actionable messages ("hub timed out - it may be down or unreachable", "connection refused - no hub at that address", "host not found - check the hub URL") instead of truncated Go error chains.
- Area tag validation errors explain the expected format with an example ("tags are "prefix.name", e.g. "fel.general"") instead of printing the raw regular expression.
Message newscan
- Areas joining a user's newscan get their last-read pointer seeded one week back, so new users see a manageable set of unread messages instead of the area's full history. Existing reading progress is never overwritten.
- Existing users are offered newly appeared networks at login with a one-time Y/n prompt; new local Auto Join areas are added silently. Declines are remembered, and areas a user removed are never re-added.
- The FTN wizard's newscan default is now a visible Y/n field instead of always-on.
Menus & display
- Conditional regions in menu ANSI art: wrap art in
{{acs}}...{{/}}(any ACS expression) or{{SPONSOR}}...{{/}}to hide it from users who fail the check — failing users see blank space of identical geometry, so borders and columns stay aligned. Main use: sysop-only commands in MAIN.ANS invisible to regular users. - Extended characters now work at every text prompt (real name, location, notes, searches, ...): CP437 input is decoded to UTF-8 for storage and re-encoded on display, so
caféis no longer silently stored ascaf. - CP437 terminals no longer receive stray
?glyphs: the…and—characters CP437 cannot render are replaced with ASCII equivalents across menus and the sysop user editor. - A systematic byte-vs-rune width audit fixed twelve display bugs, including a reachable panic when a UTF-8 area/conference name overflowed the message-list frame and pause prompts drawing off-centre on UTF-8 terminals.
- Lightbar menu fixes: the fallback prompt now honors the idle timeout (an idling user could previously hold a node open indefinitely), fallback commands and undefined-command messages work on
.BARmenus, and^Pback-navigation works at the fallback prompt. - Refreshed menu and config editor ANSI art.
Security & reliability
- Deleted users can no longer log in with an SSH public key. Key lookup was the one login route that never re-checked the deleted flag, so a soft-deleted account with a key on file kept working indefinitely.
- Registration no longer holds the user-manager write lock while hashing the password, so a signup can't stall logins.
- Failed user saves no longer leave phantom data in the in-memory cache (which could later be written to disk for real by an unrelated save).
- File-area record filenames are validated consistently (empty,
.,.., path separators, and NUL are rejected everywhere — previously a crafted record could target the area's parent directory), and failed file moves roll back correctly.
Docs
- New systemd service guide for Linux installs.
Internals
- A large behavior-preserving refactor campaign split the oversized user, message, file, config, menu executor, editor, JAM, ZipLab, and binkd source files by domain — which is what surfaced most of the fixes above.
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh (Unix) / setup.ps1 + setup.bat (Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 Bundle v0.4.0
Vision/3 Full Distribution v0.4.0
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
TUI-only echomail configuration: every FTN task — creating networks, changing
hubs, resetting binkd.conf — can now be done entirely from the config editor,
with no JSON or binkd.conf hand-editing.
Event scheduler
- The scheduler now always runs; individual events are the enable/disable control. The top-level
enabledflag inevents.jsonis deprecated and ignored (existing configs withenabled: falseself-heal on upgrade — a deprecation notice is logged). Seeded events remain individually disabled, so fresh installs stay quiet until events are enabled.
Echomail / FTN configuration
- Echomail Links is now the source of truth for your hub: link records gain Hostname and Port fields (wizard-filled for new networks; port defaults to 24554). Saving from the config editor updates or creates the matching
binkd.confnode line, so a hub change is a single TUI edit. - Per-network poll events follow a changed hub address on save, and are created automatically for any network whose link has a hostname — manually created networks poll their hub with no Events-editor setup.
- Deleting
binkd.confis now a supported reset: on the next config-editor save it is regenerated completely from your configuration (identity, domains with zones derived from your addresses, address lines, and hub node lines). - Manually created networks are first-class: the Network Name field normalizes to the lowercase binkd domain (hubs expect
fsxnet, notFSXNET), matching the wizard's behavior. - Hardening: binkd.conf parsing no longer uses a line-length-limited scanner anywhere (an oversized line could previously truncate a rewritten file), appended node lines are stably sorted, and sysop-added flags on poll events survive hub retargeting.
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh (Unix) / setup.ps1 + setup.bat (Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 Bundle v0.3.0
Vision/3 Full Distribution v0.3.0
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
Integrated binkd mailer reliability release: FTN mail flow now works out of
the box from the Setup Wizard, and mailer failures are diagnosable from the
BBS log.
FidoNet / FTN
- The FTN Setup Wizard now wires the event scheduler for complete mail flow: it creates an enabled per-network hub poll event (
binkd -p -P <hub>every 15 minutes), enables the toss safety-net and nightly message-base fix/purge/pack maintenance events, and turns the scheduler on. Re-running the wizard preserves schedules and settings you've tuned by hand. - The wizard's
binkd.confrewrite no longer produces duplicatedomain/addresslines on installs rooted at the default/opt/vision3path (binkd aborted with "duplicate domain").
Integrated binkd mailer
- binkd startup failures are now diagnosable: the supervisor captures binkd's stderr and includes it in the "exited unexpectedly" log line instead of a bare
exit status 1. - The mailer creates binkd's runtime directories (
data/logs, FTN inbound/outbound queues) before every launch. - Preflight now refuses an unconfigured template
binkd.confwith a clear "run the FTN Setup Wizard" warning instead of entering a crash-restart loop, and reports unreadable configs distinctly from missing ones.
Setup
setup.shand the Docker entrypoint no longer pre-seed a placeholderbinkd.conffrom the template — the FTN Setup Wizard generates a complete, fully-configured one when none exists. (The template remains intemplates/configs/as a hand-editing reference.)
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh (Unix) / setup.ps1 + setup.bat (Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 Bundle v0.2.1
Vision/3 Full Distribution v0.2.1
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
Packaging fix release. The BBS binaries are unchanged from 0.2.0 aside from the
reported version; only the release bundles differ.
Fixed
- Bundles now ship only platform-appropriate setup scripts:
setup.shon Unix,setup.ps1+setup.baton Windows. The unused cross-platform scripts and theinstall.sh/install.ps1web-installers are no longer packaged inside bundles. setup.batis now included in Windows bundles (previously omitted, thoughINSTALL.TXTdirects Windows users to run it).- The
scripts/examples/scripting-engine samples andscripts/dos-local.share now bundled on every platform (previously the bundlescripts/directory was empty on macOS, Linux arm64/armv7, and Windows).
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh (Unix) / setup.ps1 + setup.bat (Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 Bundle v0.2.0
Vision/3 Full Distribution v0.2.0
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
What's new since v0.1.1
FidoNet / FTN
- FTN Setup Wizard in the config editor — pick a network from an embedded registry, download its echo list, and auto-create conferences, areas, and
binkd.conf. - Integrated binkd server — binkd now runs in-process for FTN mail sessions; identity, domains, addresses, and link passwords stay in sync with the TUI config.
- Event scheduler defaults for poll / toss / scan / pack.
QWK offline mail
- Packet export/import rebuilt as a service, with a stable conference map and private-mail routing.
- REP destination validation and upload deduplication; sysop-configurable QWK BBS ID.
- Reply threading (local and in-packet) and
HEADERS.DATextended headers for long To/From/Subject. - Experimental packet transport API (off by default), with a QWK Mobile API screen in the system config TUI.
Sysop tools
- Waiting-For-Caller (WFC) console with an access toggle in the config TUI.
- Config editor: ANSI art backdrop and startup splash, exit confirmation, wider door list, doors now split internal Code from display Name (Synchronet-style), and doors.json load errors surface instead of showing an empty list.
- Per-door dropfile filename casing.
Security & reliability
- Optional pre-login Challenge Gate plus a connection-rate limiter.
- SSH public-key authentication via a new user
PublicKeysfield. - Resource-safety hardening: JAM recovery/lock handling, bounded network reads, goroutine-lifecycle fixes.
- Fixed session idle timeout being lost after a door reset the input handler.
Logging
- New
internal/loggingpackage with a Logging screen in System Configuration; the whole codebase migrated to structuredslog.
Under the hood
- Large refactor and quality pass: errcheck findings 1092 → 0, ~1,050 lines of dead code removed, monolithic menu/executor files decomposed, and CI lint + test coverage floors added.
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh / setup.ps1 (+ setup.bat on Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 Bundle v0.1.1
Vision/3 Full Distribution v0.1.1
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh / setup.ps1 (+ setup.bat on Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS: one universal bundle (Intel + Apple Silicon), built for amd64 and arm64 then combined
- windows-amd64, windows-386
Vision/3 v0.1.0
Vision/3 Full Distribution v0.1.0
Each bundle is a full distribution: extract and run. No need to build from source or clone the vision3 repo.
Quick start
- Download the archive for your platform (see Assets below).
- Extract to a directory (e.g.
/opt/vision3orC:\\vision3). - From that directory, optionally run once:
./setup.sh(Unix) or.\setup.ps1(Windows) to generate the SSH host key. - Start the BBS:
./vision3(Unix) or.\vision3.exe(Windows).
Default login: felonius / password — change after first login!
Bundle contents
- Root — vision3, ue, strings, helper, v3mail, config, menuedit (main executables)
- bin/ — binkd, sexyz, sexyz.ini (and zip/unzip on Windows)
- configs/ — template configs (edit
configs/config.jsonfor your BBS) - menus/v3/ — menu set
- data/ — skeleton (users, files, logs, msgbases, ftn, infoforms, oneliners)
- ziplab/ — ZIP processing templates (BBS ad, file comment)
- scripts/examples/ — example JS scripts for the scripting engine
- setup.sh / setup.ps1 (+ setup.bat on Windows) — one-time setup (SSH key, dirs)
Paths on Windows
Path strings in the JSON configs use forward slashes; they work on Windows too. For paths you edit (e.g. doors), you can use forward or backslashes.
Platforms
- linux-amd64, linux-arm64, linux-armv7
- macOS universal (Intel + Apple Silicon)
- windows-amd64, windows-386