# GW 4.04.09 changes since 4.02.53

## Features

### Backward Incompatible Changes

- Units/Scaling Configuration: If user defined units have been specified then these will be upgraded but archives are not backwards compatible with older versions of GWv4.

### General Features

- Added checking for updates from the Internet.
- Support Simulink&reg; Enabled GEMS ECUs (EM80_M).
- Support XCP/A2L CAN/Ethernet based ECUs (requires XCP licence).
- Support high pixel density (HighDPI) PC screens that are using display scaling.
- Added dark mode theme, with crisp icons on HighDPI displays.
- 'Parameters' are now referred to as 'Channels' to avoid overlap with Simulink&reg; terminology.

### Calibrations

- Note: Changes to the license handling means that calibration files (other than the DEMO calibration) can no longer be edited offline without a license.
- Extended Limits Mode: pop up message if limits have been violated & prevent editing out of range.
    Added Extended Limits mode that must be enabled in order to set values outside of their typical range (up to either their extended limits or full-scale if extended limits were not specified in the ECU Defintion file).
- Added Reset to default value context menu command for selected options.
- Default values now take into account bit masks.
- Per-object reset to defaults (if available).
- For tables/maps etc with floating point raw values that have a very wide view range, display 2 decimal places by default.
- Improve sizing of name/version combo boxes in cal file browser especially on HighDPI.
- Store extended ECU identity information in calibration files.
- Send current calibration now automatically connects if not connected.
- New Calibration: persist window geometry.
- Fixed entry of single digit numbers for parameters/options via keyboard.
- Fixed issue with sign extension of raw values.
- Fixed checksum calculation for multi-region calibrations that use combined checksums. Fixes the 'Open Matching Calibration' feature for these types of ECU.
- Fixed 'Clear Calibration' - selecting 'no' / canceling dialog should not continue & clear the ECU.
- Fixed EM80 checksum calculation when using 16bit checksum mode with more recent EM80 versions.
- Fixed maximum raw calculation for bit-masked signed values.

### ECU Definition Files

- Support GIN file version 3.33.
- Renamed "Install ECU" to "Installations".
- Added Modified Date column to ECU installations list.
- Added new EcuDef format.  *.ecudef are compressed archives that can contain GIN or A2L files and more.
- GIN files are now more generally referred to as "ECU Definition" files in most cases.
- GIN files are now compressed and installed as .ecudef files.  This will mean that new installations made with this version will not be usable by other products that use GIN files until they are also upgraded.
    Existing GIN file installations will still work.
- Successful ECU Definition file installation will now pop up a notification notification that is automatically dismissed after 5 seconds rather than requiring a click to close the a dialog box.
- Connecting to an ECU will check if the original ECU Definition file was changed and offer to re-install it.
- ECU Definition File search results: enable sorting + order by date descending by default.
- ECU definition file is no longer required for EM80 CoPro firmware update.
- Altered ECU identity matching to support Simulink&reg; Enabled ECUs and XCP/A2L ECUs.
- Faster ECU Definition File loading.
- Installed ECU lists: display original file basename in an additional column to aid in disambiguating similar looking installations in some cases.
- Prevent connect operation getting stuck if the unit does not contain any calibration data.
- Removed popup asking if you would like to "run the Install ECU wizard" and just run it anyway - it can still be canceled.
- Change ECU definition file installation UI flow.
- Made ECU definition file installation asynchronous.
- Changed update mechanism of ECU definition file installation manifest to reduce risk of corruption.
- If the ECU installation manifest is corrupted then move the file to a backup and display a better error message instead of an unhandled exception box.
- ECU Installations: display modified time of installed file in tooltip.
- ECU Installations: Fixed case where "show installed only" == false.
- ECU Installations: Asynchronously scan ECU definitions.
- ECU Uninstall: offer option to delete installed file.
- Fixed possible failure to load ECU definition files in some areas (e.g. conversion template builder, ISP baud change etc).
- Fixed issue with ecu installation checking routine that was preventing uninstall of ecu definition files working in some cases.
- Added additional info to tooltips for ecu versions in installed ECU picker.
- Use source file hash in ecu definition installation filename to avoid incorrect overwrites - particularly a problem for A2L files.
- Added command line command: --pack-ecudef src dst
- Allow checking for updated ECU definition files for all users.
- Fixed loss of ECU name selection when ECU installations changed.
- Table / Map objects now support variable site counts.
- Fixed cancel button behaviour for Install ECU.
- Fixed start option / offset option for Table objects.
- Fixed handling of multi-part file extensions in Installed ECU list.  This column will now use the original file name, if available.
- Fixed Re-install ECU definition while loading a ECU definition would install the file but actually load the prior version.
- Read unit groups from A2L annotations.
- XCP/A2L: Create UserScalars for units and unit groups.  Enables user units configuration.
- If user decides to use base ECU definition file for an ECU then continue to do that by default until the correct ECU definition file is installed or if the application is restarted.

