Releases: trevordevore/levure
0.9.5
- Add support for both 32-bit and 64-bit externals.
- Fix packaging on Windows when app is on network share. Works around the issue of
renamenot working on a network share. - Filter out
.DS_Storefiles when copying files. This would cause an error on Windows. - Hide the console when packaging. It was showing up on Windows.
- Fix wording in error messages when copying files.
The architecture key
The architecture key is now supported for externals. This allows a project or helper to include both 32-bit and 64-bit externals on Windows.
Example:
externals:
windows:
- filename: blur-x86.dll
name: blur
architecture: 32
- filename: blur-x64.dll
name: blur
architecture: 64
0.9.4
- Set mapping for libraries in extension’s code folder. See notes below.
- Allow files/folders packaged with helper to specify destination. See notes below.
- Add Windows x86-64 to list of standalone builder platforms.
- Add processor awareness to packager.
Accounts for windows 64-bit builds and allows thepackage filesandpackage folderssections of a helper.yml file to specify if file should be included with 32 or 64 for architecture for a platform. - Stop using kAppStackname when unloading app.
If the app tried to quit on Windows by returningfalsefromInitializeApplicationthe executable would remain open in the background and would be listed under Background processes in the Task Manager. - Report errors if a copy files section file can't be read in during packaging.
- [Undo Manager] Target codepoint 1 so that multi-codepoint chars don’t throw an error.
- [Window Manager] Check for a valid number, not for empty.
Set mapping for libraries in extension’s code folder
An extension can use a third party library (.dylib, .so, .dll, .framework, etc.). If it does then the library is placed in subfolder of a ./code folder for development and in the ./Externals folder when packaged. This update supports automatic loading of libraries. This is primarily used in helpers.
An extension definition can now include a code key which is a list. Each element is the name of the library to load, with or without the extension. If the extension is not provided then it will be guessed depending on the platform the applciation is running on. Using the library name, laodExtensionCode will figure out the correct path and set the revLibraryMapping[libraryname] property to the full path to the library. This is what allows FFI to resolve bindings in the LCB code.
Examples from helper.yml files. This example tells Levure to map a libhunspell.dll file to the libhunspell library.
extensions:
- filename: hunspell.lcm
source: hunspell.lcb
code:
- libhunspell.dll
platform: windows
This example will map libtidy.dylib, libtidy.so, or libtidy.dll to the libtidy library depending on which platform the app is running on.
extensions:
- filename: htmltidy.lcm
source: htmltidy.lcb
code:
- libtidy
Allow files/folders packaged with helper to specify destination
package files and package folders in a helper.yml file can now include a destination key. This is useful for extension libraries that need to be copied to the ./Externals folder when packaging.
Example 1:
package files:
- filename: code/x86-win32/WinSparkle.dll
destination: ./Externals
platform: windows
architecture: 32
package folders:
- filename: code/x86_64-mac/Sparkle.framework
destination: ./Externals
platform: macos
Example 2:
package files:
- filename: code/x86-win32/libhunspell.dll
destination: ./Externals
platform: windows
architecture: 32
- filename: code/x86_64-win32/libhunspell.dll
destination: ./Externals
platform: windows
architecture: 64
0.9.3.0
- Add
levureSetApplicationFontandlevureSetApplicationFontSize.
The font settings of the stack that the standalone is built with affect the whole application. When in the IDE that stack ishome. In the standalone it is the stack that the Levure behavior is assigned to. These handlers will set the font of the correct stack so that you can see what your application will look like in the IDE. - Created hardened runtimes when code signing macOS applications by adding the
--options=runtimeflag when callingcodesign. - Use entitlements file when code signing executables inside of the packaged application bundle on macOS.
If the Levure packager finds an executable (the script checks the executable bit for a7) in the packaged application and finds an.entitlementsfile with the same name as the executable then the entitlements file will be used when code signing the executable. - Improved the scanner which looks for files that need to be code signed when packaging an app on macOS.
- Don’t alter zoomed windows on Windows and account for incorrect
effective recton Windows 10. - Explicitly set size and font for logger window. Settings on the
homestack in the IDE or in the standalone should not affect the logger window. - Turn off network by default in the logger window.
- Don't use workaround for bug #18997 http://quality.livecode.com/show_bug.cgi?id=18997 in newer versions of LiveCode.
0.9.2.1
Note: This version # is incorrect. It was supposed to be 0.9.2.1.
- Version # returned by
levureVersion()is not correct. - Stacks that are open are no longer removed from memory when calling levureInitializeFramework. This allows the call to be made in the IDE while editing your app in order to load files that have been added to disk since the application was opened in the IDE.
- Allow helpers to define conditions based on engine version, platform, and distribute flag for packaging folders and files.
- Logger improvements.
- Allow for windows to define a filename where the certificate file is located.
- Use timestamp when signing apps on macOS.
- Building standalone now reports errors and other standalone building improvements.
- URL is properly decoded in urlWakeup.
- Added pUndoing parameter to undoRestoreMementos.
- Updates to examples.
- App array is now passed as the third parameter to packagingComplete.
- finalizePackageForPlatform can now modify the app array.
- Added packagerLog so that helpers can add entries to the build log file during packaging.
- Network activity is no longer logged if the message is empty after being run through the network filters.
- Added levureStandaloneName().
0.9.2.0
- Stacks that are open are no longer removed from memory when calling levureInitializeFramework. This allows the call to be made in the IDE while editing your app in order to load files that have been added to disk since the application was opened in the IDE.
- Allow helpers to define conditions based on engine version, platform, and distribute flag for packaging folders and files.
- Logger improvements.
- Allow for windows to define a filename where the certificate file is located.
- Use timestamp when signing apps on macOS.
- Building standalone now reports errors and other standalone building improvements.
- URL is properly decoded in urlWakeup.
- Added pUndoing parameter to undoRestoreMementos.
- Updates to examples.
- App array is now passed as the third parameter to packagingComplete.
- finalizePackageForPlatform can now modify the app array.
- Added packagerLog so that helpers can add entries to the build log file during packaging.
- Network activity is no longer logged if the message is empty after being run through the network filters.
- Added levureStandaloneName().
0.9.1.4
- Change
encrypt stackto a list ofrandom,password, orempty.randomusesuuid()to change password for every build.passwordis the original behavior where developer provides a password. empty will not encrypt stacks.trueis equivalent topasswordfor backwards compatability. - Add
levureTestApplicationInSimulator. To test in a simulator you now calllevureTestApplicationInSimulator “ios”orlevureTestApplicationInSimulator “android”with the build profile as an optional second parameter. You should no longer calllevurePackageApplication “ios simulator”. - A number of logger helper improvements. See docs.
- [Preferences helper] Use empty suite name when initializing prefs in standalone. macOS will complain if you pass in the same bundle identifier as the app that is running for the suite name.
- Added parameter for filtering
levureGetUIStacks()by a specific key. - Include
platformandengine versionwhen loading extensions. - Only loop through
openProcessesonce. The process may not close right away and repeatedly trying to close it can lock LiveCode up. - Verify that helper dependencies are loaded.
- [Window manager helper] LiveCode 9.0.3 fixes the ability to set the
effective rectinpreOpenStack. Remove workarounds for that version. - [Window manager helper] Don't add window borders to stacks with a window shape when calculating rect.
- [Window manager helper] Always use stack rect if stack isn't resizable when calculating rect.
- [Window manager helper] added
windowEnsureWindowIsEntirelyOnScreen. - [File system helper] Encode filename as UTF8 before urlencoding as not all characters will roundtrip if UTF-8 encoding is not used. Added
fileSystemGetFilenameFromMenuOption()for fetching filename frommenuPickhandler.
0.9.1.2
- Add helper
nameanddependenciesproperties.
0.9.1.1
- The Levure packager was using "|" instead of ">" as the nested key delimiter.
0.9.1.0
- The preferences extension for macOS could cause a crash on macOS 10.14 due to an improperly defined ObjC parameter.
0.9.9
- Improved app creator with support for creating a Sublime Text project file.
- Fixed nested property lookup in
levureAppGet(). levureBuildExtensionsnow supports multi-file extensions.fileSystemAddToRecentlyOpenednow returns array of any files that were purged from the recently opened queue.PreloadApplicationis now dispatched prior to loading extensions/externals. That is the documented behavior but it was being sent after they were loaded.