supervertaler 1.9.114__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- supervertaler-1.9.114/CHANGELOG.md +4167 -0
- supervertaler-1.9.114/FAQ.md +1285 -0
- supervertaler-1.9.114/LICENSE +21 -0
- supervertaler-1.9.114/MANIFEST.in +16 -0
- supervertaler-1.9.114/PKG-INFO +799 -0
- supervertaler-1.9.114/README.md +726 -0
- supervertaler-1.9.114/Supervertaler.egg-info/PKG-INFO +799 -0
- supervertaler-1.9.114/Supervertaler.egg-info/SOURCES.txt +411 -0
- supervertaler-1.9.114/Supervertaler.egg-info/dependency_links.txt +1 -0
- supervertaler-1.9.114/Supervertaler.egg-info/entry_points.txt +2 -0
- supervertaler-1.9.114/Supervertaler.egg-info/not-zip-safe +1 -0
- supervertaler-1.9.114/Supervertaler.egg-info/requires.txt +48 -0
- supervertaler-1.9.114/Supervertaler.egg-info/top_level.txt +2 -0
- supervertaler-1.9.114/Supervertaler.py +45692 -0
- supervertaler-1.9.114/assets/ICON_CONVERSION_GUIDE.md +95 -0
- supervertaler-1.9.114/assets/MB.ico +0 -0
- supervertaler-1.9.114/assets/README.md +0 -0
- supervertaler-1.9.114/assets/generate_icons.py +129 -0
- supervertaler-1.9.114/assets/icon.ico +0 -0
- supervertaler-1.9.114/assets/icon_128.png +0 -0
- supervertaler-1.9.114/assets/icon_24.png +0 -0
- supervertaler-1.9.114/assets/icon_256.png +0 -0
- supervertaler-1.9.114/assets/icon_32.png +0 -0
- supervertaler-1.9.114/assets/icon_48.png +0 -0
- supervertaler-1.9.114/assets/icon_64.png +0 -0
- supervertaler-1.9.114/assets/icon_preview.html +202 -0
- supervertaler-1.9.114/assets/icon_sv_modern.svg +18 -0
- supervertaler-1.9.114/assets/icon_sv_modern_paths.svg +50 -0
- supervertaler-1.9.114/assets/icon_sv_simple.svg +25 -0
- supervertaler-1.9.114/assets/patent-drawing-1951.jpg +0 -0
- supervertaler-1.9.114/assets/supervertaler_icon_colours.png +0 -0
- supervertaler-1.9.114/docs/.nojekyll +0 -0
- supervertaler-1.9.114/docs/CNAME +1 -0
- supervertaler-1.9.114/docs/SIMILAR_APPS.md +90 -0
- supervertaler-1.9.114/docs/apple-touch-icon.png +0 -0
- supervertaler-1.9.114/docs/archive/BUGFIX_README.md +204 -0
- supervertaler-1.9.114/docs/archive/CHANGELIST.md +383 -0
- supervertaler-1.9.114/docs/archive/CHANGELOG_Old.md +1293 -0
- supervertaler-1.9.114/docs/archive/FAQ.md +1475 -0
- supervertaler-1.9.114/docs/archive/INSTALLATION_v1.7.8.md +508 -0
- supervertaler-1.9.114/docs/archive/PROJECT_ORGANIZATION.md +127 -0
- supervertaler-1.9.114/docs/archive/TERMBASE_REFACTORING_SUMMARY.md +136 -0
- supervertaler-1.9.114/docs/archive/USER_GUIDE_v1.7.8.md +1567 -0
- supervertaler-1.9.114/docs/archive/VERIFICATION_CHECKLIST.md +114 -0
- supervertaler-1.9.114/docs/archive/development/BEFORE_AFTER_COMPARISON.md +402 -0
- supervertaler-1.9.114/docs/archive/development/BUGFIX_SESSION_SUMMARY.md +210 -0
- supervertaler-1.9.114/docs/archive/development/COLOR_SCHEME_REFERENCE.md +147 -0
- supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_CHANGELOG.md +259 -0
- supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_DOCUMENTATION_INDEX.md +275 -0
- supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_IMPLEMENTATION_SUMMARY.md +242 -0
- supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_UPDATE.md +226 -0
- supervertaler-1.9.114/docs/archive/development/COMPLETE_IMPLEMENTATION_SUMMARY.md +224 -0
- supervertaler-1.9.114/docs/archive/development/COMPLETE_PROJECT_SUMMARY.md +478 -0
- supervertaler-1.9.114/docs/archive/development/DATABASE_FINAL_SUMMARY.md +293 -0
- supervertaler-1.9.114/docs/archive/development/DATABASE_IMPLEMENTATION.md +324 -0
- supervertaler-1.9.114/docs/archive/development/DATABASE_PRODUCTION_READY.md +304 -0
- supervertaler-1.9.114/docs/archive/development/DATABASE_QUICK_REFERENCE.md +246 -0
- supervertaler-1.9.114/docs/archive/development/DUAL_VERSION_STRATEGY.md +368 -0
- supervertaler-1.9.114/docs/archive/development/FINAL_SESSION_SUMMARY.md +326 -0
- supervertaler-1.9.114/docs/archive/development/FOLDER_STRUCTURE_UPDATE.md +208 -0
- supervertaler-1.9.114/docs/archive/development/GITHUB_PAGES_SETUP.md +298 -0
- supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_CHECKLIST.md +332 -0
- supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_COMPLETE.md +409 -0
- supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_COMPLETE_COMPACT_LAYOUT.md +362 -0
- supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_READY.md +144 -0
- supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_STATUS_PHASE2_READY.md +332 -0
- supervertaler-1.9.114/docs/archive/development/KEYBOARD_SHORTCUTS_MATCHES.md +155 -0
- supervertaler-1.9.114/docs/archive/development/LAYOUT_BEFORE_AFTER.md +319 -0
- supervertaler-1.9.114/docs/archive/development/MASTER_INDEX.md +333 -0
- supervertaler-1.9.114/docs/archive/development/MATCH_DISPLAY_IMPROVEMENTS.md +239 -0
- supervertaler-1.9.114/docs/archive/development/MATCH_DISPLAY_LONG_SEGMENTS_UPDATE.md +179 -0
- supervertaler-1.9.114/docs/archive/development/MATCH_DISPLAY_QUICK_REFERENCE.md +200 -0
- supervertaler-1.9.114/docs/archive/development/MATCH_INSERTION_FEATURES.md +249 -0
- supervertaler-1.9.114/docs/archive/development/MATCH_SHORTCUTS_QUICK_REF.md +185 -0
- supervertaler-1.9.114/docs/archive/development/MODULAR_ARCHITECTURE_GUIDE.md +266 -0
- supervertaler-1.9.114/docs/archive/development/PHASE2_IMPLEMENTATION_CHECKLIST.md +400 -0
- supervertaler-1.9.114/docs/archive/development/PHASE2_IMPLEMENTATION_DETAILED_CHECKLIST.md +758 -0
- supervertaler-1.9.114/docs/archive/development/PHASE2_IMPLEMENTATION_IN_PROGRESS.md +268 -0
- supervertaler-1.9.114/docs/archive/development/PHASE2_NEXT_STEPS.md +232 -0
- supervertaler-1.9.114/docs/archive/development/PHASE2_READY_TO_IMPLEMENT.md +255 -0
- supervertaler-1.9.114/docs/archive/development/PHASE2_START_HERE.md +188 -0
- supervertaler-1.9.114/docs/archive/development/QT_MIGRATION_PLAN.md +517 -0
- supervertaler-1.9.114/docs/archive/development/QT_SESSION_SUMMARY.md +439 -0
- supervertaler-1.9.114/docs/archive/development/QUICK_SESSION_SUMMARY.md +259 -0
- supervertaler-1.9.114/docs/archive/development/RELEASE_Qt_v1.0.0_Phase5.md +263 -0
- supervertaler-1.9.114/docs/archive/development/RELEASE_v1.9.38.md +186 -0
- supervertaler-1.9.114/docs/archive/development/RELEASE_v3.7.1.md +355 -0
- supervertaler-1.9.114/docs/archive/development/RELEASE_v3.7.6.md +236 -0
- supervertaler-1.9.114/docs/archive/development/RELEASE_v3.7.7.md +304 -0
- supervertaler-1.9.114/docs/archive/development/RESTRUCTURE_COMPLETE.md +132 -0
- supervertaler-1.9.114/docs/archive/development/SESSION_DOCUMENTATION_INDEX.md +298 -0
- supervertaler-1.9.114/docs/archive/development/SESSION_IMPLEMENTATION_SUMMARY.md +276 -0
- supervertaler-1.9.114/docs/archive/development/SESSION_LONG_SEGMENTS_COMPLETE.md +362 -0
- supervertaler-1.9.114/docs/archive/development/SESSION_MATCH_FEATURES_COMPLETE.md +341 -0
- supervertaler-1.9.114/docs/archive/development/SESSION_STATUS.md +386 -0
- supervertaler-1.9.114/docs/archive/development/SESSION_SUMMARY_Phase5.md +169 -0
- supervertaler-1.9.114/docs/archive/development/START_HERE.md +353 -0
- supervertaler-1.9.114/docs/archive/development/START_IMPLEMENTATION_HERE.md +255 -0
- supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_DELIVERABLES.md +497 -0
- supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_DOCUMENTATION_INDEX.md +380 -0
- supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_FEATURE_SUMMARY.md +356 -0
- supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_IMPLEMENTATION.md +214 -0
- supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_PROJECT_COMPLETION.md +545 -0
- supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_QUICK_REFERENCE.md +354 -0
- supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_VISUAL_ARCHITECTURE.md +343 -0
- supervertaler-1.9.114/docs/archive/development/TERMBASE_FIXES.md +150 -0
- supervertaler-1.9.114/docs/archive/development/TERMBASE_IMPLEMENTATION.md +281 -0
- supervertaler-1.9.114/docs/archive/development/TERMBASE_QUICK_START.md +235 -0
- supervertaler-1.9.114/docs/archive/development/TMX_CONCORDANCE_STYLE_HIGHLIGHTING.md +186 -0
- supervertaler-1.9.114/docs/archive/development/TMX_DUAL_HIGHLIGHTING.md +217 -0
- supervertaler-1.9.114/docs/archive/development/TMX_EDITOR_HIGHLIGHTING_UPDATE.md +170 -0
- supervertaler-1.9.114/docs/archive/development/TMX_EDITOR_IMPLEMENTATION.md +287 -0
- supervertaler-1.9.114/docs/archive/development/TMX_EDITOR_WORD_HIGHLIGHTING.md +129 -0
- supervertaler-1.9.114/docs/archive/development/TMX_TABLE_LAYOUT_INTEGRATED_EDIT.md +176 -0
- supervertaler-1.9.114/docs/archive/development/TMX_TREEVIEW_GRID_RESIZABLE.md +207 -0
- supervertaler-1.9.114/docs/archive/development/TMX_WORD_HIGHLIGHTING_IMPLEMENTATION_COMPLETE.md +145 -0
- supervertaler-1.9.114/docs/archive/development/TMX_WORD_HIGHLIGHTING_SUMMARY.md +65 -0
- supervertaler-1.9.114/docs/archive/development/TM_MATCH_PANE_CHECKLIST.md +307 -0
- supervertaler-1.9.114/docs/archive/development/TM_MATCH_PANE_IMPLEMENTATION.md +177 -0
- supervertaler-1.9.114/docs/archive/development/TM_MATCH_PANE_VISUAL_GUIDE.md +234 -0
- supervertaler-1.9.114/docs/archive/development/VISUAL_COLOR_REFERENCE.md +354 -0
- supervertaler-1.9.114/docs/archive/development/VISUAL_IMPLEMENTATION_SUMMARY.md +424 -0
- supervertaler-1.9.114/docs/archive/sessions/COLOR_FIX_EXPLANATION.md +100 -0
- supervertaler-1.9.114/docs/archive/sessions/DATABASE_CONSOLIDATION_REPORT.md +82 -0
- supervertaler-1.9.114/docs/archive/sessions/DUAL_EDITOR_WORKFLOW.md +287 -0
- supervertaler-1.9.114/docs/archive/sessions/DUAL_SELECTION_SYSTEM.md +83 -0
- supervertaler-1.9.114/docs/archive/sessions/IMPROVEMENTS_SUMMARY.md +161 -0
- supervertaler-1.9.114/docs/archive/sessions/ISSUES_FIXES_PROGRESS.md +102 -0
- supervertaler-1.9.114/docs/archive/sessions/MATCH_DISPLAY_COMPACT_FIXES.md +135 -0
- supervertaler-1.9.114/docs/archive/sessions/README_SESSION_TERMBASE.md +208 -0
- supervertaler-1.9.114/docs/archive/sessions/SAFE_DELETION_REMINDER.txt +22 -0
- supervertaler-1.9.114/docs/archive/sessions/SESSION_SUMMARY.md +178 -0
- supervertaler-1.9.114/docs/archive/sessions/TERMBASE_FIXES_APPLIED.md +107 -0
- supervertaler-1.9.114/docs/archive/sessions/TESTING_CHECKLIST.md +209 -0
- supervertaler-1.9.114/docs/archive/sessions/TMX_EDITOR_ANNOUNCEMENT.md +35 -0
- supervertaler-1.9.114/docs/archive/sessions/TRANSLATION_RESULTS_IMPROVEMENTS.md +195 -0
- supervertaler-1.9.114/docs/assets/Figure1.png +0 -0
- supervertaler-1.9.114/docs/assets/patent-drawing-1951.jpg +0 -0
- supervertaler-1.9.114/docs/dev-notes/QA.md +15 -0
- supervertaler-1.9.114/docs/dev-notes/STYLE_GUIDES_UI_TEMPLATE.py +332 -0
- supervertaler-1.9.114/docs/dev-notes/_Notes_2025-11-21.md +147 -0
- supervertaler-1.9.114/docs/dev-notes/_things_to_remind_AIs_of_when_translating.md +19 -0
- supervertaler-1.9.114/docs/dev-notes/issue_28.md +108 -0
- supervertaler-1.9.114/docs/dev-notes/openai_debug.txt +17352 -0
- supervertaler-1.9.114/docs/emoji_mockup.html +288 -0
- supervertaler-1.9.114/docs/favicon.ico +0 -0
- supervertaler-1.9.114/docs/guides/AI_PROMPT_ASSISTANT_USER_GUIDE.md +331 -0
- supervertaler-1.9.114/docs/guides/ENCODING_REPAIR_TOOL.md +255 -0
- supervertaler-1.9.114/docs/guides/FAQ.md +1202 -0
- supervertaler-1.9.114/docs/guides/GLOSSARY_OF_SUPERVERTALER_TERMINOLOGY.md +57 -0
- supervertaler-1.9.114/docs/guides/JSON_EDITORS_AND_HUMAN_READABLE_FORMAT.md +297 -0
- supervertaler-1.9.114/docs/guides/KEYBOARD_SHORTCUTS.md +210 -0
- supervertaler-1.9.114/docs/guides/PDF_RESCUE.md +564 -0
- supervertaler-1.9.114/docs/guides/PROMPT_ASSISTANT_USER_GUIDE.md +331 -0
- supervertaler-1.9.114/docs/guides/QT_SETTINGS_DIALOG_GUIDE.md +303 -0
- supervertaler-1.9.114/docs/guides/TERM_EXTRACTION_GUIDE.md +125 -0
- supervertaler-1.9.114/docs/guides/USER_DATA_FOLDER_SETUP.md +315 -0
- supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/BEIJERBOT_FEATURE_ANALYSIS.md +435 -0
- supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/CLI_BRIDGE_SPECIFICATION.md +703 -0
- supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/IMPLEMENTATION_ROADMAP.md +768 -0
- supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/QUICKMENU_INTEGRATION_PLAN.md +656 -0
- supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/README.md +369 -0
- supervertaler-1.9.114/docs/idea_tag-cleaner/tag_cleaner.md +35 -0
- supervertaler-1.9.114/docs/idea_use_vscode_as_cat_tool/ai-agent-translation-workflow.md +277 -0
- supervertaler-1.9.114/docs/index.html +1660 -0
- supervertaler-1.9.114/docs/logo.png +0 -0
- supervertaler-1.9.114/docs/screenshots/2025-10-13_00-46-16.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Superlookup_Web_resources.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_AI-Assistant.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_CLASSIC_v2.4.1_(tkinter).jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_Prompt_Manager_2026-01-14.png +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_Superbrowser.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_dark_mode_2025-12-16.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_dark_mode_2025-12-17.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_grid.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_tkinter (v3.7.7).jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_v1.9.102_compare_panel_2026-01-14.png +0 -0
- supervertaler-1.9.114/docs/screenshots/Supervertaler_v1.9.102_grid_2026-01-14.png +0 -0
- supervertaler-1.9.114/docs/screenshots/new/Supervertaler-grid.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/new/Supervertaler_AI-Assistant.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Prompt-Library.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Superbrowser.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/old/2025-10-13_00-50-24.jpg +0 -0
- supervertaler-1.9.114/docs/screenshots/old/Supervertaler_Qt_2025-11-12.jpg +0 -0
- supervertaler-1.9.114/docs/script.js +138 -0
- supervertaler-1.9.114/docs/site.webmanifest +21 -0
- supervertaler-1.9.114/docs/specifications/AI_ASSISTANT_PHASE2_IMPLEMENTATION.md +519 -0
- supervertaler-1.9.114/docs/specifications/AI_PROMPT_ASSISTANT.md +487 -0
- supervertaler-1.9.114/docs/specifications/AI_PROMPT_ASSISTANT_IMPLEMENTATION.md +341 -0
- supervertaler-1.9.114/docs/specifications/EXPORT_MENU_UPDATE.md +468 -0
- supervertaler-1.9.114/docs/specifications/IMPLEMENTATION_SUMMARY.md +235 -0
- supervertaler-1.9.114/docs/specifications/QT_PHASE2_COMPLETE.md +212 -0
- supervertaler-1.9.114/docs/specifications/QT_PHASE3_COMPLETE.md +256 -0
- supervertaler-1.9.114/docs/specifications/SUPERVERTALER_DATA_FORMAT.md +427 -0
- supervertaler-1.9.114/docs/specifications/TASK_TYPE_SYSTEM.md +0 -0
- supervertaler-1.9.114/docs/specifications/TERMINOLOGY_UPDATE_SUMMARY.md +234 -0
- supervertaler-1.9.114/docs/specifications/opus-api-integration.md +264 -0
- supervertaler-1.9.114/docs/styles.css +1414 -0
- supervertaler-1.9.114/docs/superdocs/.gitbook/assets/supervertaler-logo.png +0 -0
- supervertaler-1.9.114/docs/superdocs/.gitbook/assets/sv-icon.svg +15 -0
- supervertaler-1.9.114/docs/superdocs/GITBOOK_LANDING_DRAFT.md +75 -0
- supervertaler-1.9.114/docs/superdocs/README.md +67 -0
- supervertaler-1.9.114/docs/superdocs/SUMMARY.md +107 -0
- supervertaler-1.9.114/docs/superdocs/ai-translation/batch-translation.md +80 -0
- supervertaler-1.9.114/docs/superdocs/ai-translation/ollama.md +21 -0
- supervertaler-1.9.114/docs/superdocs/ai-translation/overview.md +148 -0
- supervertaler-1.9.114/docs/superdocs/ai-translation/prompt-library.md +17 -0
- supervertaler-1.9.114/docs/superdocs/ai-translation/prompts.md +25 -0
- supervertaler-1.9.114/docs/superdocs/ai-translation/providers.md +24 -0
- supervertaler-1.9.114/docs/superdocs/ai-translation/single-segment.md +18 -0
- supervertaler-1.9.114/docs/superdocs/cat-tools/cafetran.md +30 -0
- supervertaler-1.9.114/docs/superdocs/cat-tools/memoq.md +128 -0
- supervertaler-1.9.114/docs/superdocs/cat-tools/overview.md +122 -0
- supervertaler-1.9.114/docs/superdocs/cat-tools/phrase.md +36 -0
- supervertaler-1.9.114/docs/superdocs/cat-tools/trados.md +131 -0
- supervertaler-1.9.114/docs/superdocs/editor/editing-confirming.md +39 -0
- supervertaler-1.9.114/docs/superdocs/editor/filtering.md +23 -0
- supervertaler-1.9.114/docs/superdocs/editor/find-replace.md +130 -0
- supervertaler-1.9.114/docs/superdocs/editor/keyboard-shortcuts.md +111 -0
- supervertaler-1.9.114/docs/superdocs/editor/navigation.md +43 -0
- supervertaler-1.9.114/docs/superdocs/editor/pagination.md +21 -0
- supervertaler-1.9.114/docs/superdocs/editor/translation-grid.md +51 -0
- supervertaler-1.9.114/docs/superdocs/get-started/api-keys.md +106 -0
- supervertaler-1.9.114/docs/superdocs/get-started/first-project.md +131 -0
- supervertaler-1.9.114/docs/superdocs/get-started/installation.md +80 -0
- supervertaler-1.9.114/docs/superdocs/get-started/quick-start.md +101 -0
- supervertaler-1.9.114/docs/superdocs/glossaries/basics.md +105 -0
- supervertaler-1.9.114/docs/superdocs/glossaries/creating.md +21 -0
- supervertaler-1.9.114/docs/superdocs/glossaries/extraction.md +19 -0
- supervertaler-1.9.114/docs/superdocs/glossaries/highlighting.md +14 -0
- supervertaler-1.9.114/docs/superdocs/glossaries/importing.md +18 -0
- supervertaler-1.9.114/docs/superdocs/import-export/bilingual-tables.md +14 -0
- supervertaler-1.9.114/docs/superdocs/import-export/docx-import.md +19 -0
- supervertaler-1.9.114/docs/superdocs/import-export/exporting.md +39 -0
- supervertaler-1.9.114/docs/superdocs/import-export/formats.md +39 -0
- supervertaler-1.9.114/docs/superdocs/import-export/multi-file.md +20 -0
- supervertaler-1.9.114/docs/superdocs/import-export/txt-import.md +22 -0
- supervertaler-1.9.114/docs/superdocs/qa/non-translatables.md +14 -0
- supervertaler-1.9.114/docs/superdocs/qa/spellcheck.md +129 -0
- supervertaler-1.9.114/docs/superdocs/qa/tag-validation.md +50 -0
- supervertaler-1.9.114/docs/superdocs/reference/changelog.md +19 -0
- supervertaler-1.9.114/docs/superdocs/reference/contributing.md +21 -0
- supervertaler-1.9.114/docs/superdocs/reference/faq.md +1386 -0
- supervertaler-1.9.114/docs/superdocs/reference/file-formats.md +121 -0
- supervertaler-1.9.114/docs/superdocs/settings/fonts.md +13 -0
- supervertaler-1.9.114/docs/superdocs/settings/general.md +20 -0
- supervertaler-1.9.114/docs/superdocs/settings/shortcuts.md +15 -0
- supervertaler-1.9.114/docs/superdocs/settings/theme.md +12 -0
- supervertaler-1.9.114/docs/superdocs/settings/view.md +15 -0
- supervertaler-1.9.114/docs/superdocs/superlookup/glossary-search.md +50 -0
- supervertaler-1.9.114/docs/superdocs/superlookup/mt.md +38 -0
- supervertaler-1.9.114/docs/superdocs/superlookup/overview.md +104 -0
- supervertaler-1.9.114/docs/superdocs/superlookup/tm-search.md +37 -0
- supervertaler-1.9.114/docs/superdocs/superlookup/web-resources.md +49 -0
- supervertaler-1.9.114/docs/superdocs/tools/autofingers.md +47 -0
- supervertaler-1.9.114/docs/superdocs/tools/image-extractor.md +28 -0
- supervertaler-1.9.114/docs/superdocs/tools/pdf-rescue.md +216 -0
- supervertaler-1.9.114/docs/superdocs/tools/tmx-editor.md +38 -0
- supervertaler-1.9.114/docs/superdocs/tools/voice-commands.md +60 -0
- supervertaler-1.9.114/docs/superdocs/translation-memory/basics.md +96 -0
- supervertaler-1.9.114/docs/superdocs/translation-memory/fuzzy-matching.md +18 -0
- supervertaler-1.9.114/docs/superdocs/translation-memory/importing-tmx.md +18 -0
- supervertaler-1.9.114/docs/superdocs/translation-memory/managing-tms.md +23 -0
- supervertaler-1.9.114/docs/superdocs/translation-memory/supermemory.md +21 -0
- supervertaler-1.9.114/docs/superdocs/troubleshooting/api-issues.md +44 -0
- supervertaler-1.9.114/docs/superdocs/troubleshooting/common-issues.md +231 -0
- supervertaler-1.9.114/docs/superdocs/troubleshooting/import-export-errors.md +94 -0
- supervertaler-1.9.114/docs/superdocs/troubleshooting/linux.md +33 -0
- supervertaler-1.9.114/docs/superdocs/troubleshooting/performance.md +35 -0
- supervertaler-1.9.114/docs/sv-icon.svg +15 -0
- supervertaler-1.9.114/docs/technical/AI_ASSISTANT_GUIDE.md +166 -0
- supervertaler-1.9.114/docs/technical/AI_ASSISTANT_IMPLEMENTATION.md +321 -0
- supervertaler-1.9.114/docs/technical/AI_ASSISTANT_INTEGRATION.md +402 -0
- supervertaler-1.9.114/docs/technical/AI_ASSISTANT_QUICK_REFERENCE.md +216 -0
- supervertaler-1.9.114/docs/technical/DATABASE_LOCATIONS.md +33 -0
- supervertaler-1.9.114/docs/technical/FILTER_HIGHLIGHTING_FIX.md +141 -0
- supervertaler-1.9.114/docs/technical/MODULE_HEADER_PATTERN.md +215 -0
- supervertaler-1.9.114/docs/technical/README.md +0 -0
- supervertaler-1.9.114/docs/technical/SUPERBROWSER_GUIDE.md +210 -0
- supervertaler-1.9.114/docs/technical/SUPERVOICE_TROUBLESHOOTING.md +152 -0
- supervertaler-1.9.114/docs/technical/UNIFIED_PROMPT_LIBRARY_GUIDE.md +344 -0
- supervertaler-1.9.114/docs/technical/VOICE_DICTATION_GUIDE.md +157 -0
- supervertaler-1.9.114/docs/tests/test_encoding_corruption.txt +48 -0
- supervertaler-1.9.114/docs/web-app-manifest-192x192.png +0 -0
- supervertaler-1.9.114/docs/web-app-manifest-512x512.png +0 -0
- supervertaler-1.9.114/modules/__init__.py +10 -0
- supervertaler-1.9.114/modules/ai_actions.py +964 -0
- supervertaler-1.9.114/modules/ai_attachment_manager.py +343 -0
- supervertaler-1.9.114/modules/ai_file_viewer_dialog.py +210 -0
- supervertaler-1.9.114/modules/autofingers_engine.py +466 -0
- supervertaler-1.9.114/modules/cafetran_docx_handler.py +379 -0
- supervertaler-1.9.114/modules/config_manager.py +469 -0
- supervertaler-1.9.114/modules/database_manager.py +1766 -0
- supervertaler-1.9.114/modules/database_migrations.py +417 -0
- supervertaler-1.9.114/modules/dejavurtf_handler.py +779 -0
- supervertaler-1.9.114/modules/document_analyzer.py +427 -0
- supervertaler-1.9.114/modules/docx_handler.py +689 -0
- supervertaler-1.9.114/modules/encoding_repair.py +319 -0
- supervertaler-1.9.114/modules/encoding_repair_Qt.py +393 -0
- supervertaler-1.9.114/modules/encoding_repair_ui.py +481 -0
- supervertaler-1.9.114/modules/feature_manager.py +350 -0
- supervertaler-1.9.114/modules/figure_context_manager.py +340 -0
- supervertaler-1.9.114/modules/file_dialog_helper.py +148 -0
- supervertaler-1.9.114/modules/find_replace.py +164 -0
- supervertaler-1.9.114/modules/find_replace_qt.py +457 -0
- supervertaler-1.9.114/modules/glossary_manager.py +433 -0
- supervertaler-1.9.114/modules/image_extractor.py +188 -0
- supervertaler-1.9.114/modules/keyboard_shortcuts_widget.py +571 -0
- supervertaler-1.9.114/modules/llm_clients.py +1211 -0
- supervertaler-1.9.114/modules/llm_leaderboard.py +737 -0
- supervertaler-1.9.114/modules/llm_superbench_ui.py +1401 -0
- supervertaler-1.9.114/modules/local_llm_setup.py +1104 -0
- supervertaler-1.9.114/modules/model_update_dialog.py +381 -0
- supervertaler-1.9.114/modules/model_version_checker.py +373 -0
- supervertaler-1.9.114/modules/mqxliff_handler.py +638 -0
- supervertaler-1.9.114/modules/non_translatables_manager.py +743 -0
- supervertaler-1.9.114/modules/pdf_rescue_Qt.py +1822 -0
- supervertaler-1.9.114/modules/pdf_rescue_tkinter.py +909 -0
- supervertaler-1.9.114/modules/phrase_docx_handler.py +516 -0
- supervertaler-1.9.114/modules/project_home_panel.py +209 -0
- supervertaler-1.9.114/modules/prompt_assistant.py +357 -0
- supervertaler-1.9.114/modules/prompt_library.py +689 -0
- supervertaler-1.9.114/modules/prompt_library_migration.py +447 -0
- supervertaler-1.9.114/modules/quick_access_sidebar.py +282 -0
- supervertaler-1.9.114/modules/ribbon_widget.py +597 -0
- supervertaler-1.9.114/modules/sdlppx_handler.py +874 -0
- supervertaler-1.9.114/modules/setup_wizard.py +353 -0
- supervertaler-1.9.114/modules/shortcut_manager.py +904 -0
- supervertaler-1.9.114/modules/simple_segmenter.py +128 -0
- supervertaler-1.9.114/modules/spellcheck_manager.py +727 -0
- supervertaler-1.9.114/modules/statuses.py +207 -0
- supervertaler-1.9.114/modules/style_guide_manager.py +315 -0
- supervertaler-1.9.114/modules/superbench_ui.py +1319 -0
- supervertaler-1.9.114/modules/superbrowser.py +325 -0
- supervertaler-1.9.114/modules/supercleaner.py +600 -0
- supervertaler-1.9.114/modules/supercleaner_ui.py +444 -0
- supervertaler-1.9.114/modules/superdocs.py +19 -0
- supervertaler-1.9.114/modules/superdocs_viewer_qt.py +382 -0
- supervertaler-1.9.114/modules/superlookup.py +248 -0
- supervertaler-1.9.114/modules/tag_cleaner.py +260 -0
- supervertaler-1.9.114/modules/tag_manager.py +333 -0
- supervertaler-1.9.114/modules/term_extractor.py +270 -0
- supervertaler-1.9.114/modules/termbase_entry_editor.py +842 -0
- supervertaler-1.9.114/modules/termbase_import_export.py +488 -0
- supervertaler-1.9.114/modules/termbase_manager.py +1060 -0
- supervertaler-1.9.114/modules/termview_widget.py +1161 -0
- supervertaler-1.9.114/modules/theme_manager.py +499 -0
- supervertaler-1.9.114/modules/tm_editor_dialog.py +99 -0
- supervertaler-1.9.114/modules/tm_manager_qt.py +1280 -0
- supervertaler-1.9.114/modules/tm_metadata_manager.py +545 -0
- supervertaler-1.9.114/modules/tmx_editor.py +1461 -0
- supervertaler-1.9.114/modules/tmx_editor_qt.py +2784 -0
- supervertaler-1.9.114/modules/tmx_generator.py +284 -0
- supervertaler-1.9.114/modules/tracked_changes.py +900 -0
- supervertaler-1.9.114/modules/trados_docx_handler.py +430 -0
- supervertaler-1.9.114/modules/translation_memory.py +670 -0
- supervertaler-1.9.114/modules/translation_results_panel.py +2134 -0
- supervertaler-1.9.114/modules/translation_services.py +282 -0
- supervertaler-1.9.114/modules/unified_prompt_library.py +656 -0
- supervertaler-1.9.114/modules/unified_prompt_manager_qt.py +3727 -0
- supervertaler-1.9.114/modules/voice_commands.py +920 -0
- supervertaler-1.9.114/modules/voice_dictation.py +477 -0
- supervertaler-1.9.114/modules/voice_dictation_lite.py +249 -0
- supervertaler-1.9.114/pyproject.toml +149 -0
- supervertaler-1.9.114/setup.cfg +4 -0
- supervertaler-1.9.114/setup.py +94 -0
- supervertaler-1.9.114/tests/test_add_term.py +42 -0
- supervertaler-1.9.114/tests/test_ai_actions.py +614 -0
- supervertaler-1.9.114/tests/test_all_matches.py +65 -0
- supervertaler-1.9.114/tests/test_api_keys.py +79 -0
- supervertaler-1.9.114/tests/test_attachment_manager.py +176 -0
- supervertaler-1.9.114/tests/test_autofingers.py +187 -0
- supervertaler-1.9.114/tests/test_autofingers_fuzzy.py +308 -0
- supervertaler-1.9.114/tests/test_cafetran_workflow.py +141 -0
- supervertaler-1.9.114/tests/test_chat_ui.py +133 -0
- supervertaler-1.9.114/tests/test_claude_models.py +38 -0
- supervertaler-1.9.114/tests/test_current_database.py +71 -0
- supervertaler-1.9.114/tests/test_database.py +139 -0
- supervertaler-1.9.114/tests/test_db_schema.py +35 -0
- supervertaler-1.9.114/tests/test_delete_entry.py +43 -0
- supervertaler-1.9.114/tests/test_doc_structure.py +46 -0
- supervertaler-1.9.114/tests/test_down_arrow_logic.py +50 -0
- supervertaler-1.9.114/tests/test_fts5_special_chars.py +48 -0
- supervertaler-1.9.114/tests/test_google_translate.py +76 -0
- supervertaler-1.9.114/tests/test_google_translate_locale.py +90 -0
- supervertaler-1.9.114/tests/test_google_translate_rest.py +83 -0
- supervertaler-1.9.114/tests/test_image_extractor.py +51 -0
- supervertaler-1.9.114/tests/test_lang_codes.py +41 -0
- supervertaler-1.9.114/tests/test_language_detection.py +93 -0
- supervertaler-1.9.114/tests/test_match_pane_ui.py +83 -0
- supervertaler-1.9.114/tests/test_memoq_navigation.py +41 -0
- supervertaler-1.9.114/tests/test_mt_apis.py +81 -0
- supervertaler-1.9.114/tests/test_pipe_formatting.py +135 -0
- supervertaler-1.9.114/tests/test_tag_cleaner_integration.py +114 -0
- supervertaler-1.9.114/tests/test_termbase.py +40 -0
- supervertaler-1.9.114/tests/test_termbase_highlighting.py +88 -0
- supervertaler-1.9.114/tests/test_termbase_search.py +54 -0
- supervertaler-1.9.114/tests/test_tm_metadata.py +43 -0
- supervertaler-1.9.114/tests/test_tm_methods.py +57 -0
- supervertaler-1.9.114/tests/test_tmx_editor.py +31 -0
- supervertaler-1.9.114/tests/test_tmx_export.py +153 -0
- supervertaler-1.9.114/tests/test_unified_prompt_library.py +228 -0
|
@@ -0,0 +1,4167 @@
|
|
|
1
|
+
# Supervertaler - Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Supervertaler are documented in this file.
|
|
4
|
+
|
|
5
|
+
**Current Version:** v1.9.114 (January 19, 2026)
|
|
6
|
+
|
|
7
|
+
## � AI Assistant Diagnostic Logging (v1.9.114) - January 19, 2026
|
|
8
|
+
|
|
9
|
+
**Improved AI Assistant Troubleshooting**
|
|
10
|
+
|
|
11
|
+
Added diagnostic logging to help users troubleshoot API key issues:
|
|
12
|
+
|
|
13
|
+
- **Key Discovery Logging**: When AI Assistant initializes, it now logs which API keys were found
|
|
14
|
+
- Example: "🔑 Found API keys for: openai, google, deepl"
|
|
15
|
+
- If no keys found: "⚠ No API keys found in api_keys.txt"
|
|
16
|
+
|
|
17
|
+
- **Helps Diagnose Issues**:
|
|
18
|
+
- Users can verify their API keys are being loaded correctly
|
|
19
|
+
- Makes it clear which providers are available
|
|
20
|
+
- Doesn't expose actual key values (only key names)
|
|
21
|
+
|
|
22
|
+
**Why This Helps**:
|
|
23
|
+
- User reported AI Assistant showing "not available" despite having keys configured
|
|
24
|
+
- New logging will show exactly which keys are detected
|
|
25
|
+
- Makes troubleshooting much easier for both users and developers
|
|
26
|
+
|
|
27
|
+
**Files Modified:**
|
|
28
|
+
- `modules/unified_prompt_manager_qt.py` - Added API key discovery logging to `_init_llm_client()`
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## �🔐 API Key Loading System Unified (v1.9.113) - January 19, 2026
|
|
33
|
+
|
|
34
|
+
**Unified API Key Loading with Dev-First Priority**
|
|
35
|
+
|
|
36
|
+
Consolidated the confusing multi-path API key loading system into a single, clear dual-path approach that fixes AI Assistant bug #107:
|
|
37
|
+
|
|
38
|
+
**The Problem:**
|
|
39
|
+
- Three different API key file locations existed (root, user_data, user_data_private)
|
|
40
|
+
- Two different loading mechanisms (`Supervertaler.load_api_keys()` vs `llm_clients.load_api_keys()`)
|
|
41
|
+
- Conflicting instructions in example files
|
|
42
|
+
- **AI Assistant bug (#107)**: Keys worked for translation but failed for AI Assistant with "Incorrect API key" error
|
|
43
|
+
|
|
44
|
+
**The Solution:**
|
|
45
|
+
- **Unified loading in main app**: `load_api_keys()` now checks TWO locations with clear priority
|
|
46
|
+
1. `user_data_private/api_keys.txt` (Dev mode - gitignored, never uploaded to GitHub)
|
|
47
|
+
2. `user_data/api_keys.txt` (User mode - ships with app)
|
|
48
|
+
- **AI Assistant fixed**: Now uses `parent_app.load_api_keys()` instead of module function
|
|
49
|
+
- **Example files updated**: Both example files now give consistent, clear instructions
|
|
50
|
+
|
|
51
|
+
**Developer Workflow:**
|
|
52
|
+
- Store keys in `user_data_private/api_keys.txt`
|
|
53
|
+
- Fully gitignored - safe from accidental commits
|
|
54
|
+
- All features find keys here (translation, AI Assistant, tests)
|
|
55
|
+
|
|
56
|
+
**User Workflow:**
|
|
57
|
+
- Keys go in `user_data/api_keys.txt`
|
|
58
|
+
- App auto-creates this location on first run
|
|
59
|
+
- Simple, single location
|
|
60
|
+
|
|
61
|
+
**Files Modified:**
|
|
62
|
+
- `Supervertaler.py` - `load_api_keys()` method now checks dev path first (line ~39407)
|
|
63
|
+
- `api_keys.example.txt` - Updated with dev/user instructions
|
|
64
|
+
- `user_data/api_keys.example.txt` - Updated with dev/user instructions
|
|
65
|
+
- `README.md` - Updated First Steps with API key setup
|
|
66
|
+
- `AGENTS.md` - Updated API Keys section with new dual-path documentation
|
|
67
|
+
|
|
68
|
+
**Result:**
|
|
69
|
+
- ✅ Developers: Keys safe in gitignored location
|
|
70
|
+
- ✅ Users: Simple single location
|
|
71
|
+
- ✅ AI Assistant: Now works with same keys as translation
|
|
72
|
+
- ✅ No more confusion about where to put keys
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 🐛 Bug Fixes (v1.9.112) - January 19, 2026
|
|
77
|
+
|
|
78
|
+
**Filter Pagination Bug Fixed**
|
|
79
|
+
|
|
80
|
+
Fixed critical bug where Filter Source/Target boxes only searched visible page instead of all segments:
|
|
81
|
+
|
|
82
|
+
- **The Problem**: When pagination was active, filtering only searched through currently visible rows
|
|
83
|
+
- **Root Cause**: Used `self.table.rowCount()` which could be limited by pagination state
|
|
84
|
+
- **The Fix**: Now uses `len(segments)` to always search ALL segments in project
|
|
85
|
+
- **Result**: Filtering finds matches across entire project regardless of pagination settings
|
|
86
|
+
|
|
87
|
+
**Bilingual Table Export - Notes Column**
|
|
88
|
+
|
|
89
|
+
Fixed segment notes not being exported to Supervertaler Bilingual Table DOCX files:
|
|
90
|
+
|
|
91
|
+
- **The Problem**: Notes column was hardcoded to empty string `cells[4].text = ''`
|
|
92
|
+
- **The Fix**: Now properly exports `seg.notes` from each segment
|
|
93
|
+
- **Formatting**: 8pt font to match Status column styling
|
|
94
|
+
- **Includes**: Proofreading notes (⚠️ PROOFREAD prefix), user notes, all segment annotations
|
|
95
|
+
|
|
96
|
+
**Grid Column Width Optimization**
|
|
97
|
+
|
|
98
|
+
Reduced segment ID column width for more compact display:
|
|
99
|
+
|
|
100
|
+
- **Before**: 55px (unnecessarily wide)
|
|
101
|
+
- **After**: 40px (fits up to 3 digits comfortably, readable for 4+ digits)
|
|
102
|
+
- **Result**: More horizontal space for Source/Target columns
|
|
103
|
+
|
|
104
|
+
**Files Modified:**
|
|
105
|
+
- `Supervertaler.py` - Fixed `apply_filters()` iteration, notes export, column width
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 🔒 Clean Slate Project Imports (v1.9.111) - January 18, 2026
|
|
110
|
+
|
|
111
|
+
**Automatic Resource Deactivation on New Project Import**
|
|
112
|
+
|
|
113
|
+
New projects now start with a clean slate - all TMs, glossaries, and Non-Translatable lists are automatically deactivated on import:
|
|
114
|
+
|
|
115
|
+
- **Auto-Deactivation**: When importing a new project (DOCX, TXT, memoQ, CafeTran, Trados), all existing resources are deactivated
|
|
116
|
+
- **Explicit Activation**: Users explicitly activate only the resources they need for each project
|
|
117
|
+
- **Prevents Pollution**: Stops unintended resource bleeding across unrelated projects
|
|
118
|
+
- **Applied to All Imports**: Works consistently across all 5 import handlers
|
|
119
|
+
|
|
120
|
+
**User Workflow:**
|
|
121
|
+
1. Import new project → All resources deactivated automatically
|
|
122
|
+
2. Go to Project Resources tab → Activate needed TMs/glossaries
|
|
123
|
+
3. Work on project with only relevant resources active
|
|
124
|
+
4. Import next project → Clean slate again
|
|
125
|
+
|
|
126
|
+
**Technical Implementation:**
|
|
127
|
+
- New `_deactivate_all_resources_for_new_project()` method
|
|
128
|
+
- Deactivates TMs via `tm_metadata_mgr.deactivate_tm()`
|
|
129
|
+
- Deactivates glossaries via `termbase_mgr.deactivate_termbase()`
|
|
130
|
+
- Deactivates NT lists via `nt_manager.set_list_active(False)`
|
|
131
|
+
- Logs: "📋 New project: All TMs, glossaries, and NT lists deactivated (start clean)"
|
|
132
|
+
|
|
133
|
+
**Files Modified:**
|
|
134
|
+
- `Supervertaler.py` - Added deactivation method, called in all import handlers
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 🔄 Superconverter - Format Conversion Hub (v1.9.110) - January 18, 2026
|
|
139
|
+
|
|
140
|
+
**New Superconverter Tool - Document & Format Conversion**
|
|
141
|
+
|
|
142
|
+
Introduced a comprehensive format conversion tool under **Tools → Superconverter** with three tabs:
|
|
143
|
+
|
|
144
|
+
**1. Bilingual Table (Markdown Export)**
|
|
145
|
+
- Export project segments as AI-optimized Markdown tables
|
|
146
|
+
- Perfect for ChatGPT, Claude, Gemini - renders as clean tables in chat interfaces
|
|
147
|
+
- Options: bilingual, source-only, or target-only
|
|
148
|
+
- Filters: all segments, untranslated only, or translated only
|
|
149
|
+
- Language-tagged rows (e.g., `Dutch:`, `English:`)
|
|
150
|
+
|
|
151
|
+
**2. Document → Markdown Converter**
|
|
152
|
+
- Convert DOCX and TXT documents to structured Markdown
|
|
153
|
+
- **Single file conversion**: Choose file, set output location, convert
|
|
154
|
+
- **Batch conversion**: Select multiple files, output folder, convert all at once
|
|
155
|
+
- **Auto-detects ALL CAPS headings** (e.g., "TECHNISCH DOMEIN" → "## Technisch Domein")
|
|
156
|
+
- Especially useful for patent documents and technical reports
|
|
157
|
+
- Preserves Word document structure:
|
|
158
|
+
- Headings (H1-H6) → Markdown headings
|
|
159
|
+
- Bulleted lists → Unordered lists
|
|
160
|
+
- Numbered lists → Ordered lists
|
|
161
|
+
- Paragraphs with proper spacing
|
|
162
|
+
- Bold/italic formatting
|
|
163
|
+
|
|
164
|
+
**3. TMX Tools (Placeholder)**
|
|
165
|
+
- Prepared for future TMX conversion workflows
|
|
166
|
+
- More conversion workflows coming soon
|
|
167
|
+
|
|
168
|
+
**UI/UX Improvements:**
|
|
169
|
+
- All 11 Tools tab items now accessible via **Tools menu** for quick navigation
|
|
170
|
+
- Removed focus rectangles from buttons for cleaner appearance
|
|
171
|
+
- File → Export menu updated: "AI-Readable Format (TXT)" → "AI-Readable Markdown (.md)"
|
|
172
|
+
|
|
173
|
+
**Technical Details:**
|
|
174
|
+
- `create_superconverter_tab()` - New 3-tab converter interface
|
|
175
|
+
- `export_bilingual_table_markdown()` - Markdown table export with filters
|
|
176
|
+
- `convert_document_to_markdown()` - Single DOCX/TXT conversion
|
|
177
|
+
- `batch_convert_documents_to_markdown()` - Batch processing
|
|
178
|
+
- `_convert_docx_to_markdown()` - DOCX structure preservation + ALL CAPS detection
|
|
179
|
+
- `_convert_txt_to_markdown()` - TXT conversion + ALL CAPS detection
|
|
180
|
+
- `_navigate_to_tool()` - Helper for Tools menu navigation
|
|
181
|
+
|
|
182
|
+
**Files Modified:**
|
|
183
|
+
- `Supervertaler.py` - Complete Superconverter implementation (911 line insertions)
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 🔧 TMX Language Pair Bug Fix (v1.9.109) - January 18, 2026
|
|
188
|
+
|
|
189
|
+
**Fixed Critical TMX Import Language Reversal Bug**
|
|
190
|
+
|
|
191
|
+
**Issue ([#105](https://github.com/michaelbeijer/Supervertaler/issues/105)):** When importing TMX files, the language pair was sometimes reversed (EN-GB → DE-DE imported as DE-DE → EN-GB). This made it impossible to find matches for translated segments.
|
|
192
|
+
|
|
193
|
+
**Root Cause:** The TMX import code was incorrectly assuming that the FIRST language in the TMX file was the source language and the SECOND was the target language. However, TMX files list languages in arbitrary order (often alphabetically), so this assumption was wrong.
|
|
194
|
+
|
|
195
|
+
**Fix Implemented:**
|
|
196
|
+
- Added language pair selection dialog when importing TMX files
|
|
197
|
+
- User now explicitly selects which detected language should be source and which should be target
|
|
198
|
+
- Prevents accidental language reversal
|
|
199
|
+
- Applies to both "Create new TM from TMX" and "Add to existing TM" workflows
|
|
200
|
+
|
|
201
|
+
**User Workflow:**
|
|
202
|
+
1. Import TMX file
|
|
203
|
+
2. Dialog shows all detected languages (e.g., "de-DE, en-GB")
|
|
204
|
+
3. User selects: Source = en-GB, Target = de-DE
|
|
205
|
+
4. Import proceeds with correct language pair
|
|
206
|
+
5. TM matches now work correctly
|
|
207
|
+
|
|
208
|
+
**Files Modified:**
|
|
209
|
+
- `Supervertaler.py` - Added language selection dialog in `_import_tmx_as_tm()` method (2 locations)
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 📥📤 memoQ XLIFF Import/Export Support (v1.9.108) - January 18, 2026
|
|
214
|
+
|
|
215
|
+
**Complete memoQ XLIFF (.mqxliff) Workflow**
|
|
216
|
+
|
|
217
|
+
Added full import/export support for memoQ XLIFF files - feature was implemented in module but never exposed in UI:
|
|
218
|
+
|
|
219
|
+
**Implementation:**
|
|
220
|
+
|
|
221
|
+
1. **Import Menu Item**: File → Import → memoQ XLIFF (.mqxliff)...
|
|
222
|
+
- Opens file dialog for `.mqxliff` files
|
|
223
|
+
- Automatically extracts source segments using `MQXLIFFHandler`
|
|
224
|
+
- Converts ISO language codes to full names (`sk` → `Slovak`)
|
|
225
|
+
- Stores handler and source path for round-trip export
|
|
226
|
+
|
|
227
|
+
2. **Export Menu Item**: File → Export → memoQ XLIFF - Translated (.mqxliff)...
|
|
228
|
+
- Updates target segments in original XLIFF structure
|
|
229
|
+
- Preserves formatting tags (bpt/ept pairs)
|
|
230
|
+
- Saves translated file with proper namespace handling
|
|
231
|
+
|
|
232
|
+
3. **Language Code Normalization**:
|
|
233
|
+
- New `_normalize_language_code()` method
|
|
234
|
+
- Converts ISO 639-1/639-2 codes to full language names
|
|
235
|
+
- Supports 30+ languages including Slovak (`sk`, `sk-SK`)
|
|
236
|
+
|
|
237
|
+
4. **memoQ Bilingual DOCX Language Detection**:
|
|
238
|
+
- Expanded `lang_map` in `import_memoq_bilingual()` from 8 to 24 languages
|
|
239
|
+
- Now includes Slovak, Czech, Hungarian, Romanian, Bulgarian, Greek, Russian, Ukrainian, Swedish, Danish, Finnish, Norwegian, Japanese, Chinese, Korean, Arabic, Turkish, Hebrew
|
|
240
|
+
- Fixes bug where Slovak would default to EN→NL instead of being detected
|
|
241
|
+
|
|
242
|
+
5. **Project Persistence**:
|
|
243
|
+
- Added `mqxliff_source_path` field to `Project` dataclass
|
|
244
|
+
- Source path saved in `.svproj` files
|
|
245
|
+
- Automatic handler restoration when loading projects
|
|
246
|
+
|
|
247
|
+
**Round-Trip Workflow:**
|
|
248
|
+
1. Export from memoQ as XLIFF
|
|
249
|
+
2. Import into Supervertaler
|
|
250
|
+
3. Translate segments
|
|
251
|
+
4. Export back to XLIFF
|
|
252
|
+
5. Import into memoQ
|
|
253
|
+
|
|
254
|
+
**Files Modified:**
|
|
255
|
+
- `Supervertaler.py` - Import/export menu items, methods, language normalization
|
|
256
|
+
- `Supervertaler.py` - Project dataclass: added `mqxliff_source_path` field
|
|
257
|
+
- `Supervertaler.py` - Project save/load: persist mqxliff_source_path
|
|
258
|
+
|
|
259
|
+
**GitHub Discussion:**
|
|
260
|
+
- https://github.com/michaelbeijer/Supervertaler/discussions/106
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## ✅ Prompt Library & Superlookup Fixes (v1.9.107) - January 15, 2026
|
|
265
|
+
|
|
266
|
+
**Prompt Library Improvements**
|
|
267
|
+
|
|
268
|
+
- **Unified filename and Name field**: Tree and editor now show full `.svprompt` extension
|
|
269
|
+
- **File Operations**: Name field edits now rename files on disk (filename = what you see = what you edit)
|
|
270
|
+
- **New Prompt Dialog**: Now asks for "filename with extension" and auto-appends `.svprompt` if missing
|
|
271
|
+
|
|
272
|
+
**Superlookup Navigation Fixes**
|
|
273
|
+
|
|
274
|
+
- **Fixed Ctrl+K AttributeError**: Removed ~140 lines of orphaned Supermemory code that was causing errors
|
|
275
|
+
- **Fixed Ctrl+K Navigation**: Now correctly navigates to Tools tab (index 3) instead of Prompt Manager (index 2)
|
|
276
|
+
- Tab indices shifted when Prompt Manager was added: Tools moved from 2→3
|
|
277
|
+
|
|
278
|
+
**Files Modified:**
|
|
279
|
+
- `modules/unified_prompt_manager_qt.py` - Tree display, editor field, save logic
|
|
280
|
+
- `Supervertaler.py` - Removed orphaned Supermemory methods, fixed tab index
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## 🗑️ Supermemory Removed (v1.9.105) - January 15, 2026
|
|
285
|
+
|
|
286
|
+
**Major Architectural Change**
|
|
287
|
+
|
|
288
|
+
- **Removed Supermemory** (vector-indexed semantic search) from the project entirely
|
|
289
|
+
- Supermemory did not work reliably in frozen PyInstaller builds due to complex PyTorch native dependencies
|
|
290
|
+
- **Recommendation:** Focus development effort on improving the SQLite-based Translation Memory system
|
|
291
|
+
- Better TMX import performance for large files
|
|
292
|
+
- Advanced fuzzy matching algorithms
|
|
293
|
+
- More reliable and faster than vector-based approaches for professional translation workflows
|
|
294
|
+
|
|
295
|
+
**Removed:**
|
|
296
|
+
- `modules/supermemory.py` (2100+ lines)
|
|
297
|
+
- Supermemory tab from UI
|
|
298
|
+
- Auto-init and cleanup code
|
|
299
|
+
- Dependencies: sentence-transformers, chromadb, tokenizers
|
|
300
|
+
- ~600 MB from default installation footprint
|
|
301
|
+
|
|
302
|
+
**Files Modified:**
|
|
303
|
+
- `Supervertaler.py` - Removed UI tab, auto-init, cleanup methods
|
|
304
|
+
- `modules/feature_manager.py` - Removed supermemory feature definition
|
|
305
|
+
- `pyproject.toml` - Removed supermemory pip extra and dependencies
|
|
306
|
+
- Build specs updated (CORE/FULL now only differ in Local Whisper inclusion)
|
|
307
|
+
|
|
308
|
+
## 📦 Packaging: Lighter Default Install (v1.9.104) - January 14, 2026
|
|
309
|
+
|
|
310
|
+
- Made **Supermemory** an optional install extra again, so the default `pip install supervertaler` no longer pulls the heavy ML stack (PyTorch / sentence-transformers / ChromaDB). Install with `pip install supervertaler[supermemory]` when needed.
|
|
311
|
+
|
|
312
|
+
## ✅ Filtered Ctrl+Enter + Website Screenshots (v1.9.103) - January 14, 2026
|
|
313
|
+
|
|
314
|
+
**Bug Fix**
|
|
315
|
+
|
|
316
|
+
- Fixed Ctrl+Enter confirmation under active **Filter Source/Filter Target**: it now confirms and advances through the *filtered* segments without the grid reverting to an unfiltered view.
|
|
317
|
+
|
|
318
|
+
**Website**
|
|
319
|
+
|
|
320
|
+
- Added new screenshots demonstrating the **Compare Panel** (MT + TM) and **Termview**.
|
|
321
|
+
- Updated the Prompt Manager screenshot reference.
|
|
322
|
+
|
|
323
|
+
## ⚡ QuickMenu in the Grid (v1.9.102) - January 14, 2026
|
|
324
|
+
|
|
325
|
+
- New **⚡ QuickMenu** in the Grid right-click menu (Source + Target cells)
|
|
326
|
+
- Run a prompt and preview the response
|
|
327
|
+
- Run a prompt and replace the selected text / target
|
|
328
|
+
- Prompt system update: renamed “Quick Run menu” terminology to **QuickMenu**
|
|
329
|
+
- New prompt metadata fields (backward compatible with `quick_run`):
|
|
330
|
+
- `quickmenu_label` (menu label)
|
|
331
|
+
- `quickmenu_grid` (show in Grid right-click QuickMenu)
|
|
332
|
+
- `quickmenu_quickmenu` (show in future app-level QuickMenu)
|
|
333
|
+
- UI rename: main tab “📝 Project editor” → “📝 Grid”
|
|
334
|
+
**Framework:** PyQt6
|
|
335
|
+
**Status:** Active Development
|
|
336
|
+
|
|
337
|
+
**Note:** For historical information about legacy versions (Tkinter Edition, Classic Edition), see [legacy_versions/LEGACY_VERSIONS.md](legacy_versions/LEGACY_VERSIONS.md).
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## 🧰 Prompt Library UX + Update Check Reliability (v1.9.101) - January 13, 2026
|
|
342
|
+
|
|
343
|
+
**Prompt Library**
|
|
344
|
+
|
|
345
|
+
- Prompt Library folders default to collapsed on first load and preserve expand/collapse + selection across refreshes.
|
|
346
|
+
- Added toolbar buttons: **Collapse all** / **Expand all**.
|
|
347
|
+
- Fixed **Duplicate** (creates a real copy with a unique “(copy …)” name) and adjusted **New Prompt** to create inside the currently selected folder.
|
|
348
|
+
- Added drag-and-drop moves for prompt files and folders (also supports dragging Favorites/Quick Run entries as shortcuts to move the underlying prompt).
|
|
349
|
+
|
|
350
|
+
**Check for Updates**
|
|
351
|
+
|
|
352
|
+
- Update check now uses a longer timeout and falls back to the GitHub releases page when `api.github.com` is slow/blocked.
|
|
353
|
+
- Fixed the update progress dialog briefly flashing and disappearing on some systems.
|
|
354
|
+
- Fixed a rare crash/auto-close issue where the first (API) network reply could finish after the fallback started and prematurely close/delete the active fallback request.
|
|
355
|
+
|
|
356
|
+
**Website**
|
|
357
|
+
|
|
358
|
+
- Navbar now includes a GitHub icon link + version pill, with cache-busting query strings for CSS/JS.
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## ⌨️ Ctrl+Return Works Everywhere (v1.9.100) - January 13, 2026
|
|
363
|
+
|
|
364
|
+
**Bug Fix: Ctrl+Enter/Ctrl+Return confirmation now reliable**
|
|
365
|
+
|
|
366
|
+
- Fixed a Windows/Qt routing quirk where `Ctrl+Return` (main keyboard Return) could be swallowed before it reached the grid editor widgets and/or the global `QShortcut`.
|
|
367
|
+
- Implemented an application-level event filter that intercepts `Ctrl+Return` and `Ctrl+Enter` and triggers `confirm_selected_or_next()` when focus is in the editor grid context.
|
|
368
|
+
- Expanded the same behavior to also work when focus is in the **Filter Source** / **Filter Target** boxes.
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## 🔊 Compare Panel Shortcuts + Sound Effects (v1.9.99) - January 12, 2026
|
|
373
|
+
|
|
374
|
+
**Feature: Compare Panel-first quick insert workflow**
|
|
375
|
+
|
|
376
|
+
- **Alt+0 / Alt+0,0 insertion (Compare Panel)**: Single-tap `Alt+0` inserts the current MT result; double-tap `Alt+0,0` inserts the current TM Target.
|
|
377
|
+
- **Full-segment replacement + single undo step**: Insertions replace the entire current target segment, wrapped in a single undo edit block.
|
|
378
|
+
- **Compare Panel navigation shortcuts**:
|
|
379
|
+
- MT prev/next: `Ctrl+Alt+Left` / `Ctrl+Alt+Right`
|
|
380
|
+
- TM prev/next: `Ctrl+Alt+Up` / `Ctrl+Alt+Down`
|
|
381
|
+
- **Context-aware match shortcuts**: Match navigation/insertion shortcuts now act only on the active panel (Compare Panel vs Translation Results), avoiding hidden-panel side effects.
|
|
382
|
+
|
|
383
|
+
**Feature: Minimalist sound effects + status-bar feedback**
|
|
384
|
+
|
|
385
|
+
- Added per-event **Windows sound mapping** (beeps or selected Windows `.wav` files) with a global enable toggle.
|
|
386
|
+
- Added **status bar “information bar” messages** for glossary entry add outcomes (added / duplicate / error).
|
|
387
|
+
- Sound effects are now **OFF by default** on fresh installs.
|
|
388
|
+
|
|
389
|
+
**UX: Reduced log spam**
|
|
390
|
+
|
|
391
|
+
- Collapsed repeated “Saved segment to TM(s)” messages into a single debounced log line with an `(xN)` count.
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## 📝 Glossary Notes in Tooltips (v1.9.98) - January 11, 2026
|
|
396
|
+
|
|
397
|
+
**Bug Fix: Glossary Entry Notes Now Display in Tooltips**
|
|
398
|
+
|
|
399
|
+
Fixed an issue where glossary entry notes were not appearing in tooltips, even though they were correctly saved to the database.
|
|
400
|
+
|
|
401
|
+
**The Problem:**
|
|
402
|
+
- Notes were being saved correctly to the `termbase_terms.notes` database column
|
|
403
|
+
- However, when converting termbase matches from dictionary format to list format for display, the `notes` field was being dropped in multiple places
|
|
404
|
+
- This meant TermView tooltips and source cell tooltips never received the notes data
|
|
405
|
+
|
|
406
|
+
**The Fix:**
|
|
407
|
+
Fixed 5 locations where glossary notes were being lost:
|
|
408
|
+
1. **Cached termbase matches conversion** (lines ~26753-26768): Added `'notes'` field
|
|
409
|
+
2. **Fresh termbase matches conversion** (lines ~26835-26850): Added `'notes'` field
|
|
410
|
+
3. **Refresh current segment conversion** (lines ~30420-30438): Added `'notes'` field
|
|
411
|
+
4. **TranslationMatch metadata** (lines ~30469-30485): Added `'notes'`, `'term_id'`, `'termbase_id'` to metadata dict
|
|
412
|
+
|
|
413
|
+
**Result:**
|
|
414
|
+
- Glossary entry notes now appear in TermView tooltips when hovering over terms
|
|
415
|
+
- Notes also appear in source cell tooltips for highlighted glossary terms
|
|
416
|
+
- Full data flow now preserved: Database → TranslationMatch → dict → list → TermBlock → Tooltip
|
|
417
|
+
|
|
418
|
+
**Also in this release:**
|
|
419
|
+
- **WebEngineView cleanup**: Fixed "Release of profile requested but WebEnginePage still not deleted" terminal warnings by properly cleaning up Superlookup web views on app close
|
|
420
|
+
- **FAQ update**: Added documentation about embedded browser password/cookie security in Superdocs FAQ
|
|
421
|
+
- **Community docs**: Added `CONTRIBUTING.md` and `CODE_OF_CONDUCT.md` (Contributor Covenant v2.1)
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## 🌐 All MT Providers in Translation Results (v1.9.97) - January 11, 2026
|
|
426
|
+
|
|
427
|
+
**Feature: Multiple Machine Translation Providers Now Displayed**
|
|
428
|
+
|
|
429
|
+
The Translation Results panel now shows translations from **all configured MT providers**, not just Google Translate.
|
|
430
|
+
|
|
431
|
+
**Previously:**
|
|
432
|
+
- Only Google Translate was called when navigating to a segment
|
|
433
|
+
- DeepL, Amazon Translate, and MyMemory were only available in Batch Translate
|
|
434
|
+
|
|
435
|
+
**Now:**
|
|
436
|
+
- All enabled MT providers are called and displayed progressively
|
|
437
|
+
- Each provider's translation appears as it completes
|
|
438
|
+
- Provider codes shown: GT (Google), DL (DeepL), AT (Amazon), MM (MyMemory)
|
|
439
|
+
|
|
440
|
+
**Supported MT Providers:**
|
|
441
|
+
| Provider | API Key Required | Notes |
|
|
442
|
+
|----------|-----------------|-------|
|
|
443
|
+
| Google Translate | Yes | `google_translate` key |
|
|
444
|
+
| DeepL | Yes | `deepl` key |
|
|
445
|
+
| Amazon Translate | Yes | `amazon_translate` + `amazon_translate_secret` + region |
|
|
446
|
+
| MyMemory | Optional | Free tier works without key; email gets higher limits |
|
|
447
|
+
|
|
448
|
+
**Configuration Tip:**
|
|
449
|
+
For MyMemory, you can use your email address as the key to get 10,000 words/day instead of 1,000:
|
|
450
|
+
```
|
|
451
|
+
mymemory = your.email@example.com
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
**Technical Changes:**
|
|
455
|
+
- Expanded `_add_mt_and_llm_matches_progressive()` to call all configured MT providers
|
|
456
|
+
- Each provider respects its enabled/disabled state from Settings → MT Settings
|
|
457
|
+
- Results displayed immediately as each provider responds
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## 🛡️ Thread-Safe Logging (v1.9.96) - January 11, 2026
|
|
462
|
+
|
|
463
|
+
**Bug Fix: Crash When Adding Terms via Alt+Down**
|
|
464
|
+
|
|
465
|
+
Fixed a critical crash that occurred when adding glossary terms using the Alt+Down quick-add shortcut.
|
|
466
|
+
|
|
467
|
+
**The Problem:**
|
|
468
|
+
- The `log()` method was being called from background worker threads (e.g., termbase batch processor)
|
|
469
|
+
- Qt widgets like `status_bar` and `session_log_text` were being accessed from non-main threads
|
|
470
|
+
- This violates Qt's threading model and caused: `QObject::killTimer: Timers cannot be stopped from another thread`
|
|
471
|
+
|
|
472
|
+
**The Fix:**
|
|
473
|
+
- Made `log()` method thread-safe using PyQt signals
|
|
474
|
+
- Added `_log_signal = pyqtSignal(str)` to `SupervertalerQt` class
|
|
475
|
+
- Background threads now emit the signal instead of directly updating UI
|
|
476
|
+
- Signal automatically queues to main thread's event loop
|
|
477
|
+
- Console logging (`print()`) still works from any thread
|
|
478
|
+
|
|
479
|
+
**Technical Details:**
|
|
480
|
+
- New `_log_to_ui()` internal method handles actual widget updates
|
|
481
|
+
- Thread detection via `threading.current_thread() == threading.main_thread()`
|
|
482
|
+
- Signal connected with default `AutoConnection` which queues cross-thread calls
|
|
483
|
+
|
|
484
|
+
**Result:**
|
|
485
|
+
- No more crashes when background workers log messages
|
|
486
|
+
- Alt+Down quick-add works reliably
|
|
487
|
+
- All UI updates properly marshalled to main thread
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
## 🔍 TM Fuzzy Matching Fix (v1.9.95) - January 11, 2026
|
|
492
|
+
|
|
493
|
+
**Bug Fix: Improved Translation Memory Fuzzy Matching for Long Segments**
|
|
494
|
+
|
|
495
|
+
Fixed a critical issue where highly similar TM entries were not being found for long segments (especially in patent/technical documents).
|
|
496
|
+
|
|
497
|
+
**The Problem:**
|
|
498
|
+
- FTS5 full-text search uses BM25 ranking which prioritizes entries matching more search terms
|
|
499
|
+
- For long segments with many technical compound words, BM25 pushed truly similar entries below the candidate limit
|
|
500
|
+
- Example: Two sentences that were 92% similar weren't matching because other entries matched more individual words
|
|
501
|
+
|
|
502
|
+
**The Fix:**
|
|
503
|
+
- Increased the FTS5 candidate pool from 100 to 500 entries
|
|
504
|
+
- This ensures similar entries make it into the candidate pool before SequenceMatcher calculates actual similarity
|
|
505
|
+
- More candidates = better chance of finding the truly similar matches
|
|
506
|
+
|
|
507
|
+
**Technical Details:**
|
|
508
|
+
- Changed `max(50, max_results * 10)` to `max(500, max_results * 50)` in `search_fuzzy_matches()`
|
|
509
|
+
- FTS5 BM25 is great for keyword relevance but needs a larger pool for similarity-based reranking
|
|
510
|
+
- The SequenceMatcher then correctly scores the candidates by actual text similarity
|
|
511
|
+
|
|
512
|
+
**Result:**
|
|
513
|
+
- TM fuzzy matches now reliably appear for long technical segments
|
|
514
|
+
- 90%+ similar entries are no longer missed due to BM25 ranking artifacts
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## 🎯 TermView Quick-Insert Shortcuts (v1.9.94) - January 11, 2026
|
|
519
|
+
|
|
520
|
+
**New Feature: TermView Quick-Insert Shortcuts**
|
|
521
|
+
|
|
522
|
+
**Note (v1.9.99+):** `Alt+0` / `Alt+0,0` are now reserved for the Compare Panel insertion workflow. TermView shortcuts start at `Alt+1`.
|
|
523
|
+
|
|
524
|
+
Insert glossary terms directly from TermView using keyboard shortcuts — a novel feature not found in other CAT tools!
|
|
525
|
+
|
|
526
|
+
- **Alt+1 through Alt+9** — Insert terms 1-9 (displayed as badges 1-9)
|
|
527
|
+
- **Double-tap Alt+N,N** — Insert terms 10-18 (displayed as badges 11, 22, ..., 99)
|
|
528
|
+
- **18 terms accessible** via quick keyboard shortcuts
|
|
529
|
+
- **Visual badges** show shortcut numbers on each term in TermView
|
|
530
|
+
- **Smart double-tap detection** — first tap inserts immediately, double-tap within 300ms replaces with the 11-20 term
|
|
531
|
+
|
|
532
|
+
**Visual Improvements:**
|
|
533
|
+
- 🎨 **Unified term styling** — Background color now extends across both translation text and shortcut badge
|
|
534
|
+
- 🔵 **Blue number badges** — Clear visual indicators (14px for single digit, 20px for double)
|
|
535
|
+
- 💡 **Hover effects** — Entire term block highlights on hover
|
|
536
|
+
- 🏷️ **Tooltips** — Show exact shortcut (e.g., "Press Alt+3 to insert" or "Press Alt+3,3 to insert")
|
|
537
|
+
|
|
538
|
+
**How It Works:**
|
|
539
|
+
| Badge | Shortcut | Term # |
|
|
540
|
+
|-------|----------|--------|
|
|
541
|
+
| 1-9 | Alt+1-9 | 1st-9th terms |
|
|
542
|
+
| 11-99 | Alt+1,1 - Alt+9,9 | 10th-18th terms |
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
## ⌨️ Keyboard Shortcuts & Quick Glossary Add (v1.9.93) - January 11, 2026
|
|
547
|
+
|
|
548
|
+
**New Features:**
|
|
549
|
+
- ⚡ **Quick Add to Priority Glossary** — Add terms directly to glossaries by their priority ranking
|
|
550
|
+
- Alt+Up: Add selected term pair to glossary with Priority #1
|
|
551
|
+
- Alt+Down: Add selected term pair to glossary with Priority #2
|
|
552
|
+
- Works with any glossary that has Read enabled and a priority set
|
|
553
|
+
- No dialog required — instant term addition
|
|
554
|
+
|
|
555
|
+
- 🔧 **Shortcut Enable/Disable** — Disable shortcuts from Settings → Keyboard Shortcuts
|
|
556
|
+
- New "Enabled" checkbox column in shortcuts table
|
|
557
|
+
- Disabled shortcuts fully release their key combinations
|
|
558
|
+
- Released keys can be reassigned to other shortcuts
|
|
559
|
+
- Settings persist between sessions
|
|
560
|
+
|
|
561
|
+
**Improvements:**
|
|
562
|
+
- ✓ **Button Renamed** — "Save & Next" button renamed to "Confirm & Next" to accurately reflect its function
|
|
563
|
+
- ⌨️ **Ctrl+Enter Fix** — Ctrl+Enter now correctly handled in target editor cells
|
|
564
|
+
- ↵ **Enter Key Behavior** — Plain Enter no longer inserts newlines; use Shift+Enter for line breaks
|
|
565
|
+
|
|
566
|
+
**Bug Fixes:**
|
|
567
|
+
- 🔧 Fixed Ctrl+Enter not working when focus is in target cell
|
|
568
|
+
- 🔧 Fixed "Save & Next" button not confirming segments (was only moving to next)
|
|
569
|
+
- 🔧 Fixed custom shortcut key bindings not loading at startup
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## 🔄 F5 Force Refresh & Curly Quote Matching (v1.9.92) - January 10, 2026
|
|
574
|
+
|
|
575
|
+
**New Feature:**
|
|
576
|
+
- ⌨️ **F5 Force Refresh** — Press F5 to force refresh all glossary and TM matches for the current segment
|
|
577
|
+
- Clears all caches (termbase cache, translation matches cache)
|
|
578
|
+
- Re-searches all connected glossaries and translation memories
|
|
579
|
+
- Updates TermView, Translation Results panel, and grid highlighting with fresh results
|
|
580
|
+
- Useful when glossary changes aren't immediately reflected
|
|
581
|
+
|
|
582
|
+
**Bug Fixes:**
|
|
583
|
+
- 🔤 **Curly Quote Matching Fix** — Single-word glossary terms now correctly match when surrounded by curly quotes
|
|
584
|
+
- Terms like `"omvatten",` or `„word"` now match their glossary entries
|
|
585
|
+
- Comprehensive Unicode quote handling: `"`, `"`, `„`, `«`, `»`, `'`, `'`, `‚`, `‹`, `›`
|
|
586
|
+
- Text normalized by replacing all quote variants with spaces before regex matching
|
|
587
|
+
|
|
588
|
+
**Improvements:**
|
|
589
|
+
- 🏷️ **TermView Tag Stripping** — CAT tool tags now stripped from TermView display for cleaner appearance
|
|
590
|
+
- Handles `<b>`, `<i>`, memoQ `{1}`, `[2}`, Trados `<1>`, Déjà Vu `{00001}`
|
|
591
|
+
- 📝 **Find/Replace Field Behavior** — Selected text now always goes to Find field, never to Replace field
|
|
592
|
+
- 🔄 **TermView Cache Updates** — TermView now updates from cache when navigating segments (not just TM/MT results)
|
|
593
|
+
|
|
594
|
+
---
|
|
595
|
+
|
|
596
|
+
## 🎯 Déjà Vu X3 Bilingual RTF Support (v1.9.91) - January 10, 2026
|
|
597
|
+
|
|
598
|
+
**New CAT Tool Integration:**
|
|
599
|
+
- 📄 **Déjà Vu X3 RTF Import** — Import bilingual RTF files exported from Déjà Vu X3
|
|
600
|
+
- Parses 4-column table format (ID | Source | Target | Comments)
|
|
601
|
+
- Automatic language detection from RTF language codes (60+ languages supported)
|
|
602
|
+
- Segment IDs preserved for round-trip workflow
|
|
603
|
+
- 📤 **Déjà Vu X3 RTF Export** — Export translations back to RTF format
|
|
604
|
+
- Translations inserted with proper RTF formatting
|
|
605
|
+
- Unicode characters properly encoded (`\uNNNN?` format)
|
|
606
|
+
- Target language codes applied automatically
|
|
607
|
+
- Balanced RTF brace structure maintained
|
|
608
|
+
- 🏷️ **Déjà Vu Tag Support** — Inline tags `{00108}` highlighted in pink
|
|
609
|
+
- Pattern: `{NNNNN}` (5-digit numbers)
|
|
610
|
+
- Tags preserved through translation workflow
|
|
611
|
+
- 🔄 **Full Round-Trip Workflow**:
|
|
612
|
+
1. Export bilingual RTF from Déjà Vu X3
|
|
613
|
+
2. Import into Supervertaler (File → Import → Déjà Vu Bilingual RTF)
|
|
614
|
+
3. Translate using AI, TM, or manual editing
|
|
615
|
+
4. Export back to RTF (File → Export → Déjà Vu Bilingual RTF)
|
|
616
|
+
5. Reimport into Déjà Vu X3
|
|
617
|
+
|
|
618
|
+
**New Module:**
|
|
619
|
+
- `modules/dejavurtf_handler.py` — Complete Déjà Vu X3 RTF parser (~800 lines)
|
|
620
|
+
- `DejaVuSegment` dataclass for segment data
|
|
621
|
+
- `DejaVuRTFHandler` class with load/save methods
|
|
622
|
+
- RTF text encoding/decoding utilities
|
|
623
|
+
- Language code mapping for 60+ languages
|
|
624
|
+
|
|
625
|
+
**Technical Implementation:**
|
|
626
|
+
- RTF parsing uses regex patterns for `\cell` markers and segment IDs
|
|
627
|
+
- Segment IDs extracted via pattern `insrsid\d+\s+(\d{7})\}`
|
|
628
|
+
- Language detection uses `Counter` to find most common `\lang` codes
|
|
629
|
+
- Export inserts formatted RTF groups with proper brace balancing
|
|
630
|
+
- Project persistence: `dejavu_source_path`, `dejavu_segment_id`, `dejavu_row_index`
|
|
631
|
+
|
|
632
|
+
**Files Modified:**
|
|
633
|
+
- `Supervertaler.py` — Menu items, import/export methods, TagHighlighter pattern
|
|
634
|
+
- `modules/dejavurtf_handler.py` — NEW handler module
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
## 🐛 Bug Fixes (v1.9.89) - January 9, 2026
|
|
639
|
+
|
|
640
|
+
**Critical Bug Fixes:**
|
|
641
|
+
- 🔧 **Translation Results Zoom Persistence** — Fixed font size settings not being restored when loading projects (typo: `set_compare_font_size` → `set_compare_box_font_size`)
|
|
642
|
+
- 🎨 **Border Thickness Spinbox** — Fixed arrows not appearing in Target Cell Focus Border thickness control
|
|
643
|
+
- Removed problematic stylesheet that was hiding buttons
|
|
644
|
+
- Increased maximum thickness from 5px to 10px
|
|
645
|
+
- Made spinbox wider (90px) to accommodate larger values
|
|
646
|
+
- 🌍 **Language Pair Memory** — Fixed DOCX import defaulting to EN→NL instead of remembering last used language pair
|
|
647
|
+
- Now remembers last imported language pair across sessions
|
|
648
|
+
- Falls back to current project languages if available
|
|
649
|
+
- User report: "Whatever I do... the language is detected always as EN-NL!" → FIXED
|
|
650
|
+
|
|
651
|
+
**Files Modified:**
|
|
652
|
+
- `Supervertaler.py` — All bug fixes implemented
|
|
653
|
+
|
|
654
|
+
---
|
|
655
|
+
|
|
656
|
+
## 🔍 Context Menu Enhancement (v1.9.88) - January 9, 2026
|
|
657
|
+
|
|
658
|
+
**Superlookup Integration in Context Menus (NEW):**
|
|
659
|
+
- 🔍 **Quick Concordance Search** — Right-click selected text in source or target cells to instantly search in Superlookup
|
|
660
|
+
- 📋 **Context Menu Item** — New "🔍 Search in Superlookup (Ctrl+K)" option appears when text is selected
|
|
661
|
+
- 🎯 **Smart Navigation** — Automatically opens Superlookup tab and triggers search
|
|
662
|
+
- 🌍 **Language-Aware** — Passes project language pair to Superlookup for filtered results
|
|
663
|
+
- 📊 **Vertical View** — Uses traditional concordance list layout for search results
|
|
664
|
+
- ⚡ **Unified Search** — Searches TM, glossaries, Supermemory, MT, and web resources simultaneously
|
|
665
|
+
- 🔄 **Works Everywhere** — Available in both source (read-only) and target (editable) cells
|
|
666
|
+
|
|
667
|
+
**Workflow Benefits:**
|
|
668
|
+
- Select any term → Right-click → Instant concordance search (no need to open Superlookup first)
|
|
669
|
+
- Perfect for terminology research while translating
|
|
670
|
+
- Complements existing Ctrl+K keyboard shortcut
|
|
671
|
+
|
|
672
|
+
---
|
|
673
|
+
|
|
674
|
+
## ⚡ Workflow Enhancements & UI Polish (v1.9.87) - January 9, 2026
|
|
675
|
+
|
|
676
|
+
**Auto-Confirm 100% TM Matches (NEW):**
|
|
677
|
+
- 🎯 **Intelligent Auto-Confirmation** — When pressing Ctrl+Enter, automatically inserts, confirms, and skips segments with perfect TM matches
|
|
678
|
+
- 🔄 **Recursive Processing** — Continues through multiple 100% matches until finding a segment requiring manual work
|
|
679
|
+
- 🛡️ **Safety Check** — Only auto-confirms segments with empty targets (won't overwrite existing translations)
|
|
680
|
+
- ⚡ **Hash-Based Lookup** — Uses instant MD5 hash matching for O(1) performance
|
|
681
|
+
- 📊 **TM Integration** — Auto-confirmed segments automatically saved to active Translation Memories
|
|
682
|
+
- ⚙️ **Optional Setting** — Enable/disable in General Settings → TM/Glossary section
|
|
683
|
+
- 📝 **Session Logging** — Clear logs show: Found match → Auto-confirmed → Skipped to next
|
|
684
|
+
|
|
685
|
+
**Tab Layout Customization (NEW):**
|
|
686
|
+
- 📐 **Flexible Tab Position** — Move Termview and Session Log tabs above or below the grid
|
|
687
|
+
- ⚙️ **View Settings Toggle** — New "📐 Tab Layout" section with checkbox: "Show Termview/Session Log tabs above grid"
|
|
688
|
+
- 💾 **Persistent Setting** — Preference saved and restored between sessions
|
|
689
|
+
- 🔄 **Easy Switching** — Close and reopen project tab to apply layout change
|
|
690
|
+
|
|
691
|
+
**Grid & UI Improvements:**
|
|
692
|
+
- 📏 **Wider Segment Column** — Segment # column increased from 35px to 55px (fits 4-digit segment numbers up to 9999)
|
|
693
|
+
- 🎯 **Auto-Center Fix** — "Keep Active Segment Centered" setting now persists between restarts
|
|
694
|
+
- 🎨 **Badge Text Color** — Changed from black to dark gray (#333333) for better appearance on bright match backgrounds
|
|
695
|
+
- 🎨 **Color Customization** — New badge text color picker with 8 preset colors and custom selection
|
|
696
|
+
- 🔍 **Settings Rename** — "View/Display" tab renamed to "View Settings" for clarity
|
|
697
|
+
|
|
698
|
+
**Technical Improvements:**
|
|
699
|
+
- Navigation logic now uses exact match lookup for 100% TM matches (not fuzzy search)
|
|
700
|
+
- Pagination handling in auto-confirm recursion (switches pages when needed)
|
|
701
|
+
- Status icon updates and project modification flag management
|
|
702
|
+
- Settings persistence through general_settings.json
|
|
703
|
+
|
|
704
|
+
---
|
|
705
|
+
|
|
706
|
+
## 🔧 Glossary Quality Improvements (v1.9.86) - January 9, 2026
|
|
707
|
+
|
|
708
|
+
**Enhanced Glossary Management:**
|
|
709
|
+
- 🚫 **Duplicate Prevention** — Cannot save duplicate source→target pairs to a glossary
|
|
710
|
+
- 🎯 **Priority-Based Filtering** — If identical match exists in multiple glossaries, only highest priority version shown
|
|
711
|
+
- ⚖️ **Font Normalization** — TermView source and target text now use same font size
|
|
712
|
+
- 🔍 **Smart Filtering** — Duplicate filtering applied throughout: grid highlighting, Translation Results, TermView, and Superlookup
|
|
713
|
+
- ⚠️ **User Feedback** — Clear warning dialog when attempting to add duplicate terms
|
|
714
|
+
|
|
715
|
+
**Technical Changes:**
|
|
716
|
+
- Added case-insensitive duplicate check in `termbase_manager.py` before inserting terms
|
|
717
|
+
- `add_term()` now returns `None` if duplicate detected (graceful handling)
|
|
718
|
+
- Duplicate filtering in `find_termbase_matches_in_source()` prevents multiple sources from showing duplicates
|
|
719
|
+
- TermView target font size matches source font size (was 2pt smaller)
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
## ✅ AI Proofreading System (v1.9.85) - January 7, 2026
|
|
724
|
+
|
|
725
|
+
**Intelligent Translation Quality Verification:**
|
|
726
|
+
- 🔍 **Batch Proofreading** — LLM analyzes translations for errors, inconsistencies, and quality issues
|
|
727
|
+
- 📝 **Issue Tracking** — Problems stored in Notes field with `⚠️ PROOFREAD:` prefix
|
|
728
|
+
- 📊 **Results Table** — View all segments with issues, double-click to navigate
|
|
729
|
+
- 🎯 **Advanced Filters** — New "Has proofreading issues" filter option
|
|
730
|
+
- 🟠 **Visual Indicators** — Orange highlight on status icons for segments with proofreading notes
|
|
731
|
+
- 🧹 **Clear Operations** — Bulk clear all proofreading notes or clear individual segments
|
|
732
|
+
- ⚡ **Batch Processing** — Efficient API calls (20 segments per request)
|
|
733
|
+
- 📈 **Progress Dialog** — Real-time stats during proofreading operation
|
|
734
|
+
|
|
735
|
+
**Access Points:**
|
|
736
|
+
- Edit → Batch Operations → ✅ Proofread Translation...
|
|
737
|
+
- View → ✅ Proofreading Results...
|
|
738
|
+
- Right-click → ✅ Clear Proofreading Notes
|
|
739
|
+
|
|
740
|
+
---
|
|
741
|
+
|
|
742
|
+
## 📐 Subscript & Superscript Support (v1.9.84) - January 7, 2026
|
|
743
|
+
|
|
744
|
+
**New Formatting Tags:**
|
|
745
|
+
- ⬇️ **Subscript** — `<sub>` tags for subscript text (e.g., P<sub>totaal</sub>)
|
|
746
|
+
- ⬆️ **Superscript** — `<sup>` tags for superscript text (e.g., m<sup>2</sup>)
|
|
747
|
+
|
|
748
|
+
**Full Pipeline Support:**
|
|
749
|
+
- 📥 **Import** — Subscript/superscript preserved from DOCX files as `<sub>`/`<sup>` tags
|
|
750
|
+
- 📤 **Export** — Tags converted back to real Word subscript/superscript formatting
|
|
751
|
+
- 🎨 **Preview** — Document Preview renders actual subscript/superscript positioning
|
|
752
|
+
|
|
753
|
+
**Technical Details:**
|
|
754
|
+
- Updated `modules/tag_manager.py` with sub/sup support in FormattingRun dataclass
|
|
755
|
+
- TAG_PATTERN regex extended to match `<sub>` and `<sup>` tags
|
|
756
|
+
- DOCX handler applies `run.font.subscript` and `run.font.superscript` on export
|
|
757
|
+
|
|
758
|
+
---
|
|
759
|
+
|
|
760
|
+
## 📝 Notes Tab & Status Indicator (v1.9.83) - January 6, 2026
|
|
761
|
+
|
|
762
|
+
**Notes Tab in Translation Results Panel:**
|
|
763
|
+
- 📝 **TM Info + Notes Tabs** — Translation Results panel now has tabbed interface
|
|
764
|
+
- 💾 **TM Info Tab** — Shows TM match details when a match is selected
|
|
765
|
+
- ✏️ **Notes Tab** — Add/edit notes for each segment
|
|
766
|
+
- 🔄 **Auto-Save** — Notes save automatically as you type
|
|
767
|
+
- 📂 **Persistence** — Notes saved to .svproj project file
|
|
768
|
+
|
|
769
|
+
**Notes Indicator on Status Icon:**
|
|
770
|
+
- 🟠 **Orange Highlight** — Status icon (✓/✗) gets orange background when segment has notes
|
|
771
|
+
- 🎯 **Compact Design** — No separate icon cluttering the status cell
|
|
772
|
+
- 💬 **Tooltip** — Hover over status cell to see notes preview
|
|
773
|
+
- 📏 **Narrower Status Column** — Reduced from 120px to 70px for cleaner look
|
|
774
|
+
|
|
775
|
+
**UI Cleanup:**
|
|
776
|
+
- 🗑️ **Removed Comments Tab** — Redundant tab under grid removed (Notes tab replaces it)
|
|
777
|
+
- 🧹 **Cleaner Layout** — Only Termview and Session Log tabs remain under grid
|
|
778
|
+
|
|
779
|
+
---
|
|
780
|
+
|
|
781
|
+
## 🤖 Export for AI (v1.9.82) - January 5, 2026
|
|
782
|
+
|
|
783
|
+
**New Export Format:**
|
|
784
|
+
- 🤖 **AI-Readable Format** — New export option in File → Export menu
|
|
785
|
+
- 📝 **[SEGMENT XXXX] Format** — Outputs clean numbered segments with language labels
|
|
786
|
+
- 🌐 **Language Codes** — Auto-detects project languages (NL, EN, DE, etc.)
|
|
787
|
+
- ⚙️ **Configurable** — Customizable language codes, start number, zero padding
|
|
788
|
+
|
|
789
|
+
**Export Options:**
|
|
790
|
+
- 🔄 **Content Modes** — Bilingual (source+target), Source only, Target only
|
|
791
|
+
- 📊 **Segment Filters** — All segments, Untranslated only, Translated only
|
|
792
|
+
- 👁️ **Live Preview** — See format preview before exporting
|
|
793
|
+
|
|
794
|
+
**Use Cases:**
|
|
795
|
+
- 🧠 **AI Translation** — Export source-only for ChatGPT/Claude translation
|
|
796
|
+
- 🔍 **AI Review** — Export bilingual for AI quality review
|
|
797
|
+
- 📎 **Easy Parsing** — Simple format for automated processing
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
## 🔍 Superlookup UX Improvements (v1.9.81) - January 4, 2026
|
|
802
|
+
|
|
803
|
+
**Search History Dropdown:**
|
|
804
|
+
- 📜 **History Dropdown** — Superlookup search box now shows last 20 searches in dropdown
|
|
805
|
+
- 💾 **Persistent History** — Saved to `user_data/superlookup_history.json`
|
|
806
|
+
- ⌨️ **Editable Combo** — Type to search, click dropdown for history
|
|
807
|
+
|
|
808
|
+
**Resizable Sidebar:**
|
|
809
|
+
- ↔️ **QSplitter** — Web Resources sidebar now resizable (120-250px range)
|
|
810
|
+
- 📏 **No Text Cutoff** — Resource buttons properly visible at all widths
|
|
811
|
+
|
|
812
|
+
**UI Polish:**
|
|
813
|
+
- 🎯 **Focus Rectangles Removed** — Global stylesheet removes ugly focus outlines from all buttons
|
|
814
|
+
- 🟢 **Styled Radio Buttons** — Replaced 5 plain QRadioButton instances with CheckmarkRadioButton
|
|
815
|
+
- 🐛 **External Mode Fix** — External browser mode now correctly triggers web search
|
|
816
|
+
|
|
817
|
+
---
|
|
818
|
+
|
|
819
|
+
## 💻 GitHub Code Search (Beijerterm) in Superlookup (v1.9.80) - January 4, 2026
|
|
820
|
+
|
|
821
|
+
**New Web Resource:**
|
|
822
|
+
- 💻 **GitHub Code (Beijerterm)** — Search Beijerterm terminology repo directly from Superlookup
|
|
823
|
+
- 🔗 **Search URL** — `https://github.com/search?q={query}+repo:michaelbeijer/beijerterm&type=code`
|
|
824
|
+
- 📚 **Source Files** — Search YAML glossary files, Markdown documentation
|
|
825
|
+
- ✨ **Renamed** — "GitHub Code" → "GitHub Code (all)" for clarity
|
|
826
|
+
|
|
827
|
+
---
|
|
828
|
+
|
|
829
|
+
## 📚 Beijerterm Integration in Superlookup (v1.9.79) - January 4, 2026
|
|
830
|
+
|
|
831
|
+
**New Web Resource:**
|
|
832
|
+
- 📚 **Beijerterm** — Added to Superlookup's Web Resources tab (replaces old michaelbeijer.co.uk wiki)
|
|
833
|
+
- 🔗 **Search URL** — `https://michaelbeijer.github.io/beijerterm/?q={query}`
|
|
834
|
+
- 📊 **500k+ Terms** — Dutch-English terminology database with 583,000+ term entries
|
|
835
|
+
- ⚡ **URL Search** — Beijerterm now supports `?q=searchterm` for programmatic search integration
|
|
836
|
+
|
|
837
|
+
---
|
|
838
|
+
|
|
839
|
+
## 🔍 Find & Replace History & Batch Sets (v1.9.78) - January 4, 2026
|
|
840
|
+
|
|
841
|
+
**F&R History Dropdowns:**
|
|
842
|
+
- 📜 **History Dropdowns** — Find and Replace fields now have dropdown arrows showing last 20 searches
|
|
843
|
+
- 💾 **Persistent History** — Search/replace terms saved to `user_data/find_replace_history.json`
|
|
844
|
+
- 🔽 **Quick Access** — Click dropdown arrow or type to filter previous search terms
|
|
845
|
+
|
|
846
|
+
**F&R Sets (Batch Operations):**
|
|
847
|
+
- 📁 **F&R Sets Panel** — Collapsible panel for creating and managing batch replace operations
|
|
848
|
+
- ▶️ **Batch Operations** — Run multiple find/replace operations with a single click
|
|
849
|
+
- ➕ **Add to Set** — Save current find/replace values to a named set
|
|
850
|
+
- 📥📤 **Import/Export** — Save F&R sets as `.svfr` files for sharing or backup
|
|
851
|
+
- 🖱️ **Double-click** — Double-click any operation in a set to load it into the dialog
|
|
852
|
+
|
|
853
|
+
**New Module (`modules/find_replace_qt.py`):**
|
|
854
|
+
- `FindReplaceHistory` — Manages and persists recent search/replace terms
|
|
855
|
+
- `FindReplaceOperation` — Dataclass for single F&R operation (find, replace, options)
|
|
856
|
+
- `FindReplaceSet` — Collection of operations that can be saved/loaded
|
|
857
|
+
- `FindReplaceSetsManager` — QWidget UI for managing F&R sets with tables
|
|
858
|
+
- `HistoryComboBox` — Editable combo box with history dropdown
|
|
859
|
+
|
|
860
|
+
---
|
|
861
|
+
|
|
862
|
+
## 💻 GitHub Code Search in Superlookup (v1.9.77) - January 4, 2026
|
|
863
|
+
|
|
864
|
+
**New Web Resource:**
|
|
865
|
+
- 💻 **GitHub Code Search** — Added to Superlookup's Web Resources tab
|
|
866
|
+
- 🔗 **Search URL** — `https://github.com/search?q={query}&type=code`
|
|
867
|
+
- 🎯 **Use Case** — Search for terms/code across all public GitHub repositories
|
|
868
|
+
- ✨ **Great for** — Finding how technical terms are used in real code, locating terminology in open-source projects
|
|
869
|
+
|
|
870
|
+
---
|
|
871
|
+
|
|
872
|
+
## 🎉 Onboarding, Spellcheck & Project Info (v1.9.76) - January 3, 2025
|
|
873
|
+
|
|
874
|
+
**First-Run Welcome for New Users:**
|
|
875
|
+
- 🎉 **Welcome Dialog** — Shows on first launch explaining modular pip extras
|
|
876
|
+
- 📦 **Auto-Navigate** — Opens Settings → Features tab automatically to show installed/missing features
|
|
877
|
+
- ✅ **Don't Show Again** — Checkbox uses standard green CheckmarkCheckBox style
|
|
878
|
+
- 🐛 **Bug Fix** — First-run flag now saves to correct file (ui_preferences.json)
|
|
879
|
+
|
|
880
|
+
**Free vs Paid LLM Pricing Info:**
|
|
881
|
+
- 💰 **Info Box in AI Settings** — Clear pricing information at top of Settings → AI Settings
|
|
882
|
+
- 🆓 **Google Gemini** — FREE tier (15 req/min, 1M tokens/day)
|
|
883
|
+
- 🖥️ **Ollama** — 100% FREE (runs locally on your computer)
|
|
884
|
+
- 💳 **OpenAI/Claude** — Paid API only (no free tier)
|
|
885
|
+
- ⚠️ **Important Note** — Clarifies that ChatGPT Plus and Claude Pro web subscriptions do NOT include API access
|
|
886
|
+
|
|
887
|
+
**Spellcheck System Overhaul:**
|
|
888
|
+
- 🔤 **Spylls Backend** — Replaced `cyhunspell` with `spylls` (pure Python Hunspell), fixing Windows/Python 3.12 compatibility
|
|
889
|
+
- 🌍 **Language Variants** — Dropdown now shows "English (US)", "English (GB)", "Portuguese (BR)" etc.
|
|
890
|
+
- 📁 **Subdirectory Search** — Finds dictionaries in subfolders like `dictionaries/en/en_GB.dic`
|
|
891
|
+
- ✅ **Regional Spelling Works** — "colour" correct in en_GB, incorrect in en_US (and vice versa)
|
|
892
|
+
- 📋 **Improved Spellcheck Info Dialog** — Three backends displayed separately, active one highlighted green, bundled dictionary info, project links section
|
|
893
|
+
|
|
894
|
+
**Project Info Dialog (NEW):**
|
|
895
|
+
- 📋 **File → Project Info...** — New menu item to view comprehensive project information
|
|
896
|
+
- 📊 **Statistics** — Segment counts, word counts, character counts, progress percentage
|
|
897
|
+
- 📁 **Source Files** — Shows original DOCX, memoQ, CafeTran, Trados paths
|
|
898
|
+
- 🔧 **Resources** — Active prompt, TMs, glossaries, spellcheck settings
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
## 📦 Modular Architecture (v1.9.75) - January 2, 2025
|
|
903
|
+
|
|
904
|
+
**Major new feature: Install only the features you need!**
|
|
905
|
+
|
|
906
|
+
- 📦 **Modular Installation System** — Users can now choose which features to install, reducing disk space from ~1.2 GB (full) to ~300 MB (core only). Heavy dependencies like sentence-transformers, chromadb, and PyQt6-WebEngine are now optional.
|
|
907
|
+
- ⚙️ **Settings → Features Tab** — New settings page showing which optional features are installed (✅) vs not installed (❌), with size estimates and pip install commands for each.
|
|
908
|
+
- 🔧 **Feature Manager Module** — New `modules/feature_manager.py` provides `FeatureManager` class, `FEATURE_MODULES` definitions, and lazy import helpers for conditional loading.
|
|
909
|
+
- 📋 **pip Extras Support** — Install specific features with `pip install supervertaler[supermemory,voice,web]` or everything with `pip install supervertaler[all]`.
|
|
910
|
+
|
|
911
|
+
**Installation Options:**
|
|
912
|
+
| Command | Size |
|
|
913
|
+
|---------|------|
|
|
914
|
+
| `pip install supervertaler` | ~300 MB (core) |
|
|
915
|
+
| `pip install supervertaler[supermemory]` | +600 MB |
|
|
916
|
+
| `pip install supervertaler[voice]` | +150 MB |
|
|
917
|
+
| `pip install supervertaler[web]` | +100 MB |
|
|
918
|
+
| `pip install supervertaler[all]` | ~1.2 GB |
|
|
919
|
+
|
|
920
|
+
---
|
|
921
|
+
|
|
922
|
+
## 🔁 Maintenance Update (v1.9.74) - December 31, 2025
|
|
923
|
+
|
|
924
|
+
- 🧹 **Removed in-app Superdocs viewer & generator** — The documentation generator and Qt viewer have been deprecated and removed from the application; official documentation is now hosted on GitBook: https://supervertaler.gitbook.io/superdocs/. The app now directs users to the online Superdocs. Packaging metadata and site links updated accordingly.
|
|
925
|
+
- 📚 **Superdocs tooling docs refreshed** — Expanded the Tools section documentation (TMX Editor, AutoFingers, Supervoice voice commands, Image Extractor) to match the current UI and workflows.
|
|
926
|
+
- 🔍 **Superdocs Superlookup docs refreshed** — Expanded the Superlookup docs (TM search, glossary search, MT, web resources) to match current UI behavior and shortcuts.
|
|
927
|
+
- 🧩 **Superlookup copy/insert fix** — TM/Glossary results now store plain text in table items (while still rendering highlighted rich text), so copy/insert actions work reliably.
|
|
928
|
+
|
|
929
|
+
---
|
|
930
|
+
|
|
931
|
+
## 🌟 Recent Highlights - What's New in Supervertaler
|
|
932
|
+
|
|
933
|
+
**Latest Major Features:**
|
|
934
|
+
|
|
935
|
+
- 📝 **External Prompt Editor Display (v1.9.73)** - External prompts (not in the library) now display in the Prompt Editor panel when loaded or restored from a project. Editor shows name, description, and content fields. Edits can be saved back to the original file (.svprompt files save as JSON, .txt/.md as plain text). Visual indicator shows "📁 External: {name}" to distinguish from library prompts. Projects now correctly display their stored prompts (both external and library) in the editor when loaded.
|
|
936
|
+
- 🔎 **Find & Replace: History, Reusable Sets & Batch Projects (v1.9.73)** - Added a dropdown history to the Find & Replace dialog that stores the last X entries for quick reuse. Users can save a sequence of find/replace operations as a reusable F&R project file, export/import these files, and run them as a batch on future projects. New UI includes a history dropdown, `Save/Load F&R Project` actions, and a `Run F&R Project` batch dialog with preview/dry-run and progress reporting.
|
|
937
|
+
- ⌨️ **Go to Segment Dialog (v1.9.71)** - Improved Ctrl+G shortcut with a minimal, streamlined dialog. Just type the segment number and press Enter - no need to click buttons. Global shortcut now works from anywhere in the application. Input field validates segment numbers and shows current position as placeholder. **Pagination-aware**: automatically switches to the correct page when jumping to segments on other pages. Cursor is placed in the target cell ready to edit.
|
|
938
|
+
- 📄 **Page Up/Down Pagination Navigation (v1.9.69)** - Page Up and Page Down keys now navigate through pagination pages! Press Page Up to go to the previous page, Page Down to go to the next page. Shortcuts appear in Settings → Keyboard Shortcuts under "Grid Navigation" category.
|
|
939
|
+
- 🎨 **memoQ Tag Color as Default (v1.9.68)** - Changed default tag highlight color to memoQ's actual dark red (`#7f0001`), color-picked directly from memoQ. Updated everywhere: grid cells, Translation Results panel, Settings defaults. Added 8 preset colors to the color picker (memoQ red, memoQ orange, Trados blue/purple, etc.). Each CAT tool export preserves its native tag colors (memoQ, Trados, Phrase, CafeTran). Supervertaler's own Bilingual Table export now uses memoQ red. Reset button updated to restore memoQ red.
|
|
940
|
+
- ⚡ **Performance Boost & Cache Fix (v1.9.66)** - Significantly faster segment navigation! Fixed termbase cache not working - empty results were being re-searched on every visit instead of being cached. Reduced verbose logging overhead that was slowing down navigation. Cache now properly stores and respects empty results using membership check (`segment_id in cache`). Removed per-word termbase search logging, per-match logging, prefetch progress logging, and MT/TM debug logging. Navigation should feel much snappier now.
|
|
941
|
+
- 📄 **Working Grid Pagination (v1.9.64)** - Grid pagination now actually works! Previously pagination controls existed but didn't filter the displayed segments. Now when you select "50 per page", only 50 segments are shown at a time. Use First/Prev/Next/Last buttons or type a page number to navigate. Efficient show/hide approach without grid reload for fast page changes.
|
|
942
|
+
- 🔄 **Batch Translate Retry Until Complete (v1.9.64)** - New "🔄 Retry until all segments are translated" option in batch translate dialog (enabled by default). If some segments fail or return empty after the first pass, automatically retries just those segments. Continues until all segments have translations or max 5 retries reached. No more running batch translate 2-3 times manually!
|
|
943
|
+
- 🤖 **Prompt Manager Tab Rename (v1.9.64)** - "Prompts" tab renamed to "Prompt manager" in Project resources for clarity.
|
|
944
|
+
- 📁 **External Prompt Restoration (v1.9.64)** - Fixed external prompts (from outside the library folder) not being restored when loading a project. External prompts are now correctly saved with `[EXTERNAL]` prefix and restored on project load.
|
|
945
|
+
- 🐧 **Linux Stability Fix (v1.9.63)** - Fixed memory access violations (segfaults) that could occur on Linux when clicking in the grid after importing a Trados package. Native code libraries (Hunspell, ChromaDB) can crash on Linux with improper dictionaries. Added safer Hunspell initialization with test spell check, crash detection flag to auto-disable spellcheck if it fails, and protected spellcheck highlighting with try/except. AutoHotkey registration now skipped entirely on Linux/Mac (no more "AutoHotkey not found" warnings). Linux users: if crashes persist, disable spellcheck in Settings or install proper Hunspell dictionaries (`sudo apt install hunspell-pl` for Polish).
|
|
946
|
+
- 🧹 **Dead Code Cleanup (v1.9.62)** - Removed ~230+ lines of deprecated and unused code. Cleaned up: `toggle_sidebar`, `handle_ribbon_action`, `create_toolbar`, `_render_paragraph`, deprecated termview methods, and verbose debug logging. Added missing `spellcheck_settings` field to Project dataclass with proper initialization. Removed unnecessary `hasattr()` checks. AutoFingers UI simplified by removing single-tab QTabWidget wrapper.
|
|
947
|
+
- 🔍 **Tag-Aware TM Matching (v1.9.60)** - Translation Memory fuzzy matching now works regardless of whether segments contain formatting tags! Searches both with and without tags, so `<b>Hello</b>` matches `Hello` in your TM. Similarity calculation also strips tags before comparing, giving accurate match percentages. Added `<li-b>` and `<li-o>` list item tags to TMX Tag Cleaner. Removed unused TMX Manager tab from AutoFingers - Import from TM button now in Control Panel.
|
|
948
|
+
- 🧹 **TMX Tag Cleaner (v1.9.59)** - New tag cleaning function in TMX Editor and main application! Access via Edit → Bulk Operations → Clean Tags, or the 🧹 Clean Tags toolbar button in TMX Editor. Select which tags to clean (formatting, TMX/XLIFF inline, memoQ, Trados, generic XML), choose replacement (remove or replace with space), and scope (source, target, or both). Cleans ALL languages in TMX regardless of display, not just visible pair. Handles both literal `<b>` and XML-escaped `<b>` tags. TMX Editor language dropdowns now correctly default to different languages (source→target, not source→source). AutoHotkey setup dialog now has "Do not show again" checkbox.
|
|
949
|
+
- 🏠 **Flattened Tab Structure (v1.9.57)** - Simplified main navigation from nested tabs to flat structure. The old "Workspace → Editor / Resources" hierarchy is now: **Project editor** | **Project resources** | **Tools** | **Settings**. All four tabs are now at the top level for easier navigation. Capitalization follows lowercase style for subtabs (e.g., "Project editor" not "Project Editor").
|
|
950
|
+
- ✏️ **Glossary Renaming (v1.9.56)** - Right-click on any glossary in Project resources → Glossaries tab to rename it. Previously, editing the name in the UI appeared to work but didn't actually save to the database. Now uses proper rename dialog with database persistence. Name column is no longer misleadingly editable inline.
|
|
951
|
+
- ⚡ **Lightning-Fast Filtering (v1.9.55)** - Filter operations (Ctrl+Shift+F) now run instantly instead of taking ~12 seconds! Optimized to avoid grid reload - only shows/hides rows and applies yellow highlights. **Ctrl+Shift+F toggle**: press once to filter on selected text, press again to clear the filter. Clear filter also listed separately in keyboard shortcuts for discoverability.
|
|
952
|
+
- 📋 **Superlookup Termbase Enhancements (v1.9.53)** - Improved Glossaries tab with additional metadata columns: Glossary name, Domain, Notes. Full metadata in results including priority, project, client, forbidden status. Tooltips show full content on hover.
|
|
953
|
+
- 📥 **Glossary Import Progress Dialog (v1.9.53)** - Real-time progress dialog when importing glossaries from TSV files. Visual progress bar, live statistics (✅ imported, ⏭️ skipped, ❌ errors), scrolling log window with color-coded entries.
|
|
954
|
+
- 🌐 **Superlookup Web Resources (v1.9.52)** - Expanded web resources tab with 14 reference sites! New resources: Juremy, michaelbeijer.co.uk, AcronymFinder, BabelNet, Wiktionary (Source & Target). Persistent login sessions with cookies stored in `user_data/web_cache/`. Auto-select language pair from project on load. Compact single-line search layout. Settings checkboxes control sidebar button visibility.
|
|
955
|
+
- 🔍 **Superlookup MT Integration (v1.9.51)** - Complete Machine Translation integration in Superlookup! Search now returns results from Google Translate, Amazon Translate, DeepL, Microsoft Translator, ModernMT, and MyMemory. MT provider status display shows active/disabled/missing API key providers with "⚙️ Configure in Settings" link. Error messages now shown in red with details (no more silent failures). Fixed language name mapping: "Dutch" → "nl", "English" → "en" for all MT providers. Added boto3 and deepl to requirements.txt. Removed debug print spam. Termbases tab now has search filter and split-view with editable terms grid.
|
|
956
|
+
- 🎤 **Voice Commands System (v1.9.50)** - Complete hands-free translation with Talon-style voice commands! Say "next segment", "confirm", "source to target", "translate", and more. **Always-On Listening Mode** with VAD (Voice Activity Detection) - no need to press F9. Dual recognition engines: **OpenAI Whisper API** (recommended, fast & accurate) or local Whisper model. New grid toolbar button (🎧 Voice ON/OFF) for easy toggle. Status bar indicator shows listening/recording/processing state. AutoHotkey integration for controlling external apps (memoQ, Trados, Word) by voice. Custom voice commands with fuzzy matching. Configure in Tools → Supervoice tab.
|
|
957
|
+
- 🎤 **Always-On Listening (v1.9.49)** - VAD-based continuous listening eliminates pressing F9 twice. Automatically detects speech, records, transcribes, and processes as command or dictation. Configurable mic sensitivity (Low/Medium/High). Visual feedback: 🟢 Listening → 🔴 Recording → ⏳ Processing. F9 stops always-on mode if active.
|
|
958
|
+
- 🎤 **Talon-Style Voice Commands (v1.9.48)** - 3-tier voice command architecture: Internal commands (control Supervertaler), System commands (AutoHotkey for other apps), Dictation fallback. Built-in commands: navigation, editing, translation, lookup. Custom command editor with phrase, aliases, and action configuration.
|
|
959
|
+
- 🧹 **Code Cleanup (v1.9.47)** - Removed ~811 lines of dead Document View code. The Document View feature was never used in production - the Grid View (Editor) is the primary and only workflow. Cleanup includes: removed `LayoutMode` class, removed `create_editor_widget()`, `create_document_view_widget()`, `refresh_document_view()` and all related helper methods. File reduced from 35,249 to 34,438 lines. No functional changes.
|
|
960
|
+
- 🏠 **Workspace UI Redesign (v1.9.46)** - Cleaner tab hierarchy with renamed tabs: **Workspace** (main tab) containing **Editor** (the grid) and **Resources** (TM, Termbases, Prompts, etc.). Removed Document View (unused). Simplified navigation menu. Fixed critical bug where termbase matches showed terms from non-activated termbases.
|
|
961
|
+
- 🏷️ **Termbase Highlight Styles (v1.9.45)** - Three configurable styles for termbase matches in the translation grid: **Background** (default pastel green shades), **Dotted Underline** (priority-based colors: red for P1, grays for P2-3, customizable for P4+), and **Semibold** (bold weight with tinted foreground). Configure via Settings → View Settings. Auto-spellcheck for target language: spellcheck now automatically initializes to project target language on import/load. Fixed short language codes (nl, de, fr) not mapping to dictionaries.
|
|
962
|
+
- 📚 **UI Reorganization (v1.9.44)** - Prompt Manager moved under Project Resources tab (prompts are project resources). Superlookup hotkey script now shows Supervertaler icon in system tray. Fixed termbase import "Could not find termbase ID" error. Removed dotted focus outline from Superlookup Search button.
|
|
963
|
+
- 🔑 **Superlookup Hotkey Improvements (v1.9.43)** - Fixed Ctrl+Alt+L global hotkey not bringing Superlookup to foreground. Added AutoHotkey setup helper (Help → Setup AutoHotkey for Superlookup). New AutoHotkey path configuration in Settings → General Settings. Better error handling when AutoHotkey is not installed.
|
|
964
|
+
- 📁 **Multi-File Project Support (v1.9.42)** - Import entire folders of files as a single multi-file project! File → Import → Folder (Multiple Files) supports DOCX and TXT files. Per-file progress tracking in View → File Progress dialog (or click status bar). New file filter dropdown to show segments from specific files. Status bar shows completion progress across all files. Source files automatically backed up to `_source_files/` folder. Relocate Source Folder feature to fix broken paths. Export to folder with TXT, DOCX, or Bilingual Table formats (export in progress - basic functionality available).
|
|
965
|
+
- 🔍 **Superlookup Fixes (v1.9.42)** - Renamed `UniversalLookupTab` to `SuperlookupTab` for consistency. Fixed `theme_manager` attribute error when using Ctrl+Alt+L hotkey. Theme-aware search term highlighting now works properly.
|
|
966
|
+
- 📋 **Spellcheck Info Dialog Redesign (v1.9.42)** - Two-column horizontal layout fits on screen without scrolling. Clear explanation of auto-switching between built-in pyspellchecker and Hunspell backends. Compact diagnostics section.
|
|
967
|
+
- 🌙 **Dark Mode (v1.9.41)** - Complete dark theme implementation with proper styling across the entire application. Dark compare boxes in Translation Results panel, dark Termview with visible text for non-matched words, and consistent theming throughout all UI components. Switch themes via View → Theme Editor.
|
|
968
|
+
- 🔍 **Superlookup Unified Concordance System (v1.9.40)** - Major consolidation: Ctrl+K now opens Superlookup instead of a separate concordance dialog. All lookup resources in one place: TM concordance, Termbase matches, Supermemory semantic search, Machine Translation, and Web Resources. New dual-view toggle: Horizontal (table) or Vertical (list) layout. Tab reorganization: "Project Resources" now comes before "Prompt Manager". Removed redundant tabs from Translation Memories (Concordance and Import/Export - functionality already available in Superlookup and TM List). FTS5 full-text search now properly used for blazingly fast concordance on millions of segments.
|
|
969
|
+
- 🔍 **Superlookup Multilingual Search (v1.9.39)** - Complete overhaul of Superlookup with multilingual language filtering. New From/To language dropdowns filter TM and termbase searches by source/target language pair. Search direction radio buttons (Both/Source only/Target only) for precise concordance searches. Yellow highlighting of search terms in results. Compact results display with tooltips for full text. Languages auto-populate from your TMs and termbases, grouped alphabetically by language family. UI cleanup: removed Manual Capture button and Operating Modes selector.
|
|
970
|
+
- 📁 **Improved Project File Format (v1.9.38)** - `.svproj` files now have all metadata at the top (name, languages, dates, settings, paths) with segments at the end for easier inspection in text editors. Added helpful tip in batch translate warning about using Select All + Clear Target instead of re-importing.
|
|
971
|
+
- 🔤 **User-Configurable Grid Fonts (v1.9.37)** - Choose your preferred font family for the translation grid from 10 popular options. Live preview shows font changes in real-time with sample source/target text and tags. Font family now persists between sessions.
|
|
972
|
+
- 🎨 **Universal Tag Coloring (v1.9.36)** - All CAT tool tags now highlighted in pink: memoQ `{1}`, `[2}`, Trados `<1>`, `</1>`, Phrase `{1}`, and HTML `<b>`, `<i>`. CafeTran pipe symbols only red in CafeTran projects (bug fix).
|
|
973
|
+
- 🎨 **memoQ Red Tags Support (v1.9.35)** - Fixed memoQ bilingual export not preserving red tag color. Tags in the target column now correctly inherit the red/magenta color from the source column, ensuring perfect formatting for memoQ re-import.
|
|
974
|
+
- 🎨 **UI Fixes (v1.9.34)** - Replaced all standard radio buttons with green-themed CheckmarkRadioButton.
|
|
975
|
+
- 🐛 **Spellcheck Update Fix (v1.9.33)** - Fixed issue where adding/ignoring words only removed underline in the current cell. Now triggers instant global refresh of all highlighters across the entire grid. No more false positive red underlines after you've whitelisted a word
|
|
976
|
+
|
|
977
|
+
- 📦 **Trados SDLRPX Status Fix (v1.9.32)** - Fixed critical bug where exported SDLRPX return packages kept segments in "Draft" status instead of updating to "Translated". Trados Studio now correctly recognizes translated segments. Client deliverables no longer show as MT draft content
|
|
978
|
+
|
|
979
|
+
- 🔤 **Spellcheck Language Fix (v1.9.31)** - Spellcheck now correctly uses the project's target language instead of defaulting to English. Added language dropdown in Spellcheck Info dialog to manually change spellcheck language. Language changes take effect immediately with highlighting refresh
|
|
980
|
+
- 🐛 **Critical LLM Fix (v1.9.30)** - Fixed OpenAI/LLM translation failing with "No such file or directory" error. Removed hardcoded debug file path that prevented translation when running from non-development directories
|
|
981
|
+
- 📝 **Spellcheck Integration (v1.9.29)** - Built-in spellcheck for target language. Works out of the box with pyspellchecker (8 languages bundled). Optional Hunspell support for more languages. Red wavy underlines for misspelled words. Right-click for suggestions, Add to Dictionary, Ignore. Custom dictionary with persistent word list. Spellcheck state saved per-project in .svproj files. Button state persists across restarts
|
|
982
|
+
- 📄 **Phrase (Memsource) Bilingual DOCX Support (v1.9.28)** - Full round-trip support for Phrase TMS bilingual DOCX files. Import preserves inline tags like `{1}`, `{1>text<1}`. Export writes translations back to Column 5 for seamless return to Phrase workflow. File → Import → Phrase (Memsource) Bilingual (DOCX) and File → Export → Phrase (Memsource) Bilingual
|
|
983
|
+
- 👁️ **Show Invisibles Feature (v1.9.28)** - Display invisible characters in the translation grid: spaces (·), tabs (→), non-breaking spaces (°), and line breaks (¶). Dropdown menu with granular control for each character type. Toggle All option. Smart handling preserves copy/paste (Ctrl+C copies original characters), double-click word selection, and Ctrl+Arrow word navigation. Configurable symbol color in Settings → View Settings
|
|
984
|
+
- 📄 **Simple Text File Import/Export (v1.9.27)** - Import simple text files where each line becomes a source segment. Translate with AI, then export a matching file with translations. Perfect for line-by-line translation of plain text content. Language pair selection, encoding options (UTF-8, Latin-1, etc.), and empty line handling. File → Import → Simple Text File (TXT) and File → Export → Simple Text File - Translated (TXT)
|
|
985
|
+
- 📦 **SDLPPX Project Persistence (v1.9.20)** - SDLPPX package path now saved in .svproj files. Full round-trip workflow persists across sessions - import SDLPPX, translate, save project, close, reopen, continue translating, export SDLRPX. Fixed export bug that showed "0 translations updated". Handler automatically restored on project load
|
|
986
|
+
- 📦 **Trados Studio Package Support (v1.9.19)** - Import SDLPPX packages directly from Trados Studio project managers. New File → Import → Trados Studio submenu with Package (SDLPPX) option. Translates SDLXLIFF files within the package, preserves SDL-specific markup and segment IDs. Export as SDLRPX return package (File → Export → Trados Studio → Return Package) for seamless delivery back to Trados users. Full round-trip workflow for freelance translators receiving packages
|
|
987
|
+
- 🔍 **Supermemory Concordance Integration (v1.9.18)** - Concordance Search (Ctrl+K) now includes Supermemory semantic search with two-tab interface. TM Matches tab for exact text search, Supermemory tab for meaning-based search. Active checkbox column in Supermemory to control which TMs are searched. Fixed Trados bilingual DOCX round-trip issues (xml:space, language settings). Supermemory moved to Resources tab
|
|
988
|
+
- 🧠 **Supermemory Enhancements (v1.9.17)** - Complete domain management system for translation memories with domain categorization (Legal, Medical, Patents, etc.), multi-language filtering in search, integration with Superlookup for unified lookup, and TMX/CSV export. Color-coded domain tags, dynamic column headers showing actual languages, and professional search/filter interface
|
|
989
|
+
- 🖥️ **Local LLM Support - Ollama (v1.9.16)** - Run AI translation entirely on your computer with no API costs, complete privacy, and offline capability. New "Local LLM (Ollama)" provider option in Settings with automatic hardware detection and model recommendations. Supports qwen2.5 (3B/7B/14B), llama3.2, mistral, and gemma2 models. Built-in setup wizard guides installation and model downloads. See FAQ for setup instructions
|
|
990
|
+
- 📋 **Bilingual Table Export/Import (v1.9.15)** - New Supervertaler Bilingual Table format for review workflows. Export menu options: **"Bilingual Table - With Tags (DOCX)"** preserves Supervertaler formatting tags for re-import after review. **"Bilingual Table - Formatted (DOCX)"** applies formatting (bold/italic/underline, bullet markers) for client-ready output. Tables include segment number, source, target, status, and notes columns. **"Import Bilingual Table"** compares edited DOCX with current project, shows diff preview, and applies changes. Document title links to supervertaler.com
|
|
991
|
+
- 📤 **Improved DOCX Export & Keyboard Navigation (v1.9.14)** - Fixed DOCX export to properly handle formatting tags (`<b>`, `<i>`, `<u>`) and convert them to actual Word formatting. Export now handles multi-segment paragraphs with partial replacement. Added cleanup for Unicode replacement characters (U+FFFC). Ctrl+Home/End now properly navigate to first/last segment even when editing in grid cells
|
|
992
|
+
- 📄 **Document Preview & List Tags (v1.9.13)** - New Preview tab shows formatted document view with headings, paragraphs, and list formatting. Click any text to navigate to that segment. Distinct list tags: `<li-o>` for ordered/numbered lists (1. 2. 3.) and `<li-b>` for bullet points (•). DOCX import now properly detects bullet vs numbered lists from Word's numbering XML. Type column shows `¶` for continuation paragraphs instead of `#`
|
|
993
|
+
- 📊 **Progress Indicator Status Bar (v1.9.12)** - New permanent status bar showing real-time translation progress: Words translated (X/Y with percentage), Confirmed segments (X/Y with percentage), and Remaining segments count. Color-coded: red (<50%), orange (50-80%), green (>80%). Updates automatically as you work
|
|
994
|
+
- ⚡ **Navigation & Find/Replace Improvements (v1.9.11)** - Ctrl+Home/End to jump to first/last segment. Find/Replace dialog now pre-fills selected text from source or target grid. Ctrl+Q shortcut for instant term pair saving (remembers last-used termbase from Ctrl+E dialog)
|
|
995
|
+
- 🔧 **Non-Translatables: Case-Sensitive & Full-Word Matching (v1.9.11)** - Non-translatables matching is now case-sensitive by default and only matches full words (not partial words). Added LLM refusal detection with helpful error messages for batch translation. Fixed crash when closing project (missing stop_termbase_batch_worker). Fixed .svprompt files not showing in Prompt Library tree
|
|
996
|
+
- 🔧 **TM Search Fixes & Language Matching (v1.9.10)** - Fixed TM matches not appearing in Translation Results panel. Added flexible language matching ("Dutch", "nl", "nl-NL" all match). TM metadata manager now initializes with project load. Removed legacy Project TM/Big Mama hardcoding. Cleaned public database for new users. Non-Translatables: sortable columns, right-click delete, Delete key support
|
|
997
|
+
- 🎨 **memoQ-style Alternating Row Colors (v1.9.9)** - Grid now displays alternating row colors across all columns (ID, Type, Source, Target) like memoQ. User-configurable colors in Settings → View Settings with even/odd row color pickers. Colors are consistent across the entire row including QTextEdit widgets
|
|
998
|
+
- 🔄 **CafeTran Integration & Editor Shortcuts (v1.9.8)** - Full CafeTran bilingual DOCX support with pipe symbol formatting. New Ctrl+Shift+S copies source to target. Ctrl+, inserts pipe symbols for CafeTran. Pipes highlighted in red/bold. Sortable keyboard shortcuts table. Batch size default changed to 20
|
|
999
|
+
- 🔄 **CafeTran Bilingual DOCX Support (v1.9.7)** - Full import/export support for CafeTran bilingual DOCX files. Import preserves pipe symbol formatting markers. Export writes translations back with formatting preserved. Round-trip workflow for CafeTran users
|
|
1000
|
+
- 📁 **Custom File Extensions & Monolingual Export (v1.9.6)** - New branded file extensions: `.svproj` (projects), `.svprompt` (prompts), `.svntl` (non-translatables). All formats maintain backward compatibility. Monolingual DOCX import now prompts for language pair. New "Target Only (DOCX)" export preserves original document structure (tables, formatting). Original DOCX path saved in project files for reliable exports
|
|
1001
|
+
- 📤 **Send Segments to TM & memoQ Tag Shortcuts (v1.9.5)** - Bulk send translated segments to TMs via Edit > Bulk Operations. Filter by status (Translated, Reviewed, etc.) and scope. New Ctrl+, shortcut inserts memoQ tags pairs or wraps selection. Tab renamed to "Resources"
|
|
1002
|
+
- 🏷️ **Tag-Based Formatting System (v1.9.4)** - Complete inline formatting support for memoQ bilingual files. Import preserves bold/italic/underline as `<b>`, `<i>`, `<u>` tags. Toggle between WYSIWYG and Tag view with Ctrl+Alt+T. Ctrl+B/I/U shortcuts to apply formatting. AI translation preserves tags. Export converts tags back to Word formatting
|
|
1003
|
+
- 📋 **Session Log Tab & TM Defaults Fix (v1.9.3)** - Added Session Log tab to bottom panel for easy access to log messages. Fixed TM Read/Write checkbox defaults to respect project.json settings
|
|
1004
|
+
- ⚙️ **Superlookup Settings UI (v1.9.2)** - Redesigned Settings tab with sub-tabs for TM/Termbase/MT/Web resources. Proper 18x18px checkboxes with green background and white checkmarks matching standard Supervertaler style. Each resource type has dedicated full-height space for easy selection
|
|
1005
|
+
- ↩️ **Undo/Redo for Grid Edits (v1.9.1)** - Full undo/redo support for grid editing operations with Ctrl+Z/Ctrl+Y. Tracks target text changes, status changes, and find/replace operations with 100-level history
|
|
1006
|
+
- 🔍 **Termview - Inline Terminology (v1.9.0)** - Visual inline terminology display showing source words with translations underneath, inspired by RYS Trados plugin. Supports multi-word terms, click-to-insert, hover tooltips, and terms with punctuation like "gew.%"
|
|
1007
|
+
- 🎨 **UI Refinements - Tab Styling (v1.8.0)** - Refined selected tab appearance with subtle 1px blue underline and light background highlighting for cleaner visual design
|
|
1008
|
+
- ✅ **Simplified TM/Termbase System (v1.6.6)** - Redesigned with Read/Write checkboxes, auto-priority system, removed complex Active/Project concepts for clearer workflow
|
|
1009
|
+
- 🔍 **Find/Replace & TM Enhancements (v1.7.9)** - Fixed highlighting, disabled TM saves during navigation, added bidirectional TM search with language variant matching
|
|
1010
|
+
- 🔍 **Filter Highlighting Fix (v1.7.8)** - Fixed search term highlighting in source/target filter boxes using widget-internal highlighting
|
|
1011
|
+
- 🎯 **Termbase Display Customization (v1.7.7)** - User-configurable termbase match sorting and filtering for cleaner translation results
|
|
1012
|
+
- 💾 **Auto Backup System (v1.7.6)** - Automatic project.json and TMX backups at configurable intervals to prevent data loss
|
|
1013
|
+
- 🐛 **Critical TM Save Bug Fix (v1.7.5)** - Fixed massive unnecessary database writes during grid operations that caused 10+ second freezes
|
|
1014
|
+
- 💾 **Project Persistence (v1.7.4)** - Projects now remember your primary prompt and image context folder
|
|
1015
|
+
- 🧪 **Prompt Preview & System Template Editor (v1.7.3)** - Preview combined prompts with figure context detection and improved system template editor with better layout
|
|
1016
|
+
- 🔧 **Termbase Critical Fixes (v1.7.2)** - Fixed term deduplication and termbase selection issues
|
|
1017
|
+
- 🎨 **Termbase UI Polish (v1.7.1)** - Improved visual consistency with pink highlighting for project termbases and real-time term count updates
|
|
1018
|
+
- 📚 **Project Termbases (v1.7.0)** - Dedicated project-specific terminology with automatic extraction and pink highlighting
|
|
1019
|
+
- 📁 **File Dialog Memory (v1.6.5)** - File dialogs remember your last used directory for improved workflow
|
|
1020
|
+
- 🌐 **Superbrowser (v1.6.4)** - Multi-chat AI browser with ChatGPT, Claude, and Gemini side-by-side in one window
|
|
1021
|
+
- ⚡ **UI Responsiveness & Precision Scroll (v1.6.3)** - Debug settings, disabled LLM auto-matching, memoQ-style precision scroll buttons, auto-center active segment
|
|
1022
|
+
- 🖼️ **Superimage (v1.6.2)** - Extract images from DOCX files with preview and auto-folder management
|
|
1023
|
+
- 📚 **Enhanced Termbase System (v1.6.1)** - Extended metadata with notes, project, client fields and refresh functionality
|
|
1024
|
+
- 📚 **Complete Termbase System (v1.6.0)** - Professional terminology management with interactive features
|
|
1025
|
+
- 🎤 **Supervoice (v1.4.0)** - AI voice dictation with OpenAI Whisper, 100+ languages, F9 hotkey
|
|
1026
|
+
- 📊 **Superbench (v1.4.1)** - Benchmark LLM translation quality on YOUR actual projects with chrF++ scoring
|
|
1027
|
+
- 🤖 **AI Assistant (v1.3.4)** - ChatGPT-quality conversational prompt refinement built into the editor
|
|
1028
|
+
- 📚 **Unified Prompt Library (v1.3.0)** - Unlimited folders, favorites, multi-attach, quick run
|
|
1029
|
+
- 📝 **TMX Editor (v1.1.3)** - Database-backed editor handles massive 1GB+ TMX files
|
|
1030
|
+
- ✋ **AutoFingers (v1.2.4)** - Automated TMX-to-memoQ pasting with fuzzy matching and tag cleaning
|
|
1031
|
+
- 📄 **PDF Rescue** - AI OCR with GPT-4 Vision transforms locked PDFs into clean DOCX
|
|
1032
|
+
- 🖼️ **Image Context** - Multimodal AI automatically includes images when translating technical documents
|
|
1033
|
+
- 💾 **Translation Memory** - Fuzzy matching with TMX import/export, auto-propagation
|
|
1034
|
+
- 🔄 **CAT Tool Integration** - memoQ, Trados, CafeTran bilingual table support
|
|
1035
|
+
|
|
1036
|
+
**See full version history below** ↓
|
|
1037
|
+
|
|
1038
|
+
---
|
|
1039
|
+
|
|
1040
|
+
## [1.9.41] - December 16, 2025
|
|
1041
|
+
|
|
1042
|
+
### 🌙 Dark Mode - Complete Theme Implementation
|
|
1043
|
+
|
|
1044
|
+
**Full dark theme support across the entire application:**
|
|
1045
|
+
- 🎨 **Compare Boxes**: Translation Results panel now properly displays dark backgrounds for Current Source, TM Source, and TM Target boxes in dark mode
|
|
1046
|
+
- 📝 **Termview Visibility**: All words in Termview pane now visible in dark mode - not just terms with matches. Non-matched words use light text color on dark background
|
|
1047
|
+
- 🔄 **Theme Consistency**: Fixed Qt styling issues where hidden widgets weren't receiving theme updates. Theme colors now applied when widgets become visible
|
|
1048
|
+
- ⚡ **Reliable Styling**: Uses both stylesheet and QPalette approaches for maximum compatibility across different Qt rendering scenarios
|
|
1049
|
+
|
|
1050
|
+
**Technical improvements:**
|
|
1051
|
+
- Added `_apply_compare_box_theme()` method for reliable theme application on visibility
|
|
1052
|
+
- Theme-aware `TermBlock` and `NTBlock` classes in Termview widget
|
|
1053
|
+
- Proper color inheritance for all UI components in dark mode
|
|
1054
|
+
|
|
1055
|
+
**Access Dark Mode:** View → Theme Editor → Select "Dark" theme
|
|
1056
|
+
|
|
1057
|
+
---
|
|
1058
|
+
|
|
1059
|
+
## [1.9.40] - December 12, 2025
|
|
1060
|
+
|
|
1061
|
+
### 🔍 Superlookup Unified Concordance System
|
|
1062
|
+
|
|
1063
|
+
**Major consolidation - Ctrl+K now opens Superlookup instead of separate dialog:**
|
|
1064
|
+
- 🔗 **Unified Lookup Hub**: All concordance searches now go through Superlookup - one place for TM, Termbase, Supermemory, MT, and Web Resources
|
|
1065
|
+
- ⌨️ **Ctrl+K Integration**: Pressing Ctrl+K in Project Editor navigates to Tools → Superlookup and auto-searches selected text
|
|
1066
|
+
- 📝 **Selected Text Auto-Fill**: Any text selected in source/target automatically populates the search field
|
|
1067
|
+
|
|
1068
|
+
**Dual-view toggle for TM Matches tab:**
|
|
1069
|
+
- 📊 **Horizontal (Table)**: Source | Target columns side-by-side - compact and scannable
|
|
1070
|
+
- 📜 **Vertical (List)**: Dutch: ... / English: ... stacked format - traditional concordance layout with more detail
|
|
1071
|
+
- 🔄 **Radio Button Toggle**: Switch between views instantly, results update in both views
|
|
1072
|
+
|
|
1073
|
+
**UI/Tab reorganization:**
|
|
1074
|
+
- 📚 **"Resources" → "Project Resources"**: Clearer naming for the resources tab
|
|
1075
|
+
- 🔀 **Tab Reorder**: Project Resources now comes BEFORE Prompt Manager (more logical flow)
|
|
1076
|
+
- 🧹 **Removed Redundant Tabs**: Translation Memories no longer has Concordance or Import/Export tabs (functionality in Superlookup and TM List)
|
|
1077
|
+
- 📦 **Compact Source Text**: Superlookup source text box shrunk from 100px to 50px
|
|
1078
|
+
- 📚 **"Termbase Terms" → "Termbase Matches"**: Consistent naming
|
|
1079
|
+
|
|
1080
|
+
**FTS5 Full-Text Search optimization:**
|
|
1081
|
+
- ⚡ **Concordance now uses FTS5**: `concordance_search()` now uses SQLite FTS5 MATCH instead of slow LIKE queries
|
|
1082
|
+
- 🚀 **100-1000x faster** on large databases with millions of segments
|
|
1083
|
+
- 🔄 **Auto-sync**: FTS5 index automatically rebuilt if out of sync with main table
|
|
1084
|
+
- 🔧 **Manual rebuild**: New `rebuild_fts_index()` method available for maintenance
|
|
1085
|
+
|
|
1086
|
+
**ChromaDB stability fix:**
|
|
1087
|
+
- 🐛 **Fixed Rust backend crashes**: Removed all `collection.count()` calls that caused native crashes in ChromaDB 1.3.x
|
|
1088
|
+
- 📊 **Uses metadata count**: Stats now derived from SQLite metadata instead of ChromaDB collection queries
|
|
1089
|
+
- ✅ **ChromaDB 0.6.3**: Stable version with Python backend, compatible with tokenizers 0.22.0
|
|
1090
|
+
|
|
1091
|
+
---
|
|
1092
|
+
|
|
1093
|
+
## [1.9.39] - December 11, 2025
|
|
1094
|
+
|
|
1095
|
+
### 🔍 Superlookup Multilingual Search
|
|
1096
|
+
|
|
1097
|
+
**Multilingual language filtering for TM and termbase searches:**
|
|
1098
|
+
- 🌍 **From/To Language Dropdowns**: New filter dropdowns in Superlookup search bar to filter by source/target language pair
|
|
1099
|
+
- 🔄 **Swap Button**: Quick ↔ button to swap From and To language selections
|
|
1100
|
+
- 📚 **Auto-Population**: Languages auto-populate from your TMs and termbases when tab is first viewed
|
|
1101
|
+
- 🔤 **Smart Sorting**: Languages alphabetically sorted with family grouping (all Dutch variants together, all English variants together, etc.)
|
|
1102
|
+
- 🏷️ **Clear Display**: Format shows "English (en)", "Dutch (nl-BE)" for clarity and uniqueness
|
|
1103
|
+
|
|
1104
|
+
**Search direction controls:**
|
|
1105
|
+
- ↔️ **Both**: Bidirectional search (searches source and target columns)
|
|
1106
|
+
- → **Source only**: Search only in source text
|
|
1107
|
+
- ← **Target only**: Search only in target text
|
|
1108
|
+
|
|
1109
|
+
**UI improvements:**
|
|
1110
|
+
- 🟡 **Yellow Highlighting**: Search terms now highlighted in yellow in TM and termbase results
|
|
1111
|
+
- 📏 **Compact Display**: Results use word wrap with 60px max row height, tooltips show full text on hover
|
|
1112
|
+
- 🔢 **Hidden Row Numbers**: Cleaner display without row number column
|
|
1113
|
+
- 🧹 **Removed Manual Capture**: Button was redundant (just paste text manually)
|
|
1114
|
+
- 🧹 **Removed Operating Modes**: Dropdown was pointless (only Universal mode was used)
|
|
1115
|
+
|
|
1116
|
+
---
|
|
1117
|
+
|
|
1118
|
+
## [1.9.38] - December 11, 2025
|
|
1119
|
+
|
|
1120
|
+
### 📁 Project File & UX Improvements
|
|
1121
|
+
|
|
1122
|
+
**Reorganized .svproj file structure for human readability:**
|
|
1123
|
+
- 📄 **Metadata First**: Project name, languages, dates, ID now at the top of the file
|
|
1124
|
+
- ⚙️ **Settings Next**: Prompt, TM, termbase, spellcheck settings follow metadata
|
|
1125
|
+
- 📂 **Paths Then**: Source file paths (DOCX, memoQ, Trados, etc.) before segments
|
|
1126
|
+
- 📝 **Segments Last**: Translation content at the end for easy scrolling in text editors
|
|
1127
|
+
|
|
1128
|
+
**Improved batch translate warning for memoQ files:**
|
|
1129
|
+
- 💡 Added tip: "You can clear all targets without re-importing" with instructions to use Select All + Clear Target from right-click menu
|
|
1130
|
+
- Saves users from having to go back to memoQ to clean the file
|
|
1131
|
+
|
|
1132
|
+
---
|
|
1133
|
+
|
|
1134
|
+
## [1.9.37] - December 11, 2025
|
|
1135
|
+
|
|
1136
|
+
### 🔤 User-Configurable Grid Fonts
|
|
1137
|
+
|
|
1138
|
+
**New font customization options in Settings → View Settings:**
|
|
1139
|
+
- 🔤 **Font Family Dropdown**: Choose from 10 popular fonts: Calibri, Segoe UI, Arial, Consolas, Verdana, Times New Roman, Georgia, Courier New, Tahoma, Trebuchet MS
|
|
1140
|
+
- 👁️ **Live Preview**: Real-time preview showing sample source/target text with tags, updates instantly as you change font settings
|
|
1141
|
+
- 💾 **Font Persistence**: Font family now saved to preferences and restored on startup (previously only font size was saved)
|
|
1142
|
+
- 🎯 **Improved Spinbox**: Fixed font size spinner up/down arrows with better click targets
|
|
1143
|
+
- 📝 **Contact Note**: Info text now includes "If your favourite font is missing, contact the developer!"
|
|
1144
|
+
|
|
1145
|
+
---
|
|
1146
|
+
|
|
1147
|
+
## [1.9.36] - December 10, 2025
|
|
1148
|
+
|
|
1149
|
+
### 🎨 Universal Tag Coloring
|
|
1150
|
+
|
|
1151
|
+
**All CAT tool tags now highlighted in pink in the translation grid:**
|
|
1152
|
+
- 🏷️ **memoQ Tags**: `{1}`, `[2}`, `{3]`, `[4]` - all variations now colored pink
|
|
1153
|
+
- 🏷️ **Trados Tags**: `<1>`, `</1>` - numeric tags now colored pink
|
|
1154
|
+
- 🏷️ **Phrase Tags**: `{1}`, `{2}` - same as memoQ, now colored pink
|
|
1155
|
+
- 🏷️ **HTML Tags**: `<b>`, `<i>`, `<u>`, `<li-o>` - already worked, still works
|
|
1156
|
+
|
|
1157
|
+
**CafeTran Pipe Symbol Fix:**
|
|
1158
|
+
- 🐛 **Bug Fix**: Pipe symbols (`|`) were incorrectly highlighted red in ALL project types
|
|
1159
|
+
- ✅ **Fixed**: Pipes now only red in CafeTran projects (as intended)
|
|
1160
|
+
- 🔧 **Implementation**: Added `TagHighlighter._is_cafetran_project` class flag
|
|
1161
|
+
|
|
1162
|
+
---
|
|
1163
|
+
|
|
1164
|
+
## [1.9.35] - December 10, 2025
|
|
1165
|
+
|
|
1166
|
+
### 🎨 formatting
|
|
1167
|
+
- **memoQ Red Tags**: Fixed issue where red formatting tags (e.g. `{1}`) in memoQ bilingual files were being exported as black text.
|
|
1168
|
+
- **Smart Color Transfer**: Export now dynamically reads the source column color and applies it to the corresponding text in the target column.
|
|
1169
|
+
|
|
1170
|
+
## [1.9.34] - December 10, 2025
|
|
1171
|
+
|
|
1172
|
+
### 🎨 UI Fixes
|
|
1173
|
+
|
|
1174
|
+
**Checkmark Radio Buttons:**
|
|
1175
|
+
- 🎨 **Global Update**: Replaced all standard `QRadioButton` instances across the application with the custom green `CheckmarkRadioButton`.
|
|
1176
|
+
- ✅ **Updated Areas**: Find & Replace, Advanced Filters, Row Locking, Termbase Import, AutoFingers, and TM Import dialogs.
|
|
1177
|
+
- 💅 **Visual Consistency**: Ensures a uniform look and feel across all green-themed UI elements.
|
|
1178
|
+
|
|
1179
|
+
---
|
|
1180
|
+
|
|
1181
|
+
## [1.9.32] - December 10, 2025
|
|
1182
|
+
|
|
1183
|
+
### 📦 Trados SDLRPX Status Fix
|
|
1184
|
+
|
|
1185
|
+
**Critical Bug Fix for Trados Return Packages:**
|
|
1186
|
+
- 🔧 **Status Update Fix**: SDLRPX export now correctly updates segment confirmation status from "Draft" to "Translated"
|
|
1187
|
+
- ✅ **Proper Trados Recognition**: Trados Studio now recognizes segments as translated, not machine translation drafts
|
|
1188
|
+
- 📤 **Client Deliverables**: Return packages display correctly in Trados when client opens them
|
|
1189
|
+
- 🏷️ **conf Attribute**: Fixed missing update of `conf` attribute in SDLXLIFF `<sdl:seg>` elements
|
|
1190
|
+
|
|
1191
|
+
**Technical Details:**
|
|
1192
|
+
- Added `_update_segment_status()` method to `sdlppx_handler.py`
|
|
1193
|
+
- Updates `conf` attribute in `sdl:seg-defs` section during export
|
|
1194
|
+
- Maps internal status ('translated', 'approved') to SDL status ('Translated', 'ApprovedTranslation')
|
|
1195
|
+
- Proper namespace handling for SDL elements in ElementTree
|
|
1196
|
+
|
|
1197
|
+
---
|
|
1198
|
+
|
|
1199
|
+
---
|
|
1200
|
+
|
|
1201
|
+
## [1.9.33] - December 10, 2025
|
|
1202
|
+
|
|
1203
|
+
### 🐛 Spellcheck Update Fix
|
|
1204
|
+
|
|
1205
|
+
**Fixed Spellcheck Highlighting Update:**
|
|
1206
|
+
- 🔧 **Global Refresh**: Adding a word to custom dictionary or ignoring it now immediately updates all occurrences in the grid
|
|
1207
|
+
- ✅ **No More False Positives**: Red wavy underlines vanish instantly across the entire document when you whitelist a word
|
|
1208
|
+
- 🖱️ **Context Menu Fix**: Right-click "Add to Dictionary" and "Ignore Word" actions now trigger full grid refresh
|
|
1209
|
+
|
|
1210
|
+
---
|
|
1211
|
+
|
|
1212
|
+
## [1.9.31] - December 10, 2025
|
|
1213
|
+
|
|
1214
|
+
### 🔤 Spellcheck Language Fix
|
|
1215
|
+
|
|
1216
|
+
**Spellcheck Now Uses Project Target Language:**
|
|
1217
|
+
- 🎯 **Automatic Language Detection**: Spellcheck initializes with project's target language instead of defaulting to English
|
|
1218
|
+
- 🌐 **Language Dropdown**: Added language selector in Spellcheck Info dialog
|
|
1219
|
+
- 🔄 **Immediate Effect**: Language changes take effect immediately with highlighting refresh
|
|
1220
|
+
- 📝 **Fixed Initialization**: `_toggle_spellcheck()` now uses `self.current_project.target_lang`
|
|
1221
|
+
|
|
1222
|
+
---
|
|
1223
|
+
|
|
1224
|
+
## [1.9.30] - December 10, 2025
|
|
1225
|
+
|
|
1226
|
+
### 🐛 Critical LLM Fix
|
|
1227
|
+
|
|
1228
|
+
**Fixed OpenAI/LLM Translation Error:**
|
|
1229
|
+
- 🔧 **File Path Error**: Fixed "No such file or directory: 'openai_debug.txt'" error that broke all LLM translations
|
|
1230
|
+
- 📁 **Debug Path**: Removed hardcoded debug file path that only worked in development directory
|
|
1231
|
+
- ✅ **Production Ready**: Translations now work when running from any directory
|
|
1232
|
+
|
|
1233
|
+
---
|
|
1234
|
+
|
|
1235
|
+
## [1.9.29] - December 10, 2025
|
|
1236
|
+
|
|
1237
|
+
### 📝 Spellcheck Integration
|
|
1238
|
+
|
|
1239
|
+
**Built-in Spellchecking for Target Language:**
|
|
1240
|
+
- 📝 **Spellcheck Button**: Toggle in filter bar enables/disables spellchecking
|
|
1241
|
+
- 〰️ **Red Wavy Underlines**: Misspelled words highlighted with red wavy underline
|
|
1242
|
+
- 💬 **Right-Click Suggestions**: Click misspelled word for spelling suggestions
|
|
1243
|
+
- ➕ **Add to Dictionary**: Add words to custom dictionary (persistent)
|
|
1244
|
+
- 🔇 **Ignore Word**: Ignore word for current session only
|
|
1245
|
+
- 📖 **Custom Dictionary**: Manage custom words from dropdown menu
|
|
1246
|
+
- ℹ️ **Spellcheck Info**: View backend, language, and dictionary status
|
|
1247
|
+
|
|
1248
|
+
**Language Support:**
|
|
1249
|
+
- 🇬🇧 English, 🇳🇱 Dutch, 🇩🇪 German, 🇫🇷 French, 🇪🇸 Spanish, 🇵🇹 Portuguese, 🇮🇹 Italian, 🇷🇺 Russian
|
|
1250
|
+
- 🐍 **Built-in Backend**: Uses pyspellchecker with bundled dictionaries - works out of the box!
|
|
1251
|
+
- 📚 **Hunspell Backend**: Optional .dic/.aff files for additional languages or improved accuracy
|
|
1252
|
+
- Auto-matches project target language
|
|
1253
|
+
|
|
1254
|
+
**Settings & Persistence:**
|
|
1255
|
+
- 💾 **Project-Level Settings**: Spellcheck state saved in .svproj files
|
|
1256
|
+
- 🔄 **Session Persistence**: Button state remembered across restarts
|
|
1257
|
+
- ℹ️ **Info Dialog**: Explains dual-backend system with dictionary download links
|
|
1258
|
+
|
|
1259
|
+
**Technical Details:**
|
|
1260
|
+
- New module: `modules/spellcheck_manager.py` - Complete spellcheck handling
|
|
1261
|
+
- Custom dictionary stored in `user_data/dictionaries/custom_words.txt`
|
|
1262
|
+
- TagHighlighter extended for spell underline formatting
|
|
1263
|
+
- Spellcheck only applied to target column (not source)
|
|
1264
|
+
- Settings persisted in `ui_preferences.json` and `.svproj` files
|
|
1265
|
+
|
|
1266
|
+
---
|
|
1267
|
+
|
|
1268
|
+
## [1.9.28] - December 9, 2025
|
|
1269
|
+
|
|
1270
|
+
### 📄 Phrase (Memsource) Bilingual DOCX Support
|
|
1271
|
+
|
|
1272
|
+
**Full Round-Trip Workflow:**
|
|
1273
|
+
- 📥 **Import Phrase Bilingual DOCX**: File → Import → Phrase (Memsource) Bilingual (DOCX)
|
|
1274
|
+
- 📤 **Export Back to Phrase**: File → Export → Phrase (Memsource) Bilingual - Translated (DOCX)
|
|
1275
|
+
- 🏷️ **Inline Tag Preservation**: Tags like `{1}`, `{1>text<1}` preserved for round-trip
|
|
1276
|
+
- 🔍 **Auto-Detection**: Detects Phrase format (7-column tables, segment IDs with `:`)
|
|
1277
|
+
- 💾 **Project Persistence**: Phrase source path saved in .svproj for future sessions
|
|
1278
|
+
|
|
1279
|
+
**Implementation:**
|
|
1280
|
+
- New module: `modules/phrase_docx_handler.py` - Complete Phrase DOCX handling
|
|
1281
|
+
- Language pair selection dialog for imported files
|
|
1282
|
+
- Segment ID and status preserved in notes field
|
|
1283
|
+
- Export updates only Column 5 (target text) as Phrase expects
|
|
1284
|
+
|
|
1285
|
+
### 👁️ Show Invisibles Feature
|
|
1286
|
+
|
|
1287
|
+
**Display Invisible Characters:**
|
|
1288
|
+
- 🔘 **Dropdown Menu**: Show Invisibles button with granular control
|
|
1289
|
+
- · **Spaces**: Displayed as middle dot (·)
|
|
1290
|
+
- → **Tabs**: Displayed as right arrow (→)
|
|
1291
|
+
- ° **Non-Breaking Spaces**: Displayed as degree symbol (°)
|
|
1292
|
+
- ¶ **Line Breaks**: Displayed as pilcrow (¶)
|
|
1293
|
+
- 🎯 **Toggle All**: Quick on/off for all invisible types
|
|
1294
|
+
|
|
1295
|
+
**Smart Handling:**
|
|
1296
|
+
- 📋 **Clipboard Safety**: Ctrl+C copies original characters, not symbols
|
|
1297
|
+
- 🖱️ **Double-Click Selection**: Properly selects words when invisibles shown
|
|
1298
|
+
- ⌨️ **Ctrl+Arrow Navigation**: Word-by-word navigation works correctly
|
|
1299
|
+
- 🎨 **Configurable Color**: Symbol color in Settings → View Settings (default: light gray)
|
|
1300
|
+
- ✅ **Zero-Width Space Technique**: Uses U+200B for line-break opportunities without breaking word boundaries
|
|
1301
|
+
|
|
1302
|
+
**Technical Details:**
|
|
1303
|
+
- Replacements applied only at display time (segment data never modified)
|
|
1304
|
+
- Automatic reversal when text is saved or edited
|
|
1305
|
+
- TagHighlighter extended to color invisible symbols
|
|
1306
|
+
|
|
1307
|
+
### 🔧 TM Pre-Translation Fix
|
|
1308
|
+
|
|
1309
|
+
**Batch Translate with TM:**
|
|
1310
|
+
- 🐛 **Fixed TM-Only Mode**: Batch Translate dialog now properly handles TM as a translation provider
|
|
1311
|
+
- 📖 **TM Provider Support**: Select "Translation Memory" in provider dropdown for TM-only batch translation
|
|
1312
|
+
- 🎯 **Respects Activated TMs**: Uses project's activated TMs for matching
|
|
1313
|
+
- 📊 **Match Threshold**: Accepts matches 70% and above for pre-translation
|
|
1314
|
+
|
|
1315
|
+
---
|
|
1316
|
+
|
|
1317
|
+
## [1.9.26] - December 8, 2025
|
|
1318
|
+
|
|
1319
|
+
### 🔄 Automatic Model Version Checker
|
|
1320
|
+
|
|
1321
|
+
**Smart Model Updates:**
|
|
1322
|
+
- 🆕 **Auto-detect New LLM Models**: Automatically checks for new models from OpenAI, Anthropic, and Google
|
|
1323
|
+
- 📅 **Daily Checks**: Runs once per 24 hours on startup (configurable)
|
|
1324
|
+
- 🔔 **Smart Notifications**: Popup dialog only when new models are detected
|
|
1325
|
+
- ✅ **Easy Selection**: Click to select which models to add to Supervertaler
|
|
1326
|
+
- 💾 **Intelligent Caching**: Remembers last check to avoid unnecessary API calls
|
|
1327
|
+
- ⚙️ **Fully Configurable**: Enable/disable auto-check in Settings → AI Settings
|
|
1328
|
+
- 🔍 **Manual Check**: "Check for New Models Now" button for on-demand checking
|
|
1329
|
+
|
|
1330
|
+
**Implementation:**
|
|
1331
|
+
- New module: `modules/model_version_checker.py` - Core checking logic with 24-hour throttling
|
|
1332
|
+
- New module: `modules/model_update_dialog.py` - User-friendly PyQt6 dialogs
|
|
1333
|
+
- Settings integration: New "Model Version Checker" section in AI Settings
|
|
1334
|
+
- Cache system: Stores results in `user_data/model_version_cache.json`
|
|
1335
|
+
- Provider support: OpenAI (models.list API), Claude (pattern testing), Gemini (models API)
|
|
1336
|
+
|
|
1337
|
+
**User Experience:**
|
|
1338
|
+
- Silent operation: No interruption if no new models found
|
|
1339
|
+
- Error handling: Graceful degradation if APIs unavailable
|
|
1340
|
+
- Documentation: Complete UI standards guide to maintain consistency
|
|
1341
|
+
|
|
1342
|
+
### 🎨 UI Polish & Standardization
|
|
1343
|
+
|
|
1344
|
+
**Checkbox Consistency:**
|
|
1345
|
+
- ✅ **Standardized All Checkboxes**: Replaced 3 blue QCheckBox instances with green CheckmarkCheckBox
|
|
1346
|
+
- 📏 **Refined Size**: Reduced checkbox size from 18x18px to 16x16px for cleaner appearance
|
|
1347
|
+
- 📚 **Documentation**: Created UI_STANDARDS.md to prevent future inconsistencies
|
|
1348
|
+
- 🎯 **Visual Consistency**: All checkboxes now use custom green style with white checkmarks
|
|
1349
|
+
|
|
1350
|
+
**Fixed Checkboxes:**
|
|
1351
|
+
- "Enable LLM (AI) matching on segment selection"
|
|
1352
|
+
- "Auto-generate markdown for imported documents"
|
|
1353
|
+
- "Enable automatic model checking (once per day on startup)"
|
|
1354
|
+
|
|
1355
|
+
---
|
|
1356
|
+
|
|
1357
|
+
## [1.9.25] - December 8, 2025
|
|
1358
|
+
|
|
1359
|
+
### 🐧 Linux Compatibility Release
|
|
1360
|
+
|
|
1361
|
+
**Platform Support:**
|
|
1362
|
+
- ✅ **Full Linux Compatibility**: Supervertaler now runs perfectly on Ubuntu and other Linux distributions
|
|
1363
|
+
- ✅ **Removed Legacy Dependencies**: Eliminated tkinter imports from TMX editor module
|
|
1364
|
+
- ✅ **Complete requirements.txt**: All dependencies now properly documented and installable
|
|
1365
|
+
- ✅ **Graceful Platform Detection**: AutoFingers shows helpful message on Linux (Windows/memoQ-specific feature)
|
|
1366
|
+
|
|
1367
|
+
**Installation Improvements:**
|
|
1368
|
+
- 📦 **One-Command Setup**: `pip install -r requirements.txt` installs all dependencies
|
|
1369
|
+
- 📝 **Added Missing Dependencies**:
|
|
1370
|
+
- `pyyaml` - YAML support for Non-Translatables manager
|
|
1371
|
+
- `PyMuPDF` - PDF processing for PDF Rescue module
|
|
1372
|
+
- `sentence-transformers` - Semantic search for Supermemory
|
|
1373
|
+
- `keyboard` - Keyboard control for AutoFingers
|
|
1374
|
+
- `lxml` - XML processing for Trados DOCX handler
|
|
1375
|
+
- 🛠️ **Platform-Specific Notes**: Clear documentation for Linux, Windows, and macOS compatibility
|
|
1376
|
+
- 🔧 **Optional Dependencies**: Voice dictation and automation features clearly marked as optional
|
|
1377
|
+
|
|
1378
|
+
**Bug Fixes:**
|
|
1379
|
+
- 🐛 **Fixed AutoFingers Import**: Made `pyautogui` import optional with graceful fallback for Linux
|
|
1380
|
+
- 🐛 **Fixed TMX Editor**: Removed unnecessary tkinter dependency from core module
|
|
1381
|
+
- 🐛 **Fixed Import Errors**: Proper error handling for platform-specific features
|
|
1382
|
+
|
|
1383
|
+
**Technical Changes:**
|
|
1384
|
+
- 🔄 **AutoFingers Engine**: Added `HAS_PYAUTOGUI` flag for cross-platform compatibility
|
|
1385
|
+
- 🔄 **Import Guards**: Platform-specific features now detect availability at runtime
|
|
1386
|
+
- 📚 **Documentation**: Enhanced requirements.txt with feature descriptions and platform notes
|
|
1387
|
+
|
|
1388
|
+
**For Users:**
|
|
1389
|
+
- 🎯 **Fresh Installation**: Works out-of-the-box on fresh Ubuntu installations
|
|
1390
|
+
- 🎯 **Virtual Environment**: Full support for Python venv isolated installations
|
|
1391
|
+
- 🎯 **Cross-Platform**: Same codebase works on Windows, Linux, and macOS
|
|
1392
|
+
|
|
1393
|
+
---
|
|
1394
|
+
|
|
1395
|
+
## [1.9.24] - December 7, 2025
|
|
1396
|
+
|
|
1397
|
+
### ✨ Smart Word Selection
|
|
1398
|
+
- **Intelligent Text Selection**: Selecting part of a word automatically expands to the full word
|
|
1399
|
+
- Makes word selection faster and less stressful during translation
|
|
1400
|
+
- Works in both source (read-only) and target (editable) columns
|
|
1401
|
+
- Supports compound words with hyphens (e.g., "self-contained")
|
|
1402
|
+
- Supports contractions with apostrophes (e.g., "don't", "l'homme")
|
|
1403
|
+
- Threshold-based: Only expands selections under 50 characters (prevents interference with multi-word selections)
|
|
1404
|
+
- **Settings Toggle**: New "Enable smart word selection" checkbox in Settings → General → Editor Settings
|
|
1405
|
+
- Enabled by default
|
|
1406
|
+
- Helpful tooltip explains the feature with examples
|
|
1407
|
+
- Can be disabled if user prefers traditional selection behavior
|
|
1408
|
+
- **Implementation**:
|
|
1409
|
+
- Added `mouseReleaseEvent()` to both `ReadOnlyGridTextEditor` and `EditableGridTextEditor`
|
|
1410
|
+
- Word character detection includes alphanumeric, underscore, hyphen, and apostrophe
|
|
1411
|
+
- Boundary detection ensures expansion only occurs when selection is partial
|
|
1412
|
+
- Respects settings toggle across the application
|
|
1413
|
+
- **Documentation**: Complete feature documentation in `SMART_WORD_SELECTION.md`
|
|
1414
|
+
- Implementation details, testing checklist, known limitations, future enhancements
|
|
1415
|
+
|
|
1416
|
+
### 🛡️ Supermemory Error Handling Improvements
|
|
1417
|
+
- **Better DLL Error Messages**: Enhanced PyTorch DLL loading failure handling
|
|
1418
|
+
- `modules/supermemory.py` now catches `OSError` and `Exception` (not just `ImportError`)
|
|
1419
|
+
- Windows-specific DLL errors are properly caught and handled
|
|
1420
|
+
- Stores error message in `SENTENCE_TRANSFORMERS_ERROR` for debugging
|
|
1421
|
+
- **Helpful Instructions**: Auto-detects DLL errors and provides actionable solutions
|
|
1422
|
+
- Detects "DLL", "c10.dll", or "torch" in error messages
|
|
1423
|
+
- Provides 3 specific fixes with direct links and exact commands:
|
|
1424
|
+
1. Install Visual C++ Redistributables (https://aka.ms/vs/17/release/vc_redist.x64.exe)
|
|
1425
|
+
2. Reinstall PyTorch with exact pip commands
|
|
1426
|
+
3. Disable Supermemory auto-init in Settings as fallback
|
|
1427
|
+
- Instructions appear automatically in the log when error occurs
|
|
1428
|
+
- **Technical Details**:
|
|
1429
|
+
- Modified `Supervertaler.py`: Lines 4116-4126 (error handler in `_auto_init_supermemory()`)
|
|
1430
|
+
- Modified `modules/supermemory.py`: Lines 45-51 (exception catching)
|
|
1431
|
+
|
|
1432
|
+
---
|
|
1433
|
+
|
|
1434
|
+
## [1.9.23] - December 7, 2025
|
|
1435
|
+
|
|
1436
|
+
### 📄 Bilingual Table Landscape Orientation
|
|
1437
|
+
- **Improved Visualization**: Supervertaler Bilingual Table exports now use landscape orientation
|
|
1438
|
+
- Better visualization of long segments (source and target columns have more horizontal space)
|
|
1439
|
+
- Applies to both "With Tags" and "Formatted" export options
|
|
1440
|
+
- Page dimensions automatically swapped for landscape layout
|
|
1441
|
+
- Maintains 0.5-inch margins on all sides
|
|
1442
|
+
- **Technical Details**:
|
|
1443
|
+
- Added `WD_ORIENT.LANDSCAPE` to document sections
|
|
1444
|
+
- Swapped page width/height for proper landscape rendering
|
|
1445
|
+
- Modified `Supervertaler.py`: Lines 7820-7832 (document setup)
|
|
1446
|
+
|
|
1447
|
+
---
|
|
1448
|
+
|
|
1449
|
+
## [1.9.22] - December 7, 2025
|
|
1450
|
+
|
|
1451
|
+
### 🤖 Gemini 3 Pro Preview Support
|
|
1452
|
+
- **Latest Google AI Model**: Added support for Gemini 3 Pro Preview (November 2025 release)
|
|
1453
|
+
- New model option in Settings → LLM Settings → Gemini Models dropdown
|
|
1454
|
+
- Listed as "gemini-3-pro-preview (Latest - Superior Performance)"
|
|
1455
|
+
- Works in both single segment translation (Ctrl+T) and batch translation
|
|
1456
|
+
- Performance: 10-20% improvement on average, 6-20x better on reasoning/math tasks
|
|
1457
|
+
- Pricing: $2/$12 per million tokens (vs $1.25/$10 for Gemini 2.5 Pro)
|
|
1458
|
+
- **LLM Client Update**: Added all current Gemini models to supported list
|
|
1459
|
+
- `gemini-2.5-flash-lite` (Fastest & Most Economical)
|
|
1460
|
+
- `gemini-2.5-pro` (Premium - Complex Reasoning)
|
|
1461
|
+
- `gemini-3-pro-preview` (Latest - Superior Performance)
|
|
1462
|
+
- Updated module documentation to reflect Gemini 3 support
|
|
1463
|
+
- **Files Modified**:
|
|
1464
|
+
- `Supervertaler.py`: Lines 10889-10902 (model dropdown and tooltip)
|
|
1465
|
+
- `modules/llm_clients.py`: Lines 8-11 (docs), 220-229 (supported models)
|
|
1466
|
+
|
|
1467
|
+
---
|
|
1468
|
+
|
|
1469
|
+
## [1.9.21] - December 6, 2025
|
|
1470
|
+
|
|
1471
|
+
### 🐛 Critical SDLPPX Handler Bug Fix
|
|
1472
|
+
- **Fixed SDLRPX Export Failure After Project Reload**: Fixed "'str' object is not callable" error when exporting SDLRPX return packages after reopening a saved project
|
|
1473
|
+
- Root cause: Handler was initialized with path string instead of log_callback parameter
|
|
1474
|
+
- The path was incorrectly assigned to `self.log`, causing export to fail when trying to call log function
|
|
1475
|
+
- Now correctly initializes handler with `TradosPackageHandler(log_callback=self.log)` and calls `load_package(path)` separately
|
|
1476
|
+
- Also fixed missing `self.sdlppx_source_file` assignment during handler restoration
|
|
1477
|
+
- Full SDLPPX workflow now works correctly: import package → translate → save project → close → reopen → export SDLRPX ✓
|
|
1478
|
+
- **Impact**: This bug prevented translators from exporting return packages after reopening saved SDLPPX projects, breaking the workflow for Trados Studio package handling
|
|
1479
|
+
|
|
1480
|
+
---
|
|
1481
|
+
|
|
1482
|
+
## [1.9.20] - December 5, 2025
|
|
1483
|
+
|
|
1484
|
+
### 📦 SDLPPX Project Persistence
|
|
1485
|
+
- **Project Save/Restore**: SDLPPX package path now saved in .svproj files
|
|
1486
|
+
- Added `sdlppx_source_path` field to Project dataclass
|
|
1487
|
+
- Serialized in `to_dict()`, deserialized in `from_dict()`
|
|
1488
|
+
- Full round-trip workflow now persists across sessions
|
|
1489
|
+
- **Handler Restoration**: SDLPPX handler automatically restored on project load
|
|
1490
|
+
- When opening a .svproj from an SDLPPX import, handler is recreated
|
|
1491
|
+
- SDLRPX export available immediately without reimporting
|
|
1492
|
+
- Log message confirms: "✓ Restored Trados package handler"
|
|
1493
|
+
- **Export Bug Fix**: Fixed SDLRPX export showing "0 translations updated"
|
|
1494
|
+
- Export now reads from segment objects instead of table widget items
|
|
1495
|
+
- Notes column was never populated as QTableWidgetItem - data is in segment.notes
|
|
1496
|
+
- Verified translations correctly written to return package
|
|
1497
|
+
|
|
1498
|
+
---
|
|
1499
|
+
|
|
1500
|
+
## [1.9.19] - December 4, 2025
|
|
1501
|
+
|
|
1502
|
+
### 📦 Trados Studio Package Support
|
|
1503
|
+
- **SDLPPX Import**: Import Trados Studio project packages directly
|
|
1504
|
+
- File → Import → Trados Studio → Package (SDLPPX)
|
|
1505
|
+
- Parses SDLXLIFF files within the package
|
|
1506
|
+
- Shows package info dialog with file list and segment counts
|
|
1507
|
+
- Preserves SDL-specific markup and segment IDs
|
|
1508
|
+
- Automatic language detection from package metadata
|
|
1509
|
+
- **SDLRPX Export**: Create return packages for delivery
|
|
1510
|
+
- File → Export → Trados Studio → Return Package (SDLRPX)
|
|
1511
|
+
- Writes translations back to SDLXLIFF files
|
|
1512
|
+
- Creates properly formatted return package
|
|
1513
|
+
- Round-trip workflow for freelance translators
|
|
1514
|
+
- **Menu Reorganization**: Grouped all Trados import/export options
|
|
1515
|
+
- New "Trados Studio" submenu under Import and Export
|
|
1516
|
+
- Contains both bilingual review DOCX and package options
|
|
1517
|
+
- **New Module**: `modules/sdlppx_handler.py` (767 lines)
|
|
1518
|
+
- `TradosPackageHandler` class for package management
|
|
1519
|
+
- `SDLXLIFFParser` for parsing SDL-extended XLIFF files
|
|
1520
|
+
- Handles `<g>`, `<x/>`, `<mrk mtype="seg">` tags
|
|
1521
|
+
- Preserves SDL namespaces and attributes
|
|
1522
|
+
|
|
1523
|
+
---
|
|
1524
|
+
|
|
1525
|
+
## [1.9.18] - December 4, 2025
|
|
1526
|
+
|
|
1527
|
+
### 🔍 Supermemory Concordance Integration
|
|
1528
|
+
- Concordance Search (Ctrl+K) now includes Supermemory semantic search
|
|
1529
|
+
- Two-tab interface: TM Matches tab for exact text, Supermemory tab for meaning
|
|
1530
|
+
- Active checkbox column in Supermemory to control which TMs are searched
|
|
1531
|
+
- Fixed Trados bilingual DOCX round-trip issues (xml:space, language settings)
|
|
1532
|
+
- Supermemory moved from Tools tab to Resources tab
|
|
1533
|
+
|
|
1534
|
+
---
|
|
1535
|
+
|
|
1536
|
+
## [1.9.17] - December 3, 2025
|
|
1537
|
+
|
|
1538
|
+
### 🧠 Supermemory Enhancements - Domain Management & Superlookup Integration
|
|
1539
|
+
|
|
1540
|
+
**Major upgrade to the vector-indexed translation memory system:**
|
|
1541
|
+
|
|
1542
|
+
**Domain Management System:**
|
|
1543
|
+
- Added **Domain dataclass** with name, description, color, and active status
|
|
1544
|
+
- New database schema: `domains` table and `domain` column in `indexed_tms`
|
|
1545
|
+
- **8 default domains:** General, Patents, Medical, Legal, Technical, Marketing, Financial, Software
|
|
1546
|
+
- **DomainManagerDialog:** Full CRUD interface with color pickers and active toggles
|
|
1547
|
+
- Assign domains during TMX import with intuitive dropdown selector
|
|
1548
|
+
- Color-coded domain tags in search results for visual categorization
|
|
1549
|
+
|
|
1550
|
+
**Enhanced Search & Filtering:**
|
|
1551
|
+
- **Language pair filter:** Dropdown to filter by source-target language combination
|
|
1552
|
+
- **Multi-domain filter:** Select multiple active domains to search within
|
|
1553
|
+
- **Dynamic column headers:** Results table shows actual language codes (e.g., "Source (EN)", "Target (NL)")
|
|
1554
|
+
- Search respects both language pair and domain filters simultaneously
|
|
1555
|
+
|
|
1556
|
+
**Superlookup Integration:**
|
|
1557
|
+
- **New "Supermemory" tab** in Superlookup for unified terminology/TM lookup
|
|
1558
|
+
- Semantic search results appear alongside TM, termbase, and MT matches
|
|
1559
|
+
- Click to insert matches directly into target segment
|
|
1560
|
+
- Seamless integration with existing Superlookup workflow
|
|
1561
|
+
|
|
1562
|
+
**Export Functionality:**
|
|
1563
|
+
- **Export to TMX:** Full TMX export with language headers and segment metadata
|
|
1564
|
+
- **Export to CSV:** Simple source-target pairs for spreadsheet workflows
|
|
1565
|
+
- Export dialog lets you choose format before exporting
|
|
1566
|
+
|
|
1567
|
+
### Consolidated AI Settings
|
|
1568
|
+
|
|
1569
|
+
- Merged Gemini and Mistral settings into unified **"AI Settings"** tab
|
|
1570
|
+
- Cleaner Settings panel with fewer tabs
|
|
1571
|
+
- All API keys and model selections in one place
|
|
1572
|
+
|
|
1573
|
+
---
|
|
1574
|
+
|
|
1575
|
+
## [1.9.18] - December 4, 2025
|
|
1576
|
+
|
|
1577
|
+
### 🔍 Supermemory Concordance Integration & Trados Fixes
|
|
1578
|
+
|
|
1579
|
+
**Concordance Search now includes Supermemory semantic search:**
|
|
1580
|
+
|
|
1581
|
+
**Concordance Search Enhancements:**
|
|
1582
|
+
- **Two-tab interface:** "TM Matches" (exact text) and "Supermemory" (semantic/meaning-based)
|
|
1583
|
+
- Semantic search finds translations by meaning, not just exact words
|
|
1584
|
+
- Tab headers show result counts (e.g., "📋 TM Matches (9)" and "🧠 Supermemory (25)")
|
|
1585
|
+
- Results display similarity scores with color-coded High/Medium/Low indicators
|
|
1586
|
+
- Window remembers position and size across sessions (saved to project)
|
|
1587
|
+
|
|
1588
|
+
**Supermemory UI Improvements:**
|
|
1589
|
+
- **Moved to Resources tab** - now under Resources → Supermemory (was Tools)
|
|
1590
|
+
- **Active checkbox column** in TM table - toggle which TMs are searched
|
|
1591
|
+
- Only active TMs are included in Concordance semantic search
|
|
1592
|
+
- Checkbox state persists in database
|
|
1593
|
+
|
|
1594
|
+
**Trados Bilingual DOCX Fixes:**
|
|
1595
|
+
- Fixed `xml:space="preserve"` attribute on text elements for proper whitespace handling
|
|
1596
|
+
- Fixed target language settings - runs now inherit from paragraph (was incorrectly setting nl-NL)
|
|
1597
|
+
- Added language selection dialog on import (Trados files don't specify languages)
|
|
1598
|
+
- Source file path now persisted in project for reliable re-export
|
|
1599
|
+
- "Source File Not Found" now offers to browse for file in new location
|
|
1600
|
+
|
|
1601
|
+
**Other Improvements:**
|
|
1602
|
+
- Renamed export menu items to "Supervertaler Bilingual Table" for clarity
|
|
1603
|
+
- memoQ and CafeTran source paths also persisted in project
|
|
1604
|
+
- Fixed Concordance accessing Supermemory engine (was checking wrong attribute)
|
|
1605
|
+
|
|
1606
|
+
---
|
|
1607
|
+
|
|
1608
|
+
## [1.9.16] - December 1, 2025
|
|
1609
|
+
|
|
1610
|
+
### 🖥️ Local LLM Support - Ollama Integration
|
|
1611
|
+
|
|
1612
|
+
**Run AI translation entirely on your computer with no API costs, complete privacy, and offline capability:**
|
|
1613
|
+
|
|
1614
|
+
**New Provider Option:**
|
|
1615
|
+
- Added **"Local LLM (Ollama)"** as new provider in Settings → LLM Provider tab
|
|
1616
|
+
- Appears alongside OpenAI, Anthropic, Google, etc. with familiar radio button selection
|
|
1617
|
+
- Works with single translation, batch translation, and AI Assistant chat
|
|
1618
|
+
|
|
1619
|
+
**Intelligent Hardware Detection:**
|
|
1620
|
+
- Automatically detects system RAM and GPU capabilities
|
|
1621
|
+
- Recommends optimal model based on your hardware:
|
|
1622
|
+
- **4GB RAM:** qwen2.5:3b (2.5GB download) - Basic functionality
|
|
1623
|
+
- **8GB RAM:** qwen2.5:7b (5.5GB download) - Recommended default
|
|
1624
|
+
- **16GB+ RAM:** qwen2.5:14b (10GB download) - Premium quality
|
|
1625
|
+
- GPU detection for NVIDIA, AMD, and Apple Silicon
|
|
1626
|
+
|
|
1627
|
+
**Built-in Setup Wizard:**
|
|
1628
|
+
- One-click access via "Setup Local LLM..." button in Settings
|
|
1629
|
+
- Guides users through complete Ollama installation
|
|
1630
|
+
- Platform-specific instructions (Windows, macOS, Linux)
|
|
1631
|
+
- Real-time connection testing to verify Ollama is running
|
|
1632
|
+
- Model download with progress tracking and cancellation
|
|
1633
|
+
|
|
1634
|
+
**Recommended Models for Translation:**
|
|
1635
|
+
- **qwen2.5** (3B/7B/14B) - Excellent multilingual capabilities, recommended for translation
|
|
1636
|
+
- **llama3.2** (3B/7B) - Strong general purpose, good European languages
|
|
1637
|
+
- **mistral:7b** - Fast inference, good quality/speed balance
|
|
1638
|
+
- **gemma2:9b** - Google's efficient model, good multilingual
|
|
1639
|
+
|
|
1640
|
+
**Status Widget in Settings:**
|
|
1641
|
+
- Shows real-time Ollama connection status
|
|
1642
|
+
- Displays currently selected model
|
|
1643
|
+
- Quick-access button to Setup dialog
|
|
1644
|
+
- Hardware specification summary
|
|
1645
|
+
|
|
1646
|
+
**Technical Implementation:**
|
|
1647
|
+
- `modules/local_llm_setup.py` (NEW) - Complete setup module with:
|
|
1648
|
+
- `LocalLLMSetupDialog` - Full wizard UI with model recommendations
|
|
1649
|
+
- `LocalLLMStatusWidget` - Compact status widget for Settings panel
|
|
1650
|
+
- `detect_system_specs()` - RAM and GPU detection
|
|
1651
|
+
- `get_model_recommendations()` - Hardware-based model suggestions
|
|
1652
|
+
- `ModelDownloadWorker` - Background download with progress
|
|
1653
|
+
- `ConnectionTestWorker` - Async connection verification
|
|
1654
|
+
- `modules/llm_clients.py` - Extended with Ollama support:
|
|
1655
|
+
- `OLLAMA_MODELS` dict with 7 supported models
|
|
1656
|
+
- `check_ollama_status()` - Connection and model detection
|
|
1657
|
+
- `_call_ollama()` - REST API integration (OpenAI-compatible)
|
|
1658
|
+
- `translate()` routes to Ollama when selected
|
|
1659
|
+
|
|
1660
|
+
**Privacy & Cost Benefits:**
|
|
1661
|
+
- All translation processing stays on your computer
|
|
1662
|
+
- No data sent to external servers
|
|
1663
|
+
- No API key required
|
|
1664
|
+
- No per-token costs - unlimited translations
|
|
1665
|
+
- Works completely offline after model download
|
|
1666
|
+
|
|
1667
|
+
---
|
|
1668
|
+
|
|
1669
|
+
## [1.9.15] - November 30, 2025
|
|
1670
|
+
|
|
1671
|
+
### 📋 Supervertaler Bilingual Table Export/Import
|
|
1672
|
+
|
|
1673
|
+
**New bilingual table format for proofreading and review workflows:**
|
|
1674
|
+
|
|
1675
|
+
**Export Options (File → Export):**
|
|
1676
|
+
- **"Bilingual Table - With Tags (DOCX)"**: Exports 5-column table (Segment #, Source, Target, Status, Notes) with raw Supervertaler tags preserved. Intended for proofreaders to review and edit - can be re-imported after editing
|
|
1677
|
+
- **"Bilingual Table - Formatted (DOCX)"**: Same structure but applies formatting: `<b>` becomes actual bold, `<i>` becomes italic, `<u>` becomes underline, list tags become visible markers (• for bullets, ◦ for nested). For client delivery or archiving - cannot be re-imported
|
|
1678
|
+
|
|
1679
|
+
**Import Option (File → Import):**
|
|
1680
|
+
- **"Bilingual Table (DOCX) - Update Project"**: Re-imports edited bilingual table, compares with current project by segment number, shows preview of all changes (old vs new target), applies approved changes with status reset to "Not Started"
|
|
1681
|
+
|
|
1682
|
+
**Document Format:**
|
|
1683
|
+
- Header with "Supervertaler Bilingual Table" title linking to Supervertaler.com
|
|
1684
|
+
- Language names in column headers (e.g., "English", "Dutch" instead of "Source", "Target")
|
|
1685
|
+
- Pink highlighting for tags in the With Tags version
|
|
1686
|
+
- Footer with Supervertaler.com branding
|
|
1687
|
+
- Decorative underlines for professional appearance
|
|
1688
|
+
|
|
1689
|
+
**Technical Implementation:**
|
|
1690
|
+
- `export_review_table_with_tags()` - Wrapper for tag-visible export
|
|
1691
|
+
- `export_review_table_formatted()` - Wrapper for formatted export with warning dialog
|
|
1692
|
+
- `_export_review_table(apply_formatting)` - Core export logic with python-docx
|
|
1693
|
+
- `_add_hyperlink_to_paragraph()` - Helper for Word hyperlinks via XML manipulation
|
|
1694
|
+
- `import_review_table()` - Import logic with change detection and diff preview
|
|
1695
|
+
|
|
1696
|
+
---
|
|
1697
|
+
|
|
1698
|
+
## [1.9.14] - November 30, 2025
|
|
1699
|
+
|
|
1700
|
+
### 📤 Improved DOCX Export & Keyboard Navigation
|
|
1701
|
+
|
|
1702
|
+
**DOCX Export Improvements:**
|
|
1703
|
+
- **Formatting Preservation:** Export now properly converts `<b>`, `<i>`, `<u>`, `<bi>` tags to actual Word formatting (bold, italic, underline)
|
|
1704
|
+
- **Multi-Segment Paragraphs:** Export handles paragraphs containing multiple segments with partial replacement
|
|
1705
|
+
- **Unicode Cleanup:** Removes problematic characters like U+FFFC (Object Replacement Character)
|
|
1706
|
+
- **Tag Stripping:** Properly strips all list tags (`<li-o>`, `<li-b>`, `<li>`) while preserving formatting tags
|
|
1707
|
+
|
|
1708
|
+
**Keyboard Navigation Fix:**
|
|
1709
|
+
- Ctrl+Home now properly navigates to first segment even when editing inside a grid cell
|
|
1710
|
+
- Ctrl+End now properly navigates to last segment even when editing inside a grid cell
|
|
1711
|
+
- Added `_get_main_window()` helper to both `EditableGridTextEditor` and `ReadOnlyGridTextEditor`
|
|
1712
|
+
|
|
1713
|
+
**Technical Changes:**
|
|
1714
|
+
- `export_target_only_docx()`: Added `apply_formatted_text_to_paragraph()` for parsing tags into Word runs
|
|
1715
|
+
- `export_target_only_docx()`: Added `replace_segments_in_text()` for partial segment replacement
|
|
1716
|
+
- `export_target_only_docx()`: Added `clean_special_chars()` to remove Unicode replacement characters
|
|
1717
|
+
- `EditableGridTextEditor.keyPressEvent()`: Added Ctrl+Home/End handlers
|
|
1718
|
+
- `ReadOnlyGridTextEditor.event()`: Added Ctrl+Home/End handlers
|
|
1719
|
+
|
|
1720
|
+
---
|
|
1721
|
+
|
|
1722
|
+
## [1.9.13] - November 30, 2025
|
|
1723
|
+
|
|
1724
|
+
### 📄 Document Preview & List Formatting Tags
|
|
1725
|
+
|
|
1726
|
+
**New Preview tab shows formatted document view:**
|
|
1727
|
+
|
|
1728
|
+
**Preview Tab Features:**
|
|
1729
|
+
- New "Preview" tab alongside Source/Target views in the main panel
|
|
1730
|
+
- Shows formatted document with headings (H1-H6 with proper sizing), paragraphs, and lists
|
|
1731
|
+
- List items display with correct prefix: numbers (1. 2. 3.) for ordered lists, bullets (•) for bullet points
|
|
1732
|
+
- Click any text in preview to instantly navigate to that segment in the grid
|
|
1733
|
+
- Read-only view for document context during translation
|
|
1734
|
+
|
|
1735
|
+
**List Type Detection from DOCX:**
|
|
1736
|
+
- New `_get_list_type()` method in docx_handler.py examines Word's numPr XML structure
|
|
1737
|
+
- Properly distinguishes numbered lists from bullet points by analyzing abstractNum definitions
|
|
1738
|
+
- Looks for "bullet" in numFmt value or bullet characters (•, ○, ●, ■) in lvlText
|
|
1739
|
+
- Caches list type lookups for performance
|
|
1740
|
+
|
|
1741
|
+
**New List Tags:**
|
|
1742
|
+
- `<li-o>` - Ordered list items (numbered: 1. 2. 3.)
|
|
1743
|
+
- `<li-b>` - Bullet list items (•)
|
|
1744
|
+
- Both tags are colored with the tag highlighter
|
|
1745
|
+
- Both work with Ctrl+, shortcut for quick insertion
|
|
1746
|
+
|
|
1747
|
+
**Type Column Improvements:**
|
|
1748
|
+
- Type column now shows `#1`, `#2`, `#3` for ordered list items (numbered)
|
|
1749
|
+
- Shows `•` for bullet list items
|
|
1750
|
+
- Shows `¶` (paragraph mark) for continuation paragraphs instead of `#`
|
|
1751
|
+
- Provides clearer visual distinction between list types
|
|
1752
|
+
|
|
1753
|
+
**Technical Implementation:**
|
|
1754
|
+
- Added `_setup_preview_tab()` for Preview tab creation
|
|
1755
|
+
- Added `_render_preview()` method with formatted text rendering
|
|
1756
|
+
- Added `_render_formatted_text()` helper for styled QTextEdit output
|
|
1757
|
+
- Updated tag regex pattern to support hyphenated tags: `[a-zA-Z][a-zA-Z0-9-]*`
|
|
1758
|
+
- Preview connects to `_preview_navigation_requested()` for click-to-navigate
|
|
1759
|
+
|
|
1760
|
+
---
|
|
1761
|
+
|
|
1762
|
+
## [1.9.12] - November 28, 2025
|
|
1763
|
+
|
|
1764
|
+
### 📊 Progress Indicator Status Bar
|
|
1765
|
+
|
|
1766
|
+
**New permanent status bar showing real-time translation progress:**
|
|
1767
|
+
|
|
1768
|
+
**Progress Display:**
|
|
1769
|
+
- **Words translated**: Shows X/Y words with percentage (counts words in segments that have translations)
|
|
1770
|
+
- **Confirmed segments**: Shows X/Y segments with percentage (confirmed, tr_confirmed, proofread, approved statuses)
|
|
1771
|
+
- **Remaining segments**: Count of segments still needing work (not_started, pretranslated, rejected statuses)
|
|
1772
|
+
|
|
1773
|
+
**Color Coding:**
|
|
1774
|
+
- **Red** (<50%): Low progress - needs attention
|
|
1775
|
+
- **Orange** (50-80%): Making progress - keep going
|
|
1776
|
+
- **Green** (>80%): Almost done - near completion
|
|
1777
|
+
|
|
1778
|
+
**Auto-Updates:**
|
|
1779
|
+
- Updates when project is loaded
|
|
1780
|
+
- Updates when segment is confirmed (Ctrl+Enter)
|
|
1781
|
+
- Updates after AI translation completes
|
|
1782
|
+
- Updates after user finishes typing (debounced)
|
|
1783
|
+
- Resets to "--" when project is closed
|
|
1784
|
+
|
|
1785
|
+
**Technical Implementation:**
|
|
1786
|
+
- Added `_setup_progress_indicators()` method for status bar widget setup
|
|
1787
|
+
- Added `update_progress_stats()` method for calculating and updating progress
|
|
1788
|
+
- Added `_get_progress_color()` helper for color-based progress feedback
|
|
1789
|
+
- Progress widgets are permanent status bar items (right-aligned)
|
|
1790
|
+
|
|
1791
|
+
---
|
|
1792
|
+
|
|
1793
|
+
## [1.9.11] - November 28, 2025
|
|
1794
|
+
|
|
1795
|
+
### 🔧 Non-Translatables: Case-Sensitive & Full-Word Matching
|
|
1796
|
+
|
|
1797
|
+
**Improved non-translatables matching to prevent false positives:**
|
|
1798
|
+
|
|
1799
|
+
**Matching Improvements:**
|
|
1800
|
+
- Non-translatables matching is now **case-sensitive by default**
|
|
1801
|
+
- Only matches **full words** (not partial words like "Product" inside "ProductName")
|
|
1802
|
+
- Uses word boundary detection (`\b`) for accurate term matching
|
|
1803
|
+
- Smart fallback for special characters like ® and ™ that don't work with word boundaries
|
|
1804
|
+
- Prevents unwanted replacements in the middle of compound terms
|
|
1805
|
+
|
|
1806
|
+
**Bug Fixes:**
|
|
1807
|
+
- Fixed crash when closing project: added missing `stop_termbase_batch_worker()` method
|
|
1808
|
+
- Fixed `.svprompt` files not showing in Prompt Library tree (added extension to both library and manager)
|
|
1809
|
+
- Added LLM refusal detection for batch translation with helpful error messages when AI refuses content
|
|
1810
|
+
|
|
1811
|
+
**Technical Details:**
|
|
1812
|
+
- Changed `case_sensitive` default to `True` in `NonTranslatablesManager.matches()`
|
|
1813
|
+
- Rewrote matching logic to use regex word boundaries for full-word matching
|
|
1814
|
+
- Added proper error handling for OpenAI content policy refusals during batch translation
|
|
1815
|
+
|
|
1816
|
+
---
|
|
1817
|
+
|
|
1818
|
+
## [1.9.10] - November 28, 2025
|
|
1819
|
+
|
|
1820
|
+
### 🔧 TM Search Fixes & Flexible Language Matching
|
|
1821
|
+
|
|
1822
|
+
**Fixed TM matches not appearing in Translation Results panel:**
|
|
1823
|
+
|
|
1824
|
+
**Root Cause Analysis:**
|
|
1825
|
+
- `tm_metadata_mgr` was only initialized when user opened TM List tab, but TM search runs immediately on segment navigation
|
|
1826
|
+
- Database had mixed language formats ("Dutch", "nl", "nl-NL") but search only looked for ISO codes
|
|
1827
|
+
- Legacy hardcoded `enabled_only=True` filter would search only 'project' and 'big_mama' TMs that don't exist
|
|
1828
|
+
|
|
1829
|
+
**Fixes Applied:**
|
|
1830
|
+
- **Early initialization:** `tm_metadata_mgr` now initializes in `initialize_tm_database()` when project loads
|
|
1831
|
+
- **Flexible language matching:** New `get_lang_match_variants()` function returns both ISO codes and full language names
|
|
1832
|
+
- **Bypass legacy filter:** Added `enabled_only=False` to all `search_all()` calls
|
|
1833
|
+
- **Fallback search:** When no TMs are explicitly activated, search now falls back to all TMs
|
|
1834
|
+
|
|
1835
|
+
**Database Improvements:**
|
|
1836
|
+
- Cleaned public database (`user_data/Translation_Resources/supervertaler.db`) for new GitHub users
|
|
1837
|
+
- Removed sample data that had orphaned TM entries without proper metadata
|
|
1838
|
+
- Schema preserved - new users start with empty, properly structured database
|
|
1839
|
+
|
|
1840
|
+
**Code Cleanup:**
|
|
1841
|
+
- Removed legacy `project` and `big_mama` TM hardcoding from `TMDatabase` class
|
|
1842
|
+
- These were from the previous Supervertaler architecture and are no longer used
|
|
1843
|
+
- All TMs now managed through `TMMetadataManager` with proper database storage
|
|
1844
|
+
|
|
1845
|
+
**Files Modified:**
|
|
1846
|
+
- `Supervertaler.py` - TM metadata manager early init, enabled_only=False for searches
|
|
1847
|
+
- `modules/translation_memory.py` - Removed legacy tm_metadata dict
|
|
1848
|
+
- `modules/database_manager.py` - Flexible language matching in get_exact_match() and search_fuzzy_matches()
|
|
1849
|
+
- `modules/tmx_generator.py` - Added get_lang_match_variants() and updated get_base_lang_code()
|
|
1850
|
+
|
|
1851
|
+
### 📊 Non-Translatables Entry Table Enhancements
|
|
1852
|
+
|
|
1853
|
+
**Sortable Columns:**
|
|
1854
|
+
- Columns in the Non-Translatables entry table are now sortable by clicking on column headers
|
|
1855
|
+
- Click on Pattern, Type, or other columns to sort alphabetically ascending/descending
|
|
1856
|
+
- Default sort by Pattern column (ascending)
|
|
1857
|
+
- Sorting is temporarily disabled during table refresh to prevent UI issues
|
|
1858
|
+
|
|
1859
|
+
**Delete Entries:**
|
|
1860
|
+
- Right-click on selected entries to access context menu with delete option
|
|
1861
|
+
- Press Delete key to remove selected entries
|
|
1862
|
+
- Menu dynamically shows "Delete 1 entry" or "Delete N entries" based on selection
|
|
1863
|
+
- Existing "🗑️ Remove Selected" button also still available
|
|
1864
|
+
|
|
1865
|
+
---
|
|
1866
|
+
|
|
1867
|
+
## [1.9.9] - November 27, 2025
|
|
1868
|
+
|
|
1869
|
+
### 🎨 memoQ-style Alternating Row Colors
|
|
1870
|
+
|
|
1871
|
+
**CafeTran Formatting Support:**
|
|
1872
|
+
- Pipe symbols (|) now highlighted in red/bold in grid editor (like CafeTran)
|
|
1873
|
+
- Ctrl+, inserts pipe symbols for CafeTran formatting (or wraps selection)
|
|
1874
|
+
- Ctrl+Shift+S copies source text to target cell
|
|
1875
|
+
|
|
1876
|
+
**Keyboard Shortcuts Improvements:**
|
|
1877
|
+
- Keyboard shortcuts table now sortable by clicking column headers
|
|
1878
|
+
- Removed "Save Project As" shortcut (Ctrl+Shift+S now dedicated to copy source)
|
|
1879
|
+
|
|
1880
|
+
**Settings Changes:**
|
|
1881
|
+
- Batch size default changed from 100 to 20 segments per API call
|
|
1882
|
+
|
|
1883
|
+
---
|
|
1884
|
+
|
|
1885
|
+
## [1.9.7] - November 27, 2025
|
|
1886
|
+
|
|
1887
|
+
### 🔄 CafeTran Bilingual DOCX Support
|
|
1888
|
+
|
|
1889
|
+
**Full import/export support for CafeTran bilingual table format:**
|
|
1890
|
+
|
|
1891
|
+
**CafeTran Import:**
|
|
1892
|
+
- New **Import > CafeTran Bilingual Table (DOCX)...** menu option
|
|
1893
|
+
- Validates CafeTran bilingual format (ID | Source | Target | Notes table)
|
|
1894
|
+
- Extracts segments with pipe symbol formatting markers preserved
|
|
1895
|
+
- Converts to internal segment format for translation
|
|
1896
|
+
- Stores handler for round-trip export
|
|
1897
|
+
|
|
1898
|
+
**CafeTran Export:**
|
|
1899
|
+
- New **Export > CafeTran Bilingual Table - Translated (DOCX)...** menu option
|
|
1900
|
+
- Writes translations back to Target column
|
|
1901
|
+
- Preserves pipe symbol formatting (bold/underline markers)
|
|
1902
|
+
- Maintains original table structure
|
|
1903
|
+
- File can be imported back into CafeTran
|
|
1904
|
+
|
|
1905
|
+
**Technical Implementation:**
|
|
1906
|
+
- Uses `modules/cafetran_docx_handler.py` module
|
|
1907
|
+
- `CafeTranDOCXHandler` class handles file I/O
|
|
1908
|
+
- `FormattedSegment` class preserves pipe symbol markers
|
|
1909
|
+
- Red/bold formatting for pipe symbols in export
|
|
1910
|
+
|
|
1911
|
+
---
|
|
1912
|
+
|
|
1913
|
+
## [1.9.4] - November 26, 2025
|
|
1914
|
+
|
|
1915
|
+
### 🏷️ Tag-Based Formatting System for memoQ Bilingual Files
|
|
1916
|
+
|
|
1917
|
+
**Complete inline formatting support for professional translation workflows with memoQ bilingual DOCX files.**
|
|
1918
|
+
|
|
1919
|
+
**Phase 1 - Import & Display:**
|
|
1920
|
+
- Import memoQ bilingual DOCX preserves bold, italic, underline as `<b>`, `<i>`, `<u>` HTML-style tags
|
|
1921
|
+
- New "🏷️ Tags ON/OFF" toggle button in grid toolbar
|
|
1922
|
+
- WYSIWYG mode: Shows formatted text (bold appears bold)
|
|
1923
|
+
- Tag mode: Shows raw tags like `<b>bold</b>` for precise editing
|
|
1924
|
+
- Keyboard shortcut: **Ctrl+Alt+T** to toggle between modes
|
|
1925
|
+
- Tags auto-enabled after import when formatting detected
|
|
1926
|
+
- TagHighlighter colorizes tags with pink background for visibility
|
|
1927
|
+
|
|
1928
|
+
**Phase 2 - Export with Formatting:**
|
|
1929
|
+
- Export converts `<b>`, `<i>`, `<u>` tags back to actual Word formatting
|
|
1930
|
+
- New `tagged_text_to_runs()` function parses tags into Word runs
|
|
1931
|
+
- Round-trip fidelity: Import → Edit → Export preserves formatting
|
|
1932
|
+
- Handles nested tags correctly (e.g., `<b><i>bold italic</i></b>`)
|
|
1933
|
+
|
|
1934
|
+
**Phase 3 - AI Translation with Tags:**
|
|
1935
|
+
- Updated default system prompt with inline formatting tag instructions
|
|
1936
|
+
- AI translates text while preserving and repositioning tags intelligently
|
|
1937
|
+
- Example: "Click the `<b>`Save`</b>` button" → "Klik op de knop `<b>`Opslaan`</b>`"
|
|
1938
|
+
- Tags placed around corresponding translated words, not just same position
|
|
1939
|
+
|
|
1940
|
+
**Formatting Shortcuts in Target Editor:**
|
|
1941
|
+
- **Ctrl+B** - Apply/toggle bold tags on selected text
|
|
1942
|
+
- **Ctrl+I** - Apply/toggle italic tags on selected text
|
|
1943
|
+
- **Ctrl+U** - Apply/toggle underline tags on selected text
|
|
1944
|
+
|
|
1945
|
+
**Helper Functions Added:**
|
|
1946
|
+
- `runs_to_tagged_text()` - Convert Word runs to tagged text on import
|
|
1947
|
+
- `tagged_text_to_runs()` - Parse tags back to Word runs on export
|
|
1948
|
+
- `strip_formatting_tags()` - Remove tags for plain text
|
|
1949
|
+
- `has_formatting_tags()` - Check if text contains formatting tags
|
|
1950
|
+
- `get_formatted_html_display()` - Convert tags to HTML for WYSIWYG display
|
|
1951
|
+
|
|
1952
|
+
---
|
|
1953
|
+
|
|
1954
|
+
## [1.9.6] - November 27, 2025
|
|
1955
|
+
|
|
1956
|
+
### 📁 Custom File Extensions & Monolingual Export
|
|
1957
|
+
|
|
1958
|
+
**New Branded File Extensions:**
|
|
1959
|
+
- **Projects:** `.svproj` (was `.json`) - Supervertaler Project files
|
|
1960
|
+
- **Prompts:** `.svprompt` (was `.md`/`.json`) - Supervertaler Prompt files
|
|
1961
|
+
- **Non-Translatables:** `.svntl` (was `.ntl`) - Supervertaler Non-Translatable lists
|
|
1962
|
+
- All formats maintain full backward compatibility - opens legacy files seamlessly
|
|
1963
|
+
- New files created with branded extensions for professional consistency
|
|
1964
|
+
- Industry standards retained: `.tmx` for TM exports, `.srx` planned for segmentation
|
|
1965
|
+
|
|
1966
|
+
**Monolingual DOCX Import Improvements:**
|
|
1967
|
+
- Language pair selection dialog when importing monolingual DOCX files
|
|
1968
|
+
- Dropdown selectors for source and target language (12 languages supported)
|
|
1969
|
+
- Prevents language detection issues - user explicitly sets translation direction
|
|
1970
|
+
- Removed unreliable auto-detect language feature
|
|
1971
|
+
|
|
1972
|
+
**Target-Only DOCX Export:**
|
|
1973
|
+
- New **Export > Target Only (DOCX)...** menu option for monolingual exports
|
|
1974
|
+
- Preserves original document structure (tables, formatting, styles, headers)
|
|
1975
|
+
- Copies original DOCX as template before replacing text
|
|
1976
|
+
- Replaces text in both paragraphs and table cells
|
|
1977
|
+
- Falls back gracefully if original document unavailable
|
|
1978
|
+
|
|
1979
|
+
**Project Persistence:**
|
|
1980
|
+
- Original DOCX path now saved in project files (`original_docx_path`)
|
|
1981
|
+
- Path restored when reopening projects for reliable exports
|
|
1982
|
+
- Enables structure-preserving exports even after closing and reopening
|
|
1983
|
+
|
|
1984
|
+
**Documentation Updates:**
|
|
1985
|
+
- New modular documentation: QUICK_START.md, KEYBOARD_SHORTCUTS.md, CAT_WORKFLOW.md
|
|
1986
|
+
- Archived legacy USER_GUIDE.md and INSTALLATION.md
|
|
1987
|
+
- FAQ.md copied to repository root (fixes dead link)
|
|
1988
|
+
|
|
1989
|
+
---
|
|
1990
|
+
|
|
1991
|
+
## [1.9.5] - November 27, 2025
|
|
1992
|
+
|
|
1993
|
+
### 📤 Send Segments to TM & memoQ Tag Shortcuts
|
|
1994
|
+
|
|
1995
|
+
**Send Segments to TM (Bulk Operation):**
|
|
1996
|
+
- New dialog under **Edit > Bulk Operations > Send Segments to TM**
|
|
1997
|
+
- Send translated segments directly to selected Translation Memories
|
|
1998
|
+
- **Scope filters:** All segments, Current selection, or specific row range
|
|
1999
|
+
- **Status filters:** Filter by Translated, Reviewed, Approved, Needs Review, or Final status
|
|
2000
|
+
- Select multiple TMs to write to simultaneously
|
|
2001
|
+
- Shows count of segments that will be sent before execution
|
|
2002
|
+
- Progress feedback with success/failure counts
|
|
2003
|
+
|
|
2004
|
+
**memoQ Tag Insertion Shortcut:**
|
|
2005
|
+
- **Ctrl+,** (Ctrl+Comma) - Insert next memoQ tag pair or wrap selection
|
|
2006
|
+
- Smart tag insertion: Analyzes source segment for memoQ tags (`[1}`, `{1]`, `[3]`, etc.)
|
|
2007
|
+
- With selection: Wraps selected text with next unused tag pair
|
|
2008
|
+
- Without selection: Inserts next available tag pair at cursor
|
|
2009
|
+
- Works with paired tags (`[1}...{1]`) and standalone tags (`[3]`)
|
|
2010
|
+
- Respects tag order from source segment for consistency
|
|
2011
|
+
|
|
2012
|
+
**UI Improvements:**
|
|
2013
|
+
- Renamed "Translation Resources" tab to "Resources" for cleaner UI
|
|
2014
|
+
- Resources tab contains TM, Termbase, and MT/Web resources sub-tabs
|
|
2015
|
+
|
|
2016
|
+
---
|
|
2017
|
+
|
|
2018
|
+
## [1.9.3] - November 26, 2025
|
|
2019
|
+
|
|
2020
|
+
### 📋 Session Log Tab & TM/Termbase Defaults Fix
|
|
2021
|
+
|
|
2022
|
+
**Session Log Tab:**
|
|
2023
|
+
- Added Session Log tab to bottom panel alongside Comments and Termview
|
|
2024
|
+
- Real-time log display with timestamps in monospace font
|
|
2025
|
+
- Easy access to log messages without detaching window
|
|
2026
|
+
- Read-only display with automatic scrolling to latest entries
|
|
2027
|
+
|
|
2028
|
+
**TM/Termbase Checkbox Defaults Fixed:**
|
|
2029
|
+
- Read checkboxes now default to unchecked (inactive) when no project loaded
|
|
2030
|
+
- Read checkboxes default to unchecked when no activation record exists
|
|
2031
|
+
- Write checkboxes default to unchecked (read-only) by default
|
|
2032
|
+
- All settings properly restored from project.json when project is loaded
|
|
2033
|
+
- Fixed `is_tm_active()` in tm_metadata_manager.py to return False by default
|
|
2034
|
+
|
|
2035
|
+
**Quick Actions for Bulk Selection:**
|
|
2036
|
+
- Added "Select All Read" and "Select All Write" checkboxes above TM table
|
|
2037
|
+
- Added "Select All Read" and "Select All Write" checkboxes above Termbase table
|
|
2038
|
+
- Green checkbox for Read, blue checkbox for Write matching table style
|
|
2039
|
+
- Quickly activate/deactivate all resources with single click
|
|
2040
|
+
|
|
2041
|
+
---
|
|
2042
|
+
|
|
2043
|
+
## [1.9.2] - November 25, 2025
|
|
2044
|
+
|
|
2045
|
+
### ⚙️ Superlookup Settings UI Redesign
|
|
2046
|
+
|
|
2047
|
+
**Improved Resource Selection Interface:**
|
|
2048
|
+
- Redesigned Settings tab with sub-tabs for TM, Termbase, MT, and Web Resources
|
|
2049
|
+
- Each resource type now has dedicated full-height space in its own sub-tab
|
|
2050
|
+
- Replaced cramped single-page layout with spacious tabbed interface
|
|
2051
|
+
|
|
2052
|
+
**Proper Checkbox Styling:**
|
|
2053
|
+
- Replaced tiny multi-selection indicators with standard Supervertaler checkboxes
|
|
2054
|
+
- 18x18px checkbox size with green (#4CAF50) background when checked
|
|
2055
|
+
- White checkmark (✓) drawn on checked items matching AutoFingers style
|
|
2056
|
+
- QScrollArea + CheckmarkCheckBox widgets instead of QListWidget
|
|
2057
|
+
- Hover effects and proper visual feedback
|
|
2058
|
+
|
|
2059
|
+
**Technical Implementation:**
|
|
2060
|
+
- `create_settings_tab()`: Creates QTabWidget with 4 sub-tabs
|
|
2061
|
+
- `create_tm_settings_subtab()`: Full-height TM selection with checkboxes
|
|
2062
|
+
- `create_termbase_settings_subtab()`: Full-height termbase selection
|
|
2063
|
+
- `create_mt_settings_subtab()`: Placeholder for future MT integration
|
|
2064
|
+
- `create_web_settings_subtab()`: Placeholder for future web resources
|
|
2065
|
+
- CheckmarkCheckBox widgets in QScrollArea provide proper green checkboxes
|
|
2066
|
+
- Fixed `cursor()` → `cursor` property access for database queries
|
|
2067
|
+
|
|
2068
|
+
**Bug Fixes:**
|
|
2069
|
+
- Fixed Translation Memories list loading (was showing empty due to cursor() call error)
|
|
2070
|
+
- Fixed termbase loading timing (lazy loading when Settings tab viewed)
|
|
2071
|
+
- Proper checkbox state tracking with `setProperty()` and `property()` methods
|
|
2072
|
+
- Select All/Clear All buttons now work with checkbox widgets instead of selection
|
|
2073
|
+
|
|
2074
|
+
**User Experience:**
|
|
2075
|
+
- Much more spacious and easier to read
|
|
2076
|
+
- Clear visual separation between resource types
|
|
2077
|
+
- Checkboxes are now clearly visible and clickable
|
|
2078
|
+
- Consistent styling across entire application
|
|
2079
|
+
|
|
2080
|
+
---
|
|
2081
|
+
|
|
2082
|
+
## [1.9.1] - November 24, 2025
|
|
2083
|
+
|
|
2084
|
+
### ↩️ Undo/Redo for Grid Edits
|
|
2085
|
+
|
|
2086
|
+
**New Feature: Complete Undo/Redo System**
|
|
2087
|
+
- Full undo/redo support for all grid editing operations
|
|
2088
|
+
- Keyboard shortcuts: Ctrl+Z (Undo), Ctrl+Y/Ctrl+Shift+Z (Redo)
|
|
2089
|
+
- Edit menu actions with dynamic enabled/disabled states
|
|
2090
|
+
- 100-level undo history to prevent memory issues
|
|
2091
|
+
|
|
2092
|
+
**What's Tracked:**
|
|
2093
|
+
- Target text changes as you type
|
|
2094
|
+
- Status changes (Not Started → Translated → Confirmed)
|
|
2095
|
+
- Ctrl+Enter confirmations
|
|
2096
|
+
- Find/Replace batch operations
|
|
2097
|
+
- Document view edits
|
|
2098
|
+
|
|
2099
|
+
**Technical Implementation:**
|
|
2100
|
+
- Dual stack system (undo_stack + redo_stack) tracks segment changes
|
|
2101
|
+
- Records: segment_id, old_target, new_target, old_status, new_status
|
|
2102
|
+
- Smart recording: Only captures actual changes, ignores no-ops
|
|
2103
|
+
- Automatic redo stack clearing on new edits (standard undo behavior)
|
|
2104
|
+
- Stack trimming to max 100 levels for memory efficiency
|
|
2105
|
+
- Updates both segment data and grid display simultaneously
|
|
2106
|
+
|
|
2107
|
+
**Integration Points:**
|
|
2108
|
+
- `on_target_text_changed()`: Text editing in grid cells
|
|
2109
|
+
- `update_status_icon()`: Status changes via toolbar/ribbon
|
|
2110
|
+
- `on_doc_status_change()`: Document view status changes
|
|
2111
|
+
- `replace_all_matches()`: Batch find/replace operations
|
|
2112
|
+
- Ctrl+Enter confirmation handler
|
|
2113
|
+
|
|
2114
|
+
**User Experience:**
|
|
2115
|
+
- Menu actions show enabled/disabled state based on stack contents
|
|
2116
|
+
- Seamless integration with existing editing workflow
|
|
2117
|
+
- No performance impact on grid operations
|
|
2118
|
+
- Professional CAT tool behavior (like memoQ/Trados)
|
|
2119
|
+
|
|
2120
|
+
---
|
|
2121
|
+
|
|
2122
|
+
## [1.9.0] - November 24, 2025
|
|
2123
|
+
|
|
2124
|
+
### 🔍 Termview - RYS-Style Inline Terminology Display
|
|
2125
|
+
|
|
2126
|
+
**New Feature: Visual Inline Terminology**
|
|
2127
|
+
- Added "🔍 Termview" tab in bottom panel showing inline terminology like RYS Trados plugin
|
|
2128
|
+
- Source text displayed as flowing words with translations appearing underneath matched terms
|
|
2129
|
+
- Compact 8pt font with colored 2px top borders (pink for project termbase, blue for background)
|
|
2130
|
+
- Text wrapping with FlowLayout to adapt to window width
|
|
2131
|
+
- Click any translation to insert it into target segment
|
|
2132
|
+
- Hover tooltips show full term details and metadata
|
|
2133
|
+
|
|
2134
|
+
**Technical Implementation:**
|
|
2135
|
+
- `modules/termview_widget.py`: New widget with FlowLayout, TermBlock classes for visual display
|
|
2136
|
+
- RYS-style tokenization preserves multi-word terms (e.g., "De uitvinding heeft betrekking op een werkwijze")
|
|
2137
|
+
- Direct integration with Translation Results termbase cache for instant updates
|
|
2138
|
+
- Smart refresh: Updates immediately after termbase search completes
|
|
2139
|
+
|
|
2140
|
+
**Termbase Search Enhancements:**
|
|
2141
|
+
- Fixed punctuation handling: Terms like "gew.%" now matched correctly
|
|
2142
|
+
- Changed from `strip()` to `rstrip()/lstrip()` to preserve internal punctuation
|
|
2143
|
+
- Use lookaround word boundaries `(?<!\w)(?!\w)` for terms with punctuation
|
|
2144
|
+
- Standard `\b` boundaries for regular words
|
|
2145
|
+
|
|
2146
|
+
**Bug Fixes:**
|
|
2147
|
+
- Fixed data format mismatch between termbase cache dict and Termview list format
|
|
2148
|
+
- Fixed timing issue where Termview updated before termbase search completed
|
|
2149
|
+
- Fixed tokenization regex to capture terms with special characters
|
|
2150
|
+
- Removed debug logging after successful implementation
|
|
2151
|
+
|
|
2152
|
+
### 🎯 Priority & Visual Improvements
|
|
2153
|
+
- Project termbases (#1 priority) display with pink border for instant recognition
|
|
2154
|
+
- Background termbases display with blue border
|
|
2155
|
+
- Clean, minimal design with 1px padding and compact spacing
|
|
2156
|
+
|
|
2157
|
+
---
|
|
2158
|
+
|
|
2159
|
+
## [1.8.0] - November 23, 2025
|
|
2160
|
+
|
|
2161
|
+
### UI/UX Improvements
|
|
2162
|
+
- **Tab Styling Refinement**: Reduced selected tab border-bottom from 3px to 1px for a more subtle, professional appearance
|
|
2163
|
+
- **Visual Consistency**: Maintained light blue background highlighting (rgba(33, 150, 243, 0.08)) with thinner accent line
|
|
2164
|
+
- **Applied Across Application**: Updated styling for all tab widgets including Resources, Modules, TM, Settings, Domain, Import, Results, and Prompt Manager tabs
|
|
2165
|
+
- **Theme Manager Update**: Global tab styling now uses refined 1px border-bottom for consistent appearance
|
|
2166
|
+
|
|
2167
|
+
### Technical Changes
|
|
2168
|
+
- Updated border-bottom styling in 12 locations across main application and modules
|
|
2169
|
+
- Modified theme_manager.py for global tab appearance consistency
|
|
2170
|
+
- Maintained focus removal and outline suppression for cleaner tab interactions
|
|
2171
|
+
|
|
2172
|
+
---
|
|
2173
|
+
|
|
2174
|
+
## [1.6.6] - November 23, 2025
|
|
2175
|
+
|
|
2176
|
+
### ✅ Simplified TM/Termbase Management System
|
|
2177
|
+
|
|
2178
|
+
**Major Redesign:**
|
|
2179
|
+
|
|
2180
|
+
- 🎯 **Simple Read/Write Checkbox System**
|
|
2181
|
+
- Removed confusing "Active" checkbox and "Project TM/Termbase" concepts
|
|
2182
|
+
- **Translation Memories:** Simple Read (green ✓) and Write (blue ✓) checkboxes
|
|
2183
|
+
- **Termbases:** Simple Read (green ✓) and Write (blue ✓) checkboxes
|
|
2184
|
+
- All TMs and termbases start completely unchecked by default
|
|
2185
|
+
- Users explicitly check Read to use for matching, Write to allow updates
|
|
2186
|
+
|
|
2187
|
+
- 📊 **Auto-Priority System for Termbases**
|
|
2188
|
+
- Priorities 1-N automatically assigned to Read-enabled termbases
|
|
2189
|
+
- Priority #1 = Project Termbase (pink highlighting, highest priority)
|
|
2190
|
+
- Priority #2, #3, etc. = Background termbases (lower priorities)
|
|
2191
|
+
- No manual project termbase designation needed - just check Read boxes
|
|
2192
|
+
- Priority based on activation order (ranking in database)
|
|
2193
|
+
|
|
2194
|
+
- 🎨 **Cleaner Column Layout**
|
|
2195
|
+
- **TMs:** `TM Name | Languages | Entries | Read | Write | Last Modified | Description`
|
|
2196
|
+
- **Termbases:** `Type | Name | Languages | Terms | Read | Write | Priority`
|
|
2197
|
+
- Removed redundant columns and confusing labels
|
|
2198
|
+
- Type auto-shows "📌 Project" for priority #1, "Background" for others
|
|
2199
|
+
|
|
2200
|
+
- 🔒 **Read-Only Database Defaults**
|
|
2201
|
+
- New TMs created with `read_only=1` (Write unchecked by default)
|
|
2202
|
+
- New termbases created with `read_only=1` (Write unchecked by default)
|
|
2203
|
+
- Prevents accidental updates to reference memories
|
|
2204
|
+
- User must explicitly enable Write for TMs/termbases they want to update
|
|
2205
|
+
|
|
2206
|
+
**Benefits:**
|
|
2207
|
+
- Much simpler mental model: Read = use for matching, Write = allow updates
|
|
2208
|
+
- No more confusion about "Active" vs "Project" vs "Background"
|
|
2209
|
+
- Project termbase is simply the highest priority (first activated)
|
|
2210
|
+
- Clear visual feedback with color-coded checkboxes (green Read, blue Write)
|
|
2211
|
+
- Safer defaults prevent accidental corruption of reference resources
|
|
2212
|
+
|
|
2213
|
+
---
|
|
2214
|
+
|
|
2215
|
+
## [1.7.9] - November 22, 2025
|
|
2216
|
+
|
|
2217
|
+
### 🔍 Find/Replace & TM Enhancements
|
|
2218
|
+
|
|
2219
|
+
**Fixed:**
|
|
2220
|
+
|
|
2221
|
+
- ✨ **Find/Replace Highlighting System** - Complete rewrite using consistent QTextCursor approach
|
|
2222
|
+
- "Find Next" now correctly highlights matches with yellow background
|
|
2223
|
+
- "Highlight All" button now actually highlights all matches in the grid
|
|
2224
|
+
- Font size no longer changes during navigation (previously shrunk with each find)
|
|
2225
|
+
- Switched from QLabel+HTML (which replaced widgets) to QTextCursor+QTextCharFormat (preserves existing widgets)
|
|
2226
|
+
- Matches same highlighting system used by filter boxes
|
|
2227
|
+
- Supports case-sensitive/insensitive, whole words, and entire segment modes
|
|
2228
|
+
|
|
2229
|
+
- ✨ **No More TM Saves During Find/Replace** - Eliminated slowdowns during search navigation
|
|
2230
|
+
- Added `find_replace_active` flag to disable background TM saves
|
|
2231
|
+
- Prevents segments from being saved to TM on every "Find Next" click
|
|
2232
|
+
- Re-enables TM saves when dialog closes
|
|
2233
|
+
- Also disables expensive TM/MT/LLM lookups during find/replace operations
|
|
2234
|
+
- Results in much faster navigation through search results
|
|
2235
|
+
|
|
2236
|
+
**Added:**
|
|
2237
|
+
|
|
2238
|
+
- 🌍 **Bidirectional TM Search** - TMs now search in both directions automatically
|
|
2239
|
+
- When translating nl→en, also searches en→nl TMs for reverse matches
|
|
2240
|
+
- Example: English source text can match Dutch source in reverse TM
|
|
2241
|
+
- Reverse matches clearly marked with "Reverse" indicator
|
|
2242
|
+
- Improves TM utilization by ~2x without any user action required
|
|
2243
|
+
|
|
2244
|
+
- 🌍 **Language Variant Matching** - Base language codes match all regional variants
|
|
2245
|
+
- "en" matches "en-US", "en-GB", "en-AU" automatically
|
|
2246
|
+
- "nl" matches "nl-NL", "nl-BE" automatically
|
|
2247
|
+
- TMX import now handles language variants gracefully
|
|
2248
|
+
- User can choose to strip variants or preserve them during import
|
|
2249
|
+
- Supports bidirectional matching with variants (e.g., nl-BE → en-US works both ways)
|
|
2250
|
+
|
|
2251
|
+
- 💾 **Activated TM Persistence** - Projects remember which TMs are active
|
|
2252
|
+
- Activated TMs saved to `project.json` in `tm_settings.activated_tm_ids`
|
|
2253
|
+
- Automatically restored when project is reopened
|
|
2254
|
+
- No more manually re-activating TMs for each project session
|
|
2255
|
+
- Works per-project (different projects can have different active TMs)
|
|
2256
|
+
|
|
2257
|
+
- 📝 **TM Pre-Check in Batch Translation** - Saves API costs by checking TM first
|
|
2258
|
+
- Before making expensive API calls, checks if 100% TM matches exist
|
|
2259
|
+
- Auto-inserts TM matches and skips API translation for those segments
|
|
2260
|
+
- Shows clear log of how many API calls were saved
|
|
2261
|
+
- Can save significant costs on projects with high TM leverage
|
|
2262
|
+
- Controlled by "Check TM before API call" setting (enabled by default)
|
|
2263
|
+
|
|
2264
|
+
- 🎨 **Language Display Normalization** - Consistent language variant format
|
|
2265
|
+
- All language variants displayed as lowercase-UPPERCASE (e.g., nl-NL, en-US)
|
|
2266
|
+
- Previously: inconsistent formats like "nl-nl", "EN-us", "NL-BE"
|
|
2267
|
+
- Now: standardized as "nl-NL", "en-US", "nl-BE"
|
|
2268
|
+
- Applied in TM manager UI, TMX import dialogs, and all TM displays
|
|
2269
|
+
|
|
2270
|
+
**Technical Details:**
|
|
2271
|
+
|
|
2272
|
+
- **Find/Replace Highlighting:**
|
|
2273
|
+
- `highlight_search_term()` rewritten to use `QTextCursor` and `QTextCharFormat`
|
|
2274
|
+
- `highlight_all_matches()` rewritten to actually highlight instead of just filtering
|
|
2275
|
+
- Added `processEvents()` after grid load to ensure widgets exist before highlighting
|
|
2276
|
+
- Files: `Supervertaler.py` lines 15726-15792, 15982-16008
|
|
2277
|
+
|
|
2278
|
+
- **TM Save Prevention:**
|
|
2279
|
+
- Added `find_replace_active` flag check in `_handle_target_text_debounced_by_id()` (line 13660)
|
|
2280
|
+
- Added same check in `update_status_icon()` (line 13703)
|
|
2281
|
+
- Added check in `on_cell_selected()` to skip TM/MT/LLM lookups (line 14050)
|
|
2282
|
+
- Files: `Supervertaler.py` lines 13657-13664, 13699-13709, 14044-14051
|
|
2283
|
+
|
|
2284
|
+
- **Bidirectional Search:**
|
|
2285
|
+
- `get_exact_match()` now searches reverse direction if no forward match found
|
|
2286
|
+
- `search_fuzzy_matches()` includes reverse direction results
|
|
2287
|
+
- Results marked with `reverse_match: True` metadata
|
|
2288
|
+
- Files: `modules/database_manager.py` lines 635-732, 744-810
|
|
2289
|
+
|
|
2290
|
+
- **Language Variant Matching:**
|
|
2291
|
+
- Added `get_base_lang_code()` to extract base from variants (en-US → en)
|
|
2292
|
+
- Added `normalize_lang_variant()` for consistent display formatting
|
|
2293
|
+
- Added `languages_are_compatible()` for base code comparison
|
|
2294
|
+
- Database queries use LIKE pattern: `(source_lang = 'en' OR source_lang LIKE 'en-%')`
|
|
2295
|
+
- Files: `modules/tmx_generator.py` lines 119-156, `modules/database_manager.py` lines 652-676
|
|
2296
|
+
|
|
2297
|
+
- **TMX Import with Variants:**
|
|
2298
|
+
- `detect_tmx_languages()` reads all language codes from TMX
|
|
2299
|
+
- `check_language_compatibility()` analyzes variant mismatches
|
|
2300
|
+
- `_load_tmx_into_db()` accepts `strip_variants` parameter
|
|
2301
|
+
- User dialog offers "Import with variant stripping" vs "Create new TM"
|
|
2302
|
+
- Files: `modules/translation_memory.py` lines 408-557, `Supervertaler.py` lines 4807-4903
|
|
2303
|
+
|
|
2304
|
+
- **TM Persistence:**
|
|
2305
|
+
- Added `tm_settings` field to `Project` class (line 223)
|
|
2306
|
+
- `save_project_to_file()` saves activated TM IDs (lines 11442-11449)
|
|
2307
|
+
- `load_project()` restores activated TMs (lines 10797-10816)
|
|
2308
|
+
- Files: `Supervertaler.py` lines 220-285, 10794-10816, 11439-11449
|
|
2309
|
+
|
|
2310
|
+
**User Experience:**
|
|
2311
|
+
|
|
2312
|
+
- Find/Replace dialog now fast and responsive with proper highlighting
|
|
2313
|
+
- "Highlight All" button finally works as expected
|
|
2314
|
+
- No font size changes during search navigation
|
|
2315
|
+
- TMs work across language variants automatically (no manual configuration)
|
|
2316
|
+
- Projects remember your TM activation choices
|
|
2317
|
+
- Batch translation saves money by checking TM first
|
|
2318
|
+
- Clear visual feedback for all TM operations
|
|
2319
|
+
|
|
2320
|
+
---
|
|
2321
|
+
|
|
2322
|
+
## [1.7.8] - November 22, 2025
|
|
2323
|
+
|
|
2324
|
+
### 🔍 Filter Highlighting Fix
|
|
2325
|
+
|
|
2326
|
+
**Fixed:**
|
|
2327
|
+
|
|
2328
|
+
- ✨ **Filter Search Term Highlighting** - Fixed highlighting of search terms in filtered segments
|
|
2329
|
+
- Source and target filter boxes now correctly highlight matching terms in yellow
|
|
2330
|
+
- Previously used delegate-based highlighting which was bypassed by cell widgets
|
|
2331
|
+
- New implementation uses widget-internal highlighting with QTextCursor + QTextCharFormat
|
|
2332
|
+
- Case-insensitive matching: "test", "TEST", "TeSt" all match "test"
|
|
2333
|
+
- Multiple matches per cell are highlighted correctly
|
|
2334
|
+
- Highlights automatically clear when filters are removed
|
|
2335
|
+
|
|
2336
|
+
**Technical Details:**
|
|
2337
|
+
|
|
2338
|
+
- **Root Cause:** Source/target cells use `setCellWidget()` with QTextEdit widgets, which completely bypass `QStyledItemDelegate.paint()` method
|
|
2339
|
+
- **Solution:** Created `_highlight_text_in_widget()` method that applies highlighting directly within QTextEdit widgets
|
|
2340
|
+
- **Implementation:**
|
|
2341
|
+
- Uses `QTextCursor` to find all occurrences of search term in widget's document
|
|
2342
|
+
- Applies `QTextCharFormat` with yellow background (#FFFF00) to each match
|
|
2343
|
+
- Clears previous highlights before applying new ones
|
|
2344
|
+
- Modified `apply_filters()` to call widget highlighting instead of delegate approach
|
|
2345
|
+
- `clear_filters()` automatically clears highlights by reloading grid
|
|
2346
|
+
- **Files Modified:**
|
|
2347
|
+
- `Supervertaler.py` (lines ~15765-15810): New `_highlight_text_in_widget()` method
|
|
2348
|
+
- `Supervertaler.py` (lines ~15779-15860): Modified `apply_filters()` to use widget highlighting
|
|
2349
|
+
- **Documentation Added:**
|
|
2350
|
+
- `docs/FILTER_HIGHLIGHTING_FIX.md` - Complete technical explanation of the fix
|
|
2351
|
+
|
|
2352
|
+
**User Experience:**
|
|
2353
|
+
|
|
2354
|
+
- Filter boxes now work as expected with visible yellow highlighting
|
|
2355
|
+
- Improves searchability and visual feedback when filtering segments
|
|
2356
|
+
- No performance impact with large segment counts (tested with 219 segments)
|
|
2357
|
+
|
|
2358
|
+
---
|
|
2359
|
+
|
|
2360
|
+
## [1.7.7] - November 21, 2025
|
|
2361
|
+
|
|
2362
|
+
### 🎯 Termbase Display Customization
|
|
2363
|
+
|
|
2364
|
+
**Added:**
|
|
2365
|
+
|
|
2366
|
+
- ✨ **User-Configurable Termbase Sorting** - Control how termbase matches are displayed
|
|
2367
|
+
- Three sorting options available in Settings → General:
|
|
2368
|
+
- **Order of appearance in source text** (default) - Matches appear as they occur in the segment
|
|
2369
|
+
- **Alphabetical (A-Z)** - Matches sorted by source term alphabetically
|
|
2370
|
+
- **By length (longest first)** - Longer multi-word terms prioritized over shorter ones
|
|
2371
|
+
- Sorting preference persists across sessions
|
|
2372
|
+
- Only affects termbase matches; TM, MT, and LLM results maintain their existing order
|
|
2373
|
+
|
|
2374
|
+
- ✨ **Smart Substring Filtering** - Reduces termbase match clutter
|
|
2375
|
+
- Optional "Hide shorter termbase matches" checkbox in Settings → General
|
|
2376
|
+
- Automatically filters out shorter terms that are fully contained within longer matched terms
|
|
2377
|
+
- Example: If both "cooling" and "cooling system" match, only "cooling system" is shown
|
|
2378
|
+
- Helps focus on the most relevant multi-word terminology
|
|
2379
|
+
- Can be toggled on/off without restarting the application
|
|
2380
|
+
|
|
2381
|
+
**Enhanced:**
|
|
2382
|
+
|
|
2383
|
+
- 🔧 **Bold Font for Project Resources** - Project termbases and TMs now display with bold provider codes (TB, TM) instead of asterisks for cleaner visual distinction
|
|
2384
|
+
- 🎨 **Translation Results Panel** - Added parent app reference for accessing user settings dynamically
|
|
2385
|
+
|
|
2386
|
+
**Technical Details:**
|
|
2387
|
+
|
|
2388
|
+
- Settings stored in `ui_preferences.json` under `general_settings`
|
|
2389
|
+
- `TranslationResultsPanel` now accepts `parent_app` parameter for settings access
|
|
2390
|
+
- New methods: `_sort_termbase_matches()` and `_filter_shorter_matches()` in `translation_results_panel.py`
|
|
2391
|
+
- Sorting uses case-insensitive comparison for alphabetical mode
|
|
2392
|
+
- Filtering uses substring detection with length comparison
|
|
2393
|
+
- Files Modified:
|
|
2394
|
+
- `Supervertaler.py` (lines 2391-2393, 7377-7406, 8316-8360, 8930, 9548, 12604-12606)
|
|
2395
|
+
- `modules/translation_results_panel.py` (lines 626-628, 1201-1276, 1324-1329)
|
|
2396
|
+
|
|
2397
|
+
**User Experience:**
|
|
2398
|
+
|
|
2399
|
+
- Settings are immediately accessible via Settings → General → TM/Termbase Options
|
|
2400
|
+
- Tooltips explain each option clearly
|
|
2401
|
+
- Changes apply to all subsequent segment matches
|
|
2402
|
+
- No performance impact on match retrieval
|
|
2403
|
+
|
|
2404
|
+
---
|
|
2405
|
+
|
|
2406
|
+
## [1.7.6] - November 20, 2025
|
|
2407
|
+
|
|
2408
|
+
### 💾 Auto Backup System
|
|
2409
|
+
|
|
2410
|
+
**Added:**
|
|
2411
|
+
|
|
2412
|
+
- ✨ **Automatic Backup System** - Prevents data loss during translation work
|
|
2413
|
+
- Auto-saves project.json at configurable intervals (1-60 minutes, default: 5 minutes)
|
|
2414
|
+
- Auto-exports TMX backup file in same folder as project.json
|
|
2415
|
+
- TMX backup includes all segments for maximum recovery capability
|
|
2416
|
+
- Settings UI in Settings → General tab with enable/disable toggle
|
|
2417
|
+
- Non-intrusive background operation with timestamp logging
|
|
2418
|
+
- Settings persist across sessions in ui_preferences.json
|
|
2419
|
+
- Timer automatically restarts when settings are changed
|
|
2420
|
+
|
|
2421
|
+
**Technical Details:**
|
|
2422
|
+
|
|
2423
|
+
- QTimer-based system with millisecond precision
|
|
2424
|
+
- Uses existing `save_project_to_file()` and `TMXGenerator` methods
|
|
2425
|
+
- Graceful error handling without interrupting workflow
|
|
2426
|
+
- Only runs when project is open and has a file path
|
|
2427
|
+
- TMX file named `{project_name}_backup.tmx` for easy identification
|
|
2428
|
+
|
|
2429
|
+
---
|
|
2430
|
+
|
|
2431
|
+
## [1.7.5] - November 20, 2025
|
|
2432
|
+
|
|
2433
|
+
### 🐛 Critical Bug Fix - Translation Memory Save Flood
|
|
2434
|
+
|
|
2435
|
+
**Fixed:**
|
|
2436
|
+
|
|
2437
|
+
- ✅ **TM Save Flood During Grid Operations** - CRITICAL FIX
|
|
2438
|
+
- **Issue:** Every time `load_segments_to_grid()` was called (startup, filtering, clear filters), all segments with status "translated"/"confirmed"/"approved" would trigger false TM database saves 1-2 seconds after grid load
|
|
2439
|
+
- **Symptoms:**
|
|
2440
|
+
- 10+ second UI freeze on projects with 200+ segments
|
|
2441
|
+
- Massive unnecessary database writes (219 saves on a 219-segment project)
|
|
2442
|
+
- Made filtering operations completely unusable
|
|
2443
|
+
- Could potentially corrupt data or cause performance issues on large projects
|
|
2444
|
+
- **Root Cause:** Qt internally queues document change events when `setPlainText()` is called on QTextEdit widgets, even when signals are blocked. When `blockSignals(False)` was called after grid loading, Qt delivered all these queued events, triggering `textChanged` for every segment. By that time, the suppression flag had already been restored, so the suppression check failed.
|
|
2445
|
+
- **Solution:**
|
|
2446
|
+
- Added `_initial_load_complete` flag to `EditableGridTextEditor` class
|
|
2447
|
+
- Signal handler now ignores the first spurious `textChanged` event after widget creation
|
|
2448
|
+
- All subsequent real user edits are processed normally
|
|
2449
|
+
- Clean, minimal fix that doesn't interfere with Qt's event system
|
|
2450
|
+
- **Testing:** Verified on BRANTS project (219 segments) - zero false TM saves during startup, filtering, and filter clearing
|
|
2451
|
+
- **Files Modified:** Supervertaler.py (lines 835, 11647-11651)
|
|
2452
|
+
|
|
2453
|
+
**Impact:**
|
|
2454
|
+
- **Performance:** Grid loading is now instant with no post-load freeze
|
|
2455
|
+
- **Database:** Eliminates 200+ unnecessary database writes per grid operation
|
|
2456
|
+
- **User Experience:** Filtering and grid operations are now fast and responsive
|
|
2457
|
+
- **Data Integrity:** Prevents potential database corruption from excessive writes
|
|
2458
|
+
|
|
2459
|
+
---
|
|
2460
|
+
|
|
2461
|
+
## [1.7.4] - November 20, 2025
|
|
2462
|
+
|
|
2463
|
+
### 💾 Project Persistence Improvements
|
|
2464
|
+
|
|
2465
|
+
**Enhanced:**
|
|
2466
|
+
|
|
2467
|
+
- ✅ **Primary Prompt Persistence** - Projects now remember your selected primary prompt
|
|
2468
|
+
- Automatically restores primary prompt when reopening project
|
|
2469
|
+
- Updates UI label to show active prompt name
|
|
2470
|
+
- Works with Unified Prompt Library system
|
|
2471
|
+
|
|
2472
|
+
- ✅ **Image Context Folder Persistence** - Projects remember loaded image folders
|
|
2473
|
+
- Image context folder path saved to project.json
|
|
2474
|
+
- Automatically reloads all images from saved folder on project open
|
|
2475
|
+
- Updates UI status label showing image count and folder name
|
|
2476
|
+
- Logs success/warnings if folder path has changed
|
|
2477
|
+
|
|
2478
|
+
- ✅ **Attached Prompts Persistence** - All attached prompts are restored
|
|
2479
|
+
- Maintains complete prompt configuration across sessions
|
|
2480
|
+
- Updates attached prompts list UI on restore
|
|
2481
|
+
|
|
2482
|
+
**Technical:**
|
|
2483
|
+
- Changed from `library.set_primary_prompt()` to `_set_primary_prompt()` for UI updates
|
|
2484
|
+
- Changed from `library.attach_prompt()` to `_attach_prompt()` for UI updates
|
|
2485
|
+
- Added `image_context_folder` to `prompt_settings` in project.json
|
|
2486
|
+
- Proper UI synchronization on project load for all prompt settings
|
|
2487
|
+
|
|
2488
|
+
**User Experience:**
|
|
2489
|
+
Now when you save a project, it remembers:
|
|
2490
|
+
- ✓ Which primary prompt you selected
|
|
2491
|
+
- ✓ Which prompts you attached
|
|
2492
|
+
- ✓ Which image folder you loaded
|
|
2493
|
+
- ✓ All settings restore automatically on project open
|
|
2494
|
+
|
|
2495
|
+
---
|
|
2496
|
+
|
|
2497
|
+
## [1.7.3] - November 20, 2025
|
|
2498
|
+
|
|
2499
|
+
### 🧪 Prompt Preview & System Template Improvements
|
|
2500
|
+
|
|
2501
|
+
**New Features:**
|
|
2502
|
+
|
|
2503
|
+
**Added:**
|
|
2504
|
+
- ✅ **Preview Combined Prompts Button** - New "🧪 Preview Prompts" button in Project Editor segment action bar
|
|
2505
|
+
- Shows complete assembled prompt that will be sent to AI
|
|
2506
|
+
- Displays System Template + Custom Prompts + current segment text
|
|
2507
|
+
- Real-time composition info (segment ID, languages, character count, attached prompts)
|
|
2508
|
+
- Visual context indicator showing which images will be sent alongside text
|
|
2509
|
+
- Clear tooltip explaining functionality
|
|
2510
|
+
|
|
2511
|
+
**Enhanced:**
|
|
2512
|
+
- ✅ **System Template Editor** - Improved layout and usability in Settings → System Prompts
|
|
2513
|
+
- Increased text editor height from 400px to 500px
|
|
2514
|
+
- Added stretch factors for proper expansion to fill available space
|
|
2515
|
+
- Enabled word wrap at widget width for easier reading
|
|
2516
|
+
- Set plain text mode to prevent formatting issues
|
|
2517
|
+
|
|
2518
|
+
- ✅ **Figure Context Detection** - Fixed regex pattern for accurate figure reference detection
|
|
2519
|
+
- Now correctly matches "Figuur 3" → "3" instead of "3toont"
|
|
2520
|
+
- Properly handles subfigures (e.g., Figure 1A, 2B)
|
|
2521
|
+
- Requires space between "figuur/figure/fig" and number
|
|
2522
|
+
|
|
2523
|
+
**Improved:**
|
|
2524
|
+
- ✅ **Image Context Preview** - Preview dialog now shows detailed image information
|
|
2525
|
+
- 🖼️ Displays which images will be sent with prompt (e.g., "Figure 3")
|
|
2526
|
+
- ⚠️ Warns if references detected but images not found
|
|
2527
|
+
- ℹ️ Shows info when images loaded but not referenced in segment
|
|
2528
|
+
- Yellow banner highlights when images are being sent as binary data
|
|
2529
|
+
|
|
2530
|
+
**Technical:**
|
|
2531
|
+
- Updated `UnifiedPromptManagerQt._preview_combined_prompt()` to access actual segment data
|
|
2532
|
+
- Added `_preview_combined_prompt_from_grid()` method in main app
|
|
2533
|
+
- Fixed attribute reference from `self.unified_prompt_manager` to `self.prompt_manager_qt`
|
|
2534
|
+
- Improved figure reference regex from `[\w\d]+(?:[\s\.\-]*[\w\d]+)?` to `\d+[a-zA-Z]?`
|
|
2535
|
+
|
|
2536
|
+
---
|
|
2537
|
+
|
|
2538
|
+
## [1.7.2] - November 19, 2025
|
|
2539
|
+
|
|
2540
|
+
### 🔧 Termbase Critical Fixes - Term Deduplication & Selection
|
|
2541
|
+
|
|
2542
|
+
**Major Bug Fixes:**
|
|
2543
|
+
|
|
2544
|
+
**Fixed:**
|
|
2545
|
+
- ✅ **Multiple Translations Display** - Fixed critical deduplication bug where only one translation was kept for terms with same source text
|
|
2546
|
+
- Example: "inrichting → device" AND "inrichting → apparatus" now both display correctly
|
|
2547
|
+
- Root cause: Used `source_term` as dict key, now uses `term_id` to allow multiple translations
|
|
2548
|
+
- ✅ **Termbase Selection** - Terms now save only to selected termbases (previously saved to all active termbases)
|
|
2549
|
+
- Filter logic working correctly with INTEGER termbase IDs
|
|
2550
|
+
- Debug logging confirmed type matching works as expected
|
|
2551
|
+
- ✅ **Segment Highlighting Consistency** - Termbase highlighting now works consistently across all segments
|
|
2552
|
+
- Fixed cache iteration to handle new dict structure with `term_id` keys
|
|
2553
|
+
- Updated all code paths that consume termbase matches
|
|
2554
|
+
|
|
2555
|
+
**Technical Changes:**
|
|
2556
|
+
- **Dictionary Structure Change:**
|
|
2557
|
+
- Changed from: `matches[source_term] = {...}` (only one translation per source)
|
|
2558
|
+
- Changed to: `matches[term_id] = {'source': source_term, 'translation': target_term, ...}` (multiple translations allowed)
|
|
2559
|
+
- **Code Locations Updated:**
|
|
2560
|
+
- `find_termbase_matches_in_source()` - Changed dict key from source_term to term_id
|
|
2561
|
+
- `highlight_termbase_matches()` - Updated to extract source term from match_info
|
|
2562
|
+
- `DocumentView._create_highlighted_html()` - Updated iteration logic
|
|
2563
|
+
- `_get_cached_matches()` - Fixed to extract source term from dict values (2 locations)
|
|
2564
|
+
- All hover tooltip and double-click handlers updated
|
|
2565
|
+
|
|
2566
|
+
**Impact:**
|
|
2567
|
+
- 🎯 **Better Term Disambiguation** - Users can now add multiple translations for same source term
|
|
2568
|
+
- 🎨 **Accurate Highlighting** - All matching terms highlighted correctly in grid
|
|
2569
|
+
- ✅ **Correct Termbase Selection** - Terms added only to user-selected termbases
|
|
2570
|
+
|
|
2571
|
+
---
|
|
2572
|
+
|
|
2573
|
+
## [1.7.1] - November 19, 2025
|
|
2574
|
+
|
|
2575
|
+
### 🎨 Termbase UI Polish - Visual Consistency Improvements
|
|
2576
|
+
|
|
2577
|
+
**Bug Fixes & UI Improvements:**
|
|
2578
|
+
|
|
2579
|
+
**Fixed:**
|
|
2580
|
+
- ✅ **Deleted Term Highlighting** - Fixed issue where deleted termbase terms remained highlighted after deletion and navigation
|
|
2581
|
+
- ✅ **Termbase Name Display** - Termbase names now correctly shown in Term Info metadata area
|
|
2582
|
+
- ✅ **Term Count Updates** - Term counts in termbase list now update immediately after adding terms
|
|
2583
|
+
- ✅ **Project Termbase Colors** - Fixed project termbases showing blue instead of pink in translation results
|
|
2584
|
+
- ✅ **Ranking Metadata** - Added missing `ranking` field to TranslationMatch metadata in all code paths
|
|
2585
|
+
|
|
2586
|
+
**Improved:**
|
|
2587
|
+
- 🎨 **Visual Consistency** - Project termbase matches now display with same style as background termbases (colored number badge only)
|
|
2588
|
+
- 🎯 **Effective Project Detection** - Uses `ranking == 1` as fallback when `is_project_termbase` flag is false
|
|
2589
|
+
- 🔄 **Real-time Refresh** - Termbase list UI refreshes immediately via callback after term addition
|
|
2590
|
+
- 📊 **Database Query Fix** - Fixed TEXT/INTEGER comparison with CAST for accurate term counts
|
|
2591
|
+
|
|
2592
|
+
**Technical:**
|
|
2593
|
+
- Modified `highlight_termbase_matches()` to clear formatting before early return
|
|
2594
|
+
- Added `termbase_name` extraction and display in translation results panel
|
|
2595
|
+
- Implemented `refresh_termbase_list()` callback storage and invocation
|
|
2596
|
+
- Added explicit boolean conversion for `is_project_termbase` from SQLite
|
|
2597
|
+
- Updated `CompactMatchItem.update_styling()` to use consistent badge-only coloring
|
|
2598
|
+
- Fixed two locations where `ranking` was missing from TranslationMatch metadata
|
|
2599
|
+
|
|
2600
|
+
---
|
|
2601
|
+
|
|
2602
|
+
## [1.7.0] - November 18, 2025
|
|
2603
|
+
|
|
2604
|
+
### 📚 Project Termbases - Dedicated Project Terminology
|
|
2605
|
+
|
|
2606
|
+
**Project-Specific Terminology Management** - A powerful new termbase system that distinguishes between project-specific terminology (one per project) and background termbases (multiple allowed), with automatic term extraction from project source text.
|
|
2607
|
+
|
|
2608
|
+
### Added
|
|
2609
|
+
|
|
2610
|
+
**Project Termbase System:**
|
|
2611
|
+
- 📌 **Project Termbase Designation** - Mark one termbase per project as the official project termbase
|
|
2612
|
+
- 🎨 **Pink Highlighting** - Project termbase matches highlighted in light pink (RGB 255, 182, 193) in both grid and results panel
|
|
2613
|
+
- 🔵 **Background Termbases** - Regular termbases use priority-based blue shading as before
|
|
2614
|
+
- 🔍 **Term Extraction** - Automatically extract terminology from project source segments
|
|
2615
|
+
- 🧠 **Smart Algorithm** - Frequency analysis, n-gram extraction, scoring based on capitalization and special characters
|
|
2616
|
+
- 🌐 **Multi-Language Support** - Stop words for English, Dutch, German, French, Spanish
|
|
2617
|
+
- 📊 **Preview & Select** - Review extracted terms with scores before adding to termbase
|
|
2618
|
+
- 🎯 **Configurable Parameters** - Adjust min frequency, max n-gram size, language, term count
|
|
2619
|
+
- ⚙️ **Standalone Module** - Term extractor designed as independent module (`modules/term_extractor.py`) for future CLI tool
|
|
2620
|
+
|
|
2621
|
+
**Termbases Tab Enhancements:**
|
|
2622
|
+
- 📋 **Type Column** - Shows "📌 Project" in pink or "Background" for each termbase
|
|
2623
|
+
- 🔘 **Set/Unset Buttons** - Easy designation of project termbases
|
|
2624
|
+
- 🔍 **Extract Terms Button** - Launch term extraction dialog (only enabled with project loaded)
|
|
2625
|
+
- 🎨 **Visual Distinction** - Project termbase names shown in pink
|
|
2626
|
+
- 🔒 **Validation** - System enforces "only one project termbase per project" rule
|
|
2627
|
+
|
|
2628
|
+
**Database Schema:**
|
|
2629
|
+
- 🗄️ **is_project_termbase Column** - Added to termbases table with migration
|
|
2630
|
+
- ✅ **Backward Compatible** - Existing databases upgraded automatically
|
|
2631
|
+
|
|
2632
|
+
**Termbase Manager Extensions:**
|
|
2633
|
+
- `set_as_project_termbase(termbase_id, project_id)` - Designate project termbase
|
|
2634
|
+
- `unset_project_termbase(termbase_id)` - Remove designation
|
|
2635
|
+
- `get_project_termbase(project_id)` - Retrieve project termbase
|
|
2636
|
+
- Enhanced `create_termbase()` with `is_project_termbase` parameter and validation
|
|
2637
|
+
- Enhanced `get_all_termbases()` to sort project termbase first
|
|
2638
|
+
|
|
2639
|
+
**Match Pipeline Integration:**
|
|
2640
|
+
- 🔗 **Metadata Tracking** - `is_project_termbase` flag passed through entire match pipeline
|
|
2641
|
+
- 🎨 **Grid Highlighting** - Light pink backgrounds for project termbase matches in source column
|
|
2642
|
+
- 📋 **Results Panel** - Light pink number badges for project termbase matches
|
|
2643
|
+
|
|
2644
|
+
### Changed
|
|
2645
|
+
- Updated termbase search to include `is_project_termbase` field
|
|
2646
|
+
- Modified `highlight_termbase_matches()` to use pink for project termbases
|
|
2647
|
+
- Enhanced `TranslationMatch` metadata to capture project termbase status
|
|
2648
|
+
- Updated `CompactMatchItem` styling to handle three-way color logic (forbidden=black, project=pink, background=blue)
|
|
2649
|
+
|
|
2650
|
+
### Technical Details
|
|
2651
|
+
- **Term Extraction Algorithm:**
|
|
2652
|
+
- N-gram extraction (unigrams, bigrams, trigrams)
|
|
2653
|
+
- Frequency-based scoring with logarithmic scaling
|
|
2654
|
+
- Bonuses for capitalization (+3), special characters (+2), n-gram size (+1.5 per word)
|
|
2655
|
+
- Term classification: proper_noun, technical, phrase, word
|
|
2656
|
+
- Configurable filtering by frequency, type, score
|
|
2657
|
+
- **Color Scheme:**
|
|
2658
|
+
- Project Termbase: `#FFB6C1` (light pink)
|
|
2659
|
+
- Forbidden Terms: `#000000` (black)
|
|
2660
|
+
- Background Termbases: `#4d94ff` (blue with priority-based darkening)
|
|
2661
|
+
|
|
2662
|
+
### Use Cases
|
|
2663
|
+
- **Starting New Projects** - Extract project-specific terminology automatically
|
|
2664
|
+
- **Consistency** - Ensure project terminology has visual precedence
|
|
2665
|
+
- **Background Knowledge** - Maintain general termbases alongside project-specific ones
|
|
2666
|
+
- **Source-Only Termbases** - Perfect for extracting terms before translation begins
|
|
2667
|
+
|
|
2668
|
+
---
|
|
2669
|
+
|
|
2670
|
+
## [1.6.5] - November 18, 2025
|
|
2671
|
+
|
|
2672
|
+
### 📁 File Dialog Memory - Smart Directory Navigation
|
|
2673
|
+
|
|
2674
|
+
**File Dialogs Remember Your Last Location** - A quality-of-life improvement that significantly streamlines workflow by automatically remembering the last directory you navigated to across all file dialogs throughout the application.
|
|
2675
|
+
|
|
2676
|
+
### Added
|
|
2677
|
+
|
|
2678
|
+
**File Dialog Helper System:**
|
|
2679
|
+
- 📁 **Last Directory Memory** - File dialogs automatically open in the last used directory
|
|
2680
|
+
- 💾 **Persistent Storage** - Last directory saved to config file between sessions
|
|
2681
|
+
- 🔄 **Universal Coverage** - Works for all dialog types (open file, save file, select folder, multiple files)
|
|
2682
|
+
- 🎯 **Automatic Detection** - Extracts directory from file paths automatically
|
|
2683
|
+
- 🛠️ **Helper Module** - Created `modules/file_dialog_helper.py` with wrapper functions
|
|
2684
|
+
|
|
2685
|
+
**Config Manager Enhancements:**
|
|
2686
|
+
- Added `get_last_directory()` - Retrieve the last used directory
|
|
2687
|
+
- Added `set_last_directory()` - Save a directory as the last used location
|
|
2688
|
+
- Added `update_last_directory_from_file()` - Extract and save directory from file path
|
|
2689
|
+
|
|
2690
|
+
**Integration Points:**
|
|
2691
|
+
- Image Extractor (add DOCX files, select folder, output directory)
|
|
2692
|
+
- TMX import/export dialogs
|
|
2693
|
+
- Project open/save dialogs
|
|
2694
|
+
- Export dialogs (JSON, TMX, etc.)
|
|
2695
|
+
|
|
2696
|
+
**Benefits:**
|
|
2697
|
+
- No more navigating from program root every time
|
|
2698
|
+
- Improved workflow when working with files in the same folder
|
|
2699
|
+
- Transparent operation - works automatically without configuration
|
|
2700
|
+
- Persists between application sessions
|
|
2701
|
+
|
|
2702
|
+
### Technical Implementation
|
|
2703
|
+
- Created `modules/file_dialog_helper.py` with `get_open_file_name()`, `get_save_file_name()`, `get_existing_directory()`, `get_open_file_names()` wrappers
|
|
2704
|
+
- Extended `config_manager.py` with directory tracking methods
|
|
2705
|
+
- Updated key file dialog calls in `Supervertaler.py` to use helper functions
|
|
2706
|
+
- Last directory stored in `~/.supervertaler_config.json` (or dev mode equivalent)
|
|
2707
|
+
|
|
2708
|
+
---
|
|
2709
|
+
|
|
2710
|
+
## [1.6.4] - November 18, 2025
|
|
2711
|
+
|
|
2712
|
+
### 🌐 Superbrowser - Multi-Chat AI Browser
|
|
2713
|
+
|
|
2714
|
+
**Work with Multiple AI Chats Simultaneously** - A revolutionary new tab that displays ChatGPT, Claude, and Gemini side-by-side in resizable columns with persistent login sessions, perfect for comparing AI responses or maintaining multiple conversation threads.
|
|
2715
|
+
|
|
2716
|
+
### Added
|
|
2717
|
+
|
|
2718
|
+
**Superbrowser Tab:**
|
|
2719
|
+
- 🌐 **Three-Column Layout** - ChatGPT, Claude, and Gemini displayed simultaneously in resizable columns
|
|
2720
|
+
- 🔐 **Persistent Sessions** - Login credentials saved between sessions (no need to log in every time)
|
|
2721
|
+
- 🔧 **Collapsible Configuration** - Hide/show URL configuration panel to maximize screen space
|
|
2722
|
+
- 🎨 **Color-Coded Columns** - Each AI provider has distinct color (green, copper, blue)
|
|
2723
|
+
- 🏠 **Navigation Controls** - URL bar, reload, and home buttons for each column
|
|
2724
|
+
- 💾 **Profile Storage** - Separate persistent storage for each AI provider (cookies, cache, sessions)
|
|
2725
|
+
- 📱 **Minimal Headers** - Tiny 10px headers maximize space for chat windows
|
|
2726
|
+
- 🎯 **Dev Mode Support** - Uses `user_data_private/` for dev mode, `user_data/` for production
|
|
2727
|
+
|
|
2728
|
+
**Technical Implementation:**
|
|
2729
|
+
- Created `modules/superbrowser.py` - Standalone module with `SuperbrowserWidget`
|
|
2730
|
+
- Integrated QtWebEngine with OpenGL context sharing for proper rendering
|
|
2731
|
+
- Added persistent profile management using `QWebEngineProfile`
|
|
2732
|
+
- Implemented `ChatColumn` class for individual browser columns
|
|
2733
|
+
- Added to Specialised Tools as "🌐 Superbrowser" tab
|
|
2734
|
+
|
|
2735
|
+
**Use Cases:**
|
|
2736
|
+
- Compare how different AI models respond to the same prompt
|
|
2737
|
+
- Maintain separate conversation threads for different projects
|
|
2738
|
+
- Quick access to all major AI assistants without switching browser tabs
|
|
2739
|
+
- Research and development with multiple AI perspectives
|
|
2740
|
+
|
|
2741
|
+
### Fixed
|
|
2742
|
+
- QtWebEngine DLL compatibility issues resolved (version matching)
|
|
2743
|
+
- OpenGL context sharing properly initialized before QApplication creation
|
|
2744
|
+
- Profile storage paths follow application's dev mode patterns
|
|
2745
|
+
|
|
2746
|
+
### Dependencies
|
|
2747
|
+
- Added `PyQt6-WebEngine>=6.8.0,<6.9.0` requirement (version matched to PyQt6 6.8.1)
|
|
2748
|
+
|
|
2749
|
+
---
|
|
2750
|
+
|
|
2751
|
+
## [1.6.3] - November 18, 2025
|
|
2752
|
+
|
|
2753
|
+
### ⚡ UI Responsiveness & Precision Scroll Enhancements
|
|
2754
|
+
|
|
2755
|
+
**Major Performance Improvements & memoQ-Style Navigation** - Comprehensive UI responsiveness optimizations including debug settings system, disabled LLM auto-matching by default, precision scroll buttons, and auto-center active segment feature.
|
|
2756
|
+
|
|
2757
|
+
### Added
|
|
2758
|
+
|
|
2759
|
+
**Debug Settings System:**
|
|
2760
|
+
- 🐛 **Debug Settings Tab** - New dedicated tab in Settings dialog for debugging and performance tuning
|
|
2761
|
+
- 📝 **Verbose Logging Toggle** - Enable/disable detailed debug logs (textChanged events, update cycles, cell selection)
|
|
2762
|
+
- 📤 **Debug Log Export** - Export debug logs to timestamped files (`supervertaler_debug_log_YYYYMMDD_HHMMSS.txt`)
|
|
2763
|
+
- 🔄 **Auto-export Option** - Automatically export debug logs on application exit
|
|
2764
|
+
- 🗑️ **Clear Log Buffer** - Manual clear button for debug log buffer (10,000 entry limit)
|
|
2765
|
+
- ⏱️ **Debounce Delay Control** - Spinbox to adjust target text debounce delay (100-5000ms range, default 1000ms)
|
|
2766
|
+
- ⚠️ **Performance Warnings** - Clear warnings about performance impact of verbose logging
|
|
2767
|
+
|
|
2768
|
+
**Precision Scroll Controls:**
|
|
2769
|
+
- ⬆️⬇️ **Precision Scroll Buttons** - memoQ-style ▲▼ buttons for fine-grained grid scrolling
|
|
2770
|
+
- 🎯 **Fixed Pixel Scrolling** - Uses fixed pixel amounts (5-50px) instead of variable row heights for predictable movement
|
|
2771
|
+
- 🎚️ **Adjustable Precision** - Spinbox setting (1-10 divisor) to control scroll increment size:
|
|
2772
|
+
- Divisor 1 = 50 pixels (coarse)
|
|
2773
|
+
- Divisor 3 = 40 pixels (default)
|
|
2774
|
+
- Divisor 5 = 30 pixels (fine)
|
|
2775
|
+
- Divisor 10 = 5 pixels (very fine)
|
|
2776
|
+
- 📊 **Live Preview** - Setting shows "Coarse/Medium/Fine/Very fine" label based on divisor value
|
|
2777
|
+
- 📍 **Smart Positioning** - Buttons positioned to left of scrollbar, never cut off or overlapping
|
|
2778
|
+
- 🎨 **Hover Effects** - Blue highlight on hover, visual feedback on click
|
|
2779
|
+
- 🔄 **Auto-repositioning** - Buttons reposition on window resize and table changes
|
|
2780
|
+
|
|
2781
|
+
**Auto-Center Active Segment:**
|
|
2782
|
+
- 🎯 **Keep Active Segment Centered** - Optional toggle to auto-scroll and center selected segment in viewport
|
|
2783
|
+
- 🔄 **CAT Tool Behavior** - Matches memoQ, Trados, and other professional CAT tools
|
|
2784
|
+
- ✅ **Settings Persistence** - Auto-center preference saved to `ui_preferences.json`
|
|
2785
|
+
- 🖱️ **Smooth Navigation** - Active segment always visible and centered when navigating
|
|
2786
|
+
|
|
2787
|
+
**Performance Optimizations:**
|
|
2788
|
+
- 🚫 **LLM Auto-matching Disabled by Default** - Changed `enable_llm_matching` from `True` to `False` to prevent 10-20 second UI freezes
|
|
2789
|
+
- ⚡ **Conditional Debug Logging** - All verbose logs wrapped in `if self.debug_mode_enabled:` checks
|
|
2790
|
+
- ⏱️ **Increased Debounce Delay** - Target text change debounce increased from 500ms to 1000ms
|
|
2791
|
+
- 🎛️ **LLM Matching Toggle** - Added checkbox in General Settings with warning tooltip
|
|
2792
|
+
- 💾 **Settings Persistence** - Debug mode, LLM matching, precision scroll, and auto-center settings saved/loaded
|
|
2793
|
+
|
|
2794
|
+
**UI/UX Improvements:**
|
|
2795
|
+
- 📑 **Precision Scroll Settings Section** - New section in General Settings with all scroll-related controls
|
|
2796
|
+
- ℹ️ **Helpful Tooltips** - Detailed explanations for all new settings
|
|
2797
|
+
- ⚠️ **Warning Messages** - Clear warnings about LLM performance impact (10-20 sec per segment)
|
|
2798
|
+
- 🎨 **Consistent Styling** - Settings UI follows existing design patterns
|
|
2799
|
+
|
|
2800
|
+
### Changed
|
|
2801
|
+
|
|
2802
|
+
- 🔧 **Default LLM Behavior** - LLM translations no longer trigger automatically on segment selection (use "Translate with AI" button instead)
|
|
2803
|
+
- ⏱️ **Debounce Timing** - Target text debounce delay increased from 500ms to 1000ms for better stability
|
|
2804
|
+
- 📊 **Debug Logging** - Performance-heavy debug logs now conditional (only when debug mode enabled)
|
|
2805
|
+
- 🎯 **Scroll Algorithm** - Precision scroll now uses fixed pixel amounts instead of row-height-based calculations
|
|
2806
|
+
|
|
2807
|
+
### Fixed
|
|
2808
|
+
|
|
2809
|
+
- 🐛 **UI Freezing on Segment Selection** - Eliminated 10-20 second freezes caused by automatic LLM API calls
|
|
2810
|
+
- 🐛 **Unpredictable Scroll Jumping** - Fixed precision scroll skipping segments due to variable row heights
|
|
2811
|
+
- 🐛 **Button Positioning** - Fixed scroll buttons being cut off by scrollbar
|
|
2812
|
+
- 🐛 **Method Name Mismatch** - Fixed `create_tabbed_assistance_panel` vs `create_assistance_panel` naming error
|
|
2813
|
+
- 🐛 **Duplicate Method Definition** - Removed duplicate `position_precision_scroll_buttons` method
|
|
2814
|
+
- 🐛 **TranslationResultsPanel Initialization** - Fixed incorrect `main_window` and `match_limits` parameters
|
|
2815
|
+
|
|
2816
|
+
### Technical Details
|
|
2817
|
+
|
|
2818
|
+
**Files Modified:**
|
|
2819
|
+
- `Supervertaler.py` - Core application with all new features
|
|
2820
|
+
- `ui_preferences.json` - Stores debug_mode_enabled, debug_auto_export, enable_llm_matching, precision_scroll_divisor, auto_center_active_segment
|
|
2821
|
+
|
|
2822
|
+
**Performance Impact:**
|
|
2823
|
+
- MT engines (1-2 sec) remain enabled for auto-matching ✅
|
|
2824
|
+
- LLM translations (10-20 sec) now on-demand only (via button) ✅
|
|
2825
|
+
- Debug logging overhead eliminated in production use ✅
|
|
2826
|
+
- Smoother segment navigation with predictable scroll behavior ✅
|
|
2827
|
+
|
|
2828
|
+
**Location:**
|
|
2829
|
+
- Settings → 🐛 Debug (Debug settings tab)
|
|
2830
|
+
- Settings → General Settings (LLM matching toggle, precision scroll settings)
|
|
2831
|
+
- Grid → Right edge (Precision scroll buttons ▲▼)
|
|
2832
|
+
|
|
2833
|
+
---
|
|
2834
|
+
|
|
2835
|
+
## [1.6.2] - November 17, 2025
|
|
2836
|
+
|
|
2837
|
+
### 🖼️ Image Extractor (Superimage)
|
|
2838
|
+
|
|
2839
|
+
**Extract Images from DOCX Files** - New tool for extracting all images from DOCX files with preview and batch processing capabilities.
|
|
2840
|
+
|
|
2841
|
+
### Added
|
|
2842
|
+
|
|
2843
|
+
**Image Extraction:**
|
|
2844
|
+
- 📄 **DOCX Image Extractor** - Extract all images from DOCX files (located in word/media/ folder)
|
|
2845
|
+
- 🖼️ **PNG Output** - Convert all image formats to PNG with sequential naming (Fig. 1.png, Fig. 2.png, etc.)
|
|
2846
|
+
- 📁 **Auto-folder Mode** - Option to automatically create "Images" subfolder next to source DOCX
|
|
2847
|
+
- 📚 **Batch Processing** - Add multiple DOCX files or entire folders for bulk extraction
|
|
2848
|
+
- 🎯 **Custom Prefix** - Configurable filename prefix (default: "Fig.")
|
|
2849
|
+
|
|
2850
|
+
**Image Preview:**
|
|
2851
|
+
- 👁️ **Click-to-Preview** - Click any extracted file in list to view in preview panel
|
|
2852
|
+
- 🖼️ **Resizable Preview** - Horizontal splitter between results and preview (60% preview area)
|
|
2853
|
+
- ⬅️➡️ **Navigation Buttons** - Previous/Next buttons synced with file list
|
|
2854
|
+
- 🔍 **Auto-scaling** - Images automatically scaled to fit viewport while maintaining aspect ratio
|
|
2855
|
+
|
|
2856
|
+
**UI/UX:**
|
|
2857
|
+
- 🎨 **Compact Layout** - Optimized vertical space with single-row controls
|
|
2858
|
+
- 📝 **Resizable Status Log** - Extraction progress log with minimum 50px height
|
|
2859
|
+
- 📋 **File List Management** - Add files, add folder, clear list functionality
|
|
2860
|
+
- 🛠️ **Tools Menu Integration** - Quick access via Tools → Image Extractor (Superimage)
|
|
2861
|
+
|
|
2862
|
+
**Technical:**
|
|
2863
|
+
- 🔧 **New Module** - `modules/image_extractor.py` with `ImageExtractor` class
|
|
2864
|
+
- 📖 **Documentation** - Complete user guide in `modules/IMAGE_EXTRACTOR_README.md`
|
|
2865
|
+
- 🧪 **Test Script** - `tests/test_image_extractor.py` for validation
|
|
2866
|
+
- 🎨 **PIL/Pillow** - Image format conversion (RGBA→RGB with white background)
|
|
2867
|
+
|
|
2868
|
+
**Location:**
|
|
2869
|
+
- Translation Resources → Reference Images tab
|
|
2870
|
+
- Tools → Image Extractor (Superimage)...
|
|
2871
|
+
|
|
2872
|
+
---
|
|
2873
|
+
|
|
2874
|
+
## [1.6.1] - November 17, 2025
|
|
2875
|
+
|
|
2876
|
+
### 📚 Enhanced Termbase Metadata System
|
|
2877
|
+
|
|
2878
|
+
**Extended Metadata & Improved UX** - Comprehensive termbase metadata with notes, project, and client fields, plus instant refresh functionality.
|
|
2879
|
+
|
|
2880
|
+
### Added
|
|
2881
|
+
|
|
2882
|
+
**Enhanced Metadata Fields:**
|
|
2883
|
+
- 📝 **Notes Field** - Multi-line notes field replacing old definition field for context, usage notes, and URLs
|
|
2884
|
+
- 🔗 **Clickable URLs** - URLs in notes automatically become clickable links (opens in external browser)
|
|
2885
|
+
- 📁 **Project Field** - Track which project a term belongs to
|
|
2886
|
+
- 👤 **Client Field** - Associate terms with specific clients
|
|
2887
|
+
- 🏷️ **Domain Field** - Already existed, now fully integrated throughout system
|
|
2888
|
+
|
|
2889
|
+
**Termbase Viewer Enhancements:**
|
|
2890
|
+
- 📖 **Dedicated Termbase Viewer** - New panel at bottom of Translation Results showing selected termbase entry
|
|
2891
|
+
- 🔄 **Refresh Data Button** - Manual refresh button to reload latest data from database
|
|
2892
|
+
- ✏️ **Edit Button** - Direct access to edit dialog from termbase viewer
|
|
2893
|
+
- 🖱️ **Right-Click Edit** - Context menu on termbase matches for quick editing
|
|
2894
|
+
- ♻️ **Auto-Refresh on Edit** - Termbase viewer automatically updates after editing entry
|
|
2895
|
+
|
|
2896
|
+
**Improved Table Views:**
|
|
2897
|
+
- 📊 **Extended Columns** - Edit Terms dialog now shows: Source, Target, Domain, Priority, Notes (truncated), Project, Client, Forbidden
|
|
2898
|
+
- 📏 **Smart Column Widths** - Optimized column sizing for better visibility
|
|
2899
|
+
- ✂️ **Notes Truncation** - Long notes truncated to 50 characters with "..." in table view
|
|
2900
|
+
|
|
2901
|
+
**Database Enhancements:**
|
|
2902
|
+
- 🗄️ **Database Migration System** - Automated schema updates for backward compatibility
|
|
2903
|
+
- ➕ **New Columns** - Added `notes`, `project`, `client` columns to `termbase_terms` table
|
|
2904
|
+
- 🔗 **Synonyms Table** - Created `termbase_synonyms` table structure (foundation for future feature)
|
|
2905
|
+
- 🔄 **Legacy Support** - Old `definition` column preserved for backward compatibility
|
|
2906
|
+
|
|
2907
|
+
### Fixed
|
|
2908
|
+
|
|
2909
|
+
**Metadata Flow Issues:**
|
|
2910
|
+
- ✅ **Complete Metadata Chain** - All termbase metadata now flows correctly: Dialog → Database → Search → Display
|
|
2911
|
+
- ✅ **Edit Button Caching** - Fixed issue where edit buttons didn't work until adding first new term
|
|
2912
|
+
- ✅ **Thread-Safe Queries** - Background termbase worker now includes all metadata fields (term_id, termbase_id, etc.)
|
|
2913
|
+
- ✅ **Initial Load** - Termbase matches loaded at startup now include full metadata for immediate editing
|
|
2914
|
+
- ✅ **Field Consistency** - Standardized on "notes" (plural) throughout codebase
|
|
2915
|
+
|
|
2916
|
+
**UI/UX Improvements:**
|
|
2917
|
+
- ✅ **Visible Refresh Button** - Changed from just "🔄" to "🔄 Refresh data" for better visibility
|
|
2918
|
+
- ✅ **Metadata Display** - Termbase viewer shows all fields with proper formatting
|
|
2919
|
+
- ✅ **URL Rendering** - QTextBrowser with `setOpenExternalLinks(True)` for clickable links
|
|
2920
|
+
- ✅ **Edit Dialog Fields** - Updated TermMetadataDialog to show notes, project, client (removed old definition field)
|
|
2921
|
+
|
|
2922
|
+
### Changed
|
|
2923
|
+
|
|
2924
|
+
**API Updates:**
|
|
2925
|
+
- 🔄 **termbase_manager.add_term()** - Updated signature to accept `notes`, `project`, `client` instead of `definition`
|
|
2926
|
+
- 🔄 **termbase_manager.get_terms()** - Now returns all new fields in term dictionaries
|
|
2927
|
+
- 🔄 **termbase_manager.update_term()** - Updated to handle new field structure
|
|
2928
|
+
- 🔄 **database_manager.search_termbases()** - SELECT query includes all new columns
|
|
2929
|
+
- 🔄 **TranslationMatch metadata** - All creation points include complete metadata with IDs
|
|
2930
|
+
|
|
2931
|
+
**Code Quality:**
|
|
2932
|
+
- 📦 **Modular Migrations** - `database_migrations.py` handles all schema updates
|
|
2933
|
+
- 🔒 **Type Safety** - Proper Optional types for new fields throughout
|
|
2934
|
+
- 🧹 **Cleanup** - Removed all references to old "definition" field (except database column for compatibility)
|
|
2935
|
+
|
|
2936
|
+
### Technical Details
|
|
2937
|
+
|
|
2938
|
+
**Database Migration:**
|
|
2939
|
+
```sql
|
|
2940
|
+
-- Migration adds new columns to termbase_terms
|
|
2941
|
+
ALTER TABLE termbase_terms ADD COLUMN notes TEXT;
|
|
2942
|
+
ALTER TABLE termbase_terms ADD COLUMN project TEXT;
|
|
2943
|
+
ALTER TABLE termbase_terms ADD COLUMN client TEXT;
|
|
2944
|
+
|
|
2945
|
+
-- New synonyms table (foundation for future feature)
|
|
2946
|
+
CREATE TABLE IF NOT EXISTS termbase_synonyms (
|
|
2947
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
2948
|
+
term_id INTEGER NOT NULL,
|
|
2949
|
+
synonym_text TEXT NOT NULL,
|
|
2950
|
+
language TEXT NOT NULL,
|
|
2951
|
+
created_date TEXT,
|
|
2952
|
+
FOREIGN KEY (term_id) REFERENCES termbase_terms(id) ON DELETE CASCADE
|
|
2953
|
+
);
|
|
2954
|
+
```
|
|
2955
|
+
|
|
2956
|
+
**Metadata Flow:**
|
|
2957
|
+
1. **Add Term**: TermMetadataDialog → get_metadata() → add_term_pair_to_termbase() → termbase_mgr.add_term() → Database INSERT
|
|
2958
|
+
2. **Load Terms**: Database SELECT → search_termbases() → TranslationMatch metadata → Termbase viewer display
|
|
2959
|
+
3. **Edit Term**: Edit button → TermbaseEntryEditor → update_term() → Database UPDATE → Refresh viewer
|
|
2960
|
+
4. **Cache Population**: Background worker → _search_termbases_thread_safe() → Complete metadata → termbase_cache
|
|
2961
|
+
|
|
2962
|
+
---
|
|
2963
|
+
|
|
2964
|
+
## [1.6.0] - November 16, 2025
|
|
2965
|
+
|
|
2966
|
+
### 📚 Complete Termbase System with Interactive Features
|
|
2967
|
+
|
|
2968
|
+
**The Ultimate Terminology Management** - Full-featured termbase system rivaling commercial CAT tools with memoQ-inspired interactive features.
|
|
2969
|
+
|
|
2970
|
+
### Added
|
|
2971
|
+
|
|
2972
|
+
**Core Termbase Features:**
|
|
2973
|
+
- 📊 **SQLite-Based Storage** - Robust database backend for termbases and terms
|
|
2974
|
+
- 🔍 **Real-Time Term Matching** - Automatic detection of termbase matches in source segments
|
|
2975
|
+
- 🎨 **Priority-Based Highlighting** - Terms highlighted in source cells with color intensity matching priority (1-99)
|
|
2976
|
+
- 🎯 **Visual Match Display** - All termbase matches shown in Translation Results panel with metadata
|
|
2977
|
+
- ⚫ **Forbidden Term Marking** - Forbidden terms highlighted in black (source cells and translation results)
|
|
2978
|
+
- 🗂️ **Multi-Termbase Support** - Create and manage multiple termbases per project
|
|
2979
|
+
- ✅ **Termbase Activation** - Enable/disable specific termbases for each project
|
|
2980
|
+
|
|
2981
|
+
**Interactive Features (memoQ-Inspired):**
|
|
2982
|
+
- 💡 **Hover Tooltips** - Mouse over highlighted terms to see translation, priority, and forbidden status
|
|
2983
|
+
- 🖱️ **Double-Click Insertion** - Double-click any highlighted term to insert translation at cursor
|
|
2984
|
+
- 📝 **Dual Selection Workflow** - Select source term → Tab → select target translation → Ctrl+E to add
|
|
2985
|
+
- 🎹 **Keyboard Shortcuts** - Ctrl+E to add term pair, right-click context menu alternative
|
|
2986
|
+
|
|
2987
|
+
**Termbase Management UI:**
|
|
2988
|
+
- 📋 **Termbase List** - View all termbases with term counts and activation toggles
|
|
2989
|
+
- ➕ **Create/Delete** - Full CRUD operations with confirmation dialogs
|
|
2990
|
+
- ✏️ **Edit Terms Dialog** - Modify source/target terms, priority (1-99), and forbidden flag
|
|
2991
|
+
- 🔢 **Priority Editing** - Click priority cells to edit directly in table
|
|
2992
|
+
- 🚫 **Forbidden Toggle** - Checkbox for marking terms as forbidden (do-not-use)
|
|
2993
|
+
- 📊 **Metadata Entry** - Add definition, domain, priority, and forbidden status when creating terms
|
|
2994
|
+
|
|
2995
|
+
**Technical Implementation:**
|
|
2996
|
+
- 🗄️ **Three-Table Schema** - `termbases`, `termbase_terms`, `termbase_activation` for flexible management
|
|
2997
|
+
- 🔍 **FTS5 Full-Text Search** - Fast term matching even with large termbases
|
|
2998
|
+
- 💾 **Smart Caching** - Term matches cached per segment for performance
|
|
2999
|
+
- 🔄 **Automatic Refresh** - Adding/editing terms immediately updates highlighting and results
|
|
3000
|
+
- 🎨 **QTextCharFormat Highlighting** - Non-intrusive background color without replacing widgets
|
|
3001
|
+
- 🖱️ **Mouse Tracking** - Enable hover detection with `setMouseTracking(True)`
|
|
3002
|
+
- 📍 **Position Detection** - `cursorForPosition()` for finding text under mouse cursor
|
|
3003
|
+
|
|
3004
|
+
**Color System:**
|
|
3005
|
+
- 🔵 **Priority Colors** - Higher priority (lower number) = darker blue, lower priority = lighter blue
|
|
3006
|
+
- ⚫ **Forbidden Terms** - Black background (#000000) with white text for maximum visibility
|
|
3007
|
+
- 🎨 **Consistent Rendering** - Same color scheme in source highlights and translation results
|
|
3008
|
+
|
|
3009
|
+
**Workflow Integration:**
|
|
3010
|
+
- ⚡ **Fast Term Entry** - Select in source → Tab → select in target → Ctrl+E → done
|
|
3011
|
+
- 🔄 **Immediate Visibility** - New terms appear instantly in highlights and results
|
|
3012
|
+
- 📊 **Project-Based Activation** - Each project remembers which termbases are active
|
|
3013
|
+
- 🎯 **Settings Toggle** - Enable/disable grid highlighting in Settings → General
|
|
3014
|
+
|
|
3015
|
+
### Fixed
|
|
3016
|
+
- ✅ Language code handling - Proper conversion from language names (Dutch → nl, English → en)
|
|
3017
|
+
- ✅ Term search issues - Fixed "unknown" language codes preventing matches
|
|
3018
|
+
- ✅ Activation persistence - Termbase toggles now save correctly across sessions
|
|
3019
|
+
- ✅ Priority editing - Term priority changes now persist to database
|
|
3020
|
+
- ✅ Delete functionality - Delete button now works with confirmation dialog
|
|
3021
|
+
- ✅ Project ID tracking - Hash-based project ID for termbase activation
|
|
3022
|
+
- ✅ Highlight consistency - Clear formatting before re-applying to prevent accumulation
|
|
3023
|
+
- ✅ Cache clearing - Both termbase_cache and translation_matches_cache cleared after changes
|
|
3024
|
+
|
|
3025
|
+
### Technical Details
|
|
3026
|
+
**Database Schema:**
|
|
3027
|
+
```sql
|
|
3028
|
+
-- Termbases table
|
|
3029
|
+
CREATE TABLE termbases (
|
|
3030
|
+
id INTEGER PRIMARY KEY,
|
|
3031
|
+
name TEXT UNIQUE NOT NULL,
|
|
3032
|
+
description TEXT,
|
|
3033
|
+
created_date TEXT,
|
|
3034
|
+
modified_date TEXT
|
|
3035
|
+
)
|
|
3036
|
+
|
|
3037
|
+
-- Termbase terms with FTS5 search
|
|
3038
|
+
CREATE VIRTUAL TABLE termbase_terms USING fts5(
|
|
3039
|
+
termbase_id UNINDEXED,
|
|
3040
|
+
source_term,
|
|
3041
|
+
target_term,
|
|
3042
|
+
source_lang,
|
|
3043
|
+
target_lang,
|
|
3044
|
+
definition,
|
|
3045
|
+
domain,
|
|
3046
|
+
priority UNINDEXED,
|
|
3047
|
+
forbidden UNINDEXED,
|
|
3048
|
+
created_date UNINDEXED,
|
|
3049
|
+
modified_date UNINDEXED
|
|
3050
|
+
)
|
|
3051
|
+
|
|
3052
|
+
-- Project-specific termbase activation
|
|
3053
|
+
CREATE TABLE termbase_activation (
|
|
3054
|
+
project_id TEXT NOT NULL,
|
|
3055
|
+
termbase_id INTEGER NOT NULL,
|
|
3056
|
+
is_active INTEGER DEFAULT 1,
|
|
3057
|
+
PRIMARY KEY (project_id, termbase_id)
|
|
3058
|
+
)
|
|
3059
|
+
```
|
|
3060
|
+
|
|
3061
|
+
**Key Classes:**
|
|
3062
|
+
- `TermbaseManager` - Database operations and term search
|
|
3063
|
+
- `ReadOnlyGridTextEditor` - Source cell with highlighting, tooltip, and double-click
|
|
3064
|
+
- `TermMetadataDialog` - Modal dialog for entering term metadata
|
|
3065
|
+
- `find_termbase_matches_in_source()` - Search engine returning match dict
|
|
3066
|
+
- `highlight_termbase_matches()` - Visual highlighting with priority/forbidden colors
|
|
3067
|
+
|
|
3068
|
+
### Documentation
|
|
3069
|
+
- Added comprehensive termbase workflow documentation
|
|
3070
|
+
- Updated keyboard shortcuts reference
|
|
3071
|
+
- Documented color system and priority levels
|
|
3072
|
+
- Added tooltip and double-click feature guides
|
|
3073
|
+
|
|
3074
|
+
---
|
|
3075
|
+
|
|
3076
|
+
## [1.5.1] - November 16, 2025
|
|
3077
|
+
|
|
3078
|
+
### ⌨️ Source/Target Tab Cycling for Termbase Workflow
|
|
3079
|
+
|
|
3080
|
+
**New Feature:**
|
|
3081
|
+
- 🔄 **Tab Key Cycling** - Press `Tab` in target cell to jump to source cell, then `Tab` again to return to target
|
|
3082
|
+
- Enables fast termbase workflow: select term in source, Tab to target, select translation
|
|
3083
|
+
- Works bidirectionally: Target → Source → Target
|
|
3084
|
+
- Both source and target cells support text selection with keyboard and mouse
|
|
3085
|
+
- Arrow keys work in both cells for cursor movement
|
|
3086
|
+
- 🔠 **Ctrl+Tab** - Insert actual tab character when needed (in both source and target)
|
|
3087
|
+
|
|
3088
|
+
**Technical Implementation:**
|
|
3089
|
+
- Source cells (`ReadOnlyGridTextEditor`) now intercept Tab at the `event()` level for reliable cycling
|
|
3090
|
+
- Target cells (`EditableGridTextEditor`) handle Tab in `keyPressEvent()`
|
|
3091
|
+
- Text selection enabled in source cells via `TextSelectableByKeyboard | TextSelectableByMouse` flags
|
|
3092
|
+
- Focus policy set to `StrongFocus` on both cell types
|
|
3093
|
+
|
|
3094
|
+
**Workflow Benefits:**
|
|
3095
|
+
- Facilitates termbase entry: select source term → Tab → select target translation → add to termbase
|
|
3096
|
+
- Maintains active text selections in both cells simultaneously for termbase operations
|
|
3097
|
+
- No need to click between cells, keyboard-only navigation
|
|
3098
|
+
|
|
3099
|
+
---
|
|
3100
|
+
|
|
3101
|
+
## [1.5.0] - November 15, 2025
|
|
3102
|
+
|
|
3103
|
+
### 🔍 Translation Results Enhancement + Match Insertion Shortcuts
|
|
3104
|
+
|
|
3105
|
+
**Major Features:**
|
|
3106
|
+
- 🎯 **Progressive Match Loading** - Termbase, TM, MT, and LLM results now accumulate instead of replacing each other
|
|
3107
|
+
- ⌨️ **Match Navigation Shortcuts** - `Ctrl+Up/Down` to cycle through translation matches from the grid
|
|
3108
|
+
- 🚀 **Quick Insert Shortcuts** - `Ctrl+1-9` to instantly insert specific matches at cursor position
|
|
3109
|
+
- ⏎ **Smart Match Insertion** - `Ctrl+Space`, `Space`, or `Enter` in results panel to insert selected match
|
|
3110
|
+
- 🏷️ **Tag Display Control** - Optional setting to show/hide HTML/XML tags in translation results (Settings → View Settings)
|
|
3111
|
+
- 📊 **Status Management** - Manual edits now reset segment status to "Not started" requiring explicit confirmation
|
|
3112
|
+
|
|
3113
|
+
**Bug Fixes:**
|
|
3114
|
+
- ✅ Fixed translation results panel showing only the last match type (now accumulates all: termbase → TM → MT → LLM)
|
|
3115
|
+
- ✅ Fixed `add_matches()` method not found error (implemented progressive match accumulation)
|
|
3116
|
+
- ✅ Fixed `save_mode` parameter errors in TM saving (removed deprecated parameter)
|
|
3117
|
+
- ✅ Fixed match insertion not working (now correctly inserts at cursor position in target cell)
|
|
3118
|
+
- ✅ Fixed `scroll_area` AttributeError (corrected to `matches_scroll`)
|
|
3119
|
+
|
|
3120
|
+
**Keyboard Shortcuts Added:**
|
|
3121
|
+
- `Ctrl+Up` - Navigate to previous match in results panel
|
|
3122
|
+
- `Ctrl+Down` - Navigate to next match in results panel
|
|
3123
|
+
- `Ctrl+1` through `Ctrl+9` - Insert match #1-9 at cursor position
|
|
3124
|
+
- `Ctrl+Space` - Insert currently selected match
|
|
3125
|
+
- `Space` or `Enter` - Insert selected match (when focused on results panel)
|
|
3126
|
+
|
|
3127
|
+
**Documentation:**
|
|
3128
|
+
- Updated shortcut manager with complete match navigation and insertion shortcuts
|
|
3129
|
+
- Added comprehensive shortcut documentation in Settings → Shortcuts section
|
|
3130
|
+
|
|
3131
|
+
**Technical Improvements:**
|
|
3132
|
+
- Implemented `add_matches()` method for progressive match accumulation
|
|
3133
|
+
- Added `insert_match_by_number()` for direct match insertion by number
|
|
3134
|
+
- Added `insert_selected_match()` for keyboard-driven match insertion
|
|
3135
|
+
- Improved `on_match_inserted()` to insert at cursor position using `textCursor().insertText()`
|
|
3136
|
+
- Added tag formatting control with `show_tags` class variable and `_format_text()` method
|
|
3137
|
+
|
|
3138
|
+
---
|
|
3139
|
+
|
|
3140
|
+
## [1.4.0] - November 12, 2025
|
|
3141
|
+
|
|
3142
|
+
### 🎤 Major Feature: Supervoice Voice Dictation + Detachable Log Window
|
|
3143
|
+
|
|
3144
|
+
**AI-Powered Hands-Free Translation Input** - OpenAI Whisper voice dictation with 100+ language support, plus multi-monitor log window capability.
|
|
3145
|
+
|
|
3146
|
+
### Added
|
|
3147
|
+
- **🎤 Supervoice Voice Dictation Module**
|
|
3148
|
+
- AI-powered speech recognition using OpenAI Whisper
|
|
3149
|
+
- Support for 100+ languages (as many as Whisper can handle)
|
|
3150
|
+
- Press-to-start, press-to-stop recording with F9 global hotkey
|
|
3151
|
+
- 5 model sizes: tiny, base, small, medium, large (balance speed vs accuracy)
|
|
3152
|
+
- Configurable in Settings → 🎤 Supervoice
|
|
3153
|
+
- Automatic FFmpeg detection and bundling support
|
|
3154
|
+
- User-friendly error messages with installation instructions
|
|
3155
|
+
- Visual feedback: button color changes during recording
|
|
3156
|
+
- Seamless integration with segment editor and grid cells
|
|
3157
|
+
- Language auto-detection from project settings
|
|
3158
|
+
- Manual stop functionality (press F9 again to stop recording)
|
|
3159
|
+
- Future: Planned parallel dictation system for voice commands (confirm segment, go to top, filtering, workflow automation)
|
|
3160
|
+
|
|
3161
|
+
- **🪟 Detachable Log Window**
|
|
3162
|
+
- Log window can be detached into separate floating window
|
|
3163
|
+
- Perfect for multi-monitor setups
|
|
3164
|
+
- Synchronized auto-scroll between main and detached logs
|
|
3165
|
+
- "Detach Log" / "Attach Log" button in Settings
|
|
3166
|
+
- Remembers detached state across sessions
|
|
3167
|
+
- Independent positioning and sizing
|
|
3168
|
+
|
|
3169
|
+
- **📚 Comprehensive Documentation**
|
|
3170
|
+
- [VOICE_DICTATION_GUIDE.md](docs/VOICE_DICTATION_GUIDE.md) - Complete user guide
|
|
3171
|
+
- [VOICE_DICTATION_DEPLOYMENT.md](docs/VOICE_DICTATION_DEPLOYMENT.md) - Deployment options
|
|
3172
|
+
- [SUPERVOICE_TROUBLESHOOTING.md](docs/SUPERVOICE_TROUBLESHOOTING.md) - Troubleshooting guide
|
|
3173
|
+
- FFmpeg licensing information
|
|
3174
|
+
- Model selection recommendations
|
|
3175
|
+
- Corrupt model file recovery instructions
|
|
3176
|
+
|
|
3177
|
+
### Fixed
|
|
3178
|
+
- **🐛 Voice Dictation Bug Fixes**
|
|
3179
|
+
- Fixed critical UnboundLocalError in `voice_dictation_lite.py:118` (duplicate `import os` statement)
|
|
3180
|
+
- Fixed language detection from project settings
|
|
3181
|
+
- Fixed button color restoration after recording
|
|
3182
|
+
- Fixed auto-scroll synchronization between log windows
|
|
3183
|
+
|
|
3184
|
+
### Changed
|
|
3185
|
+
- **🔧 Version Update**
|
|
3186
|
+
- Updated version from 1.3.4 to 1.4.0
|
|
3187
|
+
- Updated all version strings in code and documentation
|
|
3188
|
+
- Updated window titles and welcome messages
|
|
3189
|
+
- Updated website (docs/index.html) with Supervoice module card
|
|
3190
|
+
- Updated hero badge to "v1.4.0 - Supervoice Voice Dictation"
|
|
3191
|
+
|
|
3192
|
+
### Technical
|
|
3193
|
+
- New module: `modules/voice_dictation_lite.py` - Core dictation engine
|
|
3194
|
+
- Enhanced `Supervertaler_Qt.py` - Integrated voice dictation and detachable log
|
|
3195
|
+
- Updated `docs/index.html` - Added Supervoice feature highlight and module card
|
|
3196
|
+
- Created FFmpeg detection and bundling infrastructure
|
|
3197
|
+
- Whisper model caching in `%USERPROFILE%\.cache\whisper\`
|
|
3198
|
+
|
|
3199
|
+
---
|
|
3200
|
+
|
|
3201
|
+
## [1.3.3] - November 10, 2025
|
|
3202
|
+
|
|
3203
|
+
### 🏆 Major Feature: LLM Leaderboard + UI Standardization
|
|
3204
|
+
|
|
3205
|
+
**Translation Quality Benchmarking System** - Compare translation quality, speed, and cost across multiple LLM providers in a professional, standardized interface.
|
|
3206
|
+
|
|
3207
|
+
### Added
|
|
3208
|
+
- **🏆 LLM Leaderboard Module** (Complete Implementation)
|
|
3209
|
+
- Benchmark translation quality across OpenAI, Claude, and Gemini models
|
|
3210
|
+
- chrF++ quality scoring for objective translation assessment
|
|
3211
|
+
- Speed and cost tracking for each translation
|
|
3212
|
+
- Multiple test datasets: Technical, Legal, Medical, Marketing (EN→NL, NL→EN)
|
|
3213
|
+
- Comprehensive Excel export with:
|
|
3214
|
+
- About sheet with clickable Supervertaler.com link
|
|
3215
|
+
- Summary sheet with rankings and statistics
|
|
3216
|
+
- Detailed results with all metrics
|
|
3217
|
+
- Dataset info in filename (e.g., `LLM_Leaderboard_Technical_EN-NL_20251110.xlsx`)
|
|
3218
|
+
- Auto-scrolling log for real-time progress monitoring
|
|
3219
|
+
- Standalone usage support with api_keys.example.txt template
|
|
3220
|
+
- Professional documentation in `modules/LLM_LEADERBOARD_STANDALONE.md`
|
|
3221
|
+
|
|
3222
|
+
- **🎨 Standardized Module Headers**
|
|
3223
|
+
- Consistent professional styling across all modules
|
|
3224
|
+
- Blue header color (#1976D2) matching Supervertaler branding
|
|
3225
|
+
- Light blue description boxes (#E3F2FD) with rounded corners
|
|
3226
|
+
- Trophy emoji 🏆 for LLM Leaderboard identity
|
|
3227
|
+
- Applied to: LLM Leaderboard, TMX Editor, AutoFingers, PDF Rescue
|
|
3228
|
+
|
|
3229
|
+
- **📊 Model Selection Enhancements**
|
|
3230
|
+
- Friendly model names in dropdowns (e.g., "GPT-5 (Reasoning)", "Claude Opus 4.1")
|
|
3231
|
+
- Support for latest models:
|
|
3232
|
+
- OpenAI: GPT-4o, GPT-4o Mini, GPT-5
|
|
3233
|
+
- Claude: Sonnet 4.5, Haiku 4.5, Opus 4.1
|
|
3234
|
+
- Gemini: 2.5 Flash, 2.5 Flash Lite, 2.5 Pro, 2.0 Flash (Exp)
|
|
3235
|
+
|
|
3236
|
+
### Fixed
|
|
3237
|
+
- **🐛 LLM Leaderboard Bug Fixes**
|
|
3238
|
+
- Fixed Claude API call parameters (text vs custom_prompt)
|
|
3239
|
+
- Fixed Gemini API key mapping ("gemini" provider → "google" API key)
|
|
3240
|
+
- Fixed model dropdown display names (was showing generic names instead of selected models)
|
|
3241
|
+
- Fixed API key auto-creation from template file
|
|
3242
|
+
|
|
3243
|
+
### Changed
|
|
3244
|
+
- **🔧 Excel Export Branding**
|
|
3245
|
+
- Title sheet matches UI header style with trophy emoji
|
|
3246
|
+
- Blue title color (#1976D2) for brand consistency
|
|
3247
|
+
- Clickable hyperlink to https://supervertaler.com/
|
|
3248
|
+
- Professional subtitle formatting
|
|
3249
|
+
|
|
3250
|
+
- **🔧 API Key Management**
|
|
3251
|
+
- Auto-creates `api_keys.txt` from `api_keys.example.txt` on first run
|
|
3252
|
+
- Supports standalone LLM Leaderboard usage outside Supervertaler
|
|
3253
|
+
|
|
3254
|
+
### Technical
|
|
3255
|
+
- Enhanced `modules/llm_leaderboard.py` - Core benchmarking engine
|
|
3256
|
+
- Enhanced `modules/superbench_ui.py` - Qt UI with standardized header
|
|
3257
|
+
- Updated `modules/llm_clients.py` - Auto-create API keys functionality
|
|
3258
|
+
- Updated `Supervertaler_Qt.py` - Gemini API key mapping fix
|
|
3259
|
+
- Created `api_keys.example.txt` - Template for standalone usage
|
|
3260
|
+
- Created `modules/LLM_LEADERBOARD_STANDALONE.md` - Complete documentation
|
|
3261
|
+
|
|
3262
|
+
---
|
|
3263
|
+
|
|
3264
|
+
## [1.3.2] - November 9, 2025
|
|
3265
|
+
|
|
3266
|
+
### 🎯 Major Feature: Segment-Level AI Access + Critical Bug Fix
|
|
3267
|
+
|
|
3268
|
+
**AI Assistant can now access and query individual segments from your translation project**
|
|
3269
|
+
|
|
3270
|
+
### Added
|
|
3271
|
+
- **🔢 Segment-Level AI Actions** (Phase 2 Enhancement)
|
|
3272
|
+
- `get_segment_count` - Get total segments and translation progress
|
|
3273
|
+
- `get_segment_info` - Query specific segments by ID, multiple IDs, or range
|
|
3274
|
+
- AI can answer "How many segments?" and "What is segment 5?"
|
|
3275
|
+
- First 10 segments automatically included in AI context
|
|
3276
|
+
- Full segment properties: id, source, target, status, type, notes, match_percent, etc.
|
|
3277
|
+
|
|
3278
|
+
- **📊 Segment Information Display**
|
|
3279
|
+
- AI Assistant shows segment details in formatted chat bubbles
|
|
3280
|
+
- HTML entity escaping for CAT tool tags (`<tag>`, ` `, etc.)
|
|
3281
|
+
- Proper handling of Trados, memoQ, Wordfast, CafeTran tags
|
|
3282
|
+
- Segments displayed in code blocks for readability
|
|
3283
|
+
|
|
3284
|
+
- **⚙️ Auto-Markdown Generation Setting**
|
|
3285
|
+
- Optional setting in Settings → General → AI Assistant Settings
|
|
3286
|
+
- "Auto-generate markdown for imported documents" checkbox
|
|
3287
|
+
- Automatically converts DOCX/PDF to markdown on import
|
|
3288
|
+
- Markdown saved to `user_data_private/AI_Assistant/current_document/`
|
|
3289
|
+
- Includes metadata JSON with conversion info
|
|
3290
|
+
|
|
3291
|
+
### Fixed
|
|
3292
|
+
- **🐛 CRITICAL: Current Document Not Showing After Import**
|
|
3293
|
+
- Fixed attribute name mismatch: `self.prompt_manager` → `self.prompt_manager_qt`
|
|
3294
|
+
- Current document now appears in AI Assistant sidebar after import
|
|
3295
|
+
- Auto-markdown generation now triggers correctly
|
|
3296
|
+
- Context refresh now works properly
|
|
3297
|
+
|
|
3298
|
+
### Changed
|
|
3299
|
+
- **🔧 AI Assistant Context Building** (`modules/unified_prompt_manager_qt.py`)
|
|
3300
|
+
- Added `_get_segment_info()` method for structured segment data
|
|
3301
|
+
- Added `generate_markdown_for_current_document()` public method
|
|
3302
|
+
- Modified context building to prioritize segment-level access
|
|
3303
|
+
- Document content fallback when segments unavailable
|
|
3304
|
+
|
|
3305
|
+
- **🔧 AI Actions System** (`modules/ai_actions.py`)
|
|
3306
|
+
- Added `parent_app` parameter to constructor
|
|
3307
|
+
- Added segment action handlers with full validation
|
|
3308
|
+
- Enhanced `format_action_results()` with segment display logic
|
|
3309
|
+
- Comprehensive HTML entity escaping (order-aware to prevent double-escaping)
|
|
3310
|
+
|
|
3311
|
+
- **🔧 Main Application** (`Supervertaler_Qt.py`)
|
|
3312
|
+
- Added auto-markdown setting to Settings UI
|
|
3313
|
+
- Setting persists in `ui_preferences.json`
|
|
3314
|
+
- Document import triggers markdown generation when enabled
|
|
3315
|
+
- Context refresh called after document import
|
|
3316
|
+
|
|
3317
|
+
### Technical
|
|
3318
|
+
- **Segment Access Order:**
|
|
3319
|
+
1. `project.segments` - Full segment objects (PREFERRED)
|
|
3320
|
+
2. `parent_app.segments` - Currently loaded segments
|
|
3321
|
+
3. `project.source_segments` - Project source text
|
|
3322
|
+
4. Cached markdown conversion
|
|
3323
|
+
5. On-demand file conversion with markitdown
|
|
3324
|
+
|
|
3325
|
+
- **HTML Escaping Order:** `&` → `<` → `>` → `"` (prevents double-escaping)
|
|
3326
|
+
- **Segment Data Structure:** Full dataclass with 12 properties per segment
|
|
3327
|
+
|
|
3328
|
+
### Testing
|
|
3329
|
+
- ✅ Updated test suite (`test_ai_actions.py`)
|
|
3330
|
+
- ✅ Added Test 9: get_segment_count action
|
|
3331
|
+
- ✅ Added Test 10: get_segment_info action (single, multiple, range)
|
|
3332
|
+
- ✅ All 10 tests passing
|
|
3333
|
+
|
|
3334
|
+
### Documentation
|
|
3335
|
+
- Updated `docs/AI_ASSISTANT_INTEGRATION.md` with segment access details
|
|
3336
|
+
- Added segment action examples and use cases
|
|
3337
|
+
- Updated troubleshooting section
|
|
3338
|
+
|
|
3339
|
+
### Benefits
|
|
3340
|
+
- ✅ **Segment-specific queries** - AI can find and analyze specific segments
|
|
3341
|
+
- ✅ **Translation progress tracking** - AI reports completion status
|
|
3342
|
+
- ✅ **CAT tool tag handling** - All tag types properly escaped and displayed
|
|
3343
|
+
- ✅ **Auto-markdown option** - Users control document conversion
|
|
3344
|
+
- ✅ **Fixed critical bug** - Current document now shows correctly
|
|
3345
|
+
|
|
3346
|
+
---
|
|
3347
|
+
|
|
3348
|
+
## [1.3.1] - November 9, 2025
|
|
3349
|
+
|
|
3350
|
+
### ✨ Major Feature: AI Assistant File Attachment Persistence (Phase 1)
|
|
3351
|
+
|
|
3352
|
+
**Complete persistent storage system for AI Assistant file attachments with view/manage UI**
|
|
3353
|
+
|
|
3354
|
+
### Added
|
|
3355
|
+
- **📎 AttachmentManager Module** (`modules/ai_attachment_manager.py` - 390 lines)
|
|
3356
|
+
- Complete persistent storage system for attached files
|
|
3357
|
+
- Session-based organization (files grouped by date)
|
|
3358
|
+
- Master index tracking all attachments across sessions
|
|
3359
|
+
- Metadata storage with JSON (original name, path, type, size, date)
|
|
3360
|
+
- Full CRUD operations: attach, get, list, remove files
|
|
3361
|
+
- Statistics tracking (total files, size, sessions)
|
|
3362
|
+
|
|
3363
|
+
- **👁️ File Viewer Dialogs** (`modules/ai_file_viewer_dialog.py` - 160 lines)
|
|
3364
|
+
- FileViewerDialog - displays file content with metadata
|
|
3365
|
+
- Read-only markdown preview with monospace font
|
|
3366
|
+
- Copy to clipboard functionality
|
|
3367
|
+
- FileRemoveConfirmDialog - confirmation before deletion
|
|
3368
|
+
|
|
3369
|
+
- **🎨 Expandable Attached Files Panel** (AI Assistant context sidebar)
|
|
3370
|
+
- Collapsible "📎 Attached Files" section with expand/collapse button (▼/▶)
|
|
3371
|
+
- Dynamic file list showing name, type, size for each file
|
|
3372
|
+
- View button (👁) - opens file viewer dialog
|
|
3373
|
+
- Remove button (❌) - deletes from disk with confirmation
|
|
3374
|
+
- + button to attach new files
|
|
3375
|
+
- Auto-refresh on file operations
|
|
3376
|
+
|
|
3377
|
+
### Changed
|
|
3378
|
+
- **🔧 AI Assistant Integration** (`modules/unified_prompt_manager_qt.py`)
|
|
3379
|
+
- Initialized AttachmentManager in `__init__`
|
|
3380
|
+
- Modified `_attach_file()` to save files to persistent storage
|
|
3381
|
+
- Added `_load_persisted_attachments()` method - loads files on startup
|
|
3382
|
+
- Created `_create_attached_files_section()` - expandable panel UI
|
|
3383
|
+
- Added `_refresh_attached_files_list()` - dynamic file list updates
|
|
3384
|
+
- Added `_create_file_item_widget()` - individual file items with buttons
|
|
3385
|
+
- Added `_view_file()` - opens FileViewerDialog
|
|
3386
|
+
- Added `_remove_file()` - removes from disk and memory
|
|
3387
|
+
- Added `_toggle_attached_files()` - expand/collapse functionality
|
|
3388
|
+
- Updated `_update_context_sidebar()` to refresh file list
|
|
3389
|
+
- Updated `_load_conversation_history()` to refresh UI after load
|
|
3390
|
+
|
|
3391
|
+
### Technical
|
|
3392
|
+
- **Storage Structure:**
|
|
3393
|
+
- Base: `user_data_private/AI_Assistant/`
|
|
3394
|
+
- Attachments: `attachments/{session_id}/{file_hash}.md`
|
|
3395
|
+
- Metadata: `attachments/{session_id}/{file_hash}.meta.json`
|
|
3396
|
+
- Master index: `index.json`
|
|
3397
|
+
- **Session Management:** Date-based sessions (YYYYMMDD format)
|
|
3398
|
+
- **File Hashing:** SHA256-based unique IDs (path_hash + content_hash)
|
|
3399
|
+
- **Backward Compatibility:** Old `self.attached_files` list still maintained
|
|
3400
|
+
|
|
3401
|
+
### Testing
|
|
3402
|
+
- ✅ Created comprehensive test suite (`test_attachment_manager.py`)
|
|
3403
|
+
- ✅ All 8 tests passing (imports, init, session, attach, list, get, stats, remove)
|
|
3404
|
+
- ✅ UTF-8 console output handling for Windows
|
|
3405
|
+
|
|
3406
|
+
### Benefits
|
|
3407
|
+
- ✅ **Files no longer lost** when application closes
|
|
3408
|
+
- ✅ **Users can view** attached files anytime via viewer dialog
|
|
3409
|
+
- ✅ **Users can remove** unwanted files with confirmation
|
|
3410
|
+
- ✅ **Session organization** keeps files organized by date
|
|
3411
|
+
- ✅ **Persistent across app restarts** - automatic reload on startup
|
|
3412
|
+
|
|
3413
|
+
### Documentation
|
|
3414
|
+
- Updated `docs/PROJECT_CONTEXT.md` with Phase 1 implementation details
|
|
3415
|
+
- Created `docs/AI_ASSISTANT_ENHANCEMENT_PLAN.md` with full specification
|
|
3416
|
+
- Updated website (`docs/index.html`) to reflect new features
|
|
3417
|
+
|
|
3418
|
+
### Next
|
|
3419
|
+
- Phase 2: AI Actions System (allow AI to create/modify prompts in library)
|
|
3420
|
+
|
|
3421
|
+
---
|
|
3422
|
+
|
|
3423
|
+
## [1.2.2] - November 6, 2025
|
|
3424
|
+
|
|
3425
|
+
### 🎨 Major Enhancement: Translation Results, Document Formatting & Tag System
|
|
3426
|
+
|
|
3427
|
+
**Fixed translation results display, enhanced document view with formatting, and activated the tag system!**
|
|
3428
|
+
|
|
3429
|
+
### Fixed
|
|
3430
|
+
- **🐛 Translation Results Panels Not Working** - CRITICAL FIX
|
|
3431
|
+
- Removed lingering `assistance_widget` references that blocked match processing
|
|
3432
|
+
- Fixed termbase, TM, MT, and LLM matches not displaying in panels
|
|
3433
|
+
- Updated all 6 locations where matches were being set to use `results_panels`
|
|
3434
|
+
- All three views (Grid, List, Document) now show matches correctly
|
|
3435
|
+
|
|
3436
|
+
- **🐛 Menu Bar Blocked by Error Indicator**
|
|
3437
|
+
- Removed 15+ obsolete `assistance_widget` references causing Qt errors
|
|
3438
|
+
- Fixed red error triangle that blocked File and Edit menus
|
|
3439
|
+
- Updated zoom functions, font settings, and close project cleanup
|
|
3440
|
+
|
|
3441
|
+
### Added
|
|
3442
|
+
- **✅ Document View Formatting**
|
|
3443
|
+
- Renders inline formatting tags: `<b>bold</b>`, `<i>italic</i>`, `<u>underline</u>`, `<bi>bold+italic</bi>`
|
|
3444
|
+
- New list item tag: `<li>content</li>` renders with orange bullet (•)
|
|
3445
|
+
- Proper QTextCharFormat application for bold, italic, underline
|
|
3446
|
+
- Tag parsing with formatting stack for nested tags
|
|
3447
|
+
|
|
3448
|
+
- **✅ Enhanced Type Column**
|
|
3449
|
+
- Shows **H1, H2, H3, H4** for heading levels (blue background)
|
|
3450
|
+
- Shows **Title** for document titles
|
|
3451
|
+
- Shows **Sub** for subtitles
|
|
3452
|
+
- Shows **li** for list items (green background)
|
|
3453
|
+
- Shows **¶** for regular paragraphs
|
|
3454
|
+
- Color-coded for easy document structure visualization
|
|
3455
|
+
|
|
3456
|
+
- **✅ List Item Tag System**
|
|
3457
|
+
- DOCX import detects bullets and numbered lists
|
|
3458
|
+
- Automatically wraps list items in `<li>` tags
|
|
3459
|
+
- Detection works on Word numbering format, bullet characters, and numbered prefixes
|
|
3460
|
+
- Tags preserved through translation and export workflow
|
|
3461
|
+
|
|
3462
|
+
### Technical
|
|
3463
|
+
- Updated `tag_manager.py` to support `<li>` tag (TAG_PATTERN regex)
|
|
3464
|
+
- Enhanced `docx_handler.py` to detect and tag list items during import
|
|
3465
|
+
- Document view parses tags and renders with proper formatting
|
|
3466
|
+
- Type column detects `<li>` tags, heading styles, and text patterns
|
|
3467
|
+
- Tag colors: Bold=#CC0000, Italic=#0066CC, Underline=#009900, BoldItalic=#CC00CC, ListItem=#FF6600
|
|
3468
|
+
|
|
3469
|
+
---
|
|
3470
|
+
|
|
3471
|
+
## [1.2.1] - November 6, 2025
|
|
3472
|
+
|
|
3473
|
+
### 🎨 UI Enhancement: Unified Tabbed Interface
|
|
3474
|
+
|
|
3475
|
+
**Added consistent tabbed panel structure to both Grid and List views for improved workflow!**
|
|
3476
|
+
|
|
3477
|
+
### Added
|
|
3478
|
+
- **✅ Tabbed Panel in Grid View**
|
|
3479
|
+
- Tab 1: Translation Results (TM, MT, LLM, Termbase matches)
|
|
3480
|
+
- Tab 2: Segment Editor (source/target editing, status selector)
|
|
3481
|
+
- Tab 3: Notes (segment notes with save functionality)
|
|
3482
|
+
- Enables segment editing directly in Grid View (like Tkinter edition)
|
|
3483
|
+
|
|
3484
|
+
- **✅ Tabbed Panel in List View**
|
|
3485
|
+
- Same 3-tab structure as Grid View for consistency
|
|
3486
|
+
- Translation Results | Segment Editor | Notes
|
|
3487
|
+
- Replaces single-panel layout with flexible tabbed interface
|
|
3488
|
+
|
|
3489
|
+
- **✅ Synchronized Panel Updates**
|
|
3490
|
+
- Clicking segment in any view updates ALL tabs in ALL views
|
|
3491
|
+
- Editing in any panel automatically syncs to other panels
|
|
3492
|
+
- Prevents infinite loops with signal blocking
|
|
3493
|
+
- Multiple independent widget instances for Grid/List views
|
|
3494
|
+
|
|
3495
|
+
### Fixed
|
|
3496
|
+
- **🐛 Widget Parenting Issues** - Fixed Qt single-parent constraint violations
|
|
3497
|
+
- Created separate TranslationResultsPanel instances for each view
|
|
3498
|
+
- Stored widget references on panel objects for flexible access
|
|
3499
|
+
- Maintains `results_panels` and `tabbed_panels` lists for batch updates
|
|
3500
|
+
|
|
3501
|
+
- **🐛 Signal Handler Crashes** - Fixed AttributeError when editing segments
|
|
3502
|
+
- Updated `on_tab_target_change()`, `on_tab_segment_status_change()`, `on_tab_notes_change()`
|
|
3503
|
+
- Handlers now iterate all panels instead of accessing non-existent attributes
|
|
3504
|
+
- Proper error handling per panel to prevent cascade failures
|
|
3505
|
+
|
|
3506
|
+
### Technical
|
|
3507
|
+
- Unified panel creation via `create_tabbed_assistance_panel()`
|
|
3508
|
+
- Widget reference storage pattern: `panel.editor_widget.source_editor`
|
|
3509
|
+
- Centralized update function: `update_tab_segment_editor()` iterates all panels
|
|
3510
|
+
- Signal blocking prevents infinite update loops during synchronization
|
|
3511
|
+
|
|
3512
|
+
---
|
|
3513
|
+
|
|
3514
|
+
## [1.2.0] - November 6, 2025 🎉
|
|
3515
|
+
|
|
3516
|
+
### 🎯 MAJOR RELEASE: Complete Translation Matching System
|
|
3517
|
+
|
|
3518
|
+
**The Supervertaler CAT tool now provides comprehensive translation assistance with all match types working together!**
|
|
3519
|
+
|
|
3520
|
+
### Added
|
|
3521
|
+
- **✅ Google Cloud Translation API Integration**
|
|
3522
|
+
- Machine translation matches displayed alongside TM and LLM results
|
|
3523
|
+
- Uses Google Translate REST API v2 for direct API key authentication
|
|
3524
|
+
- Automatic language detection support
|
|
3525
|
+
- High-quality neural machine translation
|
|
3526
|
+
- Provider badge: "MT" in match display
|
|
3527
|
+
|
|
3528
|
+
- **✅ Multi-LLM Support (OpenAI, Claude, Gemini)**
|
|
3529
|
+
- **OpenAI GPT** integration (GPT-4o, GPT-5, o1, o3)
|
|
3530
|
+
- **Claude 3.5 Sonnet** integration (Anthropic)
|
|
3531
|
+
- **Google Gemini** integration (Gemini 2.0 Flash, 1.5 Pro)
|
|
3532
|
+
- All three LLM providers work simultaneously
|
|
3533
|
+
- Each provides translations with confidence scores
|
|
3534
|
+
- Provider badges: "OA" (OpenAI), "CL" (Claude), "GM" (Gemini)
|
|
3535
|
+
|
|
3536
|
+
- **✅ Complete Match Chaining System**
|
|
3537
|
+
- **Termbase matches** → Displayed immediately (yellow highlight)
|
|
3538
|
+
- **TM matches** → Displayed after 1.5s delay (prevents excessive API calls)
|
|
3539
|
+
- **MT matches** → Google Translate integrated in delayed search
|
|
3540
|
+
- **LLM matches** → All enabled LLMs called in parallel
|
|
3541
|
+
- All match types preserved and displayed together in Translation Results Panel
|
|
3542
|
+
|
|
3543
|
+
- **✅ Flexible API Key Management**
|
|
3544
|
+
- Supports both `google` and `google_translate` key names for Google Cloud Translation
|
|
3545
|
+
- Supports both `gemini` and `google` key names for Gemini API
|
|
3546
|
+
- Backward compatibility with existing configurations
|
|
3547
|
+
- Standalone `load_api_keys()` function in `modules/llm_clients.py`
|
|
3548
|
+
|
|
3549
|
+
### Fixed
|
|
3550
|
+
- **🐛 Termbase Match Preservation** - Termbase matches no longer disappear when TM/MT/LLM results load
|
|
3551
|
+
- Root cause: Delayed search wasn't receiving termbase matches parameter
|
|
3552
|
+
- Solution: Pass `current_termbase_matches` to `_add_mt_and_llm_matches()`
|
|
3553
|
+
- Termbase matches now persist throughout the entire search process
|
|
3554
|
+
|
|
3555
|
+
- **🐛 Google Translate Authentication** - Fixed "Client.__init__() got an unexpected keyword argument 'api_key'"
|
|
3556
|
+
- Switched from google-cloud-translate SDK to direct REST API calls
|
|
3557
|
+
- Simpler authentication using API key in URL parameters
|
|
3558
|
+
- More reliable and easier to configure
|
|
3559
|
+
|
|
3560
|
+
- **🐛 Gemini Integration** - Gemini now properly called when using `google` API key
|
|
3561
|
+
- Added fallback to check both `gemini` and `google` key names
|
|
3562
|
+
- Fixed LLM wrapper to support Google's API key for Gemini
|
|
3563
|
+
|
|
3564
|
+
### Technical Implementation
|
|
3565
|
+
- **File: `modules/llm_clients.py`**
|
|
3566
|
+
- Added standalone `load_api_keys()` function (lines 27-76)
|
|
3567
|
+
- Fixed `get_google_translation()` to use REST API instead of SDK
|
|
3568
|
+
- Backward compatible API key naming (checks multiple key names)
|
|
3569
|
+
- Module can now operate independently without main application
|
|
3570
|
+
|
|
3571
|
+
- **File: `Supervertaler_Qt.py`**
|
|
3572
|
+
- Enhanced `_add_mt_and_llm_matches()` with comprehensive logging
|
|
3573
|
+
- Fixed Gemini integration to check both key naming conventions
|
|
3574
|
+
- Improved match chaining with proper termbase preservation
|
|
3575
|
+
- Debounced search (1.5s delay) prevents excessive API calls
|
|
3576
|
+
|
|
3577
|
+
### Performance Optimizations
|
|
3578
|
+
- **Debounced Search** - 1.5-second delay before calling TM/MT/LLM APIs
|
|
3579
|
+
- **Timer Cancellation** - Previous searches cancelled when user moves to new segment
|
|
3580
|
+
- **Immediate Termbase Display** - Termbase matches shown instantly (no delay)
|
|
3581
|
+
- **Parallel LLM Calls** - All LLM providers called simultaneously for faster results
|
|
3582
|
+
|
|
3583
|
+
### Dependencies
|
|
3584
|
+
- `requests` - For Google Translate REST API calls (standard library)
|
|
3585
|
+
- `openai` - OpenAI GPT integration
|
|
3586
|
+
- `anthropic` - Claude integration
|
|
3587
|
+
- `google-generativeai` - Gemini integration
|
|
3588
|
+
- `httpx==0.28.1` - HTTP client (version locked for LLM compatibility)
|
|
3589
|
+
|
|
3590
|
+
### Documentation
|
|
3591
|
+
- Updated `docs/PROJECT_CONTEXT.md` with November 6, 2025 development activity
|
|
3592
|
+
- Documented all LLM & MT integration details
|
|
3593
|
+
- Listed resolved issues and technical decisions
|
|
3594
|
+
|
|
3595
|
+
### Match Display
|
|
3596
|
+
All match types now display in the Translation Results Panel:
|
|
3597
|
+
- **Termbases** (Yellow section) - Term matches from termbase databases
|
|
3598
|
+
- **Translation Memory** (Blue section) - Fuzzy matches from TM database
|
|
3599
|
+
- **Machine Translation** (Orange section) - Google Cloud Translation
|
|
3600
|
+
- **LLM** (Purple section) - OpenAI GPT, Claude, and/or Gemini translations
|
|
3601
|
+
|
|
3602
|
+
Each match shows:
|
|
3603
|
+
- Provider badge (NT/TM/MT/OA/CL/GM)
|
|
3604
|
+
- Relevance percentage (0-100%)
|
|
3605
|
+
- Target translation text
|
|
3606
|
+
- Source context (when available)
|
|
3607
|
+
|
|
3608
|
+
---
|
|
3609
|
+
|
|
3610
|
+
## [1.1.9] - November 6, 2025
|
|
3611
|
+
|
|
3612
|
+
### Added
|
|
3613
|
+
- **⌨️ Keyboard Shortcuts Manager** - Comprehensive keyboard shortcuts management system
|
|
3614
|
+
- New Settings tab: "⌨️ Keyboard Shortcuts"
|
|
3615
|
+
- View all 40+ keyboard shortcuts organized by category (File, Edit, Translation, View, Resources, Match Insertion, etc.)
|
|
3616
|
+
- Search/filter shortcuts by action, category, or key combination
|
|
3617
|
+
- Edit shortcuts with custom key capture widget
|
|
3618
|
+
- Conflict detection with warnings
|
|
3619
|
+
- Reset individual shortcuts or all shortcuts to defaults
|
|
3620
|
+
- Export shortcuts to JSON (share with team)
|
|
3621
|
+
- Import shortcuts from JSON
|
|
3622
|
+
- **Export HTML Cheatsheet** - Beautiful, printable keyboard reference with professional styling
|
|
3623
|
+
- Modular architecture: `modules/shortcut_manager.py` and `modules/keyboard_shortcuts_widget.py`
|
|
3624
|
+
|
|
3625
|
+
### Technical Details
|
|
3626
|
+
- **ShortcutManager** class - Backend logic for managing shortcuts
|
|
3627
|
+
- **KeyboardShortcutsWidget** - Full-featured UI for Settings tab
|
|
3628
|
+
- **KeySequenceEdit** - Custom widget for capturing key presses
|
|
3629
|
+
- **Conflict detection** - Real-time warnings for duplicate shortcuts
|
|
3630
|
+
- **Context-aware shortcuts** - Different contexts (editor, grid, match panel) to prevent conflicts
|
|
3631
|
+
- Data stored in `user_data/shortcuts.json`
|
|
3632
|
+
|
|
3633
|
+
### Documentation
|
|
3634
|
+
- Added `Keyboard_Shortcuts_Implementation.md` in development docs
|
|
3635
|
+
- Added `Competitive_Analysis_CotranslatorAI.md` in development docs
|
|
3636
|
+
|
|
3637
|
+
### Improved
|
|
3638
|
+
- **Repository Philosophy** - Continued modular architecture to keep main file maintainable
|
|
3639
|
+
- **AI-Friendly Codebase** - Complex features extracted to focused modules (easier for AI agents to understand)
|
|
3640
|
+
|
|
3641
|
+
---
|
|
3642
|
+
|
|
3643
|
+
## [1.1.8] - November 5, 2025
|
|
3644
|
+
|
|
3645
|
+
### Fixed
|
|
3646
|
+
- **🎯 Prompt Generation (CRITICAL FIX):** Fixed incomplete prompt generation in Prompt Assistant
|
|
3647
|
+
- **Root Cause:** Using `client.translate()` for text generation instead of proper chat completion API
|
|
3648
|
+
- **Solution:** Switched to direct LLM API calls (OpenAI/Claude/Gemini) with proper message structure
|
|
3649
|
+
- Domain Prompts now generate complete 3-5 paragraph prompts (was 2 sentences)
|
|
3650
|
+
- Project Prompts now include full termbase tables + intro/closing paragraphs (was partial/truncated)
|
|
3651
|
+
- Added truncation detection and warnings for all providers
|
|
3652
|
+
- Temperature set to 0.4 for creative generation (was 0.3)
|
|
3653
|
+
- Max tokens set to 8000 (with full flexibility, not constrained by translation wrapper)
|
|
3654
|
+
- **Documentation:** Added complete debugging session documentation (docs/2025-11-05.md)
|
|
3655
|
+
|
|
3656
|
+
### Technical Details
|
|
3657
|
+
- Removed hybrid approach (programmatic termbase extraction + AI generation)
|
|
3658
|
+
- Reverted to pure AI-only approach matching working tkinter version
|
|
3659
|
+
- Direct API calls now match tkinter implementation exactly:
|
|
3660
|
+
- OpenAI: `chat.completions.create()` with system/user messages
|
|
3661
|
+
- Claude: `messages.create()` with proper system parameter
|
|
3662
|
+
- Gemini: `generate_content()` with combined prompt
|
|
3663
|
+
- All providers now check `finish_reason`/`stop_reason` for truncation
|
|
3664
|
+
|
|
3665
|
+
### Impact
|
|
3666
|
+
- **Generate Prompts** feature now works perfectly, producing complete professional prompts
|
|
3667
|
+
- Critical feature that was broken is now fully functional
|
|
3668
|
+
- Matches quality and completeness of tkinter version
|
|
3669
|
+
|
|
3670
|
+
---
|
|
3671
|
+
|
|
3672
|
+
## [1.1.7] - November 4, 2025
|
|
3673
|
+
|
|
3674
|
+
### Major Changes
|
|
3675
|
+
- **🏠 Home Screen Redesign:** Complete restructuring of the primary workspace
|
|
3676
|
+
- Editor (Grid/List/Document views) on the left with Prompt Manager on the right
|
|
3677
|
+
- Resizable horizontal splitter between editor and prompt manager
|
|
3678
|
+
- Translation results panel moved to bottom of grid in compact form
|
|
3679
|
+
- Real-time prompt tweaking while viewing changes in the grid
|
|
3680
|
+
- Removed separate Editor and Prompt Manager tabs (integrated into Home)
|
|
3681
|
+
|
|
3682
|
+
### Strategic Refocus
|
|
3683
|
+
- **🎯 Companion Tool Philosophy:** Pivoted from full CAT tool to companion tool
|
|
3684
|
+
- Grid simplified for viewing/reviewing (minor edits only)
|
|
3685
|
+
- Focus on AI-powered features and specialized modules
|
|
3686
|
+
- Documentation updated to reflect companion tool approach
|
|
3687
|
+
|
|
3688
|
+
### Added
|
|
3689
|
+
- **Custom Styled Widgets:** Beautiful checkboxes and radio buttons with white checkmarks
|
|
3690
|
+
- `CheckmarkCheckBox` class for all checkboxes
|
|
3691
|
+
- `CustomRadioButton` class for LLM Provider selection
|
|
3692
|
+
- Square indicators with green background when checked, white checkmark overlay
|
|
3693
|
+
- **Prompt Manager Enhancements:**
|
|
3694
|
+
- Preview Combined Prompt button shows exact prompt sent to AI
|
|
3695
|
+
- Deactivate buttons for Domain and Project prompts
|
|
3696
|
+
- Prompt Assistant tab moved to first position
|
|
3697
|
+
|
|
3698
|
+
### Improved
|
|
3699
|
+
- **Grid Simplification:**
|
|
3700
|
+
- Double-click only editing (removed F2 key) - companion tool philosophy
|
|
3701
|
+
- Simplified styling with subtle colors for review-focused interface
|
|
3702
|
+
- Light blue selection highlight instead of bright blue
|
|
3703
|
+
- **Segment Number Styling:**
|
|
3704
|
+
- All segment numbers start with black foreground
|
|
3705
|
+
- Only selected segment number highlighted in orange (like memoQ)
|
|
3706
|
+
- Fixed black numbers issue after navigation
|
|
3707
|
+
|
|
3708
|
+
### Fixed
|
|
3709
|
+
- **Filter Crash:** Added safety checks for table and filter widgets
|
|
3710
|
+
- **removeWidget Error:** Fixed QSplitter widget removal (use setParent instead)
|
|
3711
|
+
- **Project Loading:** Fixed doc_segment_widgets AttributeError
|
|
3712
|
+
- **Translation Results Panel:** Now properly visible at bottom of grid
|
|
3713
|
+
|
|
3714
|
+
### Technical
|
|
3715
|
+
- Improved widget reparenting logic for splitter management
|
|
3716
|
+
- Enhanced error handling in filter operations
|
|
3717
|
+
- Better initialization of view state variables
|
|
3718
|
+
|
|
3719
|
+
---
|
|
3720
|
+
|
|
3721
|
+
## [1.1.6] - November 3, 2025
|
|
3722
|
+
|
|
3723
|
+
### Added
|
|
3724
|
+
- **🔍 Detachable Superlookup:** Multi-screen support for Superlookup module
|
|
3725
|
+
- Detach button on Home tab to open Superlookup in separate window
|
|
3726
|
+
- Perfect for multi-monitor workflows - move lookup to second screen while translating
|
|
3727
|
+
- Proper window positioning and multi-monitor detection
|
|
3728
|
+
- Reattach functionality to return to embedded mode
|
|
3729
|
+
|
|
3730
|
+
### Improved
|
|
3731
|
+
- **🏠 Home Tab Enhancements:**
|
|
3732
|
+
- Integrated About section directly into header with improved visibility
|
|
3733
|
+
- Better text styling with purple gradient for subtitle and version (larger, bold)
|
|
3734
|
+
- Reorganized layout: About in header, Resources & Support next, Projects at bottom
|
|
3735
|
+
- Projects section with distinct background color for visual separation
|
|
3736
|
+
- Superlookup prominently featured on right side of Home tab
|
|
3737
|
+
|
|
3738
|
+
### Fixed
|
|
3739
|
+
- **Multi-Monitor Support:** Fixed window positioning for detached Superlookup
|
|
3740
|
+
- Correct screen detection using `QApplication.screenAt()` API
|
|
3741
|
+
- Proper window activation and focus handling
|
|
3742
|
+
- Window flags configured for proper minimize/maximize behavior
|
|
3743
|
+
- Improved error handling for window detachment process
|
|
3744
|
+
|
|
3745
|
+
### Technical
|
|
3746
|
+
- Updated window positioning logic for Qt6 compatibility
|
|
3747
|
+
- Enhanced screen detection for multi-monitor setups
|
|
3748
|
+
- Improved window activation using QTimer for reliable focus management
|
|
3749
|
+
|
|
3750
|
+
---
|
|
3751
|
+
|
|
3752
|
+
## [1.1.5] - November 2, 2025
|
|
3753
|
+
|
|
3754
|
+
### Added
|
|
3755
|
+
- **🏠 New Home Tab:** Brand new first-screen experience
|
|
3756
|
+
- Integrated About section with version info and purple gradient header
|
|
3757
|
+
- Quick access to resources (Website, GitHub, Discussions, Documentation)
|
|
3758
|
+
- Project management panel for recent projects
|
|
3759
|
+
- Embedded Superlookup for instant translations
|
|
3760
|
+
- Clean, modern design with proper visual hierarchy
|
|
3761
|
+
|
|
3762
|
+
- **Major UI Reorganization:** Complete restructuring of main interface
|
|
3763
|
+
- **Tab Order Redesigned:**
|
|
3764
|
+
1. 🏠 Home (NEW - welcome screen)
|
|
3765
|
+
2. 💡 Prompt Manager (moved up from #5)
|
|
3766
|
+
3. 📝 Editor (renamed from "Project Editor")
|
|
3767
|
+
4. 🗂️ Resources (organized nested tabs)
|
|
3768
|
+
5. 🧩 Modules (renamed from "Specialised Modules")
|
|
3769
|
+
6. ⚙️ Settings (moved from Tools menu, includes Log)
|
|
3770
|
+
- **Navigation Menu:** Added "Go to Home" action (🏠 Home menu item)
|
|
3771
|
+
- **Removed Quick Access Sidebar:** Functionality integrated into Home tab
|
|
3772
|
+
- Cleaner, more intuitive workflow with logical feature grouping
|
|
3773
|
+
|
|
3774
|
+
- **Multiple View Modes:** Three different ways to view and edit your translation project
|
|
3775
|
+
- **Grid View (Ctrl+1):** Spreadsheet-like table view - perfect for quick segment-by-segment editing
|
|
3776
|
+
- **List View (Ctrl+2):** Segment list on left, editor panel on right - ideal for focused translation work
|
|
3777
|
+
- **Document View (Ctrl+3):** Natural document flow with clickable segments - great for review and context
|
|
3778
|
+
- View switcher toolbar with quick access buttons
|
|
3779
|
+
- All views share the same translation results pane (TM, LLM, MT, Termbase matches)
|
|
3780
|
+
- All views stay synchronized - changes in one view instantly reflected in others
|
|
3781
|
+
- Keyboard shortcuts (Ctrl+1/2/3) for rapid view switching
|
|
3782
|
+
|
|
3783
|
+
### Improved
|
|
3784
|
+
- **Translation Results Pane:** Now visible and functional in all three view modes
|
|
3785
|
+
- Properly integrated into Grid, List, and Document views
|
|
3786
|
+
- Dynamic reparenting when switching between views
|
|
3787
|
+
- Consistent assistance panel across all view modes
|
|
3788
|
+
|
|
3789
|
+
### Technical
|
|
3790
|
+
- **View Management:** Implemented QStackedWidget architecture for seamless view switching
|
|
3791
|
+
- Each view maintains its own splitter layout
|
|
3792
|
+
- Shared assistance widget dynamically moved between views
|
|
3793
|
+
- Clean separation of view-specific logic
|
|
3794
|
+
|
|
3795
|
+
---
|
|
3796
|
+
|
|
3797
|
+
## [1.1.4] - November 2, 2025
|
|
3798
|
+
|
|
3799
|
+
### Added
|
|
3800
|
+
- **Encoding Repair Tool:** Full port from tkinter edition with standalone capability
|
|
3801
|
+
- Detect and fix text encoding corruption (mojibake) in translation files
|
|
3802
|
+
- Scan single files or entire folders recursively
|
|
3803
|
+
- Automatic backup creation (.backup files) before repair
|
|
3804
|
+
- Supports common corruption patterns (en/em dashes, quotes, ellipsis, bullets, etc.)
|
|
3805
|
+
- Clean Qt interface matching other modules (PDF Rescue, TMX Editor style)
|
|
3806
|
+
- **Standalone Mode:** Run independently with `python modules/encoding_repair_Qt.py`
|
|
3807
|
+
- **Embedded Mode:** Integrated as a tab in Supervertaler Qt
|
|
3808
|
+
- Test file available at `docs/tests/test_encoding_corruption.txt` for user testing
|
|
3809
|
+
|
|
3810
|
+
### Improved
|
|
3811
|
+
- **Prompt Manager:** Fixed System Prompts tab to show list widget (matching Domain Prompts layout)
|
|
3812
|
+
- Added proper list/editor splitter layout for consistency
|
|
3813
|
+
- System Prompts now use shared editor panel with metadata fields hidden
|
|
3814
|
+
- Better visual consistency across all prompt tabs
|
|
3815
|
+
|
|
3816
|
+
### Fixed
|
|
3817
|
+
- **About Dialog:** Updated with clickable website link (https://supervertaler.com/)
|
|
3818
|
+
- Changed description from "Professional Translation Memory & CAT Tool" to "AI-powered tool for translators & writers"
|
|
3819
|
+
- Improved dialog layout with better formatting
|
|
3820
|
+
|
|
3821
|
+
### Technical
|
|
3822
|
+
- **Module Architecture:** Created `encoding_repair_Qt.py` as standalone, reusable module
|
|
3823
|
+
- Uses existing `encoding_repair.py` backend (shared with tkinter version)
|
|
3824
|
+
- Proper path handling for standalone execution
|
|
3825
|
+
- Consistent with other Qt modules (PDF Rescue, TMX Editor patterns)
|
|
3826
|
+
|
|
3827
|
+
---
|
|
3828
|
+
|
|
3829
|
+
## [1.1.3] - November 2, 2025
|
|
3830
|
+
|
|
3831
|
+
### Added
|
|
3832
|
+
- **Prompt Manager:** Complete 4-Layer Prompt Architecture system integrated into Qt Edition
|
|
3833
|
+
- **Layer 1 - System Prompts:** Editable infrastructure prompts (CAT tags, formatting rules, language conventions)
|
|
3834
|
+
- **Layer 2 - Domain Prompts:** Domain-specific translation expertise (Legal, Medical, Technical, Financial, etc.)
|
|
3835
|
+
- **Layer 3 - Project Prompts:** Client and project-specific instructions and rules
|
|
3836
|
+
- **Layer 4 - Style Guides:** Language-specific formatting guidelines (numbers, dates, typography)
|
|
3837
|
+
- **Prompt Assistant:** AI-powered prompt refinement using natural language (unique to Supervertaler!)
|
|
3838
|
+
- **Full UI Integration:** Beautiful tab interface with activation system and preview
|
|
3839
|
+
- **Standardized Headers:** Consistent UI/UX matching other modules (TMX Editor, PDF Rescue, AutoFingers)
|
|
3840
|
+
- **Import/Export:** Save, reset, import, and export prompts for sharing and backup
|
|
3841
|
+
|
|
3842
|
+
### Website
|
|
3843
|
+
- **4-Layer Architecture Documentation:** Comprehensive new section on website explaining the unique approach
|
|
3844
|
+
- **Visual Design:** Color-coded layer cards with detailed explanations
|
|
3845
|
+
- **Navigation:** Added dedicated navigation link for Architecture section
|
|
3846
|
+
- **Hero Section:** Updated badges and feature highlights to showcase new architecture
|
|
3847
|
+
- **Footer Links:** Integrated architecture documentation into site navigation
|
|
3848
|
+
|
|
3849
|
+
### Technical
|
|
3850
|
+
- **Terminology Standardization:** Renamed all infrastructure/Custom Instructions references to System/Project Prompts
|
|
3851
|
+
- **Code Quality:** Systematic refactoring with consistent naming conventions throughout
|
|
3852
|
+
- **Module Architecture:** `prompt_manager_qt.py` created as standalone, reusable module
|
|
3853
|
+
- **Backward Compatibility:** Maintained compatibility with existing prompt library files
|
|
3854
|
+
|
|
3855
|
+
---
|
|
3856
|
+
|
|
3857
|
+
## [1.1.2] - November 1, 2025
|
|
3858
|
+
|
|
3859
|
+
### Improved
|
|
3860
|
+
- **PDF Rescue:** Simplified to OCR-only mode (removed dual-mode complexity)
|
|
3861
|
+
- Removed text extraction mode and 504 lines of complex layout detection code
|
|
3862
|
+
- Reverted to simple, reliable image-based OCR workflow
|
|
3863
|
+
- Updated UI description to clarify OCR-only purpose
|
|
3864
|
+
- Better results with simpler approach
|
|
3865
|
+
|
|
3866
|
+
### Fixed
|
|
3867
|
+
- **PDF Rescue Prompt:** Restored original concise prompt that produced better OCR results
|
|
3868
|
+
- Removed verbose "CRITICAL ACCURACY RULES" that degraded performance
|
|
3869
|
+
- Simplified instructions for clearer AI guidance
|
|
3870
|
+
- Improved OCR accuracy with focused prompts
|
|
3871
|
+
|
|
3872
|
+
- **PDF Rescue DOCX Export:** Fixed excessive line breaks in Word documents
|
|
3873
|
+
- Changed paragraph detection from single newlines to double newlines
|
|
3874
|
+
- Single newlines now treated as spaces within paragraphs
|
|
3875
|
+
- Reduced paragraph spacing from 12pt to 6pt for tighter layout
|
|
3876
|
+
- Applied fix to both formatted and non-formatted export modes
|
|
3877
|
+
|
|
3878
|
+
### Added
|
|
3879
|
+
- **PDF Rescue Branding:** Added clickable hyperlink in DOCX exports
|
|
3880
|
+
- "Supervertaler" text now links to https://supervertaler.com/
|
|
3881
|
+
- Professional branding with working hyperlinks in Word documents
|
|
3882
|
+
|
|
3883
|
+
- **Website Navigation:** Added "Modules" link to header navigation
|
|
3884
|
+
- Appears after "Features" in main menu
|
|
3885
|
+
- Provides direct access to modules documentation
|
|
3886
|
+
|
|
3887
|
+
### Removed
|
|
3888
|
+
- **Website:** Removed "AI-First Philosophy" section (93 lines)
|
|
3889
|
+
- Streamlined website content
|
|
3890
|
+
- Removed from navigation menu
|
|
3891
|
+
- Content deemed redundant with other sections
|
|
3892
|
+
|
|
3893
|
+
---
|
|
3894
|
+
|
|
3895
|
+
## [1.1.1] - November 1, 2025
|
|
3896
|
+
|
|
3897
|
+
### Improved
|
|
3898
|
+
- **AutoFingers Settings:** Simplified behavior settings by removing redundant "Use Alt+N" checkbox
|
|
3899
|
+
- Now uses single "Confirm segments" checkbox: checked = Ctrl+Enter (confirm), unchecked = Alt+N (skip confirmation)
|
|
3900
|
+
- More intuitive UI with clearer label and comprehensive tooltip
|
|
3901
|
+
- Maintains backward compatibility with existing settings files
|
|
3902
|
+
|
|
3903
|
+
---
|
|
3904
|
+
|
|
3905
|
+
## [1.1.0] - November 1, 2025
|
|
3906
|
+
|
|
3907
|
+
### Added
|
|
3908
|
+
- **TMX Editor:** Professional translation memory editor integrated into Qt Edition
|
|
3909
|
+
- **Database-Backed TMX System:** Handle massive TMX files (1GB+) with SQLite backend
|
|
3910
|
+
- **Dual Loading Modes:** Choose RAM mode (fast for small files) or Database mode (handles any size)
|
|
3911
|
+
- **Smart Mode Selection:** Auto mode intelligently selects best loading method based on file size
|
|
3912
|
+
- **Inline Editing:** Edit source and target text directly in the grid (no popup dialogs)
|
|
3913
|
+
- **Real-time Highlighting:** Search terms highlighted with green background (Heartsome-style)
|
|
3914
|
+
- **Heartsome-Inspired UI:** Three-panel layout with top header (language selectors + filters), center grid, and right attributes panel
|
|
3915
|
+
- **Filtering:** Advanced search with case-insensitive matching and tag filtering
|
|
3916
|
+
- **Pagination:** Efficient 50 TUs per page for smooth performance
|
|
3917
|
+
- **Export/Import:** Save edited TMX files and export to new files
|
|
3918
|
+
- **Progress Indicators:** Clear progress bars with batch operations for fast loading
|
|
3919
|
+
- **Custom Checkboxes:** Consistent green checkmark style matching AutoFingers design
|
|
3920
|
+
|
|
3921
|
+
### Improved
|
|
3922
|
+
- **Database Integration:** New TMX database tables (`tmx_files`, `tmx_translation_units`, `tmx_segments`) with foreign keys and indexes
|
|
3923
|
+
- **Batch Operations:** Database commits every 100 TUs for 10-50x faster loading performance
|
|
3924
|
+
- **UI Consistency:** Mode selection dialog uses custom CheckmarkCheckBox style throughout
|
|
3925
|
+
- **Progress Feedback:** Immediate progress bar display with clearer blue styling
|
|
3926
|
+
|
|
3927
|
+
### Technical
|
|
3928
|
+
- **Database Schema:** Added three new tables for TMX storage with proper indexing
|
|
3929
|
+
- **Mode Detection:** Automatic recommendation based on file size thresholds (50MB, 100MB)
|
|
3930
|
+
- **Transaction Management:** Optimized database operations with batch commits
|
|
3931
|
+
- **Memory Efficiency:** Database mode frees RAM immediately after loading
|
|
3932
|
+
|
|
3933
|
+
---
|
|
3934
|
+
|
|
3935
|
+
## [1.0.2] - October 31, 2025
|
|
3936
|
+
|
|
3937
|
+
### Fixed
|
|
3938
|
+
- **Broken Emoji Icons:** Fixed broken emoji characters in tab labels for Termbases (🏷️), Prompt Manager (💡), Encoding Repair (🔧), and Tracked Changes (🔄)
|
|
3939
|
+
- **Checkbox Rendering:** Improved checkmark visibility on small displays with better padding and scaling
|
|
3940
|
+
|
|
3941
|
+
### Added
|
|
3942
|
+
- **Startup Settings:** Added option to automatically restore last opened project on startup (Tools → Options → General → Startup Settings)
|
|
3943
|
+
- **Font Size Persistence:** Added font size settings panel (Tools → Options → View/Display Settings) to save and restore:
|
|
3944
|
+
- Grid font size (7-72 pt)
|
|
3945
|
+
- Match list font size (7-16 pt)
|
|
3946
|
+
- Compare boxes font size (7-14 pt)
|
|
3947
|
+
- **Auto-Save Font Sizes:** Font sizes are automatically saved when adjusted via zoom controls (Ctrl++/Ctrl+- for grid, Ctrl+Shift++/Ctrl+Shift+- for results pane)
|
|
3948
|
+
|
|
3949
|
+
### Improved
|
|
3950
|
+
- **Checkbox Styling:** Implemented custom green checkboxes with white checkmarks (Option 1 style) for AutoFingers Behavior section - more intuitive than previous blue/white design
|
|
3951
|
+
- **AutoFingers Layout:** Reorganized Settings section into 2-column grid layout (Languages/Timing on left, Behavior/Save on right) for better organization
|
|
3952
|
+
- **Small Screen Support:** Moved Activity Log to right side of Settings for improved space utilization on laptop displays
|
|
3953
|
+
|
|
3954
|
+
---
|
|
3955
|
+
|
|
3956
|
+
## [1.0.1] - October 29, 2025
|
|
3957
|
+
|
|
3958
|
+
### Fixed
|
|
3959
|
+
- **Terminology Standardization:** Replaced all "glossary" references with "termbase" throughout codebase
|
|
3960
|
+
- **Database Schema:** Fixed NOT NULL constraint errors on `termbase_terms.source_lang` and `termbase_terms.target_lang` (changed to `DEFAULT 'unknown'`)
|
|
3961
|
+
- **Method Naming:** Renamed `create_glossary_results_tab()` → `create_termbase_results_tab()`
|
|
3962
|
+
- **Project Object Access:** Fixed Project attribute access patterns (changed from dict `.get()` to object attribute `.id`)
|
|
3963
|
+
- **Tab Label:** Updated from "Term Bases" → "Termbases" (single word)
|
|
3964
|
+
|
|
3965
|
+
### Changed
|
|
3966
|
+
- **Database Tables:** Renamed `glossary_terms` → `termbase_terms`, `glossary_id` → `termbase_id`
|
|
3967
|
+
- **SQL Queries:** Updated all queries to use new table/column names
|
|
3968
|
+
|
|
3969
|
+
### Added
|
|
3970
|
+
- **Sample Data:** Created 3 test termbases (Medical, Legal, Technical) with 48 total terms for testing
|
|
3971
|
+
|
|
3972
|
+
---
|
|
3973
|
+
|
|
3974
|
+
## [1.0.0] - October 28, 2025
|
|
3975
|
+
|
|
3976
|
+
### Added
|
|
3977
|
+
- **Qt Edition Launch:** Initial release of PyQt6-based modern CAT interface
|
|
3978
|
+
- **Translation Memory:** Full-text search with fuzzy matching and relevance scoring
|
|
3979
|
+
- **Termbases:** Multiple termbase support with global and project-specific scopes
|
|
3980
|
+
- **CAT Editor:** Segment-based translation editing interface
|
|
3981
|
+
- **Project Management:** Create, manage, and switch between translation projects
|
|
3982
|
+
- **Auto-fingers:** Smart terminology suggestions based on context
|
|
3983
|
+
- **AI Integration:** OpenAI GPT and Claude support with configurable API keys
|
|
3984
|
+
- **Database Backend:** SQLite persistent storage with 7 core tables
|
|
3985
|
+
|
|
3986
|
+
---
|
|
3987
|
+
|
|
3988
|
+
## Versioning Strategy
|
|
3989
|
+
|
|
3990
|
+
- **Major.Minor.Patch** (e.g., 1.0.1)
|
|
3991
|
+
- **Major:** Significant architecture changes or breaking changes
|
|
3992
|
+
- **Minor:** New features or substantial improvements
|
|
3993
|
+
- **Patch:** Bug fixes and minor adjustments
|
|
3994
|
+
|
|
3995
|
+
---
|
|
3996
|
+
|
|
3997
|
+
## Future Roadmap
|
|
3998
|
+
|
|
3999
|
+
### Planned for v1.1.0
|
|
4000
|
+
- Terminology Search (Ctrl+P)
|
|
4001
|
+
- Concordance Search (Ctrl+K)
|
|
4002
|
+
- Create/Edit termbase dialogs
|
|
4003
|
+
|
|
4004
|
+
### Planned for v1.2.0
|
|
4005
|
+
- TMX Editor with visual highlighting
|
|
4006
|
+
- Advanced filtering options
|
|
4007
|
+
- Custom keyboard shortcuts
|
|
4008
|
+
|
|
4009
|
+
### Planned for v2.0.0
|
|
4010
|
+
- Full feature parity with Tkinter edition
|
|
4011
|
+
- Deprecation of Tkinter edition
|
|
4012
|
+
|
|
4013
|
+
---
|
|
4014
|
+
|
|
4015
|
+
**Note:** This changelog focuses exclusively on the Qt Edition. See [CHANGELOG_Tkinter.md](CHANGELOG_Tkinter.md) for Classic edition history.
|
|
4016
|
+
|
|
4017
|
+
**Last Updated:** October 30, 2025
|
|
4018
|
+
- ✅ Fixed Project object access pattern (changed from dict `.get()` to object attributes)
|
|
4019
|
+
- ✅ Fixed database schema issues in private database folder
|
|
4020
|
+
|
|
4021
|
+
### 📋 Terminology Standardization
|
|
4022
|
+
- Replaced all "glossary" references with "termbase" throughout codebase
|
|
4023
|
+
- Updated database table: `glossary_terms` → `termbase_terms`
|
|
4024
|
+
- Updated column: `glossary_id` → `termbase_id`
|
|
4025
|
+
- Unified UI labels to use "Termbases" (one word, consistent)
|
|
4026
|
+
- **Files Updated**: 5+ Python files, database schema, UI labels
|
|
4027
|
+
|
|
4028
|
+
### 🎯 Known Issues
|
|
4029
|
+
- Terminology Search (Ctrl+P) - Planned for next release
|
|
4030
|
+
- Concordance Search (Ctrl+K) - Planned for next release
|
|
4031
|
+
|
|
4032
|
+
---
|
|
4033
|
+
|
|
4034
|
+
## [v1.0.0] - 2025-10-29 🎯 Phase 5.3 - Advanced Ribbon Features Complete
|
|
4035
|
+
|
|
4036
|
+
### 🎨 Major UX Enhancements - ALL 5 FEATURES IMPLEMENTED
|
|
4037
|
+
|
|
4038
|
+
**1. ✅ Context-Sensitive Ribbon**
|
|
4039
|
+
- Ribbon automatically switches based on active tab
|
|
4040
|
+
- Superlookup tab → Shows Translation ribbon
|
|
4041
|
+
- Project Editor tab → Shows Home ribbon
|
|
4042
|
+
- Intelligent tab selection for better workflow
|
|
4043
|
+
|
|
4044
|
+
**2. ✅ Quick Access Toolbar (QAT)**
|
|
4045
|
+
- Mini toolbar above ribbon with most-used commands
|
|
4046
|
+
- **Actions**: New 📄, Open 📂, Save 💾, Superlookup 🔍, Translate 🤖
|
|
4047
|
+
- **Minimize Ribbon toggle** ⌃ - Collapse ribbon to tabs-only
|
|
4048
|
+
- Always visible for quick access to favorites
|
|
4049
|
+
- Icon-only buttons for compact display
|
|
4050
|
+
|
|
4051
|
+
**3. ✅ Quick Access Sidebar** (NEW)
|
|
4052
|
+
- memoQ-style left navigation panel
|
|
4053
|
+
- **Collapsible sections**:
|
|
4054
|
+
- **Quick Actions**: New, Open, Save
|
|
4055
|
+
- **Translation Tools**: Superlookup, AutoFingers, TM Manager
|
|
4056
|
+
- **Recent Files**: Double-click to open
|
|
4057
|
+
- Resizable via splitter
|
|
4058
|
+
- Toggle on/off via View menu
|
|
4059
|
+
|
|
4060
|
+
**4. ✅ Ribbon Minimization**
|
|
4061
|
+
- Minimize ribbon to tabs-only mode (saves vertical space)
|
|
4062
|
+
- Click tabs to show ribbon temporarily
|
|
4063
|
+
- Toggle via ⌃ button in QAT
|
|
4064
|
+
|
|
4065
|
+
**5. ✅ Ribbon Customization Foundation**
|
|
4066
|
+
- Signal-based architecture for easy customization
|
|
4067
|
+
- Action mapping system for flexibility
|
|
4068
|
+
- Extensible group/button structure
|
|
4069
|
+
|
|
4070
|
+
### 📦 New Modules
|
|
4071
|
+
- `modules/quick_access_sidebar.py` - Reusable sidebar components
|
|
4072
|
+
- `modules/project_home_panel.py` - Project-specific home panel
|
|
4073
|
+
|
|
4074
|
+
### 🔧 Technical Improvements
|
|
4075
|
+
- Renamed splitters for clarity (sidebar_splitter, editor_splitter)
|
|
4076
|
+
- Connected sidebar actions to ribbon action handler
|
|
4077
|
+
- Automatic recent files update
|
|
4078
|
+
- Context-sensitive ribbon switching
|
|
4079
|
+
- Professional multi-panel layout
|
|
4080
|
+
|
|
4081
|
+
---
|
|
4082
|
+
|
|
4083
|
+
## [v1.0.0 - Phase 5.2] - 2025-10-29 🎨 Ribbon Interface - Modern CAT UI
|
|
4084
|
+
|
|
4085
|
+
### ✨ Major Features
|
|
4086
|
+
- ✅ **Modern Ribbon Interface** - Similar to memoQ, Trados Studio, Microsoft Office
|
|
4087
|
+
- ✅ **Four Ribbon Tabs**:
|
|
4088
|
+
- **Home**: New, Open, Save, Copy, Paste, Find, Replace, Go To
|
|
4089
|
+
- **Translation**: Translate, Batch Translate, TM Manager, Superlookup
|
|
4090
|
+
- **View**: Zoom In/Out, Auto-Resize Rows, Themes
|
|
4091
|
+
- **Tools**: AutoFingers, Options
|
|
4092
|
+
- ✅ **Grouped Buttons** - Related functions organized into visual groups
|
|
4093
|
+
- ✅ **Emoji Icons** - Clear, colorful visual indicators
|
|
4094
|
+
- ✅ **Hover Effects** - Modern button styling with transparency and borders
|
|
4095
|
+
- ✅ **Full Integration** - All actions connected to existing functionality
|
|
4096
|
+
|
|
4097
|
+
### 🎯 Architecture
|
|
4098
|
+
- Created `modules/ribbon_widget.py` - Reusable ribbon components
|
|
4099
|
+
- Tab-based ribbon system with dynamic button groups
|
|
4100
|
+
- Action signals connected to main window handlers
|
|
4101
|
+
- Professional styling matching modern CAT tools
|
|
4102
|
+
|
|
4103
|
+
---
|
|
4104
|
+
|
|
4105
|
+
## [v1.0.0 - Phase 5.1] - 2025-10-28 📊 Translation Results Panel Complete
|
|
4106
|
+
|
|
4107
|
+
### ✨ Features Implemented
|
|
4108
|
+
- ✅ **Compact Stacked Layout** - Collapsible match sections (NT, MT, TM, Termbases)
|
|
4109
|
+
- ✅ **Relevance Display** - Shows match percentages and confidence levels
|
|
4110
|
+
- ✅ **Metadata Display** - Domain, context, date information
|
|
4111
|
+
- ✅ **Drag/Drop Support** - Insert matches into translation field
|
|
4112
|
+
- ✅ **Compare Boxes** - Side-by-side comparison (Source | TM Source | TM Target)
|
|
4113
|
+
- ✅ **Diff Highlighting** - Red/green styling for visual comparison
|
|
4114
|
+
- ✅ **Segment Info** - Metadata and notes display
|
|
4115
|
+
- ✅ **Integration** - Fully integrated into Project Editor tab
|
|
4116
|
+
|
|
4117
|
+
### 📦 New Module
|
|
4118
|
+
- `modules/translation_results_panel.py` - Compact, production-ready results display
|
|
4119
|
+
|
|
4120
|
+
### 🎯 Layout
|
|
4121
|
+
- Stacked match sections with collapsible headers
|
|
4122
|
+
- Compact match items for efficient use of space
|
|
4123
|
+
- Relevance percentage display
|
|
4124
|
+
- Metadata columns (domain, context, source)
|
|
4125
|
+
- Notes and segment information panel
|
|
4126
|
+
|
|
4127
|
+
---
|
|
4128
|
+
|
|
4129
|
+
## [v1.0.0 - Phase 5.0] - 2025-10-27 🚀 Qt Edition Launch
|
|
4130
|
+
|
|
4131
|
+
### ✨ Core Features
|
|
4132
|
+
- ✅ **PyQt6 Framework** - Modern, cross-platform UI
|
|
4133
|
+
- ✅ **Dual-Tab Interface**:
|
|
4134
|
+
- Project Editor - Main translation workspace
|
|
4135
|
+
- Superlookup - Dictionary/search tool
|
|
4136
|
+
- ✅ **Project Management** - Load/save translation projects
|
|
4137
|
+
- ✅ **Translation Memory** - Full TMX support
|
|
4138
|
+
- ✅ **Segment Grid** - Professional translation grid view
|
|
4139
|
+
- ✅ **AI Integration** - Multiple LLM provider support (OpenAI, Anthropic, etc.)
|
|
4140
|
+
- ✅ **Keyboard Shortcuts** - Comprehensive hotkey system
|
|
4141
|
+
- ✅ **AutoHotkey Integration** - System-wide lookup support
|
|
4142
|
+
|
|
4143
|
+
### 🎯 Application Structure
|
|
4144
|
+
- Professional CAT tool architecture
|
|
4145
|
+
- Modular design for extensibility
|
|
4146
|
+
- Clean separation of concerns
|
|
4147
|
+
- Database-backed translation memory
|
|
4148
|
+
- Responsive UI with drag/drop support
|
|
4149
|
+
|
|
4150
|
+
---
|
|
4151
|
+
|
|
4152
|
+
## Release History - Previous Phases
|
|
4153
|
+
|
|
4154
|
+
For Qt development history before Phase 5.0, see `docs/RELEASE_Qt_v1.0.0_Phase5.md`
|
|
4155
|
+
|
|
4156
|
+
---
|
|
4157
|
+
|
|
4158
|
+
## Version Numbering
|
|
4159
|
+
|
|
4160
|
+
Supervertaler Qt uses semantic versioning:
|
|
4161
|
+
- **MAJOR** - Major feature additions or breaking changes
|
|
4162
|
+
- **MINOR** - New features, backward compatible
|
|
4163
|
+
- **PATCH** - Bug fixes and improvements
|
|
4164
|
+
- **PHASE** - Development phase tracking (Phase 5+)
|
|
4165
|
+
|
|
4166
|
+
**Current**: v1.0.2 (Phase 5.4)
|
|
4167
|
+
|