Release Notes for JMRI 4.99.7 release
Date: May 7, 2022
From: Bob Jacobsen
Subject: Test Release 4.99.7 of JMRI/DecoderPro is available for download.
Notes:
This is a test release. Please
post a note
if you encounter any new or old bugs!
And please back up your JMRI files before installing this, in case you want to go
back to an earlier version.
This is the next in a series of 4.99.* test releases to migrate JMRI to Java 11.
It requires Java 11 to work.
(See our page on downloading Java 11)
We expect this series to end in the next JMRI 5.0 production release at the end of Spring 2022.
(See the tentative release schedule)
Some of the changes involved are quite extensive.
They may require a certain amount of experience before they are working well.
Therefore, this test release should be considered experimental.
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
Update From Older JMRI Versions
If you are currently using a version older than JMRI 4.24, please follow these instructions carefully:
- Is your current version older than JMRI 4.12?
If so, then update to JMRI 4.12 first, and ensure everything works correctly: check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Store your configuration and panel files under a new name and use those from now on.
Then continue with step 2.
If you are currently using JMRI 4.7.3 or earlier on Linux or macOS (Windows doesn't need this),
then it's very important
that you update to JMRI 4.12 and
carrying out the migration process described in the JMRI 4.12 release note
before updating to any later release.
- Is your current version older than JMRI 4.20?
Then update to JMRI 4.20 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else
Save your preferences again.
Store your configuration and panel files under a new name, use those from now on, and go on to step 3.
- Is your current version older than JMRI 4.24?
Then update to JMRI 4.24 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else
Save your preferences again.
Store your configuration and panel files under a new name and use those from now on.
- You can then install this release.
Following this multi-step order of updating via stable major releases safeguards you against possible migration issues
that can arise from skipping these versions.
New problems with this release
- The LogixNG action SignalHead and the LogixNG expression SignalHead fails to
load the name of the signal head when loading a panel stored by a previous JMRI version.
A panel file stored by JMRI 4.99.7 will be loaded correctly.
If that affects you, please either
wait for
JMRI 4.99.8, due out shortly after this one,
or pick up the fix in a
JMRI development build installer
from
Jenkins.
New warnings for this release:
Older warnings
See the
JMRI 4.26 release note for more warnings predating the 4.99 development series,
including pointers to various migration issues.
These may be relevant to you if you're updating from an earlier version;
we strongly recommend you update to
JMRI 4.20
before installing this test release.
- Since JMRI 4.99.2
Example scripts related to MQTT moved from jython directory to jython\MQTT directory. This will require
an update to any start-up actions that reference their location.
- Since JMRI 4.99.1
This test release, and all subsequent ones, require the use of
Java 11 or later. Java 8 is explicitly not supported.
There's more information on this migration on the
JMRI Tech Road Map and
JVM Capabilities pages.
- Since JMRI 4.99.1
A number of classes and methods that have been deprecated for a long time
are removed in this release. These include:
- apps.JmriPlugin
- apps/startup/StartupActionFactory
- Routes/Turnouts/Sensors: One form of getNextAddress
- Handling of preferences from before JMRI 4.0; upgrade through JMRI 4.20 instead
- ShutDownTask, AbstractShutDownTask - use call & run methods now
- Removed JythonAutomaton, JythonAutomatonAction, JythonSiglet, JythonSigletAction
unused classes. These have been made obsolete by JMRI's native scripting,
and haven't been used since JMRI 1.2
- SSL (BlockBossLogic) - change to start/stop calls
- Various TrafficManagers.instance methods - use InstanceManager
- Throttle.getListeners() - use getPropertyChangeListeners
- Removed obsolete RosterRecorder class;
function now available via scripting
- Removed deprecated methods from Throttle panels
- Manager.getSystemNameList - rework with getNamedBeanSet
- Manager.getNamedBeanList - rework with getNamedBeanSet
- Manager.setPropertyChangesMuted - use setPropertyChangesSilenced
- Manager.getBeanBySystemName - use getBySystemName
- Manager.getBeanByUserName - use getByUserName
- FileChooserUtil
- get/setFontFamily in SystemConsolePreferencesManager
- throttle.FunctionPanel#changeState(..) has been replaced by #setSelected(..)
- Since JMRI 4.99.1
The PowerManager now only fires events with the id "power". Before this
release, it also fired events with the id "Power". Check that
your scripting code is looking for the right form.
- Since JMRI 4.99.1
This version no longer reads ZeroConf IPv4 and IPv6 preferences
written with JMRI 4.16 and before. Please make sure to upgrade
to JMRI 4.20 (or later) and save your preferences before
updating to this version if you have configured the WiThrottle preference pane.
Download links:
The
list of included changes is available from our
GitHub code repository.
Hardware Support
CBUS
- Console - Added Throttle speed / direction translations.
DCC++ and DCC-EX
- Updated to take advantage of Version 4 changes
LocoNet
- The DCS240 command station type was defaulting to the standalone programmer mode.
If a user was not paying attention, they would have issues trying to use all of the
command station capability.
- Some message interpretation features provided by "LocoNet Monitor" have been
'refactored' and slightly improved.
MQTT
- LogixNG has now support for MQTT. If a MQTT connection is
defined, the category MQTT is visible with the LogixNG actions
Publish and Subscribe.
New / Updated decoder definitions
- Added multiple SUSI accessory decoder definitions.
Digitrax
- Added Kato EM13 in Digitrax family: newer versions of this decoder have a Digitrax manufacturer code and a full fledged Digitrax SW.
Doehler & Haas
MD Electronics
- Added a definition for the MDE HDD turntable decoder.
ZIMO
- Added MX605N: Zimo non-sound decoder for Kato N ICE4 - same form factor as Kato EM13. Note that MX605 (already in DecoderPro) is the sound-version of MX605N.
DecoderPro
- Improved handling of improper input in variables.
- Improved accessibility of programming mode selections.
Layout Editor
- Fixed an error when an anchor point only had one track segment assigned.
- Improved display of certain images when rotated for display.
LogixNG
- The action Clock Rate has been added. It sets the
rate of the fast clock.
- Global Variables has been added. A Global Variable
is similar to a Local Variable, except that it is shared among
the ConditionalNGs.
- Global variables and Local variables can now be initialized
with a script expression or a script file.
- The action Listen on beans now protects against
removal of the beans it's listening to.
- The Edit local variables dialog can now be resized
so that the table grows and shrinks when it's resized.
- Update the Sequence action to reset itself when done if the continuous option is not
selected.
- Support for MQTT has been added. If a MQTT connection is
defined, the category MQTT is visible with the actions Publish
and Subscribe.
Operations
- Improved the build report
Panel Editor
- Improved display of certain images when rotated for display.
Control Panel Editor
- Improved display of certain images when rotated for display.
Turnouts, Lights, Sensors and other elements
- The order of presenting these elements in combo boxes
has been changed to make it more consistent. They now
list all user names first, followed by ones with just system
names. This also fixes a problem where some items are
not listed in the combo box.
Warrants
- Any warrant, regular or shared, will not allocate blocks beyond a restricted block.
A block is restricted if it is:
- Allocated to another warrant.
- Occupied by an unknown train.
- Signal protects it from entry.
-
When entering a block, the warrant will allocate as many blocks as it can up to the
next restricted block or its limit.
- Shared warrants only allocate up to a maximum of 2 blocks. (limit is 2)
- Regular warrants will allocate the full route if no restricted block is found. (unlimited)
-
Crossovers typically use one turnout to control both switches. Often, each switch is
track in different blocks. For such shared turnouts, throwing the switch in one block
may change the path in another block and could cause a derailment.
- Warrants now detect shared turnouts. Should the paths in the respective
blocks have different settings for the turnout, the warrant will allocate the block
sharing the turnout but not set its path.
- The warrant will stop the train before
entering the block. The train will continue when the conflict is resolved.
-
Block status of OUT_OF_SERVICE is informational. Warrants can allocate OUT_OF_SERVICE blocks.
-
The "Set" column of the Warrant List Table is removed. The "Allocate" column indicates the route.
The path is set if the block is not in a restricted state.
-
When a warrant is running under a speed change restriction, The timing between throttle commands
has be improved.
Web Access
- Multiple updates to JavaScript libraries shipped with JMRI.
Miscellaneous
- Update commons-io library to version 2.11.0 from 2.6. JMRI uses this for file selectors.
- Updated jsoup library to 1.14.3 from 1.13.1. JMRI uses this when rebuilding help metadata.
- Update for multiple hardware clocks.