May 2025
- Bank Reconciliation of arbitrary GL account now omits orders from printed summary
- Sanitise email addresses containing control characters before using with SMTP
- Completed orders no longer offer to update ship quantities if they were manually completed with backorders outstanding
- Customer Enquiry no longer show movements for blank customer code
- Ship Orders for a selection of sales orders is now stoppable (and much faster to start)
- Fix Mac contextual menu Share command incorrect title
- Fixed Assets Find Related acquisition or disposal transaction
- Fixed potential crash in preview search
- The “Just Beep” option for changing a GST value is now persistent once you set it. You can reset the option (get the alert back) by typing the expression
=SetAppPreference("changedGst_suppressAlert", 0)
into a field - Fixed missing privilege checks on some standard reports
- Age by Due Date report now respects the local/base currency name
- Custom report privilege control no longer truncates the privilege name in the settings
- New Signing report to show the accessibility of signed custom reports (in the Reports/Security)
- Moved the Privileges report from Audit to Reports/Security
- Stock on Hand History for Location Report
- Copy transactions to clipboard (canonical export) now includes detail.custom1,2
- Scripted floating windows (and the manual window) now have full size title bars on Mac instead of utility window title bars
- Fixed incorrect error message when file damage is detected
- Fixed Mac list focus rect cosmetic glitches
- Fixed Mac incorrect cursor in modal dialogs
- Recent files paths/urls are now shown in the status bar on Windows
- Fixed potential failure of HTML Navigator panels to load properly on Mac
- Fixed unreliably coach tip display on Windows
- Fixed incorrect display when shift-navigating in a list that only allows a single row selection
- Local documentation wiki
- Fixed inability to delete validation list items
- Fixed incorrect recent shortcut loading in the Welcome screen on Windows when there are omitted recent files that no longer exist
- More informative message when connecting to a server port that is not a MoneyWorks server
Server
- Fixed random REST 500 Internal Server errors some Windows servers were getting with 9.2
- Addressed some extremely rare SSL error conditions/li>
- Generally faster network performance for sequential record updates (including Bank Reconciliation finalisation)
- Detect ghostscript hangs when optimising malformed PDFs; always log ghostscript invocations
- Datacentre client configurable idle packet interval for extremely high load servers
- Ship Orders backorder analysis now runs on the server so that a Ship operation on a selection of sales orders now starts much faster
- Work-in-Progress journal creation now runs on the server for much faster performance on a network
- Additional server network diagnostics
- TLS settings now accepts EC private keys
- Rollbacks are now logged
- Updated default GST rates for new files in Singapore
- Updated Censys netblock list
- Mac clients now auto-retry connections on LAN if the first connection fails with a network error (due to flaky network permission issues on macOS Sequoia)
- Optimised login performance by deferring Calendar load until it is used
- Fixed REST login errors being incorrectly reported with status code 500 instead of 401
- If login fails due to server disk full error, clients are now notified of the reason
Scripting
- MWScript Debugger: The MoneyWorks scripting language now has a full-featured debugger with breakpoints, single-stepping, and variable viewing. See The MWScript Debugger for more information
- The script editor Find command is much improved; all matches are indicated and you can step through matches forwards and backwards (shift key for backwards)
- Foreach array key type — changed behaviour: MWScript
foreach k in array...
the array key values fork
now have their original type (numeric, string, date) instead of always being a string. This should be transparent to existing scripts unless they do something in particular that assumes the type is text (with numbers padded with zeroes on the left) - New addition assignment operator:
+=
operator allows addition/concatenation to a variable to be more succinct (i.e.let s += expr
instead oflet s = s + expr
. The+=
version is much faster for string concatenation when the string being appended to is large GetListContents
now has a new option to get just the header of the list with formatting information (ListGetHeader
). This header can be reused when next inserting the list to preserve column width changes the user may have made- Saving a new standalone script document now puts the new doc into the Recents list
- New scripts pre-populate the
meta
with your name - Added a better error message for incorrect MWScript code that nests for loops with the same loop control identifier name
Built_In:__SendSMTPMail
now supports passing an array of["text"]
and["html"]
multipart/alternative parts for the message- Create custom plugins folder hierarchy if necessary for sqlite3 database creation
WaitMilliseconds
function no longer suppresses “script is running” dialog- -P option on Windows CLI
- Improvements to the behaviour of
OpenDocument()
andCloseDocument()
from a standalone .mwscript ChangePrimaryKeyCode
extended to support updating Product and Name codesCurrencyName
function- Webviews suppress the Reload option after LoadHTML
- WebView2 webview no longer eats keyboard navigation keys
File_Open
with just a file name will look in the first writeable script location (ignoring non-writeable directories)Round
rounding mode for halves (away from zero or to even) now works as expected for numbers whose floating point representation is inexact but very very close to 5 at the position being rounded- Hidden, scriptable Verify buttons in the Name entry screen (B_EID and B_ABN) for implementing online verification scripts
BaseName
functionGetPlugins
can optionally get the full path to the reports/forms (include a.
at the start of the type parameter)- Columns appended by
AppendColumnToStdEditList
in the by account view no longer get an incorrect length limitation when the Job column is not shown SwizzleHandler
function. Renames or adds duplicate names for a handler at runtime- Scripts launched from the Command menu now check privilegse
- Scripts launched from the Command menu can now be .mwxml packages
- Navigator now gets a Before:panelname message when a non-html panel is selected
- Script Load handler performance is logged if the script makes database requests (this should always be avoided)
- Constants for
GetFieldValue
pseudo-fields (GetField..
) plus a new pseudofield that gets the edit mode (add, duplicate, modify = 0, 1, 2) - New flags to suppress toolbar items for
CreateListWindow
- List.Comment, Filter.Name, and Filter.FilterFunction are mutable by ReplaceField()