### Compare / Convert Calibration

- Pluralize single differences model names in compare panel to make it clearer that the selection will reveal multiple items.
- If there is no selection in the left hand list, select the first item by default.
- Programming of calibration files can now accept a different version and offer conversion.
- Search last conversion templates folder in conversion ui flow.
- If alias conversion did not modify the calibration then do not emit warning.
- Compare: do not display 'Undefined' for axes if they are not named.
- Defer compare so that view updates before running the compare algorithm.
- Removed 'calibration compare wizard'.
- Use square brackets instead of curly braces to indicate item units as per convention.
- Fixed directory lists so that templates are picked up from "Documents/*vendor*/*app*/conversion templates".
- Fixed issue saving conversion templates with more recent ECU definition file versions.
- Fixed bug in display of verification differences - source values were always 0.
- Fixed issues with default filename.
- Fixed calibration compare crash.
- Fixed File->Convert unhandled exception if the file cannot be opened.
- Fixed crash in Compare tab when multi-differences report is shown and then a new compare is loaded that cleared it.
- Compare: If source file was in temp folder (e.g. if it was opened from an e-mail client), offer to store in base calibration folder instead.

### ECU Connections

- Detect is ECU was reset and alert user with option to re-read cal.
- Added support for Kvaser CAN ports.
- The workspace / layout is now kept open when reconnecting to the same ECU as currently open in the software.
- Added support for extended ECU Identities (for Simulink&reg; enabled ECUs).
- Simulink&reg; Enabled ECUs: If model-specific ecu definition file is not available, offer to use base definition if available.
- Update port display name if connecting via ethernet notification popup.  Fixes incorrect 'Opening connection on "port"...' message.
- Display port selection dialog if connecting without a valid port configured.
- Set the default port type to 'undefined' so that on a first install, clicking 'connect' will request setup of the port.
- ECU progress dialog: display messages in a text area and do not automatically close if there were any errors.
- ECU status messages are now still recorded when the ECU Status window is closed.
- Added 'Copy to clipboard' menu option to ECU Status.
- Hide Auto Store in status bar if ECU does not support it.
- Added ECU menu item 'Reset RTC to Current Time'.
- Tidied up Port Settings.  The numerous additional (usually best left as default) options have been moved into a dialog accessible via "Additional Settings...".
- Changed 'Waiting for EE...' message to 'Waiting for ECU to commit data to non-volatile storage...'.
- Added some bandwidth usage optimizations for measurement polling.
- Stopped posting 'Checking COMOK' messages.
- Limit read/write size from protocol definition in ECU definition file to that which is physically possible on the connection (e.g. CAN).
- Workaround for undefined file size returned by CoPro for unsupported file types.
- Fixed timeout handling.  Fixes block transfer issues (e.g. CoPro ISP).
- Adjusted default / minimum timeouts for serial ports to avoid errors during identification of MINIZETA ECU.
- Fixed handling of 'do not show again' on "Ethernet Error" notifications.
- Ethernet ECUs: Exclusively use extended protocol to resolve issue with legacy versions of the CoPro.
- Added throttling of status error notifications to avoid locking up UI in some cases where ECU is misbehaving.
- Fixed abort of calibration transfer during connect sequence.
- Fixed conversion of Write failure errors to text in status window.
- Fix crash during clear calibration if ECU definition file is closed by another interleaved event.
- Fix occasional crash following reconnect of EM80 following failed CoPro update.
- Fixed issue with some ECUs that could result in many errors during the connection process.
- Fixed crash when parameter (channel) table is used and calibration file uploaded to ECU.
- Fixed possible crash if application is closed with an active ECU connection.
- Changed "Co-Processor firmware mismatch" error to a warning.
- Workarounds for comms issues with SL1:
  - LOGTBL reads always return 8 bytes from SL1, leading to verify errors.
  - LOGTBL reads are now prevented from exceeding the max transfer size of the port.
  - SL1 incorrectly specified protocol read/write sizes in the ECU definition file, leading to undesired effects.
