We’re delighted today to announce the release of LiveCode 9.6.9, Stable. This version comes with more than 75 new features, bugfixes, and security improvements compared to 9.6.8, including:
- Support for Android API 31, which is now a requirement for submitting new apps to the Google Play Store.
- Update to the version of OpenSSL used by the engine to 1.1.1q, allowing LiveCode built apps including “SSL & Encryption” to be submitted successfully to the Google Play Store.
- Support for building with Xcode 14.2 and the iOS 16.2 SDK to meet the new (as of April 2023) requirements of the Apple AppStore.
This version will now become the default download from your LiveCode account.
Other New Features
Add audio permissions on Android
Options to add audio related permissions to android apps have been added to the standalone builder.
Apple architecture support out of “experimental” phase
Apple architecture support has now been officially added to the macOS IDE, standalone builder, and server engine. You can build for M1, M2 etc natively on Mac OS. LiveCode and any standalones it builds will now run using the native architecture of the platform by default.
Controlling the music control center display on iOS
A “displayData” property has been added to the IOS native player control to allow control over the music control center on iOS 16 and above. The lock screen on iOS displays information about the currently running media, which can be controlled using the “iphoneSetRemoteControlDisplay” command.
However, on iOS 16 and above this command no longer works when using a native player control, as only metadata defined in the file being played is used. To work around this problem a new property “displayData” has been added to the native player control on iOS. This property takes an array with keys:
- artwork: the png, jpeg, gif or bmp image data to display as an image
- description: a string describing the media
- genre: a string describing the genre of the media
- subtitle: a string describing the subtitle of the media
- title: a string describing the title of the media
The property is applied the next time the content of the player is changed, so should be set
before the filename property. For example:
local tInfo
put the text of image "MyArtwork" into tInfo["artwork"]
put "MyMedia" into tInfo["title"]
mobileControlSet "MyPlayer", "displayData", tInfo
mobileControlSet "MyPlayer", "filename", "MyMedia.mp3"
Which fields from the displayData are used in the music control center appears to be somewhat device and OS version dependent. However, at least the artwork and title properties will always be used. Due to this it is recommended that the new property only be used on iOS 16 and above – with the previous method sufficing on older OS versions.
Bugs Fixed
- The ‘Go to handler…’ submenu in the Handlers menu in the script editor is now sorted according to the Handler List sorting option chosen in preferences
- A new menu item ‘Report an Issue’ has been added to the Help menu
- The dictionary has been updated to clarify the names of the text encodings accepted by the textEncode and textDecode functions
- The ‘Newsletters’ item of the Help menu has been renamed to ‘Blog’ and now points to the LiveCode blog
- Modal dialogs will no longer flash briefly before being displayed on Windows
- Clicking on links to bug reports in the release notes from the documentation viewer will now open them in an external browser
- Clicking the bottom left of a collapse branch icon in the project browser now works correctly
- The names of the localization resources used in macOS standalones have been updated to use ISO-639 codes to better support codesigning and notarization
- Creating a new stack will no longer clear the project browser when it was previously displaying deeply nested controls
- The ‘System Requirements’ section in the user guide has been updated to refer to the associated release notes
- The engine will no longer crash when computing the formattedRect of a paragraph containing two adjacent VTAB characters
- The extension builder will no longer fail to compile an extension which has hidden (. prefixed) files in its source folder
- Pressing return in the search bar of the dictionary no longer clears the search bar contents and results
- The dictionary entry for the ‘editionType’ property has been updated to be inline with the current product licensing options
- The dictionary now correctly documents the allowsInlineMediaPlayback mobile control browser property
- The ODBC driver on linux no longer fails when attempting to use an installed Oracle driver
- The standard PDF icon has been added to the iconsvg library, making it available to the svgpath widget with name ‘pdf’
- The dictionary now correctly documents the CP1252 text encoding as being only available on Windows in the ‘textEncode’ and ‘textDecode’ functions
- The dictionary now correctly lists Android as a supported platform on the print-related syntax which works in the context of open printing to pdf
- The ODBC driver on macOS now functions correctly when running on Apple architecture machines
- The socket commands now work when using the server engine on macOS
- The breakpoints displayed in the gutter are now correct after switching to a different tab in the script editor
- Pending changes to an object by the property inspector are no longer lost when the selected object changes due to pasting new objects
- The property inspector will no longer allow a stack to be renamed to the same name as another stack
- The arrayEncode function will no longer fail when given arrays containing non-integer keys
- The Evaluation Edition glossary entry has been removed as it no longer contains useful information
- The IDE no longer leaves files related to setting up extensions in the temporary folder after being launched
- Setting properties on the mobile control browser using mobileControlSet will no longer cause a crash on iOS in certain circumstances
- The socket commands now work when using the server engine on Linux
- The ‘international’ option in the ‘sort’ command now supports the user’s locale being fr_CA (French Canadian)
- The ‘Find in Docs’ item in the script editor context menu has been renamed to ‘Find in Dictionary’ to better reflect its behavior
- The correct window is now focused when a modal window is closed
- Tabs in the script editor now update properly when the name of the displayed script’s control changes
- The IDE now only creates a web deployment related temporary folder if a standalone is built for web
- Datagrids now work correctly when using a nested behavior
- The svg icon library’s addIconFamily command will now throw an error if the icon data argument has the wrong structure, and its dictionary entry now shows correct usage
- Text pasted into an ask password dialog is now obfuscated
- Anchors in regexes used in the script editor’s find and replace panel now match at line boundaries
- The PDF widget now correctly removes the scrollbar when the vScrollbar or hScrollbar property is set to false
- The version of OpenSSL used by the engine has been updated to 1.1.1q, allowing LiveCode built apps including “SSL & Encryption” to be submitted successfully to the Google Play Store
- The script editor line numbers now update correctly after the editor is scrolled using the up arrow key
- Scrolling a field containing large amounts of mixed script text no longer causes instability on Android
- The project browser now correctly places newly grouped controls into their parent group
- Deleting a stack will not cause visible rows related to other stacks to be removed from the project browser’s view
- The commands provided by mergNotify now work when running natively on an Apple architecture mac
- Stacks opened or closed while a modal is open on Windows are no longer incorrectly enabled or disabled
- Extensions with a userVisible metadata value of false will no longer be listed on the Inclusions pane of the Standalone Settings dialog
- The browser widget no longer blocks http connections in the macOS IDE and standalones
- LiveCode no longer crashes on startup when the system calendar is non-Gregorian
- The engine will no longer crash if a handler with a parameter it is called without a corresponding argument
- Setting a control’s layerClipRect property now redraws the control if it has changed
- Multi-architecture Android, iOS and macOS standalones are now substantially smaller
- The arrayDecode function now throws a specific error code when the data passed to it fails to decode
- The Property Inspector text contents editor now displays styled text in a more readable way
- The Extension Builder now displays an informative error message when attempting to install extensions without the required metadata
- The engine will no longer abort on startup on Windows machines with certain printer drivers installed
- Center or right aligned wrapping paragraphs in fields which contain words wider than the content width will now render correctly
- The dictionary entry for LiveCode Builder extension has now been corrected to include the word ‘widget’ which was previously omitted
- The firstIndent property has been moved to the Text pane of the field Property Inspector
- iOS apps will now rotate correctly when the device orientation changes on iOS 16
- The start using font command will now correctly update text in fields which already have a textFont property matching the new font’s name
- The NFKD mode of the normalizeText function now works correctly
- The NFKC mode of the normalizeText function now works correctly on strings which do not contain unicode characters
- The ask and answer dialogs are no longer resizable
- Compound text chunk expressions which include the byte chunk are now evaluated correctly
- Using the trueWord or sentence chunk no longer causes strange behavior which could occur in certain circumstances
- iOS standalones no longer include the (now obsolete) armv7 architecture
- Using sockets on macOS and Linux in -ui standalone or server engine will no longer cause wait to cause high CPU usage
Windows Certificate Update
The code signing certificate we use to sign the windows installer and LiveCode application has been renewed. This means that it will take a certain number of verifications before Windows Defender SmartScreen will not popup a dialog. Please do take the time to download, install and run the LiveCode application at least once to help ensure that it gains the necessary ‘reputation’.
Potential Launch Delay on Windows
Although the engine will no longer abort on startup on Windows machines with certain printer drivers installed, you might observe a long delay (up to ~60 seconds in some cases) until the engine launches. A workaround for this issue is to stop the printer spooler process:
1. Open Windows Task Manager
2. Search for a process named “Spooler Subsystem app” or just “Print Spooler”
3. Force quit this process
Alternative, you can stop/start the printer spooler from the command line (with admin access). The commands to do this are:
net stop spooler
net start spooler
We would be grateful if anyone who has a windows system which is affected by this problem could make yourself known to support@livecode.com or post on the bug report about any experiences regarding this issue – i.e. if it works perfectly for you (no longer crashes) or if it works with a long delay.
How to get 9.6.9
You can find the release in your LiveCode account area or get it via the automatic updater. Not got LiveCode yet? Sign up for a trial here.
2 comments
Join the conversationRobert Teeter - April 22, 2023
9.6.9 – “Text pasted into an ask password dialog is now obfuscated”
Also all * for “ask question” . “Ask question” in 9.6.8 and 9.6.2 did not obfuscate.
I have gone back to 9.6.8. Bob in Florida
Heather Laine - April 24, 2023
Hello Robert, yes, this is a recently introduced bug, thank you for spotting this. We have filed a bug report here, and hopefully it will be fixed in the next release: https://quality.livecode.com/show_bug.cgi?id=24192