LiveCode 10 dp-6: Web Fonts and API 33

by Heather Laine on August 31, 2023 4 comments

We’re pleased to announce that LiveCode 10 Developer Preview 6 is now available. This test release includes the use of Web Fonts in your Web apps, and supports Android API 33, now required for submission to the Google Play store. In addition to this, the Web engine is now around 4mb smaller, owing to added compression and our use of Web Fonts.

What are Web Fonts and why does it matter?

Your Web apps will now use fonts provided by the browser. This makes a big difference to how your app text displays, as well as reducing the size of your Web App significantly. You no longer need to bundle specific fonts with it to ensure a consistent display. Additionally, you can easily specify as many fonts you need, either mapping to local fonts on a user’s system, fonts you have uploaded to your domain, or any available through a web fonts provider such as Google Fonts. This represents a significant part of the improved rendering project for Web we are working on for LiveCode 10.

Google Play Store support

We’ve updated the supported Android API in this release to API 33 so that you can go on submitting your Android apps to the Google Play store without issues. Note that you need to use the Build Tools SDK version 31 with this, do not update your Build Tools to a version later than 31.

Smaller Standalone on Web  

Your standalone zip file for Web now uses extra compression, making your app engine smaller and lighter. Your app will load faster for end users.

Other Feature Enhancements

  • Browser Widget
    The browser widget now supports the browserProgressChanged message on iOS.
  • Check for name
    A new operator “is strictly a name” has been added which checks that a value is being represented as a name.
  • Number Formatting
    The number formatting operations in LCB have been improved.
  • Send Email
    It is now possible to include custom headers in emails created using the MIME library.
  • SQLite improvements (also in 9.6.10)
    The version of SQLite included in revdb’s dbsqlite driver has been updated to version 3.42.0.
    In addition to this the SQLite math functions have been included, as well as an implementation of the regular expression operations.
  • RSA encryption padding modes (also in 9.6.10)
    The rsa encryption (and decryption) commands now accept an optional padding phrase. If no padding phrase is specified, then pkcs1 is used.

Bug Fixes

Regressions from 10 dp-5 fixed:

  • Appropriate “after” handlers will now trigger correctly after a message has been sent
  • “setProp” messages are now correctly handled by frontscripts
  • Engine functions taking multiple arguments will not cause LiveCode to crash when an argument is not specified
  • The browser widget now sends the “browserProgressChanged” message correctly on macOS

Bugs fixed in 10 dp-6 only:

  • The single character operators ≠, ≤ and ≥ now work in scripts on all platforms
  • Using “go” from popup menu “menuPick” handler will not cause an exception running in web 
  • Deleting a stack will no longer cause an exception when running in web
  • The JSONExport function will now export numbers as accurately as possible
  • The debugger’s variable list now displays numbers with better accuracy
  • Using copy-paste to replicate script widgets now works correctly 
  • The engine won’t crash if a script widget’s “openControl” handler causes an execution error
  • “newWidget” and “deleteWidget” messages are sent when script widgets are created and deleted 
  • Script widgets which have no properties set are now saved and copied to clipboard correctly
  • Relayering script widgets using the relayer command, the layer property or the project browser now works correctly  
  • Groups containing script widgets are now cloned, copied and pasted correctly  
  • Script widgets can create their internal controls on a stack whose cantModify property is true 
  • The sort command will now use the requested sort type on web 
  • On macOS, the browser widget will now post the correct messages when a redirect occurs and JavaScript handlers will continue to work
  • Sorting by expression in international mode on web now works correctly
  • The Notification displayed by remote control on Android will always use the status bar icon as its small icon 
  • The correct font and style will now be selected on Web
  • QuickTime is no longer referenced in the documentation, and QuickTime-specific syntax has been marked as removed.

Bugs fixed in 10 dp-6 and 9.6.10:

  • The popup widget will now be scaled correctly on Windows when the screenPixelScale <> 1
  • The lock cursor command now behaves correctly on macOS
  • Controls using native layers on macOS, including the player object and browser widget, will now be positioned correctly when the stack is in fullscreen mode.
  • The default value of the navigationArrows property is now false in standalones
  • The Windows standalone engine no longer causes high CPU usage when running an event loop
  • The read and write commands no longer reset the result to empty before evaluating their arguments
  • The httpd server library now works correctly when requests are split among multiple packets
  • Sockets now work correctly in the Windows server engine
  • Sockets now work correctly in the Windows standalone engine when in -ui mode
  • It is now possible to securely connect to MySQL databases which do not support TLSv1
  • Text pasted into a non-password ask dialog will no longer be obfuscated
  • A more appropriate error is now thrown if evaluating javascript in a browser widget fails
  • The resolve file syntax can now be used in restricted widget event handlers
  • Setting instance or static fields of Java objects to Java objects via appropriately bound LCB foreign handlers now works correctly
  • Images created from offscreen canvases in LCB now render correctly when drawn
  • The version of OpenSSL used by the engine has been updated to 1.1.1v
  • Controls using a native layer (such as players and browsers) will now display correctly after toggling fullscreen mode of their stack on macOS
  • Submitting an iOS app to the AppStore no longer fails if the minimum iOS version is less than 11.0
  • Email subjects which contain non-ascii characters are now encoded correctly by the MIME library
  • The Google Billing Library used on Android for in-app purchases has been updated to 5.2.1
  • The engine will no longer crash when it fails to connect to a MySQL database via SSL on arm64 machines

Getting the release

To download 10 dp-6 you can either use the automatic updater from your LiveCode installation, or you can download it from your account. Note that this release will appear below all the Stable releases you have access to in your dropdown downloads list. See this lesson for detailed instructions on where to find it. Please bear in mind this is a developer preview release, not a final stable version, it is not yet feature complete and may have bugs and issues, which you can report in our Quality Center.

Not got a LiveCode license? Get one here.

Heather LaineLiveCode 10 dp-6: Web Fonts and API 33

Related Posts

Take a look at these posts

4 comments

Join the conversation
  • Tom Glod - August 31, 2023 reply

    Big update, thanks. Quick question, is the browser widget still getting an update? The last v10 dp-5 still had chrome 74 from 2019. (on windows). Thanks.

    Heather Laine - August 31, 2023 reply

    Hi Tom. We do expect to update the CEF version for the Browser Widget, yes.

  • Stefan - September 7, 2023 reply

    Hi,

    I have still an issue with the Chart Widget in LC 10.0.0 dp6. In the LC IDE this Code is working fine – In iOS Simulator the Chart is not changing… I have no idea why. Is it a bug?

    on mouseup
    put “1,200” & CR & “2,100” & CR &”3,105″ into p1
    set the tsvdata of widget “Chart_Werte” to p1
    end mouseup

    Tom Glod - October 29, 2023 reply

    Hi Stefan,

    I am not sure why the widget is not working, but if you need a secondary solution, implementing something like charts.js using the browser can be done in an afternoon if you are at all familiar with some JS and HTML working together.

    Of course the more flexible you need it to be, the more work it is to create the correct code.
    You create the html & js of the chart and then you set the html of a browser widget. You need to of course include the charts.js library in the html as well.

    Hope this helps.

Join the conversation

*