- Handle new PCAN_ERROR_CAUTION initialization result code which means the port was still initialized (and would have undesirable knock-on effects).
- Fixed issue with incorrect settings in GIN file that exceed comms protocol limits from causing major comms issues.  e.g. SL1.  Notifications are now be added to the comms trace to indicate the ECU definition file issue.
- Fixed auto-reconnect to Ethernet ECU simulator following ISP due to serial number being reset to default.
- Implement workaround for data transfer issues with EM80 variants (not EM80_M).  If GW detects that there are issues with using various data transfer optimizations then the optimizations will be disabled at the cost of less efficient bandwidth usage and multiple writes to the same locations being serialized.
- Auto-close start dialog if starting an ECU comms operation.
- If showing a new ECU transaction progress dialog, close any completed ones first.
- Reworked comms notification processing slightly to avoid situation where disconnecting the ECU could result in the disconnected state not being seen.
- Added 'Change Connection...' button to Connect dialog.  When connecting to an ECU if the incorrect port was selected then this allows a more streamlined resolution to that problem.
- Fixed crash when connecting to ECU via FTDI connection with hotplugging enabled.

### Comms (Connection) Monitor

- Major rework: comms data is (optionally) always logged to temporary file.
  Comms monitor can now be opened after the connection started and will contain all info since connection start.
- Improved ordering of comms data and info messages.
- Hide timestamp field if the view is thin.
- Use full line for information messages.
- Will enable more features in future such as full CAN bus logging.
- Full packets are now displayed on single lines only, with overflow indicator.
- PCAN ports: output API + Driver versions in comms monitor + application log.
- Include RX/TX IDs and rate in CAN connection comms trace.
- Added some additional information to application log to report PCAN result codes during port initialization.
- Added 'Connection closed' message to comms log when comms thread has finished.

### ECU Information

- Reworked ECU Information view.
- Renamed "ECU Info" to "ECU Information".
- Display Product ID if available.
- Persist window geometry.
- Display Simulink&reg; model information, if available.

### Firmware Programming (ISP)

- Support Drag/Drop of firmware files (fin / bin) on applicable builds.
- Combine Program Firmware + Program CoPro firmware into 'Program Firmware' menu option.
- Make it clear that the 'Clear Calibration' item in the Program Firmware procedure is performed before re-flashing the ECU.
- Added additional clear to defaults step when a calibration is not also being programmed but the ECU is cleared.
- Added option to convert the calibration file that is already in the ECU during ISP.
- Detected firmware version is now displayed in the title bar of Program Firmware dialog.
- Only enable Program Firmware menu item if connected to ECU to help avoid situations where multiple ECUs are connected to the PC and the configured connection is not the expected one.
- Program Firmware dialog - auto-advance if ECU definition installed via drag & drop.
- Reduced timeout for CoPro isp commands to avoid blocking for a long time in some cases - was seeing a 20 second wait at the end of CoPro ISP.
- CoPro ISP: Do not offer conversion if in bootloader.
- CoPro ISP: Offer to reset calibration to defaults.
- Following ISP of EM80-M, unit can identify as the bootloader.  The ECU will now be re-identified until the name matches what is expected or fail.
- Add support for enhanced CoPro ISP (bootloader reset).
- Modified CoPro firmware mismatch error message slightly.
- Fixed issue with upload of main processor firmware due to bug in padding algorithm.
- Added file history drop-downs to ISP UI.
- Avoid 'Setting Auto Store' popup at the end of ISP in some cases.
- Fixed bug that only allowed CoPro firmware to be programmed once per GWv4 session in some cases.
- If ethernet ECU name changes for the same serial number then update its name so that connecting to the ECU gives the correct status message.
- Fixed erroneous "Could not find ECU name in FIN" during ISP procedure.
- Fixed crash if attempting to program a firmware image that is opened for exclusive access by another application.
- If the clear calibration checkbox is hidden in ISP flow, also hide the label underneath.
- Auto close ISP flow if ECU is manually reset following ISP.
- Program Firmware can now reprogram both CoPro + Main processor together.  This process checks if the main processor firmware version has changed - if not then the main processor update is skipped.
- Programming CoPro + MainPro is now also possible using GWv4 Package files.
- Added 'Verify ECU Information' step.  Allows users to sanity check the connected ECU prior to programming.  This option is persisted in user settings but overridden by firmware Package installs.
- Added connection port selector to ISP sequence page.
- Show status log on successful ISP.
- If successful, show a tick on 'Finish' button - in case of confusion now that ECU status log is displayed.  
  - Shows a cross on the finish button if failed.
  - 'Cancel' button is hidden.
