Skip to content

Vision/3 Bundle v0.5.0

Choose a tag to compare

@robbiew robbiew released this 02 Aug 18:15
· 5 commits to main since this release
d49692c

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.conf now 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 as caf.
  • 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 .BAR menus, and ^P back-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

  1. Download the archive for your platform (see Assets below).
  2. Extract to a directory (e.g. /opt/vision3 or C:\vision3).
  3. From that directory, optionally run once: ./setup.sh (Unix) or .\setup.ps1 (Windows) to generate the SSH host key.
  4. 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.json for 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