Release Notes for JMRI 1.6.1 production release

Date: Aug 15, 2005

From: Bob Jacobsen

Subject: Bug-fix version 1.6.1 of JMRI/DecoderPro is available for download.


This version corrects a few problems with production version 1.6, listed below. You only need to update to this version from 1.6 if you've encountered one of the problems listed. If you have a version earlier than 1.6, you should consider updating to this version.

The test versions (at the end of August 2005 up to version 1.7.2) contain further feature updates, etc.

Warnings for this version:

These are things that people who are using release 1.6 or who are upgrading from a 1.5-series release have already dealt with, and don't need to worry about. If you are upgrading from the previous Production 1.4 release, please consider these.

Paul Bender corrected sensor addressing for Lenz XPressNet in version 1.5.7. Unfortunately, this change will require modifications to existing panels used with XPressNet; Users will need to add 8 to the number of any existing XPressNet Sensor. Alternately, users can change the address in hardware by subtracting 1 from the LR10x address.

The CT Electonik decoders have been reworked and renamed in version 1.5.6. Users of these decoders (only) need to reread their roster or manually edit their roster.xml-file when they move from an earlier version, including 1.4.

The method for configuring the C/MRI protocol has changed since version 1.4. If you use the C/MRI protocol, you will have to reconfigure your preferences the first time you run this version.

Download links:

Please use these links for downloading, including the "?download" at the end. That adds to SourceForge's advertising statistics, which makes them happy to host our stuff.

Mac OS X:



MacOS 8/9 "Classic":


Changes since test version 1.6:

Fixed problem where the program wouldn't start up if there was no configuration file, or would start up in an inconsistent state if the configured port could not be found (Dave Duchamp, Bob Jacobsen)

Allow XML files to be read even if they don't validate against the enclosed (shipped with the code) version of the DTDs. This allows more robust forward-compatibility. Also, update to 1.7.2 DTDs to help with this.

Changes since test version 1.5.8 (these were also in 1.6):

Fixed a problem where certain decoder definitions (ones containing a "Constant" element) would not be able to do a "read all" or "write all".

David Duchamp fixed a problem with not being able to unselect ("uncheck") turnouts in the Route definitions on Mac OS X

Paul Bender fixed communications with the Lenz LI100 (the LI100F, LI101 and LI-USB were uneffected by this problem)

Complete list of changes since production version 1.4:

Added capability to specify min and max values for entries in a speed table (RFE 992975)

Made LocoBuffer II an explicitly available protocol, with the correct switch settings for the baud rate choices (RFE 930836)

Rick Beaber provided decoder files for the MRC 1626 and 1627

Ian Birchenough and Phil Grainger contributed six new definitions for ZTC decoders

Mark Schutzer contributed a decoder definition for the Lenz Gold decoders

Norman Clymer contributed a decoder definition update for TCS

Paul Bender contributed a new decoder definition for the Atlas VO1000

Norman Clymer contributed a new definition for the ESU LokSound 3 decoder

Ian Birchenough provided information for the "Bachmann 4-function decoder" definition, which is new.

Simon Ginsburg provided decoder definitions for the Digitrax DN163I0 and DN163K1B decoders.

Howard G. Penny contributed info on the NCE D14SR decoder.

Len Royles contributed five new/updated MERG decoder definitions.

J Salemi contributed another round of improved definitions for TCS decoders, including the Tx series and A1X series.

Joe Salemi contributed a decoder definition for the Atlas 345 decoder and updated the TCS Tx definition.

Michael Greene contributed new definitions for the E-Z Command and Zimo MX61_N decoders, and updated the Soundtraxx SHS F3 and F7 Diesel decoders.

Jeff Law provided new decoder definitions for the Umelec ATL-2051, ATL-2054 and ATL-2064.

Paul Bender provided a decoder definition for the Lenz 1000 "Value Line" decoder

Mark Marowicz provided a CT Electronik SL 51 decoder definition

Definitions for 5 Wangrow decoders were added. Unfortunately, we don't have CV 7 values for any of these, so automatic identification won't work. If you use one of these definitions, please email in the CV7 value from your decoder(s).

