17 July 2024
- Analysis reports can now be used to analyse Ledger records, providing an easy way to get information-dense GL charts over multiple periods (similar to Account Enquiry charts)
- Ledger by Period/Categories stacked column chart report
- Dashboard Ledger by Period/Categories stacked column chart
- Further improvements to date entry: When in a date field, you can use Page Up and Page Down to go back or forward a month. You can also “drive” around the date picker using the arrow keys with Cmd (Mac) or Ctrl (Win) held down (actually you can use these keys whether using the date picker or not). Up/Down will go back/forward by a week. Left/Right by a day.
- Additional Name and Item list windows may now be opened in MoneyWorks Gold using opt-shift-⌘-2/3 (Mac) or Ctrl-Shift-Alt-2/3 (Windows)
- Tweaked the alpha and line widths of charts
- List colours have been tweaked slightly on Windows (they were previously posterised to support 4-bit colour displays, but that should no longer be necessary)
- Report setting window is now more spacious, mainly for the benefit of reports with custom controls
- Popup control labels now align better on newer macOS versions (and probably worse on older macOS versions that predate the San Francisco system font)
- Expression substitution (using
<<expr>>
) in a mail subject or body when emailing statements etc now works consistently even when the form is generated on the server, and also when PDFs are generated using Microsoft’s Print to PDF driver - Report Heading parts no longer spuriously double-space when a tabbed heading has fewer tabs than there are columns in the report
- Yodlee Bank statement importing now prefers description.original to description.simple which should improve the data quality (in particular the random quality of BNZ statements)
- Do not allow Replace to replace journal reference number
- Advanced subsummary settings button no longer auto-clicks when you re-run the report with the Advanced sort option selected
- Payment on invoice importer now flags overclaimed credit as an error instead of crashing
- Payment on invoice importer is now tolerant of ” and $ in pay amounts on Mac
- Fixed updating existing transactions when account security level is changed when connected to a server
- Fixed potential crash reading from Mac address book
- Fixed problem with pasting text with symbols in it on Windows
- Optimised a redundant database access when drawing the transaction entry screen
- XML importer now applies ISO formatting to date and number conversions in calculated fields
- Account Choices now dims ‘heading only’ accounts and posts a coach tip as to why they are not selectable
- Account Choices now disables ‘heading only’ accounts in Express and Cashbook
- Fixed report editor issues with testing export to PDF
- Purging is now logged in the log file
- Fixed weird sharing menu item name in text box contextual menu on recent macOS versions
- Fixed double-clicks not being detected when a coachtip is instantiated by the first click on Windows
- Improved handling of received moneyworks:// URLs (at launch or AppleEvent)
- Fix failure to open a new year with very old files
Server
- Blocklists for portscanners updated
- Address potential failure to restore unsaved changes after a crash due to a race condition in server startup
- Log connections even when folder login is not required
Scripting
- MWScript now supports multi-line string constants (i.e. hard newlines are now allowed inside
""
and``
). The expression can continue after the closing quote - MWScript now supports Nowdoc-style syntax for defining string constants that contain newlines and/or string delimiters that would be hard to properly escape (Nowdoc uses ad-hoc delimiting markers: You define the marker using an introductory
<<
and then terminate the string with the marker you defined e.g:<<MARK ... MARK
. The terminating marker for a multiline string should be at the beginning of a line on its own. There is also a single line variant where the terminating marker can be on the same line as the initiating marker and the expression can continue afterwards. e.g.let a = <<ND string with " and ` in it ND + " normal str"
. A whitespace character is required at the end of the initial marker; it is not included in the string - New
InsertVars
function for inserting variables and expression results into a string. This works like the embedded expressions in custom form text or the subject or message text in the mail dialog. Any variable name or expression enclosed in double angle brackets will be replaced with the result of the expression. E.g.let t = InsertVars("The date is <<Today()>>")
. You can also optionally pass your own arbitrary delimiters for the start and end of expressions (particularly useful if your string includes embedded Nowdoc strings) - The
Analyse
function can now be used to analyse Ledger records using a basis of “ledger”. e.g.analyse("ledger", "account", "type=`IN`", "transaction.period,account.category", "2", PeriodOffset(CurrentPer, -12), CurrentPer, "I")
. The column values are 1=count, 2=movement, 3=budget, 4=budgetB, 5=balance. - New
Val(expressionString, RunOnServer)
mode for the Val function to evaluate an expression on the server. This is very useful for running expensive latency-sensitive functions on the server, such as Analyse and SumSelection. Pass RunOnServer (a new constant with value 1) as second parameter to ask for server-side evaluation (if latency is low, or you are not connected to server, the evaluation will still happen on the client. There is some overhead involved, therefore this should only be used for expensive calculations - It is no longer an error to declare a handler parameter with the same name as an existing identifier. This is to prevent existing scripts from breaking when they happen to have handler params that are now an intrinsic function name, constant, or global. It also means you can now have parameter names like
name
andval
. Reserved words are still reserved - Custom navigator panels that lack an accompanying icon will now be given a default icon
- Extensive improvements to WebView/MWScript interactivity. Observer callbacks may pass a JSON object, or a string
- Specific handlers for edit lists that include the tab name for the list (esp.
TweakColumnList
) now work more reliably on Windows Analyse
function: fixed crashes and failures with bad inputAnalyse
function: fixed breakdown by colour which was only working for transaction- Added a bunch of TRUE constants for use with intrinsic functions that take an optional boolean parameter to change the function’s behaviour: RunOnServer (Val or Find), BreakLines (Base64Encode), SortSkipFirst (Sort), TrimAllWhitespace (Trim), GetReversedRate (GetTaxRate), WantDept (AutoFillAcctDeptField), DecodePeriod (GetFieldValue, for popups), ListSelectedOnly, ListAsSelection (GetListContents), ListClearOldSel (SetListSelect), XMLFinal (XML_Parse), AsCDATA (AddXMLElement)
Find
with RunOnServer mode requested will no longer generate output on the server when only one record is found- WebViews using WebView2 on Windows no longer eat all the keyboard shortcuts
- Less dark inactive highlight in script editor on Windows
- Fixed a problem with executing certain searches in a report script SetupReport handler (missing symbolic names for and and or)
- The script editor on Mac now supports transpose, move to start of line, and move to end of line commands using the Cocoa Text System key bindings (the standard bindings for these are ctrl-t, ctrl-a, and ctrl-e)
- Initialising a property at compile-time with CreateSelection is now flagged as an error
- It is now possible to reliably compare table, array, selection handles against NULL and get a false result when they are non-NULL
- Fixed a memory leak when standalone script editor is closed
- Fixed a potential crash when a standalone script editor is closed after a script it contains installed a web observer
- Fixed crash in SetListField when calling it when another window is active
- The script editor now autocompletes form identifiers for speciliised window handlers
- Script editor now treats a single paste operation as a change to to the script (previously such a change was not being saved)
- Script editor no longer annoyingly offers autocomplete in response to typing on Load
TextToNum
now supports a format parameter ofNumFormPrintf
to force ISO format number parsing (i.e. dot decimal)- Worked around a severe performance bug in the WebView2 control in Windows that forces all other windows to redraw constantly when a WebView2 control is visible. To mitigate the bug, MoneyWorks will display a static image of the contents of a WebView2 control when its window is inactive so these controls will not update when in a background window. If you don’t need javascript injection or any web standards, the IE control is still available
Esc()
function to escape quotes and backslashes in a string. This is useful when using user-supplied data when constructing a search expression that requires quoting of text- Fixed -z loading Preload_SMTP twice
- REST and CLI export commands with user-specified format or plain tab-delimited format now support start and limit similar to the xml export format
- LastModifiedTime in exports is now in big-endian format (YYYYMMDDHHMMSS) for more reliable parsing (previously it was in a localised format)
- -P CLI option to not update standard plugins (in the case of the CLI version differing from the Gold version installed on the same machine)
AutomationFilesFolderPath
global variableImport(txt, ":/Account")
now returns a result (-1 for error; last account seq created if no error)
🌻