9.6.9 rc-3 released: Support for iOS 16

by Panagiotis Merakos on March 29, 2023 No comments

We are pleased to announce the release of LiveCode 9.6.9 RC-3. This version comes with more than 25 bugfixes and improvements.

Features implemented

  • iOS builds have been updated
  • Apple architecture support out of “experimental” phase
  • A displayData property has been added to the iOS native player control

iOS Update

Building iOS apps using Xcode 14.2.x with the iOS 16.2 SDK is now supported.

Important: From the start of April 2023, Apple is only accepting apps built using iOS16.x SDKs. This means that, if you wish to submit apps to the AppStore you will have to be running at least macOS 12.6.3 in order to be able to install the necessary version of Xcode (14.2).

Apple Architecture Support

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.

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’.

Regressions fixed

  • The ability to apply changes using the Enter key shortcut in the 9.6.9- script editor has been reinstated
  • Replace All now works as expected in the Script Editor
  • Popup button menus now present correctly from modal and sheet dialogs on Windows
  • The input field in the ask dialog is now focused when it is initially opened
  • Embedded images in the message displayed in answer dialogs now display correctly
  • Manipulating properties of datagrids before they are visible no longer causes an error

Bugs fixed

  • 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

Known issues

Potential Linking Error with mergEXT

When building an iOS standalone with a version of Xcode < 14.2, you might get a linking error if you include some mergExt* externals in the Inclusions pane. This happens because in Xcode 14.2 some optimisations took place that broke backwards compatibility with binaries built with older Xcode versions. This does not affect the following mergExt externals:

  • blur
  • mergJSON
  • mergMarkDown
  • mergBonjour
  • mergAV
  • mergNotify
  • mergMicrophone
  • mergCL

If your app uses any of the remaining mergExt externals, and you have to use an older version of Xcode to build, then a workaround is to copy the mergExt* resource folders from an older version of LiveCode (e.g. 9.6.9 rc2) and paste it in the appropriate place in LC 9.6.9 rc3 app bundle. For example, for mergAnswerColor, you can grab the folder from:

/Applications/LiveCode 9.6.9 (rc 2).app/Contents/Tools/Ext/mergAnswerColor

and paste it into

/Applications/LiveCode 9.6.9 (rc 3).app/Contents/Tools/Ext/mergAnswerColor

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 rc-3

You can find the release in your LiveCode account area or get it via the automatic updater. If you are looking for the release in your account, please remember to scroll down the list of stable releases to find the test releases, underneath. Not got LiveCode yet? Sign up for a trial here.

Enjoy!

read more
Panagiotis Merakos9.6.9 rc-3 released: Support for iOS 16

ChatGPT: Language Models 101

by Holly McIntosh on March 17, 2023 3 comments

As a follow-on from the LiveCode’s new newsletter and Geoff Canyon’s blog post on using ChatGPT to write LiveCode (which you can read here if you missed it!) I thought I’d write a little bit about how language models like ChatGPT are made.

You’ve probably seen a lot about the what, where, who, and why of ChatGPT, but maybe a bit less about the how. I spent some time studying language model neural networks as part of my Master’s project at university, so hopefully I can shed a bit of light on how chatbot AIs are made.

read more
Holly McIntoshChatGPT: Language Models 101

Some thoughts ahead of the Only Connect Series 18 final

by Ali Lloyd on March 10, 2023 No comments

It’s that time of year again where the current series of Only Connect draws to a close. For the uninitiated, Only Connect is a quiz show on the BBC. It has four rounds:

  1. Connections – Figure out the connection from four apparently random clues
  2. Sequences – Determine what would come fourth in a sequence
  3. Connecting Wall – Sort 16 clues into four connected groups of four, and find what connects them
  4. Missing Vowels – Determine the word or phrase which has had its vowels removed and spaces added or subtracted. These come in connected groups of four, where the connection is given.

It is generally considered to be very difficult. The questions often rely on esoteric trivia, but rarely do they solely rely on such trivia. For many of the questions the answer can be figured out in the moment, based on limited knowledge or partial identification; educated guessing is perhaps the most valuable skill of the Only Connect player.

read more
Ali LloydSome thoughts ahead of the Only Connect Series 18 final

Optimising for the App Store: A Critical Factor in Achieving App Success

by James Conway on February 28, 2023 No comments

Introduction

Creating your app is just the beginning of your journey in the world of mobile apps. The problem is that the majority of apps don’t take off without a great marketing effort. With the Apple app store alone hosting over 3.5 million apps, it can be challenging to stand out and reach your app’s full potential.  With global mobile app revenue reaching $133 billion in 2021, it’s crucial to make your app visible and discoverable to potential users. That’s where App Store Optimization (ASO) comes in.

read more
James ConwayOptimising for the App Store: A Critical Factor in Achieving App Success

Generating LiveCode using ChatGPT

by Geoff Canyon on February 20, 2023 6 comments

Geoff Canyon is a product manager highly interested in machine learning and available to help make your product awesome! 

LiveCode

LiveCode is a combination IDE/UI Toolkit/programming language with a history stretching back to the 1990s, and with predecessors from the 1980s (HyperCard). I’m fond of LiveCode: I’ve used it since the ‘90s, I spoke about it at Apple’s WWDC and other conferences, and I’ve helped to demo it at trade shows by building a working app for Windows, Mac, and Linux, all while holding my breath. Despite being a product manager and not a developer, I still maintain a well-liked plug-in for the dev environment, and I use LiveCode whenever I need a quick UI+code environment in which to work.

ChatGPT  

ChatGPT is a language machine learning model recently released by OpenAI, based on their GPT 3.5 model, fine-tuned with both supervised and reinforcement learning techniques to function as a chatbot. It is a remarkable advancement over previous language generation models, capable of producing a convincingly-human conversational experience.

read more
Geoff CanyonGenerating LiveCode using ChatGPT

Reflecting on 2022, anticipating 2023

by Heather Laine on December 21, 2022 3 comments

The end of 2022 is approaching and we’re all looking forward to some well earned time off and holiday celebrations. Whether you celebrate Christmas, Hanukah or the Winter Solstice it’s a time of year to get together for some quality time with our nearest and dearest.

It’s also a time to reflect, on the achievements of the year, and where they might take us next. We are only part way through our “year of reinvention”: the rebirth of LiveCode as LiveCode 10 announced in spring this year. 

read more
Heather LaineReflecting on 2022, anticipating 2023

Winning with LiveCode: Using LiveCode to run a city council election campaign

by Mark Wieder on December 9, 2022 4 comments

LiveCode has many uses. Something it excels at is processing data from all kinds of sources to provide sensible insights and actionable outcomes. This is an example of such a use.

The Project

Recently I was involved in a city council election campaign. For the campaign we divided up our district precincts into smaller turfs of about 100 houses each. That way we could give our canvassers a reasonable-sized area to cover in a reasonable amount of time. We wanted to get a sense of how effective our efforts were.

read more
Mark WiederWinning with LiveCode: Using LiveCode to run a city council election campaign

My LiveCode Journey

by Julian Morgan on December 5, 2022 2 comments

I first started to use LiveCode around 10 years ago, when I was looking for a development platform to build an app to accompany my own Imperium Latin Course (www.imperiumlatin.com). Previous to this, I had been using Adobe (previously Macromedia) Director, which did not offer the possibility of authoring for iOS or Android devices.

read more
Julian MorganMy LiveCode Journey