Jack Shall contributed a LE1035 definition and the new Lenz Ultra Drive family

Michael Greene added the Lenz 51 file of "Lenz 4th gen BEMF decoders", including the LE030, LE040, LE130, LE135, and LE230.

Kelley Loyd contributed EasyDCC Throttles

David Duchamp added diagnostics to the C/MRI tools

David Duchamp has added multi-node support for C/MRI. On the preferences window, after you select the "C/MRI" protocol, there will be a "Configure C/MRI nodes" button. Push that, and you'll get a window for editing the configuration of your C/MRI node(s).

Alfredo Sola provided a Spanish translation

Added simpler aliases for use in scripts. You can now refer to the "state" of a turnout, sensor or signal head.

Started to add direct serial output; not yet functioning at more than the initial level.

Added an internal fast clock, based on the computer's system clock. There's a new "Clock" submenu in the Tools menu, which includes "Setup fast clock" and "Nixie clock". "Setup fast clock" panel for controlling the fast clock, including letting you set the rate, time and run/stop. "Nixie clock" is a cute little fast clock display, which shows the current fast time on Nixie tubes.Panel editor can now be suppressed when opening a panel file by setting the "hide" attribute to "yes" in the XML file. The default is not to hide.

Added two new data types to the code: Reporter and Memory. The first implementation of Reporter is Digitrax transponding. By adding the appropriate elements to your panel files, you can show decoder ID information on your panels. Memory objects are meant for scripting control; the first implementation is a MemoryIcon that lets you put a multi-state icon on the screen. See xml/samples/MemoryIconExample.xml and samples/ReporterIconExample.xml for info on how to set this up.

A new protocol was added for Intellibox direct serial connections. See the JMRI intellibox web page for details.

Added a new "Thread Monitor" so that you can see which scripts are running, and kill those that you want to stop.

Added a "License" menu item in the Help menu that displays the license under which JMRI is distributed. I hate having to stress the legal aspects, but some of the commercial concerns are starting to become assertive about possibly demanding licensing fees from users of other products, and I've been advised to strengthen our legal position for the time when push comes to shove.

Add menu item to panel so that panel editor can be reopened.

Add "File" menu to panel editor that allows new/load/store operations.

Output from scripts can now be viewed in a window via "Script Output" from the Panels menu. The "Script Entry" item in the Panels menu will pop a window in which you can enter jython statements (single or multiline) and click execute to run them.

A "defaulticon" attribute has been added to "memoryicon" storage in the XML panel files. This lets you set the icon that's displayed when the Memory object has a value for which no other icon is displayed.

Memory objects were added in version 1.5.2. We are making a _NON_BACKWARD_COMPATIBLE_ change to the way these are stored in panel files in this version. If you have created any panel files that use Memory objects in version 1.5.2, you will NOT be able to load them with this (and all later) until you have opened the file with an editor and changed all of the occurrences of the element named "memorys" to "memories". We apologize for the inconvenience of this mis-spelling. A similar change is being made to the variable available in scripts; you will have to make a similar change there.

Support for playing sounds from scripts has been added. See the example. Two sample sounds have been added to the distribution in resources/sounds: Crossing.wav, a grade-crossing bell, and RlyClick.wav, a relay click that you can add to your scripts so that you can hear when a panel lever is thrown. Unfortunately, these are in "WAV" format, which Classic Macintosh can't play, but they were the only railroad sounds handy. "AU" and "AVI" formats should work on all platforms. Contributions of good sounds would be very welcome!

Joe Ellis contributed a "Train Show Basic" programmer format.

Status of the fast clock (rate, run/stop, time) stored and loaded with panel files

Add Lenz LV102 configuration tool to XPressNet menu (Paul Bender)

Power manager tool now can come up in correct layout state if the hardware lets that be known (Paul Bender)

A new set of PanelPro icons for US&S panels was provided by Dick Bronson. It includes signal and turnout switch panels, light icons in various colors, a very nice background image for the panel, and a complete set of track-schematic icons so you can animate your schematic. They are located in resources/icons/USSpanels

New PanelPro icon, courtesy David Falkenburg and Dick Bronson

