Changelog¶
Libretto follows semantic versioning. Until the first 1.0.0 release, the
public API may still change between minor versions.
Unreleased (0.1.0-dev)¶
First public pre-release. Highlights:
- Dialogue Editor — full authoring: subdialogues, all line types, conditions, actions, tags, spell-checking (Windows spell checker), format rules, and CSV import/export.
- Generation — Sequencer cutscene generation with camera rules, animation, audio, subtitles and event tracks; the camera-rules preset is wired by default so shots target the speaker out of the box.
- Text to speech — ElevenLabs (cloud) and a local MSVoice provider (Windows speech API) with per-character voices by gender, culture and prosody.
- Runtime — staged, over-the-shoulder 3C and cinematic playback, with the
StartDialogue*entry points and priority handling. - Data & logic — GPVars, conditions, gameplay tag flags and auto-generated dynamic tags.
- Localization — a full pipeline (dashboard targets, dated CSV batches, status tracking).
No external programs¶
Libretto no longer launches any program outside the editor:
- Recording writes the mp4 with the Movie Render Pipeline's built-in H.264 MP4 output. ffmpeg is no longer used: the Ffmpeg Executable Path setting and the winget install are removed.
- MSVoice calls the Windows speech API (SAPI) in process instead of a PowerShell script.
- ElevenLabs audio is requested as PCM and saved as WAV directly (no mp3 conversion).
- Keyword-timed gestures: vosk is no longer downloaded by the plugin. Install it yourself and set the new Vosk Model Folder setting — see Keyword-timed gestures.
- The Third-Party Downloads editor preferences and their consent dialog are removed.
- The Google Doc review export (dialogue editor menu) is removed.
Condition history¶
ULBRConditionHistorySubsystemis now a global engine subsystem (it was a world subsystem, lost on every level change). ThebUseSubsystemconfig property is removed; an orphan key in an ini file is ignored.- The history is the only source of the condition cache: "once" now holds after a level change and after loading a save.
- Its storage is a single
SaveGamemap instead of two sets (nothing was actually recorded before, so no data is lost). - New:
ClearConditionsOf(Owner)andClearAll(), plusFindConditionResultin C++. InvalidateLastResultnow removes the history entry.
Note
This page will list dated, versioned entries once the plugin ships its first release.