Repository navigation
Loreline v0.9.0
Asynchronous Functions
Custom functions exposed to your scripts can now run asynchronously: a function can pause the interpreter and resume it later, once its work is done. This makes it natural to await animations, timers, network calls, or any host-side event from inside a story, without blocking the host update loop. Async functions integrate with save/restore and work across native and Web, including the Godot Web export.
Localization & Translation Workflow
Localization received a major overhaul.
- Standard file formats: translation files can now be generated and read back as PO (gettext), XLIFF, CSV, and TSV, in addition to the native
.lorformat. translateCLI command:loreline translate story.lor --lang fr --format pocreates or updates a translation file next to your script. Regenerating is merge-preserving (existing translations are kept, new entries are added, source changes are flagged) and idempotent.- Localization keys:
--auto-idsinserts stable#idmarkers into the source,--clearremoves them. - Per-file mapping: each file, including imported ones, maps to its own translation entries instead of a single root translation file.
- Consistent API on every target, with AOT-friendly format dispatch and registrable formats via
Loreline.translationFormat(...).
Documentation: https://loreline.app/en/docs/
Language Improvements
- Implicit characters from dialogue: in a top-level script without named beats, every dialogue speaker is automatically treated as a character, so
barista.name := Alexworks out of the box, with no explicitcharacter barista { ... }declaration needed. - Interpolation at line start: indentation is now correctly stripped when a line begins with an interpolation.
Improvements
- Catchable errors:
Loreline.lastError()exposes parse andloadLocaleerrors without relying on thrown exceptions, which is friendlier for AOT and host integrations. - Vendored scripting engine: the embedded expression engine is now bundled in-tree as
loreline.lorscript, so a host Haxe project that depends on its own copy of hscript no longer conflicts with Loreline. - Godot: save/restore and async functions now work on the Web export as well as native, bindings were tidied for both the native and JS paths, and the extension's memory model was improved (especially around custom functions). Godot test coverage in CI was expanded.
- C++ API: shared library export fixes, internal cleanup, and an updated test runner.
- LSP: new
documentReadynotification, a fix for duplicate "From:" entries, and various server improvements. currentNodeFilePathis now exported to JS/TS.- Bug fixes: native GC crash surfaced by async functions, C++ library export across related targets, and localization edge cases (now covered by a dedicated CLI test suite).
Full Changelog: v0.8.1...v0.9.0