Releases: minios-linux/lokit
Release list
v0.12.3
Changes
Fix Android targets using the universal schema
Make Android targets consistently use the public to field as the resource directory.
Android path resolution:
- Resolve
to: app/src/main/resas the Android res directory at runtime. - Use the same path for source loading, status, translation, lock collection, and language detection.
- Detect existing Android locales such as values-de and values-pt-rBR when the target uses
to.
Public schema:
- Remove legacy dir, pattern, source, target, pot, sources, exclude, and config fields from lokit.schema.json.
- Keep from, except, to, and template as the documented public path schema.
Coverage:
- Add a full config-resolution regression test for an Android target configured only with root and to.
v0.12.2
Changes
Preserve translation identity across provider responses
Prevent reordered or incomplete provider responses from assigning translations to neighboring source entries.
Translation identity:
- Assign stable opaque IDs to gettext entries and key-value source keys.
- Require providers to return identified JSON objects instead of positional string arrays.
- Map reordered responses back to their exact source IDs.
- Reject missing, duplicate, unknown, null, and empty response items.
- Retry rejected responses with the validation error included in the correction prompt.
Validation:
- Validate gettext Python brace, printf-style, and Qt placeholders before applying translations.
- Validate printf and brace/interpolation placeholders in the shared key-value pipeline.
- Apply translations and update lock checksums only after identity and placeholder validation succeeds.
- Remove the Markdown raw-response fallback that bypassed source identity.
Parallel translation:
- Use plural-aware translation handling in the full-parallel gettext path.
- Preserve exact source-to-translation association across concurrent languages and chunks.
Coverage:
- Add regression tests for reordered responses and missing, duplicate, or unknown IDs.
- Add placeholder-loss tests for gettext and key-value formats.
- Add sequential and parallel end-to-end identity mapping tests.
v0.12.1
Changes
Fix POT templates copied from PO sources
When gettext extraction runs on a .po file used as a source catalog (for example grub-theme from po/en_US.po), xgettext copies msgstr values into the generated .pot file. A POT template must keep empty msgstr for non-header entries.
- Clear non-header msgstr after RunXgettext writes the POT file.
- Keep doExtract normalization as a second safety pass.
- Add ClearTranslationsForPOT on the PO file model.
- Add regression tests for PO-source extraction and POT clearing.
v0.12.0
Changes
Add universal config schema
Introduce the new public lokit.yaml schema built around from, except, to, and template. The new shape replaces older public examples based on source, target, dir, pattern, pot, sources, records_path, key_field, and config while keeping runtime normalization for the internal target model.
Configuration changes:
- Add first-class from, except, to, and template fields.
- Support from as either a list of file/glob sources or an indexed source object.
- Support indexed source objects with index, records, key, and fields.
- Use to as the public output path template for translated files.
- Use template for generated intermediate catalogs such as gettext POT files.
- Keep source exclusions explicit through except instead of hardcoded vendor defaults.
Markdown changes:
- Fix source discovery for explicit Markdown files, glob patterns, and single-file targets.
- Support translated Markdown layouts based on {path} and {id}.
- Preserve fenced code blocks with placeholders so code is not sent to translation providers.
- Restore fenced code blocks verbatim when writing translated Markdown files.
Translation robustness:
- Parse the first complete JSON array from provider responses and ignore trailing extra text.
- Avoid failing otherwise valid translations when providers append comments or explanations.
Format fixes:
- Fix vue-i18n JSON output so HTML fragments such as
are not escaped as Unicode sequences. - Improve lock and status source collection for Markdown targets using the new schema.
Documentation:
- Update README, configuration, format, advanced, and command documentation for the new schema.
- Refresh examples for gettext, po4a, Markdown, i18next, vue-i18n, Android, YAML, properties, Flutter, JS-KV, desktop, and polkit.
Release v0.11.4
What's New
- Fix JS-KV target handling
Installation
Download the appropriate binary for your platform from the assets below.
Linux/macOS
# Download and extract
tar -xzf lokit-v0.11.4-linux-amd64.tar.gz
# Move to PATH
sudo mv lokit-v0.11.4-linux-amd64 /usr/local/bin/lokit
# Verify
lokit versionSupported Platforms
- Linux (amd64, arm64)
- macOS (amd64/Intel, arm64/Apple Silicon)
Release v0.11.3
Fixes
- Preserve groff font escapes, multiline newlines, and technical identifiers in PO translations.
- Retry invalid or truncated translation JSON responses before failing.
- Make --force retranslate eligible entries consistently across PO and key-value targets.
- Allow repeated or comma-separated --target values for lock clean.
- Avoid trailing whitespace when writing empty translator comments.
Release v0.11.2
What's New
- Improve lock cleanup and model guidance
Installation
Download the appropriate binary for your platform from the assets below.
Linux/macOS
# Download and extract
tar -xzf lokit-v0.11.2-linux-amd64.tar.gz
# Move to PATH
sudo mv lokit-v0.11.2-linux-amd64 /usr/local/bin/lokit
# Verify
lokit versionSupported Platforms
- Linux (amd64, arm64)
- macOS (amd64/Intel, arm64/Apple Silicon)
Release v0.11.1
What's New
- Fix po4a target coverage and OpenAI OAuth responses
Installation
Download the appropriate binary for your platform from the assets below.
Linux/macOS
# Download and extract
tar -xzf lokit-v0.11.1-linux-amd64.tar.gz
# Move to PATH
sudo mv lokit-v0.11.1-linux-amd64 /usr/local/bin/lokit
# Verify
lokit versionSupported Platforms
- Linux (amd64, arm64)
- macOS (amd64/Intel, arm64/Apple Silicon)
Release v0.11.0
Improvements
- Expanded gettext extraction across mixed source formats, including Desktop, Glade, and Polkit inputs.
- Seeded inline desktop translations into gettext PO files during init and translate workflows.
- Improved PO merge behavior for restored obsolete entries and context-qualified strings.
- Ensured untranslated gettext entries are still sent for translation even when lock data is unchanged.
- Updated the installer default path to use XDG-friendly user binaries.
Release v0.10.1
What's New
- Release v0.10.1: fix lock semantics and index target UX
Installation
Download the appropriate binary for your platform from the assets below.
Linux/macOS
# Download and extract
tar -xzf lokit-v0.10.1-linux-amd64.tar.gz
# Move to PATH
sudo mv lokit-v0.10.1-linux-amd64 /usr/local/bin/lokit
# Verify
lokit versionSupported Platforms
- Linux (amd64, arm64)
- macOS (amd64/Intel, arm64/Apple Silicon)