- Add error to status log if user aborted ISP.
- If ECU name can't be verified following ISP, request that the user power cycles the ECU and retry.

### Workspace / Layout

- Reworked the appearance of many gauges and views.
- Removed Auto-Arrange tab feature.
- Drag/drop of category groups from view explorer.
- ECU Definition files can now specify that an Option is a CAN ID which allows more intuitive editing with a CAN ID editor.
- Add a window property to allow the display of the Description field in a channel or option window.
- Use value limits in Pot (Dial) view if available.   Added option to use extended limits + an option to display extended limits in the new Gauge limit colour preference.  Can also define custom limits.
- Adjusted default grid line colour.
- View explorer Config: persist window geometry.
- When drag/dropping a channel / option list from view explorer the selector control is now hidden.
- When drag/dropping a channel / option list from view explorer, pick a better initial size.
- Improved default sizes of workspace windows running on HighDPI.
- Removed static scrollbar from Calibration Checker view.
- Include application version in title bar caption.
- Map Grid: fixed flickering of Y axis when moving the view + empty area.
- "Comcode" Selector: added an endian swap button.
- Do not show grid axis label(s) if not defined.
- Do not show grid axis position gauge if there is no axis parameter.
- Map/table grid: honour formatter if default decimal places specified.
- Modified autocompletion algorithm for e.g. option selectors so that it will also match text within strings and not just at the start.
- Reworked all 'wizard' (step-wise) dialogs and dropped the term "Wizard".
- Use custom tab control throughout.
- Interpolate on tables/maps that are placed in ECU RAM did not update the view correctly.
- Emit warning when loading layout files to identify missing channels / options in tab layouts.
- Fixed Reset Workspace Layout function.
- Re-fit grid headers when there are dimensional changes to underlying map/table.  Partial fix for issues with axis header sizing.  A rework of grids is planned for a future version.
- Fixed: stop reading map/table axis parameters from ECU after tab hidden.
- Fixed crash if selecting "add to current tab" for categories in View Explorer.
- Avoid flicker when changing tabs and the tab is lazy-loaded.
- 3D maps: Removed cross-hair at the end of the site selection.
- View explorer config: fixed row height under HighDPI.
- Fixed bug with rendering of scope view Y axis.
- Fixed layout issue on main tab control.
- Map Slice control bar: Fixed UI sizing issues on high-dpi displays.
- Disallow loading/saving/editing of layout when no ECU definition file has been loaded.
- Added option to disable the display of value bars on individual channel list grids.
- Fixed background colour of units text in grid axis headers.
- If re-connecting to ECU without full GIN file, of the base gin is re-selected then do not re-load the tabs unless the GIN file SHA hash changed.
- Store/restore virtual pot box frame size + improve initial size on HighDPI.
- Adjusted default workspace layout slightly for help generator.
- Added theme default colours + editable base colours & inherit some colours from these.  The non-dark colour theme now has stronger border outline by default.
- Improved initial gauge/view sizes on HighDPI screens.
- Fixed small layout issue on signal generator view.
- Continue to display selection in option / channel lists when focus is lost to properties panel.
- Per-channel decimal places property on channel grids.
- Amortize cost of auto decimal places calculation for tables / maps.
- Properties to set user decimal places for axes on map graphs.
- Properties to set user decimal places for axes on table graphs.

