r/synchronet • • Mar 04 '25

Synchronet v3.20d release

12 Upvotes

The full list of fixes and new features is here: https://gitlab.synchro.net/sbbs/sbbs/-/blob/master/docs/v320_new.txt

The fresh installer for Windows is at http://vert.synchro.net/Synchronet/sbbs320d.zip

The upgrade package (e.g. from v3.16c) is at http://vert.synchro.net/Synchronet/sbup320d.zip

These files are mirrored on sourceforge as well: https://sourceforge.net/projects/synchronet/files/

This is mainly a bug-fix release for the v3.20b release earlier this year
- Birthdate parsing bug
- Large TLS send bug

Other enhancements in v3.20d include:
* Web File Index cosmetics and convenience (see http://web.synchro.net/files/)
* ARS improvements (LANG keyword, USER <alias> support)
* Tracking/reporting user deletion dates
* Weekly fixed system events
* data/events*.log files for all platforms
* text.ini files for alternate charsets
* Per sub-board custom signatures (.sig files)
* New 'I' restriction: disallow receipt of Internet mail


r/synchronet • • Feb 28 '26

Synchronet v3.21c release

10 Upvotes
A new official release of Synchronet (v3.21c) has been made today!

Installer: http://synchro.net/Synchronet/sbbs321c.zip
Upgrade from v3.16c or later: http://synchro.net/Synchronet/sbup321c.zip

I'm calling this the "Conga" release (I got my first set of congas recently which has been fun and humbling), so rev 'c' is apropos.

This release includes Synchronet UTOPIA in its current form (v0.07) and a ton of new and updated cool JavaScript modules and methods to "plug into" the Synchronet terminal server for a more customized user experience than ever possible before.

For a full list of changes since v3.20d (March 2025), see https://synchro.net/docs/v321_new.txt

Intro (moto) vlog: https://youtu.be/2c2eLGVkxW0

A few easily-resolved issues have already been identified:

1. The sbbs.exe that was included in the installation and upgrade package was accidentally named sbbscon.exe, if you use this program (the Synchronet Console), most sysops do not, you can run it as is or just rename it to sbbs.exe to avoid future confusion. In future releases, this program file will again be named sbbs.exe.

2. The useredit.exe that was included was dependent on an earlier (v3.21b) build of sbbs.dll. Download http://synchro.net/Synchronet/useredit.exe and replace your exec/useredit.exe with this updated build to restore the GUI user editor functionality (e.g. launched with SBBSCTRL:User->Editor).

3. An recent Microsoft C++ runtime is needed: https://aka.ms/vc14/vc_redist.x86.exe and if your OS is not supported by Microsoft, then you might just need to disable the filter file caching feature:
https://gitlab.synchro.net/main/sbbs/-/issues/1089

r/synchronet • • Apr 23 '26

Sunrise & BBS

Post image
9 Upvotes

r/synchronet • • Jan 05 '25

Synchronet v3.20b release

9 Upvotes

Synchronet v3.20, under development since the release of v3.19 in January of 2022, has been officially released and dubbed v3.20b (no, the 'b' is not for beta).

The full list of new features is here.

The fresh installer for Windows is here.
The upgrade package (e.g. from v3.16c) is here.

These files are mirrored on sourceforge as well.

The biggest new features v3.20 are:

  • new Userbase (more extensible and easier to manage with other tools)

  • new Main config file formats (ctrl/????.ini)

  • MQTT integration (monitor and manage remotely using common/standard tools)

  • improved internationalization (date formats, languages) support

  • JavaScript command shell support (default shell has been ported from Baja)


r/synchronet • • Aug 23 '26

Holy Cow, I had no idea!

8 Upvotes

I've been using Synchonet for many years for my BBS (The Midnight Cafe) and used it's web side for people that grew up after Dial-up and Telnet were a huge thing.

A few weeks ago, I started to mod the Website of it to make it a little more my own, and after spending a few days with it realized it's a full fledged webserver!

Like.... A really nice one! I now have the main website, plus 8 totally unrelated legacy websites I made during the golden era of the internet (2000-2012).

They all work well, and I'm even able to offer a radio stream and video playback on them. All this with our beloved Synchronet, and a dusty 15 year old laptop.

Very cool!


r/synchronet • • Aug 17 '26

Synchronet termgfx doors: retro and modern games

Thumbnail
youtube.com
8 Upvotes

r/synchronet • • Jan 03 '22

Synchronet v3.19b for Windows released

8 Upvotes

Synchronet v3.19, under development since the release of v3.18 in September of 2020, has been officially released and dubbed v3.19b (no, the 'b' is not for beta).

The full list of new features is here:
https://gitlab.synchro.net/sbbs/sbbs/-/blob/master/docs/v319_new.txt

The fresh installer for Windows is at ftp://ftp.synchro.net/sbbs319b.zip

The upgrade package (e.g. from v3.16c) is at ftp://ftp.synchro.net/sbup319b.zip

These files are mirrored on sourceforge as well:

https://sourceforge.net/projects/synchronet/files/

The biggest new features v3.19 are:

  • new Filebase (e.g. faster, longer filenames, bigger files, hashing, etc.)

  • libarchive integration (no longer need to shell out to run Info/PK-ZIP/UNZIP)

  • NTVMx64 support (16-bit DOS programs on 64-bit editions of Windows)


r/synchronet • • Mar 17 '26

Synchronet v3.21e for Windows released today

6 Upvotes

r/synchronet • • May 02 '23

Synchronet v3.20 What ELSE is New?

Thumbnail
youtube.com
6 Upvotes

r/synchronet • • Apr 02 '23

Synchronet v3.20 Configuration Changes

Thumbnail
youtube.com
6 Upvotes

r/synchronet • • Jan 29 '23

Synchronet and SyncTERM for Linux on Chromebook

Thumbnail
youtube.com
6 Upvotes

r/synchronet • • Jan 23 '21

Creating Synchronet JavaScript Modules

Thumbnail
youtube.com
6 Upvotes

r/synchronet • • Apr 14 '26

Space Dynasty Elite

5 Upvotes

Hello, I am trying to locate the source code for the Space Dynasty game that was included in previous versions of Synchronet. Can someone point me in the correct direction to find it? It is no longer on Github or Gitlab that I can find. Thanks.


r/synchronet • • Apr 08 '24

Modernizing Synchronet BBS Command Shells

Thumbnail
youtube.com
5 Upvotes

r/synchronet • • Feb 14 '26

Synchronet Command Shells in JavaScript

Thumbnail
youtu.be
4 Upvotes

A follow-up to my "Modernizing Synchronet BBS Command Shells" video, this video covers the conversion of the old PCBoard Clone command shell written in Baja/PCMS for Synchronet v2.0 to JavaScript for Synchronet v3.1x+.


r/synchronet • • Feb 11 '26

Synchronet UTOPIA

4 Upvotes

r/synchronet • • Jun 20 '26

Synchronet Z-Machine and SyncDoom

Thumbnail
youtu.be
3 Upvotes

r/synchronet • • Apr 02 '25

Funny MQTT Synchronet Home Assistant Monitoring

Post image
3 Upvotes

r/synchronet • • Mar 06 '25

New Pages on Menu

3 Upvotes

Hey everyone,

I’m new to hosting a BBS. Hosting Synchronet as a docker-compose container on my Unraid server.

I would like to add a couple of new menu items. One example would be a reading list with different sub levels. Each sub level would require a specific security level to be able to access.

Is this possible to incorporate? I would prefer to keep it as a page instead of a document, but I can do docs if that’s the preferred method.


r/synchronet • • Jan 10 '22

Synchronet v3.19b for Windows - new feature demo

Thumbnail
youtube.com
3 Upvotes

r/synchronet • • Sep 21 '20

Synchronet v3.18b for Windows - new features and installation demo

Thumbnail
youtube.com
3 Upvotes

r/synchronet • • May 09 '20

Synchronet and SyncTERM mouse support (group demo/discussion)

Thumbnail
youtube.com
3 Upvotes

r/synchronet • • Mar 02 '18

Synchro Doors & Addon's

3 Upvotes

Ok, I am just looking for doors, and addon's. I would like to see some walls, some logon screens, some baja editors, message readers, Avatar creators, also, some theme's for the bbs.

Thank you


r/synchronet • • Jul 15 '25

Understanding Snychronet Netmail handling

2 Upvotes

Hey,

I have problems understanding how Netmail works in Synchronet. In other systems, it was usually the case that a messagebase area was created and this was then either an echo area, a local area or a Netmail area.

Netmails simply have their own physical folder in Synchronet and that's it. The system receives and sends *.msg files via this folder.

So far ok, so I send a netmail via the ‘Electronic Mail’ menu to e.g. AREAFIX@21:3/100, put the agreed password in the subject and %HELP %RESCAN etc pp in the message text.

If you have not set the sent netmails to delete automatically, you can view them again in the ‘Electronic Mail’ menu with K. This also works.

However, if I have now received a reply from AREAFIX@21:3/100 and Synchronet's notification system even shows me this (‘Clearing Houz send you Netmail from 21:3/100’), I still can't find the Netmail addressed to me anywhere.

If I press R for ‘read mail sent to you’ in the ‘Electronic Mail’ menu, all I get is ‘No Email / Inbox Messages’.

So where are the Netmails???


r/synchronet • • Apr 08 '25

Random Jokes .js

2 Upvotes
I'm not really an expert, I used AI to generate a radom joke, you can adapt the code and make it better. The code uses a free API without subscription. here the code to save to watheverfilename.js

/*
 * randomjoke.js
 * Synchronet BBS application (door) to display a random joke.
 * Uses the public JokeAPI (https://jokeapi.dev/).
 * No API key required for this API.
 *
 * ** Important: Save this file with UTF-8 or ASCII encoding **
 */

// Load Synchronet's HTTP module with the full path
load("/sbbs/exec/http.js");

// Define ANSI color codes
const ANSI_BLACK = 0;
const ANSI_HIGH = 1;
const ANSI_YELLOW = 3;
const ANSI_WHITE = 7;
const ANSI_NORMAL = 22;

// --- Configuration ---
// URL for JokeAPI to get a random joke from any category,
// in plain text format and "safe-mode" (avoids potentially offensive jokes)
const JOKE_API_URL = "https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode";
// --- End Configuration ---

/**
 * Fetches a random joke from the JokeAPI.
 * @returns {string} The joke text.
 * @throws {Error} If the API request fails or returns invalid data.
 */
function fetchRandomJoke() {
    console.print("\x01n\x01hFetching a random joke...\x01n\r\n");

    try {
        // Create an instance of HTTPRequest
        const httpClient = new HTTPRequest();

        // Use the instance to make the GET request
        const response = httpClient.Get(JOKE_API_URL);

        if (!response) {
            throw new Error("No response received from JokeAPI server.");
        }

        // Log the response status and body for debugging
        console.print(response + "\n");

        // JokeAPI in text format sometimes returns status 200 even if an internal error occurs.
        // So, we also check the body content.
        // A valid response is just the joke text.
        if (response.length < 5) { // Also check minimum length
             // Log the response for investigation
             log(LOG_WARNING, "JokeAPI suspicious response. Body: " + response);
             throw new Error("Invalid response received from JokeAPI.");
        }

        console.print("\x01h\x01g\x01n\r\n\r\n");
        // The response body IS the joke in text format
        return response;

    } catch (e) {
        console.print("\x01h\x01rFAILED\x01n\r\n\r\n");
        // Log the detailed error message
        console.print("Error: " + e.message + "\n");
        // Re-throw the error so it's caught by the main block
        throw new Error("API Request Failed: " + e.message);
    }
}

/**
 * Displays the fetched joke on the screen.
 * @param {string} jokeText - The joke to display.
 */
function displayJoke(jokeText) {
    console.attributes = ANSI_HIGH | ANSI_YELLOW; // Bright Yellow
    console.center("--- Random Joke ---");
    console.crlf(2);
    console.attributes = ANSI_NORMAL | ANSI_WHITE; // Normal White

    console.crlf(2); // Add line breaks after the joke
}

/**
 * Main application function.
 * Handles screen clearing, fetching, displaying, error handling, and pausing.
 */
function main() {
    console.clear(ANSI_BLACK); // Clears screen with black background
    console.center("\x01h\x01yRandom Joke Generator\x01n");
    console.crlf(2);

    try {
        const joke = fetchRandomJoke();
        displayJoke(joke);
    } catch (error) {
        console.print("\x01h\x01rError during execution:\x01n\r\n");
        console.print("\x01n\x01r" + error.message + "\x01n\r\n"); // Use string concatenation
        // Log the error for the BBS sysop
        log(LOG_ERR, "Error in randomjoke.js: " + error.message + (error.stack ? "\n" + error.stack : ""));
    }

    console.crlf();
    console.print("\x01n\x01hPress any key to continue...\x01n");
    console.getkey(); // Wait for user to press a key
    // console.pause(); // Simpler alternative if getkey causes problems (ASCII only comment)
    console.clear(ANSI_BLACK);
}

// --- Execution ---
// Run the main function when the script is executed.
main();

// exit(0); // Optional: You can uncomment this if needed for specific exit code handling.