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
-
v1.2.2
build 29Added 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
-
v1.2.1
build 28Added 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
-
v1.2.0
build 27Added 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
-
v1.1.5
build 26Added 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
-
v1.1.4
build 25Added 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
-
v1.1.3
build 24Added 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
-
v1.1.2
build 23Added 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
-
v1.1.1
build 22Added 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
-
v1.1.0
build 21Added 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
-
v1.0.8
build 20Added 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
-
v1.0.7
build 19Added 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
-
v1.0.6
build 18Added 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
-
v1.0.5
build 17Added 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
-
v1.0.4
build 16Added 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
-
v1.0.3
build 15Added 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
-
v1.0.2
build 14Added 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
-
v1.0.1
build 13Added 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
-
v1.0.0
build 12Added 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