### Bar Gauge

- Fixed clipping of value text.
- Added label decimals property.

### Tachometer View

- Config: Fixed size constraints.
- Config: Persist geometry.
- Config: Use edit with buddy instead of spinbox for min/max due to issues with range.
- Improved auto decimal places calculation for dial labels.
- Changed appearance to use a flat background by default.
- Round initial range to 2 s.f.  Some values have calculated min/max values that have many decimal places and would otherwise result in an unusual looking range.
- Changed some default properties for better first time use.
- Tachometer min/max values were not being stored in tabs if equal to zero. The min/max values are now using a new multi-typed editor with drag adjustment + reset to default option.

### Audit View

- Allow configuration of IO ports on Object modules.
- Fixed update of controls linked to volatile values (e.g. switch view).
- Editable parameters now have option to display as pot (Dial) / edit box, with the default being an edit box.
- Fixed update of writable channels.

### Engine History Log

- Added some additional description to the configuration properties.
- Use assigned parameter name for histogram name so that on GDI80 the Fuel Pressure histogram is called HPP Pressure.
- Improved layout of report on right hand side of view.
- Do not display v0.01 filter values for v0.02 logs.
- Some ECU definition files were specifying reference scaling channels / options surrounded by single quotes, breaking lookup & therefore scaling (e.g. for Oil Temperature histograms).
- Fixed distance scaling (multiply by road speed scalar value).
- Fixed issue with Engine History Log extraction.

### Scripting

