16 KiB
16 KiB
Whats New
This document attempts to track major changes and additions in ENiGMA½. For details, see GitHub.
0.0.14-beta
- The Web Server has made some possibly breaking changes:
/static/
prefixes are no longer required. This was a ugly hack.- Some internal routes such as those used for password resets live within
/_internal/
. - Routes for the file base now default to
/_f/
prefixed instead of just/f/
. If/f/
is in yourconfig.hjson
you are encouraged to update it! - Finally, the system will search for
index.html
andindex.htm
in that order, if another suitable route cannot be established.
- CombatNet has shut down, so the module (
combatnet.js
) has been removed. - The Menu Flag
popParent
has been removed andnoHistory
has been updated to work as expected. In general things should "Just Work", but check yourmenu.hjson
entries if you see menu stack issues. - Various New User Application (NUA) properties are now optional. If you would like to reduce the information users are required, remove optional fields from NUA artwork and collect less. These properties will be stored as "" (empty). Optional properties are as follows: Real name, Birth date, Sex, Location, Affiliations (Affils), Email, and Web address.
- Art handling has been changed to respect the art width contained in SAUCE when present in the case where the terminal width is greater than the art width. This fixes art files that assume wrapping at 80 columns on wide (mostly new utf8) terminals.
0.0.13-beta
- Note for contributors: ENiGMA has switched to Prettier for formatting/style. Please see CONTRIBUTING and the Prettier website for more information.
- Removed terminal
cursor position reports
from most locations in the code. This should greatly increase the number of terminal programs that work with Enigma 1/2. For more information, see Issue #222. This may also resolve other issues, such as Issue #365, and Issue #320. Anyone that previously had terminal incompatibilities please re-check and let us know! - Bumped up the minimum Node.js version to v14. This will allow more expressive Javascript programming syntax with ECMAScript 2020 to improve the development experience.
- New Waiting For Caller (WFC) support via the
wfc.js
module. - Added new configuration options for
term.checkUtf8Encoding
,term.checkAnsiHomePosition
,term.cp437TermList
, andterm.utf8TermList
. More information on these options is available in UPGRADE. - Many new system statistics available via the StatLog such as current and average load, memory, etc.
- Many new MCI codes:
MB
,MF
,LA
,CL
,UU
,FT
,DD
,FB
,DB
,LC
,LT
,LD
, and more. See MCI. - SyncTERM style font support detection.
- Added a system method to support setting the client encoding from menus,
@systemMethod:setClientEncoding
. - Many additional backward-compatible bug fixes since the first release of 0.0.12-beta. See the project repository for more information.
- Deprecated Gopher's
messageConferences
configuration key in favor of a easier to deal withexposedConfAreas
allowing wildcards and exclusions. See Gopher. - NNTP write (aka POST) access support for authenticated users over TLS.
- Advanced MCI formatting!
- Additional options in the
abracadabra
module for launching doors. See Local Doors
0.0.12-beta
- The
master
branch has become mainline. What this means to users isgit pull
will always give you the latest and greatest. Make sure to read Updating and keep an eye onWHATSNEW.md
(this file) and UPGRADE! See also ticket #276. - Development now occurs against Node.js 14 LTS.
- The default configuration has been moved to config_default.js.
- A full configuration revamp has taken place. Configuration files such as
config.hjson
,menu.hjson
, andtheme.hjson
can now utilize includes via theincludes
directive, reference 'self' sections using@reference:
and import environment variables with@environment
. - An explicit prompt file previously specified by
general.promptFile
inconfig.hjson
is no longer necessary. Instead, this now simply part of theprompts
section inmenu.hjson
. The default setup still creates a separate prompt HJSON file, but it isincludes
ed inmenu.hjson
. With the removal of prompts thePromptsChanged
event will no longer be fired. - New
PV
ACS check for arbitrary user properties. See ACS for details. - The
message
arg used bymsg_list
has been deprecated. Please starting usingmessageIndex
for this purpose. Support formessage
will be removed in the future. - A number of new MCI codes (see MCI)
- Added ability to export/download messages. This is enabled in the default menu. See
messageAreaViewPost
in the default message base template and look for the download options (@method:addToDownloadQueue
, etc.) for details on adding to your system! - The Gopher server has had a revamp! Standard
gophermap
files are now served along with any other content you configure for your Gopher Hole! A default gophermap can be found in the misc directory that behaves like the previous implementation. See Gopher docs for more information. - Default file browser up/down/pageUp/pageDown scrolls description (e.g. FILE_ID.DIZ). If you want to expose this on an existing system see the
fileBaseListEntries
in the defaultfile_base.in.hjson
template. - File base search has had an improvement to search term handling.
./oputil user group -group
to now accepts~group
removing the need for special handling of the "-" character. #331- A fix has been made to clean up old
file.db
entries when a file is removed. Previously stale records could be left or even recycled into new entries. Please see UPGRADE.md for details on applying this fix (look fortables_update_2020-11-29.sql
). - The ./docs/modding/onelinerz.md module can have
dbSuffix
set in it'sconfig
block to specify a separate DB file. For example to use as a requests list. - Default hash tags can now be set in file areas. Simply supply an array or list of values in a file area block via
hashTags
. - Added ability to pass an
env
value (map) toabracadabra
doors. See Local Doors. dropFileType
is now optional when launching doors withabracadabra
. It can also be explicitly set tonone
.- FSE in view mode can now stylize quote indicators. Supply
quoteStyleLevel1
in theconfig
block. This can be a single string or an array of two strings (one to style the quotee's initials, the next for the '>' character, and finally the quoted text). See themessageAreaViewPost
menuconfig
block in the defaultluciano_blocktronics
theme.hjson
file for an example. An additional level style (e.g. for nested quotes) may be added in the future. - FSE in view mode can now stylize tear lines and origin lines via
tearLineStyle
andoriginStyle
config
values in the same manor asquoteStyleLevel
.
0.0.11-beta
- Upgraded from
alpha
tobeta
-- The software is far along and mature enough at this point! - Development is now against Node.js 12.x LTS. Other versions may work but are not currently supported!
- QWK support
oputil fb scan *areaTagWildcard*
scans all areas in which wildcard is matched.- The archiver configuration
escapeTelnet
has been renamedescapeIACs
. Support for the old value will be removed in the future.
0.0.10-alpha
oputil.js user rename USERNAME NEWNAME
my_messages.js
module (defaulted to "m" at the message menu) to list public messages addressed to the currently logged in user. Takes into account their username andreal_name
property.- SSH Public Key Authentication has been added. The system uses a OpenSSH style public key set on the
ssh_public_key
user property. - 2-Factor (2FA) authentication is now available using RFC-4266 - HOTP: HMAC-Based One-Time Password Algorithm), RFC-6238 - TOTP: Time-Based One-Time Password Algorithm, or Google Authenticator. QR codes for activation are available as well. One-time backup aka recovery codes can also be used. See Security for more info!
- New ACS codes for new 2FA/OTP:
AR
andAF
. See ACS for details.
oputil.js user 2fa USERNAME TYPE
enables 2-factor authentication for a user.
oputil.js user info USERNAME --security
can now display additional security information such as 2FA/OTP.oputil.js fb scan --quick
is now the default. Override with--full
.- ACS checks can now be applied to form actions. For example:
{
value: { command: "SEC" }
action: [
{
// secure connections can go here
acs: SC
action: @menu:securityMenu
}
{
// non-secure connections
action: @menu:secureConnectionRequired
}
]
}
idleLogoutSeconds
andpreAuthIdleLogoutSeconds
can now be set to0
to fully disable the idle monitor.- Switched default archive handler for zip files from 7zip to InfoZip (
zip
andunzip
) commands. See UPGRADE. - Menu submit
action
's can now in addition to being a simple string such as@menu:someMenu
, or an array of objects with ACS checks, be a simple array of strings. In this case, a random match will be made. For example:
submit: [
{
value: { command: "FOO" }
action: [
// one of the following actions will be matched:
"@menu:menuStyle1"
"@menu:menuStyle2"
]
}
]
- Added
read
(list/view) andwrite
(post) ACS support to message conferences and areas. - Many new built in modules adding support for things like auto signatures, listing "my" messages, top stats, etc. Take a look in the docs for setting them up!
- Built in MRC support!
- Added an customizable achievement system!
0.0.9-alpha
- Development is now against Node.js 10.x LTS. While other Node.js series may continue to work, you're own your own and YMMV!
- Fixed
justify
properties:left
andright
values were formerly swapped (oops!) - Menu items can now be arrays of objects not just arrays of strings.
- The properties
itemFormat
andfocusItemFormat
allow you to supply the string format for items. For example if a menu object is{ "userName" : "Bob", "age" : 35 }
, aitemFormat
might be|04{userName} |08- |14{age}
. - If no
itemFormat
is supplied, the default formatter is{text}
. - Setting the
data
member of an object will cause form submissions to use this value instead of the selected items index. - See the default
luciano_blocktronics
matrix
menu for example usage.
- The properties
- You can now set the
sort
property on a menu to sort items. Iftrue
items are sorted bytext
. If the value is a string, it represents the key in menu objects to sort by. - Hot-reload of configuration files such as menu.hjson, config.hjson, your themes.hjson, etc.: When a file is saved, it will be hot-reloaded into the running system
- Note that any custom modules should make use of the new Config.get() method.
- The old concept of
autoScale
has been removed. See https://github.com/NuSkooler/enigma-bbs/issues/166 - Ability to delete from personal mailbox (finally!)
- Add ability to skip file and/or message areas during newscan. Set config.omitFileAreaTags and config.omitMessageAreaTags in new_scan configuration of your menu.hjson
{userName}
(sanitized) and{userNameRaw}
as well as{cwd}
have been added to param options when launching a door.- Any module may now register for a system startup initialization via the
initializeModules(initInfo, cb)
export. - User event log is now functional. Various events a user performs will be persisted to the
system.sqlite3
user_event_log
table for up to 90 days. An example usage can be found in the updatedlast_callers
module where events are turned into Ami/X style actions. Please seeUPGRADE.md
! - New MCI codes including general purpose movement codes. See MCI codes
install.sh
will now attempt to use NPM's--build-from-source
option when ARM is detected.oputil.js config new
will now generate a much more complete configuration file with comments, examples, etc.oputil.js config cat
dumps your current config to stdout.- Handling of failed login attempts is now fully in. Disconnect clients, lock out accounts, ability to auto or unlock at (email-driven) password reset, etc. See
users.failedLogin
inconfig.hjson
. - NNTP support! See NNTP docs for more information.
oputil.js user rm
andoputil.js user info
are in! See oputil CLI.- Performing a file scan/import using
oputil.js fb scan
now recognizes variousFILES.BBS
formats. - Usernames found in the
config.users.badUserNames
are now not only disallowed from applying, but disconnected at any login attempt. - Total minutes online is now tracked for users. Of course, it only starts after you get the update :)
- Form entries in
menu.hjson
can now be omitted from submission handlers usingomit: true
0.0.8-alpha
- Mystic BBS style extended pipe color codes. These allow for example, to set "iCE" background colors.
- File descriptions (FILE_ID.DIZ, etc.) now support Renegade |## pipe, PCBoard, and other less common color codes found commonly in BBS era scene releases.
- New menu stack flags:
noHistory
now works as expected, and a new addition ofpopParent
. See the defaultmenu.hjson
for usage. - File structure changes making ENiGMA½ much easier to maintain and run in Docker. Thanks to RiPuk (Dave Stephens)! See UPGRADE.md for details.
- Switch to pure JS xxhash instead of farmhash. Too many issues on ARM and other less popular CPUs with farmhash (Dave Stephens)
- Native CombatNet support! (Dave Stephens)
- Fix various issues with legacy DOS Telnet terminals. Note that some may still have issues with extensive CPR usage by ENiGMA½ that will be addressed in a future release.
- Added web (http://, https://) based download manager including batch downloads. Clickable links if using VTXClient!
- General VTX hyperlink support for web links
- DEL vs Backspace key differences in FSE
- Correctly parse oddball
INTL
,TOPT
,FMPT
,Via
, etc. FTN kludge lines - NetMail support! You can now send and receive NetMail. To send a NetMail address a external user using
Name <address>
format from your personal email menu. For example,Foo Bar <123:123/123>
. The system also detects other formats such asaName @ address
(Foo Bar@123:123/123
) oputil.js
: Addedmb areafix
command to quickly send AreaFix messages from the command line. You can manually send them from personal mail as well.oputil.js fb rm|remove|del|delete
functionality to remove file base entries.oputil.js fb desc
for setting/updating a file entry description.- Users can now (re)set File and Message base pointers
- Add
--update
option tooputil.js fb scan
- Fix @watch path support for event scheduler including FTN, e.g. when looking for a
toss!.now
file produced by Binkd.
...LOTS more!
Pre 0.0.8-alpha
See GitHub