Paul Bender: New XPressNet Specific Consist Manager. Allows use of Lenz "Double Headers" and Decoder Assisted consisting through the use of Lenz's "Smart Consisting" facilities.

Alex Shepherd added the capability to synchronize the LocoNet fast clock to an internal clock.

Dennis Miller added an analog (with hands) clock.

PanelPro can make Digitrax SE8C signals do a mix of flashing red, flashing yellow, flashing green and dark signals at the same time. For this to work, the SE8C board should have the 4th aspect configured to show "dark"

Signal icons on a panel can now be clicked to change the signal aspect (color). Note that if there's logic controlling the signal, the new state might be changed right back.

New sample script for monitoring a LocoNet. It writes a summary of traffic statistics every 15 seconds to the log window, plus to a file.

New sample script for testing a newly-installed decoder. You enter the locomotive address and click start, then it runs through a sequence of commands: forward 0%, forward 50%, forward 100%, reverse 0%, reverse 50%, reverse 100%, F0 on in forward, F0 on in reverse, F0 off, etc.

Added several features to the logic for sensors firing Routes. You can now specify four possibilities: "On Actice", the default, will fire the route when the Sensor goes active. "On Inactive" fires the route when the sensor goes inactive; you can e.g. use this to have a route return a turnout to the normal state when an input is returned to inactive. "Veto Active" means that the route will not fire when that sensor is active; this is used to protect a turnout from changing when e.g. the track section is occupied. And "Veto Inactive" rounds out the four.

Add support to panel logic for counting CVs to be programmed; a first step toward a progress bar.

Added milliseconds to the time displayed by the protocol monitors (LocoNet monitor, XPressNet monitor, etc)

Added a checkbox to the Turnout Table that controls whether the feedback-related columns will be shown. It defaults to off, to hide complexity from people who don't need it.

Andrew Crosland contributed tools for updating SPROG microcode

Add "open throttle" to actions that can be configured to take place at startup

Throttles on LocoNet can now do F9 through F12

Paul Bender added support for the Lenz LI-USB interface to XpressNet.

Add the ability to reverse the relative direction of the second locomotive in a Lenz "Double Header".

Mark Knox contributed code to make SPROG drive turnouts

It has been unfortunately necessary to add a copyright notice to each of the decoder definition files.

Scott Henry contributed two new scripts: - This script sets all turnouts to "closed". It is intended to run at startup of Panel Pro. An initial 30 sec wait is provided so that the layout can be powered up after panel pro starts, which updates the detection sensor, yet still have power available for the turnout commands. Additional 5 sec wait periods are provided between turnout commands so that the previous command is completed. It was tested on a layout with tortoise motors and Digitrax SE8c and DS44 turnout control. - This script plays the crossing sound when the sensor changes from active to inactive. Thus the crossing bell sound on the entrance of a train into the block.

For debugging, it's now possible to directly edit the values for Reporter and Memory objects via the Reporter and Memory Table.

Many Javadoc warnings fixed.

Improved display of rotated icons on panels to avoid artifacts; bug #1198825 (Howard Penny)

Fixed bug #1189948: The state of a CV in the CV table model will change if the cursor is moved from one value to another even though the value has not really changed. (Howard Penny)

Fixed bug #1214881: Extra debugging output present when printing the roster summary (Bob Jacobsen)

Fixed bug #1216553: BLD16 programmer buttons say "SE8" instead of "BDL16" (but still work right)

