Skip to content
Dextalo
Back to home
Release notes · Dextalo

Changelog

Every notable change to Dextalo, newest first. Each release is audited and versioned by build number.

Latest · v1.2.2 18 releases
  1. v1.2.2

    build 29

    Added 4

    • New AGENTS.md repo map at the project root linking every subsystem's documentation
    • New per-area docs under docs/: ARCHITECTURE, CONTEXT (glossary), DESIGN, PRODUCT, CLI, PIPELINE, TRANSLATION_MEMORY, CONVERSION, QA, CONFIGURATION, SECURITY, RELIABILITY, WEB, BENCHMARK, RELEASE, and QUALITY_SCORE
    • First architecture decision records (ADRs) capturing stable-line mapping for edits, pgvector dual embeddings, distribution via zip plus self-updater, and XLIFF 1.2 as the universal pivot
    • Generated docs/generated/db-schema.md for translation-memory schema reference and docs/plans/tech-debt-tracker.md for tracking known gaps

    Changed 4

    • Main menu item renamed from 'Domains' to 'Verticals' (shortcut `d` unchanged) to align CLI wording with subject-matter prompts and reports
    • Config key `folders.selected_domain` renamed to `folders.selected_vertical`, with automatic one-time migration of existing user configs on first load
    • Prompt folder `cli/prompts/domains/` renamed to `cli/prompts/verticals/`; `dxt config` and the interactive info panel now show `Vertical:` instead of `Domain:`
    • Outdated planning specs (AUDIT_PIPELINE_SPEC, BENCHMARK_SPEC, DUAL_EMBEDDINGS_GUIDE, LOCAL_TM_PROCESSING, REPAIR_SPEC, TM_OPTIMIZATION, VECTOR_SEARCH_SETUP) replaced by the current docs/ system of record
  2. v1.2.1

    build 28

    Added 3

    • Trados preview DOCX conversion support that reads side-by-side preview tables, extracts source segment rows, and carries existing target text into generated XLIFF targets
    • Trados preview DOCX restoration support that writes translated XLIFF targets back into matching Target segment cells in the original preview document
    • Analyze Content now includes trusted existing target translations from XLIFF files so generated style guides can infer target-language terminology, tone, phrasing, and punctuation

    Changed 5

    • AI Translate now treats non-empty XLIFF targets as already translated by default, skipping them before TM lookup, prompt generation, and writeback
    • Translation run reporting now separates total source segments, newly applied translations, and existing targets skipped
    • File conversion now better matches Trados behavior, including preserving prefilled target text from preview DOCX files and ignoring non-text XLSX values during extraction
    • Sentence segmentation now warns once before first-time wtpsplit Hugging Face asset downloads so conversion setup is less surprising
    • Default style-guide and editing model examples were updated to `xiaomi/mimo-v2.5-pro`

    Fixed 4

    • Segmented XLIFF translation no longer clears or overwrites existing target XML for pre-translated segments
    • Whitespace-only targets are still treated as untranslated and remain eligible for AI/TM translation
    • Mixed segmented targets with some prefilled `<mrk>` entries now preserve existing target attributes while filling only empty target segments
    • Translate reports now include only newly translated or TM-applied segments, not preserved existing targets
  3. v1.2.0

    build 27

    Added 6

    • New local TMX processing backend using in-process lexical fuzzy matching with `rapidfuzz` — enables fast translation-memory lookup without database import, embedding generation, or remote dependencies
    • Configurable TM backend selection via `tm.backend` setting: `local_tmx` (file-based), `db_vector` (existing database), or `auto` (intelligent selection based on available assets)
    • Persistent disk cache for parsed TMX indices, keyed by file path, modification time, and parser version, with automatic invalidation and fallback to temp directory on cache failures
    • Background daemon loading for TMX indices — non-blocking parse spawns when conditions are met, leaving the CLI menu fully responsive while the translate pipeline blocks with a bounded timeout if needed
    • Configurable fuzzy matching parameters: `tm.fuzzy_scorer` (WRatio/token_set_ratio/ratio), `tm.fuzzy_min_score` (0-100, default 75), and `tm.fuzzy_max_results` (default 3)
    • Exact and fuzzy match metadata in translation prompts including match type, score, and TMX filename for full traceability in AI translator and reports

    Changed 2

    • Translation memory service now dispatches to local or vector backend based on `tm.backend` configuration, with backward-compatible `db_vector` default for existing users
    • TM matches from both local fuzzy and vector backends include consistent metadata (source, target, score, type, backend, source_name) for unified prompt integration

    Fixed 5

    • Local TMX parsing now normalizes inline XML tags and HTML entities to prevent fuzzy-match misalignment on markup-heavy segments
    • Local TMX exact-match early return no longer prevents fuzzy-match fallback when exact results exceed max_results limit
    • TM match caching in editor workflow now loads and reuses per-segment TM matches saved by translator, eliminating redundant database lookups during post-editing
    • Progress bar rendering during TM lookup now properly clears cursor position before rewriting, preventing stale output artifacts in terminal
    • Editor progress display now counts translation units and segments separately instead of treating them as equivalent
  4. v1.1.5

    build 26

    Added 2

    • New `dxt repair` workflow for detecting suspected segment-shift corruption in edited XLIFF files, with per-file repair reports and optional `--auto-fix` execution when findings are safe
    • New `dxt apply-repair` command to restore or retranslate damaged XLIFF ranges from repair reports, including `--dry-run` planning and `--reedit-scope` control for post-repair editing

    Changed 1

    • `dxt repair` and `dxt apply-repair` verbose runs now print the resolved AI model usage up front and show single-line per-file progress bars while scanning, restoring, retranslating, and re-editing

    Fixed 5

    • Segmented Edit now prefixes review rows with stable `[N]` identifiers and maps AI responses back by line number first, preventing edit-segment jumping when a model omits a line such as a numeric-only segment
    • Repair and Apply Repair now normalize composite report IDs such as `52:52.1`, so segmented SDLXLIFF regions restore against translate reports using the correct segment keys
    • Borderline shift findings with complete translate-report coverage now use an AI repair-strategy tiebreaker, reducing unnecessary manual-review fallbacks when a safe automatic restore can be identified
    • Repair reports now include segment-level source and target text for both shift regions and isolated misaligned findings, improving manual-review context
    • Repair reports now include an `available_fixes` array documenting the supported repair strategies for integration with downstream tools
  5. v1.1.4

    build 25

    Added 6

    • New `text_normalizer` module with shared Unicode bullet-glyph stripping and abbreviation detection, used by all converters and the segmenter
    • Layout-aware PDF paragraph extraction using pdfplumber bounding boxes — groups lines into paragraphs by vertical gap and bullet markers, with automatic fallback to the previous text-block approach
    • XLSX/XLS header-row prompt during conversion — asks whether to include or skip the first row before creating the XLIFF
    • TU and segment counts displayed in translator and editor workflow initialization output alongside TM, glossary, and domain context
    • `TranslationFileCount` and `TranslationCountSummary` dataclasses for per-file and aggregate TU/segment pre-flight counts
    • Translation run completion summary now shows `X TUs, Y segments` instead of a raw segment count

    Changed 5

    • TXT converter paragraph splitting now treats each bullet-prefixed line as its own paragraph, matching Trados sdlxliff segmentation behavior
    • DOCX and PPTX converters now strip leading Unicode bullet glyphs from the first span of each paragraph and skip paragraphs that become empty after stripping
    • Segmenter regex fallback is now abbreviation-aware — no longer splits sentences at tokens like `Inc.`, `Ltd.`, `Co.`, `Mr.`, `Dr.`, and date abbreviations
    • Segmenter now validates that each split boundary contains a real sentence terminator, merging fragments from list- or title-style wtpsplit cuts back into the previous sentence
    • `ConversionPipeline.convert_file()` accepts a `converter_kwargs` dict that is forwarded to the converter's `extract()` call, enabling format-specific options like `skip_header`

    Fixed 3

    • PDF converter no longer stitches all lines into a flat text block — replaced with layout-aware line clustering so paragraph boundaries match Trados more closely
    • Segmenter no longer silently returns empty results when wtpsplit raises an exception — falls through to the regex splitter instead
    • Editor progress bar rendering now uses terminal cursor save/restore (`\033[s`/`\033[u`) instead of line-clearing loops, preventing stale bar lines when intermediate print calls occur between updates
  6. v1.1.3

    build 24

    Added 4

    • Reviewed-workbook learning for `dxt qa` via `--reviewed-workbook`, turning human `Source` / `Target` / `Edit` corrections into reusable QA-feedback guides
    • New learned QA-feedback prompt layer for future `dxt edit` and `dxt qa` runs, with generated `qa_feedback_*.toml` and `qa_feedback_*.json` artifacts stored in `linguist_profiles/`
    • Interactive QA menu support for reviewed workbook import with a second checkbox picker for `.xlsx` files in the new `qa_workbooks/` workspace folder
    • `qa_workbooks/` workspace folder created by `dxt init` for reviewed QA Excel files used by the interactive app

    Changed 3

    • `dxt qa` now supports learn-only mode when a reviewed workbook is selected without any XLIFF files to validate
    • Editing workflow initialization output now shows the active QA-feedback profile alongside personalization and domain context
    • README and website docs now include a step-by-step human QA learning workflow for reviewed XLSX files

    Fixed 2

    • QA feedback learned from reviewed workbooks now stays scoped to Edit and QA only, instead of leaking into first-pass translation behavior
    • Interactive QA no longer requires leaving the app to use the reviewed-workbook feature
  7. v1.1.2

    build 23

    Added 4

    • New Settings -> Personalization selector with shortcut `P`, including `None`, existing guide selection, and AI-generated guide creation from workspace samples
    • Workspace `linguist_profiles/` folder created by `dxt init` for personalization samples and generated TOML guides
    • Personalization guide injection into both Translate and Edit so AI output can preserve a linguist's target-language writing style
    • Personalization status visibility in config output, workflow initialization, and the interactive menu info panel

    Changed 3

    • Personalization analysis now uses `AI_STYLE_GUIDE_MODEL` / `AI_STYLE_GUIDE_PROVIDER` routing and prints the resolved model before sending the request
    • Default personalization sample size increased from 3000 to 5000 extracted text units
    • Personalization analysis progress wording now reports extracted text units instead of whitespace-based words for better CJK accuracy

    Fixed 5

    • Hidden files such as `.gitkeep` no longer appear in the personalization sample picker
    • DOCX personalization extraction now includes body content more reliably, including document structures that were undercounted before
    • CJK sample counting and truncation now use language-agnostic text units so long Chinese documents are not misreported as only a few words
    • Traditional Chinese aliases such as `zh-Hant`, `zh-tw`, and `zho-TW` now canonicalize to `zh-TW` when Convert, Translate, and Edit persist XLIFF and report metadata
    • Segmented Edit now blocks suspicious source-language reversions from being written back into target segments, records them in the edit report, and warns in the CLI when a model tries to copy source text into a different target language
  8. v1.1.1

    build 22

    Added 4

    • New Settings -> Domains selector with `Airline/Travel` as the first domain-specific prompt layer
    • Domain-aware prompt injection across translation, editing, and QA, including airline/travel guidance and a dedicated Traditional Chinese editor prompt
    • Optional `AI_STYLE_GUIDE_PROVIDER`, `AI_TRANSLATE_PROVIDER`, `AI_EDITING_PROVIDER`, and `AI_QA_PROVIDER` OpenRouter routing overrides, with provider metadata recorded in style-guide, translate, edit, and QA artifacts
    • Domain metadata in translate, edit, QA, and QA-apply reports, plus domain visibility in translator/editor workflow initialization output

    Changed 5

    • `dxt pipeline` can now reuse an existing matching analyzed style guide instead of regenerating one every run
    • `dxt pipeline` now detects when the target file already exists and lets you skip translation and continue with later steps
    • `dxt translate` now supports `--force` to overwrite same-name target files instead of skipping them
    • Pipeline summaries now show why stages were skipped or reused, not just that they were omitted
    • Editing now writes canonical per-file `*_edit_report.json` sidecars, and grading plus notification summaries read those file-specific reports instead of the old shared generated summary

    Fixed 5

    • Editor prompt contracts to explicitly remove TOON quote artifacts, preserve list and heading structure, and improve airline/travel terminology handling
    • Traditional Chinese localization guidance for passenger-facing travel content, including cleaner label-style output and fewer serialization artifacts
    • Post-edit routing so segmented `.xlf` files with `seg-source` / `mrk` content are edited at the segment level instead of as whole translation units
    • Standard XLIFF post-edit writeback by updating the XML target element directly instead of relying on unreliable unit-level setter behavior
    • Editor progress rendering, throughput details, and rate-limit retry handling so live chunk updates stay readable and a transient OpenRouter 429 is retried once before failing
  9. v1.1.0

    build 21

    Added 5

    • New audited localization pipeline: analyze-content -> translate -> edit -> qa
    • Structured `dxt qa` command with per-file QA reports and issue typing for omissions, additions, terminology, placeholders, formatting, tone, and more
    • New `dxt apply-qa` workflow step that reads QA reports and applies targeted revisions back into target XLIFF files
    • Stage-specific model routing and environment variables for style guide, translation, editing, and QA
    • Optional custom context input during pipeline style-guide generation for market or brand-specific guidance

    Changed 5

    • `dxt pipeline` now runs on a single selected source file from the interactive menu instead of processing the entire source folder
    • `dxt grade` remains available as a standalone post-pipeline evaluation step instead of being part of the main pipeline
    • Interactive workflow menu now exposes QA and Apply QA as first-class steps and re-enables Pipeline in the new order
    • Analyze, translator, and editor prompt contracts were redesigned to use structured style-guide output and stricter translation-only vs editing-only behavior
    • Pipeline step output now shows the resolved model used for style guide analysis, translation, editing, and QA

    Fixed 5

    • Non-blocking QA behavior so validation findings no longer abort the pipeline solely because issues were detected
    • Style-guide console output during pipeline so it matches the cleaner step-based CLI presentation
    • Mixed legacy and stage-specific model env naming by standardizing on `AI_STYLE_GUIDE_MODEL`, `AI_TRANSLATE_MODEL`, `AI_EDITING_MODEL`, and `AI_QA_MODEL`
    • Edit-stage progress wording so batch and summary counts are labeled as translation units instead of segments
    • CLI, README, and website docs to reflect the new QA/apply-qa workflow and removal of the old repair command
  10. v1.0.8

    build 20

    Added 4

    • Interactive language preflight before translation showing the resolved source and target language pair
    • Mixed language pair detection across selected XLIFF files with per-file pair warnings before translation continues
    • Target-language-specific translator prompt examples for Thai and Traditional Chinese
    • Source and target language metadata in translation reports for better traceability

    Fixed 5

    • Saved language settings are no longer overridden by SOURCE_LANG, TARGET_LANG, SOURCE_LANGUAGE, TARGET_LANGUAGE, DEFAULT_SOURCE_LANGUAGE, or DEFAULT_TARGET_LANGUAGE environment variables
    • Default language settings now start unset instead of forcing English to Thai, so the UI correctly shows (none) → (none) until a language pair is selected
    • File-level XLIFF language metadata now overrides Settings → Languages during translation preflight and execution
    • Traditional Chinese aliases such as zh-TW, zho-TW, and zh-Hant now resolve consistently for prompt assembly and display
    • Style guides with a mismatched target language are now rejected before translation
  11. v1.0.7

    build 19

    Added 5

    • AI tooling pre-processing step for TM matches — uses fast model (AI_TOOLING_MODEL) to truncate oversized TM targets before translation, extracting only the portion relevant to the source segment
    • TM truncation tracking in translate report — truncated matches include original_target_text and truncated_by_tooling flag for full traceability
    • ai_tooling timing metric in translate report for tracking tooling model processing time
    • Inline warning in translator prompt when TM source is significantly longer than the segment source
    • TM scoping instructions and example in translator system prompt to prevent AI from copying extra TM content beyond the source segment

    Fixed 2

    • TM match index misalignment causing 100% matches to not be applied when empty source segments exist in a chunk — exclusion set now uses chunk_mapping indices consistently across both segmented and standard file paths
    • AI translator copying full TM target text (including content beyond the source segment) when TM source was longer than the segment source
  12. v1.0.6

    build 18

    Added 2

    • Character count metric in analyze command output
    • Translation unit and segment distinction in analyze command (TUs, Segments, Words, Characters)

    Fixed 5

    • Translation alignment shift when AI drops lines during translation
    • Warning messages overwritten mid-progress during translation
    • Missing "Press Enter to continue" prompts after command completion
    • Analyze command miscounting translation units as segments in non-SDLXLIFF files
    • Windows dxt init initializing in AppData instead of current directory
  13. v1.0.5

    build 17

    Added 1

    • Verify Database Connection option in Settings menu

    Fixed 4

    • Target translations not applying to sub-segments in segmented SDLXLIFF files
    • Source files with hard-coded XLIFF languages now correctly override config language settings
    • Removed analyzed prompt files from repository tracking
    • Disabled q quit shortcut on main menu to prevent accidental exits
  14. v1.0.4

    build 16

    Added 3

    • Comprehensive benchmarking system for evaluating translation models
    • Benchmark results for Gemma 3.0 12B IT model (English-Thai)
    • Auto-installation to dxt update command — downloads and installs updates in one step

    Fixed 2

    • Analyze command in interactive menu now uses file picker and resolves workspace paths correctly
    • SDLXLIFF files returning 0 word count in analyze command due to namespace and inline tag handling
  15. v1.0.3

    build 15

    Added 2

    • Disabled menu items feature with grayed-out rendering and navigation skip
    • Updated default AI model to latest generation

    Fixed 2

    • Resolved .env file path for Windows bundled executables (PyInstaller)
    • Added missing requests dependency for auto-updater
  16. v1.0.2

    build 14

    Added 3

    • Checkbox file picker for multi-file selection in Edit and Grade commands
    • XLSX restoration support and enhanced translator service
    • Pre-selected XLIFF file support in EditorController

    Changed 2

    • Default AI model updated from gemini-2.5-flash to gemini-3-flash-preview
    • Improved ConfigManager environment variable mappings for language and model settings

    Fixed 3

    • Translation shift caused by blank AI response lines
    • Suppressed SWIG deprecation warnings in CLI output
    • Workspace folder resolution for per-project configurations
  17. v1.0.1

    build 13

    Added 8

    • Comprehensive AI translation pipeline with document conversion and restoration
    • XLSX file restoration and native XLSX glossary support
    • Translation memory lookup integration in translator service
    • Glossary lookup functionality for terminology consistency
    • dxt init command for project workspace initialization
    • Folder visibility and path-switching in interactive menu
    • Scoped embedding statistics to selected TM set for accurate progress tracking
    • Environment configuration file support

    Changed 3

    • Redesigned landing page with cinematic animations and updated feature descriptions
    • Updated translation prompt templates for better consistency and clarity
    • Enhanced CLI command structure with improved error handling

    Fixed 4

    • Critical bugs, security issues, and code quality improvements across CLI and web
    • Windows installer pip error and init startup command
    • Install script extraction to properly merge updated files
    • Per-project workspace configuration and glossary file detection
  18. v1.0.0

    build 12

    Added 6

    • Initial stable release of Dextalo CLI
    • Monorepo restructure with dedicated CLI separation
    • Complete CLI self-update system with interactive menu
    • Distribution scripts with automated release packaging
    • AstroJS distribution site with interactive landing page
    • Comprehensive testing and documentation