Release Notes for JMRI 4.1.5 release
Date: Dec 04, 2015
From: Matthew Harris
Subject: Test version 4.1.5 of JMRI/DecoderPro is available for download.
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 test versions. We expect this series to end in the next JMRI production release around the end of 2015. (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 version should be considered experimental.
Known problems with this releaseThe Digitrax PR2 does not work with this release. If you need to work with a PR2, please stay with JMRI 4.1.3 or earlier, or wait for JMRI 4.3.1 which should appear in December 2015.
New warnings for this version:
The code for handling Panel Editor / Control Panel Editor icons has changed to better deal with rotating icons. This has changed how opaque vs transparent icon backgrounds are handled. Please check your panels to make sure we haven't inadvertently caused a problem, particularly if you've got rotated icons and/or use have custom icons with transparent backgrounds. If there are any problems, please send in a copy of your panel file so we can recreate the problem and fix it.
Older warningsSee the JMRI 4.0 release note for warnings predating the 4.1 development series.
The configuration is now stored in multiple files within a directory named
inside a Configuration Profile instead of within the file
PanelPro and DecoderPro both should migrate from the old configuration to the new configuration seamlessly.
See JMRI Issue #69 for more details.
Please report any issues at our GitHub project.
The XML schema for decoder files has been made more precise. This shouldn't effect people who just use the JMRI decoder definitions as distributed, because they all work with this more precise version. But if you have decoder definitions of your own, you may have to update them. Specifically, the decoder file verification will now reject a few things that it didn't catch before, even though they didn't really work:
- There can be only one label element for a given language on a given variable.
- A variable element has to contain just one type element such as decVal, enumVal, etc.
Mac OS X 10.11 El Capitan requires signed drivers for USB adapters. If you've upgraded from an earlier version, your drivers may not work. That will cause JMRI to throw errors when it doesn't find communications links. To fix this, go to the web site for your adapter manufacturer, find the drivers that are listed to work with Mac OS X 10.9 or later, download, and install, then retry JMRI again.
RFID readers using the Olimex protocol were incorrectly decoding tag values - this has now been fixed. If you were using Olimex RFID readers with earlier versions, your existing ID Tag database will contain invalid tags. New ID Tag entries will be generated for each correctly read tag - this will require that any additional information be re-entered and, optionally, old invalid entries manually deleted.
Jython has been upgraded to version 2.7.0 with the following potentially breaking changes:
- The decodeJmriFilename() function is no longer available by default. Use the FileUtil.getExternalFilename() method instead.
- The simple propertyListener object is no longer available by default. Create your own, following the examples provided in the jython folder in the JMRI distribution.
- jmri_defaults.py included in the JMRI distribution is no longer executed by default, but will be executed before any other Jython scipts if included in your User Files location.
- The default behavior of python.cachedir.skip is now true. If using a custom python.properties file, include "python.cachedir.skip=false" in that file.
- Certain Python scripts are too large to be evaluated in Jython. If a script fails with the
java.io.IOException: Mark invaliderror, set "jython.exec=true" in a custom python.properties file or rewrite the script to be less than 100,000 characters per file. Note that when using "jython.exec=true" it may be desirable to run the included script jmri_bindings.py as a startup action to emulate the evaluation environment used when jython.exec=false.
Decoder definitions that use the "ivariable" form are now deprecated. Definitions included with this release have been converted to the new form. If you have decoder definitions with the older "ivariable" form, they will no longer validate, but can still be used for the first couple of test releases in this series. Please ask on the JMRI Users group for help converting them, or just drop them and use the current definitions.
The OpenLCB 0.6.4 library in this version has a bug in its alias calculations which prevents JMRI from communicating occasionally. A patch has been submitted to the OpenLCB group. In the meantime, the workaround is to restart JMRI and/or the node and try again; that might allocate different alias values.
Please use these links for downloading:
Mac OS X: https://sourceforge.net/projects/jmri/files/test%20files/JMRI.4.1.5-R25e54ec.dmg/download
Changes since test release 4.1.4:The list of included commits is available from our GitHub code repository.
- Mark Underwood added preliminary support for the DCC++ Arduino-based command station
New / Updated decoder definitions
- Dave Heap corrected some maximum values and bitmasks on the Function Outputs pane.
- Fixed a bug where the train build reports were placed in a directory called "operationsbuildstatus". This problem was introduced in version 4.1.1. You can delete this directory if you've used any of the test versions.
The code for handling Panel Editor / Control Panel Editor icons has changed to better deal with rotating icons. This has changed how opaque vs transparent icon backgrounds are handled.
The cause of these effects was the necessity to remove many setOpaque(true) calls to Positionable objects. The reason is that when rotated with a color background the object cannot be setOpaque(true). If opaque, color background will be the entire bounding box, not a shape corresponding to the original item. To display a rotated Positionable, the background, margins and border, if any, are drawn with rotated and filled rectangles to simulate what is normally the unrotated bounding rectangle and border.
The affected objects are PositionableLabels, SensorIcons (especially when represented with text rather than icons) and MemoryIcons. MemoryInputIcons, MemoryComboIcons and MemorySpinnerIcons are also affected, due to the background, margin and border code they share with PositionableLabel decendants. (They can't be rotated due to having widgets that won't rotate)