Release Notes for JMRI 4.99.4 release
Date: March 13, 2022
From: Bob Jacobsen
Subject: Test Release 4.99.4 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
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 97 included changes is available from our
GitHub code repository.
Hardware Support
C/MRI
- Added CmriExample.py,
a sample script for directly sending a C/MRI frame.
KPF-Zeller
LocoNet
- Added Digitrax DCS210Plus command station
- A storm of LocoNet messages could result if certain command station models
have track power turned off whem JMRI starts. The status enquiry messages would
fail, and JMRI would repeat them in an effort to get complete information from the layout.
This release no longer retries messages in that case. If you are not getting
initial status from some devices on your layout, you should power up
your LocoNet system, including track power, before starting JMRI.
Uhlenbrock Intellibox
- Improved handling of the decoder functions.
New / Updated decoder definitions
ESU
- Fixed a problem introduced in JMRI 4.99.3 that
prevents the function settings from being properly stored.
ZIMO
- Updated some MX640-series definitions, adding menu items for on-track operations.
DecoderPro
- You can now write out just edited CV values to a CSV file.
- The programmer pane "display" element now supports a "viewOnly" attribute.
For more information see the
Create a Custom Programmer
page.
Layout Editor
- Improved XSLT display of all elements.
Logix
- Change the system name input for the Copy command to use a combo box. This makes it
easier to select an existing Logix as the copy destination.
LogixNG
- Copy now works in the LogixNG table. With Copy,
you can copy the entire LogixNG to a new LogixNG with all its ConditionalNGs.
- Improved XSLT display of all elements.
Panel Editor
- Improved XSLT display of all elements.
Routes
- Provide the ability to copy the content from an existing route when creating a new route.
Turnouts, Lights, Sensors and other elements
- Improved XSLT display of all elements.
Scripting
- Added waitSignalMastState, waitSignalHeadState to AbstractAutomat support.
- Added shortcuts for transits and sections.
Signals
Signal Systems
- New SNCF-2015 French signal system
Signal Masts
- Improved XSLT display of all elements.
Simple Signal Logic
- Improved XSLT web display to include sensors
Timetable
- Add a Copy Stops button. This is used to copy the stops for an
existing train to the new train.
Warrants
- Additional bug fixing and enhancements to Shared Warrants. SWs are
useful to animate the simultaneous operation of multiple trains.
Be aware that SWs may mutually block movement that can only be resolved
by aborting at least one of them. Regular warrants avoid such deadlocks
due to the priority of their launch times.
- SWs will not allocate any blocks beyond or at a "hazard" (occupation
by foreign train, passage beyond a stop signal, conflict with another
warrant)
- If a ramp down to stop at a "hazard" stops before entering the next block,
the restart is done automatically when the condition clears.
- If a ramp down to stop at a "hazard" overruns into the next block, the
SW will allocate the next block if that is permissible. Whether or not, i.e.
the position of the train is marked yellow or blue, use the normal Control
commands to restart. "Resume" if the "hazard" was occupation or a warrant,
or wait for the signal change to an allowable speed.
- The messages to the status field of the warrant Table and other information
can be displayed to the console by clicking the "Trace Warrants" button in
Warrant Preferences.
Miscellaneous
- Developers: The
Typescript and Javascript support
has been updated.
- The included 'ajv' and 'fast-deep-equal' web packages have been updated.
- Improved XSLT display of many elements in panel XML files.
- Remove the Store Only table content (No Panels)... option from the File menu
used by the PanelPro tables.
- When running the JmriFaceless application, the panels (PE/CPE/LE/SE)
in the xml data file (aka Panel file) are not loaded.