Release Notes for JMRI 5.14 release
Date: MM DD, 2025
From: Bob Jacobsen
Subject: Production Release 5.14 of JMRI/DecoderPro is available for download.
This is a draft release note only; the download links do not yet work
We are very pleased to announce that the 5.13 series of JMRI test releases has resulted in a
version that's good enough to be recommended for general use, including by new users.
We're therefore making that version, "Production Release 5.14" available for download today.
Notes:
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
This release requires Java 11 to work.
Java 17 is recommended.
(See our page on downloading and installing Java)
Update From Older JMRI Versions
If you are currently using a version older than JMRI 5.0, 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.
- Is your current version older than JMRI 5.0?
Then update to JMRI 5.0 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 production release:
Older warnings
See the
JMRI 5.12 release note for more warnings predating the 5.13 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 5.0
before installing this release, see above.
- If you're using a Firefox web browser and opening JMRI
help files locally (not over the web), a Firefox bug
can sometimes cause it to enter a loop. There's a
workaround in
this JMRIusers post.
- Since JMRI 5.11.3
There's been a change to how OpenLCB turnouts are
addressed when using the MTT addressing short cut.
Turnouts 253,254,255, 510, 511, 512, 765, 766 and 767
will be addressed differently. If you're using any of these
via e.g. MTT253, you will need to change the address. If you've
been having trouble getting those addresses to work, this change should
fix that.
- Since JMRI 5.11.5
OperationsPro program file locations were changed in
JMRI 5.11.5. Start up actions
involving operations windows from previous releases no longer work.
You'll need to remove them and
add them back if needed.
Download links:
Preliminary build files (not the final released files) can be found
on the
CI project page.
-->
During development leading to the actual release, you can find test download files on the
continuous integration build page.
These are development files, and might not be working at any particular time.
This production version is made from test releases 5.13.1 through 5.13.8 The
full list of changes
in those is
available from our code repository.
Hardware Support
- Added a column to the LccPro main window for the node's user-entered description.
- Add "keep-alive" setting for netBiDiB connections.
- Developer: BiDiBReporter now inherits from CollectingReporter like LnReporter does, so getCollection() is available.
CBUS
- When WiThrottle is asked Share / Steal / Cancel? or Share / Cancel ? , the main
JMRI Throttle silent Steal / silent Share options are checked for preferred behaviour.
- The Console Filter is now displayed as a check-box tree.
- Improved Node Manager CANCMDB support.
DCC++ and DCC-EX
- Change DCC-EX heartbeat from <s> to <#>, requested by DCC-EX team
LocoNet
- Resolved a Console log 'Error' message that could be seen when
using the Slot Monitor's "Clear All Non-InUse Slots" button.
MERG
- If you have multiple CAN-based connections defined
(MERG, LCC, OpenLCB),
you can now specify which one for a start-up action to use.
- If you have multiple CAN-based connections defined
(LCC, OpenLCB, MERG),
you can now specify which one for a start-up action to use.
- The Send Frame tool has
- some button labels updated,
- a new Send Global Identify Events button,
- more reliable control of the Open CDI Editor button state and
- some clean-up of the window layout.
- STL Editor: CDI parsing error handling has been improved.
Debug output has been enhanced and explained in the STL Editor help page.
Roco z21/Z21
- Fixes a bug when programming locos.
TMCC
- Added programming support for the locomotive address and mode
New / Updated decoder definitions
- A No Decoder decoder with extended addressing
decoder has been added. This "no decoder" definition allows
a roster entry to be created that does not have a physical
decoder of its own.
It was created to suport the Zimo MX series of funcion-only
decoders that allow TWO addresses to be defined for a single
decoder - the primary address and a secondary address.
Function operations will result from commands sent to EITHER
decoder address.
The initial "No Decoder" definition is limited to a primary
address of 1-127, this extended version allows the full
range of extended addresses to be used
- "DCCWorld.com" has been added as a manufacturer ID that DecoderPro
recognizes.
Digitrax
- Updated Series 7 mobile (locomotive) decoder definitions.
- Added Series 8 mobile (locomotive) decoder definitions.
Public Domain and DIY decoders
- New definitions for Rokuhan A053 and A059 decoders
Technologistic (train-O-matic)
- Fix for Brake function key selection (F0-F28), including "no active" value. (Lokommander II decoders)
Control Panel Editor
- Fixed a bug that would cause Markers to be created in random locations.
DecoderPro
- The permissions On Program Track and
Program On Main has been added in the
section Decoder programming. If
permissions are enabled, these needs to be enabled
for the user to program decoders.
- There are two new columns in the DecoderPro main
display: "Decoder Manufacturer" and "Decoder Family".
These start out hidden. To display them,
right or control click in the header of any column,
and then put a check next to the column name.
- The individual DecoderPro tab panes can now be detached
and independently positioned on the screen. To detach
a pane, click on the "two pages" icon on the tab.
To reattach, just close the detached window.
- Fixed a bug where changes to the speed table sliders
would not remind you if they had not been saved to the
roster file.
- When working with a single roster entry, there's a
new "Comments" page. You can pop that off (using the
page icon in the tab) and enter your comments there
as you configure the values in the other panes.
What you type there will appear in the comment field
on the Roster Entry pane and vice versa.
- Detachable panes no longer appear in the Windows menu
unless they are actually detached.
- Added Help and Windows menus to the detached panes.
- It's now possible to disable Programming Track and/or
Programming On Main. See Preferences -> Roster ->
Programmer.
- DecoderPro now shows a "No Group" choice in the Roster Groups selector.
This contains all those roster entries that have not been
assigned to a specific group. You can delete roster entries
from the roster when displaying the "No Group" by selecting
the roster entry, then ctrl-clicking / right-clicking on it
and selecting "Delete from Roster".
- Update the roster XML Schema to fix a bug preventing
validation of the roster.xml file in some circumstances.
- There is now a way to define indexed CVs in a decoder definition so
that the PI and SI values will be written to new values afterward,
e.g. 11.12.123;0.1
- Fixed a problem causing the starting value when doing
CV reads to erroneously be zero.
Dispatcher
- At the end of a PAUSE transit action, set speedby signal,
do not blindly restore pre-pause value.
- The RosterSpeedProfile has been corrected to improve calculations for stopping.
If you have manually compensated for those errors you may want to re-evaluate
the Min/Max throttle settings and stopping distance percentage.
- The F-Numbers for Transit Section Actions for Light, Bell and Horn can be set on a per train basis.
- Fix bug delayed start actions not working when using speed profile ramping
- When creating/editing a transit you may now set the forward and reverse stopping distances
for individual sections. The forward and reverse refer to the direction thru the transit not
the direction thru the section (this differs from fwd/rev stopping sensors).
These are expressed in per cent and are in addition to the adjustment
specified when defining a train.
- Fix Create New Transit caused by bad initialization of stopping distance arrays. Fix crash when transit has no sections.
- Fix TransitAction SetMaxSpeed
- Add RosterGroup selection combo to Activate New Train. Remembers selection across sessions.
- Fix bug ActivateTrain SaveDIalog
- Correct calculating remaining length of blocks in a section.
- Display minimum scale speed when activating train.
- Add basic column sorting on the traininfo selection screen, and correct missplaced columns.
- Tidy up debug/trace in RosterSpeedProfile.
- Make info message in allocated section to debug.
- Fix Exception when starting trains under inauspicious circumstances.
- Change the default location for the dispatcheroptions.xml file to the
dispatcher directory.
- Optionally, limit Maximum Speed to any Block occupied by the train.
- Add scroll bars to the Dispatcher Options for the smaller screens
Layout Editor
- Normally, Layout Editor turnouts in UNKNOWN state are indicated
by drawing both legs of the turnout, instead of showing just one
as for CLOSED and THROWN. There's a new option 'Show ? When Unknown'
in the turnout's contextual menu that will make the UNKNOWN state
more visible.
NX - Entry/Exit Tool
- Fixed a bug which could sometimes cause extraneous messages
about failure to create a multipoint route even though one was available.
- Fixed a bug that would cause Markers to be created in random locations.
- A problem with LE track drawing and background images from 5.11.6 thru 5.13.3 including 5.12 has been fixed.
The problem appears if you have a background image in the Layout Editor. If so, the track disappears behind
the background image.
- Add two options to override the changes made in PR #13857 - Entry/Exit Enhancements
- Suppress the multi-point failed dialog
- Revert to the old GUI behavior
LogixNG
- The class jmri.jmrit.logixng.Category has been split into
jmri.Category and jmri.jmrit.logixng.LogixNG_Category.
- It's now possible to execute some LogixNG commands when a LogixNG error occurs.
It's useful if JMRI run without a display and you want a notification for
example by a sensor. To use it, select menu item
Tools -> LogixNG -> Edit error handling module.
- Preferences -> LogixNG -> Default error handling
has the new option Abort without error. If it
is selected and there is an error in the CondtionalNG, the
ConditionalNG will be aborted but there will be no logging to the
system console. This might be useful together with the
Error handling module.
- The category OperationsPro and the action
Run automation have been added. The
Run automation lets you run an OperationsPro
automation from LogixNG.
- Fixed a bug in the action Program On Main
that caused connection specific programming modes to fail.
- The new action ExecuteProgram has been
added. It lets you launch a program from JMRI.
- The new action Request update of turnout
has been added. It's used when you want JMRI to request
the state of a turnout from the layout. Note that not all
systems support this.
- The new action For each with delay has
been added. It's similar to For each but
has a delay between each item. It's useful when you need
to do something for example for every turnout, but where
you need to wait some time between each action.
Meters and MeterFrames
- The shutdown process has been modified to detect changes to the meter settings.
OperationsPro
- Fixed a bug where a train build would hang after the upgrade to 5.12 and there were also built trains created with an older version of JMRI.
- Added quick service for classification/interchange tracks. This is an experimental addition, looking for testing and feedback.
- Additional improvements to quick service tracks
- Fixed a bug with alternate tracks in FIFO or LIFO mode
- Printing Manifests or switch list will no longer have a page break in the middle of a locations work
- Fixed the text header in the export routes tool
- Enhanced the Cars and Locomotive windows, now to find a car or loco you can now use the enter key to begin the search
- LogixNG has now the Run automation action that lets you run an OperationsPro automation from LogixNG.
- New feature, a non-lead car in a kernel departing staging or spur can now have a custom load that doesn't match the lead car
- Added "hyphen" feature to the train name. The program will drop "-(something)" from the train's name on Manifests and switch lists
- New enhancement, you can now set the maximum length for a track in a pool
- Added G scale 1:24 ratio option in the Setting window, renamed G scale 1:32 ratio "Gauge 1"
- Fix a bug with RWE or RWL and no track assignment, along with using a schedule that doesn't specify car's load
- Added "Show Locomotives" to edit locations and tracks tools
- New feature, Track Priority. Cars on a higher priority track get serviced first when building trains.
- Added car blocking to CSV Manifest and switch list files.
- Minor improvement to the "Show Schedules by Car Type and Load" tool.
- Improvements to the Cars print and preview, added car's "Last Location", "Last Train", and "Set out" time.
- Fixed a bug regarding the printing of the last line of a Manifest or switch list.
- Improvements to help.
- Improved passenger car blocking when using custom train blocking.
- New feature, auto select car types for a train based on the locations serviced by train's route.
- Major improvement to "Test Destinations" for classification / interchange and staging tracks.
- Improved train routing when there's multiple locations that can pull a car.
- When a car arrives at a spur with a schedule, the car's final destination now changes when the car's load status changes.
Panel Editor
- Fixed a bug that would cause Markers to be created in random locations.
Permissions
- The permissions On Program Track and
Program On Main has been added in the
section Decoder programming. If
permissions are enabled, these needs to be enabled
for the user to program decoders.
Preferences
- The Shutdown preference help has been updated. The store request now includes
a Cancel option which cancels the shutdown process.
- Prevent duplicate start up entries when adding a WiThrottle start up action.
Roster
- There are two new columns in the DecoderPro display of the
roster: "Decoder Manufacturer" and "Decoder Family".
These start out hidden. To display them,
right or control click in the header of any column,
and then put a check next to the column name.
- RosterSpeedProfile. Improve accuracy of calculations for stopping.
Scripting
- Upgrade YAAT to 3.4. The @include statement has been added.
- Fixed a bug that prevented restarting AbstractAutomaton-subclass
objects in scripts.
- Add MemoryValuesPersistence.py. The script will write the values
for selected memory variables at shutdown and load them after starting PanelPro and
loading the layout data xml file.
Signals
Signal Heads
- For signal heads using the DCC Signal Decoder, an option has been added to the
Add/Edit dialog to copy the set of appearance numbers from another signal head. This
can be used to create a custom set of appearance numbers that can be easily applied
to new and existing signal heads.
Switchboard Editor
- Adds check to prevent a duplicate Turnout / Sensor / Light UserName being set.
Throttle
- Uses correct connection for non-default Throttle release / dispatch requests.
- If the selected locomotive has more than 33 functions defined,
the Function Panel will switch to a tabbed layout to make
the functions easier to locate.
Turnouts, Lights, Sensors and other elements
- Audio Tables, Add Buffer button - Fixed a bug preventing the
Add Buffer window displaying.
- There's a new "Property Add/Edit" in the item popup menu
in the various tables. This lets you add or edit
property values associated with a particular item.
Warrants
- Fix OBlock java.util.MissingResourceException: Resource 'BlockUnknown' not found exception.
- The getWarrantSpeedMessage() method has been added to the Warrant class.
This is a public class that can be used by scripts and LogixNG formulas to get the current
Warrant speed message. The message format depends on the Interpretation
selection in Preferences ⇒ Warrants.
WiThrottle Server
- Prevent duplicate start up entries when adding a WiThrottle start up action.
Miscellaneous
- Fixed a formating problem in "Report Issue" tool
- Added a link to the JMRI users group in the Help menu
- Updated OpenLCB_Java library to version 0.8.6, which is
just a bookkeeping update without functional changes.
- Updated the JDOM2 library from 2.0.6 to 2.0.6.1 to
resolve a security issue.
- Testing - JUnitUtil - waitFor condition failure text can be formed from a String Supplier, e.g. a lambda expression.
The expression is only evaluated ( lazily ) when the assertion fails.