This document covers basic upgrade notes for major ENiGMA½ version updates.
- Always back up your system! (See Administration)
- Seriously, always back up your system!
In general, look at template menu files in misc/menu_templates
, and config_template.in.hjson
as well as the default luciano_blocktronics/theme.hjson
files when you update. These files may come with new sections you wish to merge into your system!
Upgrades often come with changes to the default menu templates found in misc/menu_tempaltes
. You can use these as references for changes and additions to the default menu sets. This also applies to the default luciano_blocktronics
theme and it's theme.hjson
file.
See Updating for details on menu files/etc.
Upgrading from GitHub is easy:
cd /path/to/enigma-bbs
git pull
rm -rf npm_modules # do this any time you update Node.js itself
npm install # or simply 'yarn'
Report your issue on Xibalba BBS, hop in #enigma-bbs on FreeNode and chat, or file a issue on GitHub.
- Be aware that
master
is now mainline! This means allgit pull
's will yield the latest version. See WHATSNEW for more information. - BREAKING CHANGE There is no longer a
prompt.hjson
file. Prompts are now simply part of the menu set in theprompts
section. If you have an existing system you will need to add yourprompt.hjson
to yourmenu.hjson
'sincludes
section at a minimum. Example:
// menu.hjson
{
includes: [
my-prompts.hjson // ref your old prompts here
]
}
- A set of database fixes were made that cause some records to be properly cleaned up when e.g. deleting a file. Existing
file.db
databases will need to be updated manually. Note that this applies to users upgrading within 0.0.12-beta as well:
- Make a backup of your file.db!
- Shut down ENiGMA.
- From the enigma-bbs directory:
sqlite3 db/file.sqlite3 < ./misc/update/tables_update_2020-11-29.sql
- Node.js 12.x LTS is now in use. Follow standard Node.js upgrade procedures (e.g.:
nvm install 12 && nvm use 12
).
- Security related files such as private keys and certs are now looked for in
config/security
by default. - Default archive handler for zip files has switched to InfoZip due to a bug in the latest p7Zip packages causing "volume not found" errors. Ensure you have the InfoZip
zip
andunzip
commands in ENiGMA's path. You can switch back to 7Zip by overridingarchiveHandler
forapplication/zip
in yourconfig.hjson
underfileTypes
to7Zip
.
- Development is now against Node.js 10.x LTS. Follow your standard upgrade path to update to Node 10.x before using 0.0.9-alpha!
- The property
justify
found on various views previously hadleft
andright
values swapped (oops!); you will need to adjust any customtheme.hjson
that use one or the other and swap them as well. - Possible breaking changes in FSE: The MCI code
%TL13
for error indicator is now%TL4
. This is part of a cleanup and standardization on "custom ranges". You may need to update yourtheme.hjson
and related artwork. - Removed view width auto-size: Some views still can auto-size their height, but in general you should be explicit in your themes
- More standardization using "custom ranges" and
itemFormat
/focusItemFormat
semantics. Update your themes! - In addition to using
itemFormat
, theonelinerz
module usesuserName
vsusername
(note the case) to match other modules loginServers.webSocket
configuration block has changed to be more consistent with other servers. Example:
webSocket: {
ws: {
enabled: true
}
wss: {
enabled: true
port: 1234
}
proxied: true // X-Forwarded-Proto: https support
}
- The module export
registerEvents
has been deprecated. If you have a module that depends on this, use the new more genericmoduleInitialize
export instead. - The
system.db
user_event_log
table has been updated to include a unique session ID. Previously this table was not used, but you will need to perform a slight maintenance task before it can be properly used. After updating to0.0.9-alpha
, please run the following:sqlite3 db/system.db DROP TABLE user_event_log;
. The new table format will be created and used at startup. - If you have art configured for message conference or area selection via the
art
configuration value, you will need to include ashow_art
menu reference. Defaulted tochangeMessageConfPreArt
for conferences andchangeMessageAreaPreArt
for areas & included in the examplemenu.hjson
. - Config
defaults
section was theme related and as such, has been renamed totheme
.defaults.theme
is nowtheme.default
, andpreLoginTheme
is nowtheme.preLogin
. Seeconfig.js
if this isn't clear as mud. - Similar to the last item,
defaults.general.passwordChar
intheme.hjson
is now justdefaults.passwordChar
.
ENiGMA 0.0.8-alpha comes with some structure changes:
- Configuration files are defaulted to
./config
. Related, the--config
option now points to a configuration directory ./mods/art
has been moved to./art/general
./mods
is now reserved for actual user addon modules- Themes have been moved from
./mods/themes
to./art/themes
With the change to the ./mods
directory, @systemModule
is now implied for module
declarations in menu.hjson
. To use a user module in ./mods
you must specify @userModule
!
With the above changes, you'll need to to at least:
- Move your
~/.config/enigma-bbs/config.hjson
to./config/config.hjson
or utlize the--config
option. - Move your
prompt.hjson
andmenu.hjson
(e.g.myboardname.hjson
) to./config
- Move any non-theme art files, and theme directories to their appropriate locations mentioned above
- Move any module directories such as
message_post_evt
to./mods/
- Move any certificates, pub/private keys, etc. from
./misc
to./config
- Specify user modules as
@userModule:my_module_name
No issues
No issues
No issues
You will need to upgrade Node.js to 6.x+. If using nvm (you should be!) the process will go something like this:
nvm install 6
nvm alias default 6
Newly written code will use ES6 and a lot of code has started the migration process. Of note is the MenuModule
class. If you have created a mod that inherits from MenuModule
, you will need to upgrade your class to ES6.
A few upgrades need to be made to your SQLite databases:
rm db/file.sqltie3 # safe to delete this time as it was not used previously
sqlite3 db/message.sqlite
sqlite> INSERT INTO message_fts(message_fts) VALUES('rebuild');
If you have overridden or made additions to archivers in your config.hjson
you will need to update them. See Archive Configuration and core/config.js
As 0.0.4-alpha contains file bases, you'll want to create a suitable configuration if you wish to use the feature. See File Base Configuration.