Fixed problem writing multiple CVs in ops mode on LocoNet (bug #1218980 and also feature request 1083398)

Fix bug (#931470) where opening a protocol more than once in the preferences would result in duplicate entries in the selection boxes.

Fix bug introduced in 1.5.2 that prevented panel editor window from opening when reloading a panel file (#1006343)

Fix a bug (#994684) where changing the protocol in preferences several times would cause program to hang.

Fixed two bugs with LocoBuffer preferences: LocoBuffer-II and Intellibox would only work at 19200 baud, and sometimes the wrong options would be shown when a protocol was selected. (#1009362, #1009365)

Fixed bug on MacOS Classic that prevented setting the default programmer name (Bug #937589)

Updated build system so that MacClassic versions could be automatically built with correct compilation steps, etc. (#1013476)

Fixed the Digitrax DH123 definition, which had high and low CV7 values reversed so that it wouldn't identify (#1014996)

DecoderPro would sometimes get in a "loop" reading CVs while reading a decoder's speed table. It would just sit there reading the same couple of CVs over and over and over again. This was hard to reproduce, but it believed to be fixed (#994607)

Fixed erroneous "failed" message when connected to a LocoNet server (#901206).

Howard Penny fixed bug #1198724, where removing an icon (turnout, sensor, etc) from a panel would still leave it visible until the panel was repainted.

Fixed bug #1213024, error printing roster summaries when the comments are very long.

Howard Penny fixed bug #1199405, not showing right color in a panel-icon popup menu after first loading the icon

The "Script Entry" windows weren't independent. If you had more than one open, only the first would work properly. (#1021632)

RFE 1200692: C/MRI nodes that are not responding to polls will periodically have an init message, followed by an output message sent to them. This is meant to get them to recover if they've e.g. been powered off.

RFE 989410: Turn off DirectX acceleration of Java3D on Windows. This prevents a rare fault during startup.

C/MRI inputs are now debounced: An input has to stay changed for two poll cycles to be visible.

Panels now will show scroll bars if they are shrunk below their original size. Note that if you drag the panel to make it bigger, that larger size will be kept.

Protected the "Send DCC Packet" tool against various bad input formats

Fix a bug where LocoNet sensors and turnouts discovered on the layout would have UNKNOWN state until the 2nd message (instead of the 1st message) was seen.

Fix typos in configuration items noticed by Dick Bronson. Also, improve wording of baud-rate selection prompt following his suggestion.

Fix a bug where a request for a LocoNet throttle would fail if there was already one open.

Programming with a Lenz command station will now report a short circuit properly when (if?) one occurs - Paul Bender

Paul Bender improved the consist tool to remove artificial consist limit, and add the ability to recall a consist within a single session. He also corrected some minor bugs.

Scripting wasn't working with headless (no GUI applications); fixed

Fix a positioning error in the MemoryIcon; when initially loaded, the positioning of the default icon wasn't being done correctly.

Connections via LocoNet server were marked "failed" even when OK; fixed.

Doing a write all or write changes to the CV panel in a DecoderPro panel would also write the read-only CVs; this is incorrect behavior. Now fixed so that write all or write changes (single panel or all panels) will skip those, but the individual CV write buttons still work.

SPROG fixes: Accepts P> or R> as prompt to solve problem with run-on entries in monitor. Note that there's a new SPROG firmware version to fix the problems with operating functions on locomotives.

Routes were being restored from a panel file in an "inactive" state, so that they couldn't/wouldn't trigger until you went to the Route Table and "updated" them. This is now fixed so they work from the time they are reloaded.

Fix some extra-verbose error messages that would occur when the program started up without a programmer (command station) connection.

SPROG now starts up in Direct Bit mode instead of Paged programming mode, as suggested by Andrew Crosland. XPressNet systems now do this to (Paul Bender)

Scripting was missing convenience aliases for "DARK", "FLASHRED", "FLASHYELLOW" and "FLASHGREEN" appearance of signals.

Fixed Java version compatibility bug with Mac Classic 8.6 when recreating decoder index

Fix some minor Javadoc problems

Fix problem introduced in 1.5.4 that prevented SPROG from functioning

Updates to consisting code by Paul Bender

Update to consist tool to handle case when no consist selected; may be correcting a change to the way Java 1.5 works - Paul Bender

Update the XPressNet monitor to display additional messages in English - Paul Bender

Dennis Miller improved the Throttle panel layout so various parts display completely

Improve Digitrax ops-mode readback so that it works with Intellibox and other devices.

Fix a problem with SPROG where code listening to replies would get a second copy after sending a message. This only effected people writing code within JMRI itself.

Convert the NCE support to use "binary" commands instead of "ASCII" commands when talking to the command station. This is intended to make JMRI simultaneously compatible with the existing and next versions of the NCE command station PROMs.

The internal fastclock mechanism was updated so that various clocks would stay synchronized when the minute changes.

Dennis Miller updated the Nixie clock so that it can be resized. He also greatly improved the graphics.

Improvements to support for one DecoderPro variable split across two CVs: Mask now works on both upper and lower bytes for both read and write to CVs. Previously, this was only used in a special case for AD4 decoders, and hopefully that special case still works.

Fix bug where a Roster selection box would have entries out of order after adding a new locomotive.

Alex Shepherd added some additional decoding to the LocoNet monitor in the fast clock area.

The problem with "out of memory" when requesting certain DecoderPro programmer formats while running on MacOS ("Classic") has probably been fixed.

Fixed a crash on Mac classic when a DecoderPro speed table is opened for the 2nd time.

Fix a formatting problem in the LocoNet monitor display of messages with certain PSTAT values pointed out by Rob Heikens

Alex Shepherd fixed a bug where the LocoNet slot monitor wouldn't display properly when not displaying system slots

Fix a bug where the Signal Table wouldn't update the "Lit" column if it was changed elsewhere. The fix is general, and covers other BeanTables that have extra columns.

Two bugs with Routes fixed: A newly added route wouldn't be active (wouldn't automatically fire when it's sensor or input turnout changed) until it had been stored/loaded or edited. And you couldn't have more than one Route with a null (empty or "") user name.

Paul Bender fixed an XPressNet technical issue associated with XPressNet being only able to address CVs up to number 256

Dennis Miller fixed a bug (new in 1.5.6) that prevented adding Sensors to a panel.

Updated a file-definition DTD so that older panel files could again be read

Paul Bender fixed a small bug in the consist support where a locomotive could be added twice with two different directions

Fixed a bug causing configuration files to carry more than one entry for the route manager. This had no user impact (we merge the entries anyway), but was untidy.

Fixed a problem causing panels to have a different size when loaded than they had when stored. This may cause small changes to the size of existing panels; if so, just resize them as desired and save again.

Corrected the bit location for the "Vstart/Vmid/Vfull in 128 step mode" variable in Digitrax decoders (problem noticed and diagnosed by Herb Poppe)

Fix problem where loco number field wouldn't appear in throttle panel

When the Lenz XPA adapter is changing directions, send "idle" instead of "Emergency Stop/Off" (so we don't have to worry about XPA settings)

Paul Bender made a correction to intermittent bug with not seeing all information on the LI101F tool. This is a fix for Tracker Bug #932107.

Corrected bug in LZV100 Command Station reset button command station now properly resets when button is pressed.

David Duchamp fixed a bug with loading panel files that would sometimes cause user names to be missed.

Howard Penny fixed a DecoderPro bug that resulted in exceptions when more than 12 functions were used.

Fix problem when more than one TurnoutTable is open (the show feedback buttons interacted in a bad way) Fix problem with the closed/thrown button being displayed as a text field when show feedback has been selected.

Paul Bender: Make sure XPressNet JMRI throttle can take over from physical throttle. Error caused by too frequently checking the status of the currently selected address when not in control (i.e. in Follow the Leader mode).

Under certain circumstances, the font size in the throttle address field would get too small (sometimes to small to be visible) or too large. This is now constrained within some reasonable limits.

Paul Bender corrected the addressing of XPressNet sensors. See warning at top about changes to addressing which may effect existing panel files.

Fixed problem releasing a JMRI throttle with EasyDCC systems (bug 1174256)

Under some circumstances, writing to CV 1 (short address) would leave the decoder set for "short adddressing", even though DecoderPro was showing long addressing selected. This has been fixed.

Fixed problem with DecoderPro "read all panes" and "write all panes", which would only do the 1st pane (new in 1.5.7). Also, fixed problem with certain errors during read/write of CVs not being retried.

Includes updates by Walter Thompson so that custom programmers aren't needed for certain decoders.

Fixed a problem recreating the roster index, where it would fail if there were any non-roster XML files in the roster directory.

Improved the advanced preference for relocating roster information: Fixed a bug that prevented it from working if the default programmer was set. Improved the labelled and added explicit checks to make it clear that you have to select a "roster.xml" file during the file selection dialog. Added a dialog box to explain what's going on.

MemoryIcon objects now work two ways: If a series of icons is defined in the file, the memory contents will be translated via this table (this was the original behavior). If there aren't any icons defined, the memory contents is displayed directly, as a string if it's a String and as a NamedIcon if it's a NamedIcon.

Simple block logic controllers (BlockBoss) now contain a "hold" parameter so scripts can easily start/stop the logic. When hold is true, the output is always red.

Error handling with the new NCE EEPROM has been somewhat marginal; this release improves it.

Mark Knox suggested a change to the build.xml file so that Javadocs could build inside Eclipse IDE. (Yes, there are a lot of buzzwords in that item; if you don't know what those mean, you probably haven't needed this fix)

The XPressNet monitor now converts Turnout and Feedback encoding into English.

Howard Penny improved scroll bars on PanelPro panels so they don't take up space when not needed.

Error handling improved in the programmers for the various Digitrax boards

Paul Bender and Dennis Miller arranged for some windows to have better icons on Windows machines; there's still more work to be done here, including adding this feature to more windows.

Setting the turnouts in a Route now proceeds in parallel with other operations (David Duchamp)

Dennis Miller adjusted the ID, road name, road number, etc fields in the roster so that they can contain more information.

Dave Duchamp changed the Route logic so that they'd send their turnout messages even if the message was thought to be redundant. This is needed because a local control might have changed the turnout from the previous position.

Dennis Miller updated the way that the throttle sizes the function buttons so that they can contain more text and still be readable; the text has also been changed to a monospaced font to make layout easier.

Paul Bender made some improvements to XpressNet service mode.

Paul Bender improved how deleting a consist works.

Saving "configuration" and "Panel" files are now handled separately to reduce the chances of a user inadvertently overwriting one of their files.

Minor updates to message formats in the LocoNet monitor

Paul Bender revised the turnout feedback support for XpressNet to make it work with new feedback modes

PM4, BDL16, SE8 programmers now have better error handling, and can now address boards up to 256 (was up to 128 before)

Dennis Miller improved the way icons are selected for the panel editor. When you open a window to select new icons for turnouts, sensors, etc, you now get a preview of the selected icon at the bottom of the window. Also, if you hover the cursor over one of the icons at the top of the window, a tooltip will be displayed with the icons full pathname so you can find it again.

On Windows, a "shortcut" to PanelPro is now added to the desktop. If you don't like it there, just delete it. Ron Sommer and Bob Blackwell provided an icon for it. On some windows systems that icon appears OK, and on others the default JMRI icon is appearing; there doesn't seem to be any rational reason for this.

Alex Shepherd's method for installing javax.comm on Windows is being used to avoid problems with multiple and odd Java installations confusing our installer. The installer still tries to figure out where files should go, but in addition we leave the files in the distribution where they can be also found and used. Note that there are some Windows systems on which this doesn't work for SerialIO (used to connect to an MS100), so those still need to install the libraries in the Java installation.

Peter Brandenburg did a major update on the CT Elektronik decoder definitions. They no longer need special programmer definitions; just use the Comprehensive programmer to get the full capability. (Patch 1094135) Since this renamed and added some decoders, users need to reread their roster or manually edit their roster.xml-file.

If you try to store a panel or configuration file and there's an existing file by that name, you'll be prompted to confirm that you really want to overwrite the existing file.

LocoNet turnouts have three extra feedback modes: MONITORING, the default, will follow changes on the LocoNet, e.g. from other throttles; EXACT, will handle DS54 messages from two microswitches; INDIRECT will handle DS54 messages from one microswitch per turnout.

Signals now flash when set to an appropriate aspect.

Alex Shepherd added some periodic checking to the LocoNet slot monitor so that it would catch the change when a slot was purged

Macintosh "Classic" build process rebuilt _again_. The MacOS Classic JVM will lock up if certain synchronized constructs are compiled with a "modern" compiler, so the build process has been redone to ensure classes containing that are compiled with the "oldjavac" compiler. This is a stopgap, however, as other constructs (local variables in anonymous inner classes) _require_ the newer compiler; eventually, we'll get a conflict between these.

Paul Bender: Internal changes to consist tool to add hooks for system specific consist restrictions and error propagation.

Dennis Miller improved decoder printout by adding the CV number in the "All" version.

Alex Shepherd: Improve key-mapping for the Throttle.

Change DecoderPro code so that only variables coded red ("Unknown/Error", generally caused by a read or write that failed) or orange ("edited", due to manual changing of the value) will be read or written when you click the various "read/write changes" buttons. This is a significant change to behavior; please try it and let us know whether it's an improvement!

Update on US&S lamp (yellow) that had wrong background

Change to Digitrax slot manager to improve ops-mode readback error handling

Update the LocoNet BDL16 programmer to have complete set of BDL168 op switches; switch 42 was added, and 36 given a proper label

The jython.jar file needed for scripting is now included in the distribution

Format of various DCC monitors improved by Alex Shepherd: Time and raw information, if displayed, appears on the same line to reduce space used. More lines in the history. Default window size larger, and controls arranged more nicely. Hexadecimal raw data is how has two digits and consistent capitals (e.g. "0A 11 00" instead of "a 11 0")

Manufacturer ids updated to complete list on NMRA web site, including the new Bachmann ID.

Digitrax DH121 decoders have been seen with version 46, so this is now included in the identification

Present a dialog if the program can't load the javax.comm library. This makes it much clearer to the user what has gone wrong.

Lenz command station support update: Add Decoding/Encoding of System Status Response/Request. Also Add encoding/decoding of Specific commands to set the Command Station Startup mode, instead of changing function status for address 0. (Paul Bender)

At the suggestion of Michael Greene, prefer "Direct Byte" mode to "Paged" mode when selecting a programming mode. This should be a little faster.

BDL16 programmer has two additional BDL168 settings, better descriptions

The process for building distributions has been split for Macintosh Classic and other systems. Mac Classic will continue to be built using the Java 1.1 compiler (though there were also some changes there); other platforms will now be using the Java 1.3 compiler. This should generate some small speed improvements, and will improve compatibility for people basing their projects on the jmri.jar file. As part of this, the Macintosh Classic distribution will include a different jmri.jar than the rest of the distributions. The Mac Classic version will work on all platforms, but the jmri.jar from other platforms will not work on Mac Classic.

Alfredo Sola updated the Spanish translation.

Rework table-based tools (tables for Turnouts, Sensors, Routes, Memories and Reporters, plus the LocoNet slot monitor and the thread table) to add additional GUI features: Click on column headings to sort up or down; Ctrl-click to add secondary sorts; columns can now be dragged to new positions; better initial sizing.

Michal Basta updated the two Czech translations. These should have appeared earlier, but were lost due to a mistake while merging the code.

Change SignalHeadManager persistence to remove all the extra (empty) elements written to the panel files

Panels are now stored with information as to whether the corresponding panel editor is visible or not, and will be reloaded as they were stored.

Jython scripting examples have been updated & extended

Major rewrite of the Lenz connection, which should be carefully tested.

Various improvements to the LocoNet monitor to display more detail on some previously proprietary messages

Add a warning on Mac OS X so people don't try to select the MS100 protocol.

XML files are now written with a comment containing the JMRI version, data and time. This is meant to help us understand where all those files came from!

Updated the configuration panel so all the Tools menu entries can now be selected for operation at startup, or added to buttons.

SignalHead objects now have a separate "lit" parameter, in addition to a "DARK" appearance. This also appears in a separate column in the SignalHead table. It is not yet integrated into the display icons, so a non-lit signal head will still show on the screen.

Alex Shepherd improved the Windows startup scripts (.bat files) so that they'll take multiple arguments. The first argument, if present is the name of a configuration file within the standard preferences directory.

Updates to the Windows installer, in Yet Another Attempt to work well with more than one Java version installed on Windows, etc.

Howard Penny and Walter Thompson improved the layout of the Comprehensive programmer.

Dick Bronson contributed a set of photos of US&S lamps for use on panels. These can be found in resources/icons/USSpanels/Lamps, with the old ones moved to Lamps-old.