- Added aliases for 'ecu.gin' to 'ecu.def' and 'parameter' to 'channel'.
- Made the text of the notes views available by scripting (.text property).
- Fixed calling of script functions via COM interface that do not have any function arguments.
- Fixed crash in JS engine when adding custom columns to compare tab.
- Fixed 'print' function from scripts (now pops up a box rather than silently writing to application log.
- Changed the types of maps/tables/objects etc reflected in JavaScript.
- Added Category, Region, ChannelTable EcuString objects.
- Added properties to Channel and Option:
  - real, raw, value, text.  Equivalent to getReal/setReal/getRaw/setRaw etc.
  - Updated default Function Object script to use terser lookup and ES6 features.
- Fixed usage of JavaScript object literals that have boolean properties.
- Added convenience functions to 'ecu' for looking up tables/options/maps etc.
- Added scripting functions / types to HelpID system.
- Assign helpIDs to fuel map specific context menu items.
- Added functions for getting/setting/listing view properties (getViewProperty, setViewProperty, getViewProperties).

### Automation

- Numerous changes to COM automation interface - see GWv4COM.chm manual.  These changes are in preparation for new help system in an upcoming release.
- Added control of ECU simulator to COM interface.
- Added FocusWindow, SetProperties, GetProperties, SetProperty, GetProperty, LoadLayout, SaveLayout
- Output additional helpId info via COM.
- Fixed enumeration of ethernet ports in COM interface.
- Added 'deferred' option to 'options' for InvokeAction to defer action invocation via the event loop - resolves problems with invoking actions that display modal dialogs and never return.
- Added way to set selections on windows.
- Added way to simulate mouse clicks.
- Added way to move windows.
- Added selection properties to view objects for automation purposes.  This also means that grid selections are now stored in layout files.

### Logging / PC Logging

- Fixed reading if GLO files that could result errors in GLO => STF rate detection and export.
- Changed resampling rate calculation for STF export.
- Fixed persistence of 'Export STF' option.
- Raw log processing - option to open in analysis s/w.
- PC logging export: Fixed export of floating point channels.
- PC logging export: "open in" selector now works for 64bit analysis software.
- Fixed Ethernet ECU getting stuck repeatedly reporting 'nothing to download'.
- Fixed crash in log playback view.
- Show an error if log playback fails to load file.
- Fix LSF (logging setup) import due to address range intersection bug.
- Log download: Add file extension if not present in user edited save filename.
- Log processing: fixed issue where hex format would be applied to all aliased channels if the first alias at the address in the log is hex.
- Fixed closing of Internal Logging Setup dialog would prompt to apply changes in some cases even if no changes were made.
- Added method to clear duplicates from internal logging list.
- Added method to set rate on multiple selection in internal logging list on EM80_M.
- Added additional menu options to internal logging list setup:
  - cut
  - copy
  - paste
  - select all
  - select none
  - insert channels
  - remove duplicates
- EM80_M log processing fixes:
  - Do not include aliased channels in the log who's bit patterns do not intersect the logged data due to masking.
  - Corrected the way that values are unpacked from packed samples - e.g. if logging only byte 2 of an 8 byte CAN RX frame, the 64bit 'data' alias channel would show an incorrect value.
  - Fixed EcuCommCode::fromDataRef: Invalid size due to address / size mismatches in imported log setup from different ECU version.
    - Modified Log setup file to include original ECU information + additional alias information.
    - When processing logs, if aliases that intersect a logged address end up with >8 byte footprint, those items that cause it are not included in the processed log file.
- Added improved import errors dialog.  Items that can't be resolved are cleared in the logging list.

### Sequencer

- Support Kvaser CAN ports.  This may affect existing sequencer configurations that use CAN ports.
- Enable CAN ports to be attached to comms monitor.
- CAN command: fixed 'enable read' property.

### Descriptions View

- Update after selecting a new channel / option in a list view.
- Fixed display of some items.
- Display item limits.
- Open code links in Visual Studio Code if available (XCP).
- Added menu option for copy.

### ECU Simulator

- Fixed file browser fields.
- Fixed value column, so as not to be greyed out.
- Allow CAN ports to be selected as external port in addition to serial ports for comms testing.
- Fixed possible crash closing application whilst ECU simulator running.
- Fixed serial number handling.

### CAN Telemetry

- Display fixed byte value in description.
- Export to DBC now 'un-applies' bit shifting multipliers on ECU channels for bit shifted signals.
- Renamed "Channel" to "CAN".
- Display aliases (if any) in tooltip for grid cells.
- Fixed issue with the display of CAN Telemetry Setup info.
- CAN RX telemetry: persist window geometry.

### Units

- Reworked units system.
- Base unit definitions on UnitSystem in the GIN file.
- Do not allow quantity to be changed when creating a unit from the 'Configure Units' dialog.  In order to change the quantity of a value, a base unit override must be selected.
- If a dynamic unit option is available, add an option selector to the UI for it.
- Change Edit... label to Info... for units that are readonly.
- Added option to store base unit overrides in the project/layout file.
- Resolve display unit for units throughout the UI e.g. on option / channel grids.
- Create Unit dialog: do not use spin box for multiplier / offset values & allow larger values.
- Load/save will now only save/apply units that are present in the currently loaded ECU definition file.
- Enable sorting of columns in Configure Units / Scaling + Store/restore grid columns & sorting.
- Do not fail loading of user units if a quantity with an blank ID is encountered - instead trace a warning in the status window.

### Other

- Adjustments to About Box, now includes button to display OSS licenses.
- Added additional information to application log (OS version + SSE support).
- Crash reporting privacy: only take screenshots of in-process windows instead of full desktop.
- Units/scaling dialog: persist window geometry.
- Updated safety warning upon first connect.  Now using scrollable text which is more readable on high-dpi displays.
- Licenses window: Added extra column for license status.
- Find dialog: support addresses above 0x7FFFFFFF.
- Find dialog: fixed tab traversal.
- Rename 'Pot' View to 'Dial'
- Warn user if license expiring.
- Display expired licenses in License Manager view.
- Find dialog: also support ecudef files in addition to Gin when doing multi-file search.
- Persist geometry of units/scaling dialogs + improved HighDPI initial size.
- Themed message boxes.
- Units that use relative scaling will now avoid scaling to the base unit first, if possible, depending upon the scaling graph for that unit quantity.
- Package Dialog: Added secondary firmware for CoPro + Base ECU upgrades.
- Package Dialog: Added force verify ecu info option to packages for gems Reflash.
- Package Dialog: Store extended ECU identity in package.
- Include product name in embedded application version description to make related firewall rules clearer.
- Auto-configure firewall from installer script.
- EM80M - trying to connect to a an ECU where the full GIN is not installed, select base GIN and connection is immediately dropped.
- Installer: Removed user info page.
- Installer: Changed text relating to Non-Accelerated 3D to guide best choice.
- Use fractional point sizes for font size properties.
- Improved smooth adjustment of some 'stepped' properties via dial controls.
- Include 'size' field in file dialogs (cal / layout etc).
- Modify LogMap calibration data mismatch warning behaviour.

### General Bugfixes

- Fixed typo in "Serial Telemetry Logging / Monitoring" menu item.
- Object selector for ComCodes: moved byte selector to its own row in the layout to avoid size changes overlapping the dialog buttons.
- Fixed hex formatting of axes to use integer value when appropriate.
- File dialog: Fixed drag/drop over empty row removing file.
- Fixed bug in property grid auto column sizing that could make the value column invisible.
- Fixed crash using grid drop-down boxes in units/scaling dialog.
- Fixed: Refresh of ports in port settings was clearing out ethernet ECUs.
- Start Page: fixed website link.
- Fixed right/bottom lines on map size target view not being rendered.
- Fixed bug in decimal places calculation for very large floating point values.
- Move notification popup when main window moves / resizes.
- Task dialog button - draw as normal when alt key pressed.
- Changed property grid sizing policy to avoid editor column getting truncated if scrollbar becomes present.
- Fixed clipped text in "Manage Licenses" window.
- File Lists: decrease drag/drop sensitivity.
- Fixed command ID for GPS beacon programming.
- Fixed crash in grid mouse handling code in some circumstances.
- Altered name of Send Calibration drop-down action to avoid conflict with the related menu item.
- Fixed typo for Channel List item in View Explorer.
- Activating an expired license will now report an error instead of succeeding (but silently failing).
- Licensing: store original machine key with license activations.  When deactivating licenses, use the original machine key, where possible.
- Fixed crash calculating bit operations on unusually sized ECU definition items (e.g. 6 byte values).
- Channel and Option default number of decimal places either too high or too low in some cases and are calculated differently for Channels compared to Options.
- Scrollbars on map grids could hide the last row/column.
- Reworked scrolled windows to resolve scrollbar flicker issues when running dark theme.
- Fixed clipboard format for name lists - pasting into Notepad would drop the last character since it expects a null (unlike MS Word / Excel).
- Fixed options and conditions not showing for Internal Logging Setup (Fixed general issue with object search following copy of ECU definition).
- Improve error message if ECU not supported.  If installing a license would allow access then state the applicable license(s).
- Fixed WorkPage contents scrollbar overlap issue.
- File dialog: Fixed lock-up when deleting a newly created folder.
- File dialog: Creating a new folder should just select the new folder instead of trying to open the folder.
- Fixed crash in file browsers if 'folder tree' is hidden.
- Fixed connect following selection of a CAN port from 'basic' port settings page on new installations of the software.
- Changed install location of default layouts so that they are picked up without requiring user selection.
- Fixed: Status panel not showing any information in some cases.
- Fixed crash setting font size property on Channel list view.
- Reset per-channel decimal places on Channels grid if changing the channel on a given row.  Ensure that if DP setting is changed that layout get saved.
- Image view: erase background, fixes display of transparent PNGs.
- Fixed crash setting gradient twice in Tacho thresholds without dismissing the gradient picker in the grid.

## Library Updates

- Updated compiler to VS2019.
- Updated to boost 1.77.0.
- Updated to lzma 5.2.5.
- Updated to bzip2 1.0.8.
- Updated to wxWidgets 3.1.4
- Updated V8 JavaScript engine to 2.7.220.24
- Updated to Emerald 5.1.5.
- Major internal refactoring unifying GWv4 + GDA code.
- Updated to PCAN-Basic API V4.6.0.600.
