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.
Files changed (406) hide show
  1. supervertaler-1.9.114/CHANGELOG.md +4167 -0
  2. supervertaler-1.9.114/FAQ.md +1285 -0
  3. supervertaler-1.9.114/LICENSE +21 -0
  4. supervertaler-1.9.114/MANIFEST.in +16 -0
  5. supervertaler-1.9.114/PKG-INFO +799 -0
  6. supervertaler-1.9.114/README.md +726 -0
  7. supervertaler-1.9.114/Supervertaler.egg-info/PKG-INFO +799 -0
  8. supervertaler-1.9.114/Supervertaler.egg-info/SOURCES.txt +411 -0
  9. supervertaler-1.9.114/Supervertaler.egg-info/dependency_links.txt +1 -0
  10. supervertaler-1.9.114/Supervertaler.egg-info/entry_points.txt +2 -0
  11. supervertaler-1.9.114/Supervertaler.egg-info/not-zip-safe +1 -0
  12. supervertaler-1.9.114/Supervertaler.egg-info/requires.txt +48 -0
  13. supervertaler-1.9.114/Supervertaler.egg-info/top_level.txt +2 -0
  14. supervertaler-1.9.114/Supervertaler.py +45692 -0
  15. supervertaler-1.9.114/assets/ICON_CONVERSION_GUIDE.md +95 -0
  16. supervertaler-1.9.114/assets/MB.ico +0 -0
  17. supervertaler-1.9.114/assets/README.md +0 -0
  18. supervertaler-1.9.114/assets/generate_icons.py +129 -0
  19. supervertaler-1.9.114/assets/icon.ico +0 -0
  20. supervertaler-1.9.114/assets/icon_128.png +0 -0
  21. supervertaler-1.9.114/assets/icon_24.png +0 -0
  22. supervertaler-1.9.114/assets/icon_256.png +0 -0
  23. supervertaler-1.9.114/assets/icon_32.png +0 -0
  24. supervertaler-1.9.114/assets/icon_48.png +0 -0
  25. supervertaler-1.9.114/assets/icon_64.png +0 -0
  26. supervertaler-1.9.114/assets/icon_preview.html +202 -0
  27. supervertaler-1.9.114/assets/icon_sv_modern.svg +18 -0
  28. supervertaler-1.9.114/assets/icon_sv_modern_paths.svg +50 -0
  29. supervertaler-1.9.114/assets/icon_sv_simple.svg +25 -0
  30. supervertaler-1.9.114/assets/patent-drawing-1951.jpg +0 -0
  31. supervertaler-1.9.114/assets/supervertaler_icon_colours.png +0 -0
  32. supervertaler-1.9.114/docs/.nojekyll +0 -0
  33. supervertaler-1.9.114/docs/CNAME +1 -0
  34. supervertaler-1.9.114/docs/SIMILAR_APPS.md +90 -0
  35. supervertaler-1.9.114/docs/apple-touch-icon.png +0 -0
  36. supervertaler-1.9.114/docs/archive/BUGFIX_README.md +204 -0
  37. supervertaler-1.9.114/docs/archive/CHANGELIST.md +383 -0
  38. supervertaler-1.9.114/docs/archive/CHANGELOG_Old.md +1293 -0
  39. supervertaler-1.9.114/docs/archive/FAQ.md +1475 -0
  40. supervertaler-1.9.114/docs/archive/INSTALLATION_v1.7.8.md +508 -0
  41. supervertaler-1.9.114/docs/archive/PROJECT_ORGANIZATION.md +127 -0
  42. supervertaler-1.9.114/docs/archive/TERMBASE_REFACTORING_SUMMARY.md +136 -0
  43. supervertaler-1.9.114/docs/archive/USER_GUIDE_v1.7.8.md +1567 -0
  44. supervertaler-1.9.114/docs/archive/VERIFICATION_CHECKLIST.md +114 -0
  45. supervertaler-1.9.114/docs/archive/development/BEFORE_AFTER_COMPARISON.md +402 -0
  46. supervertaler-1.9.114/docs/archive/development/BUGFIX_SESSION_SUMMARY.md +210 -0
  47. supervertaler-1.9.114/docs/archive/development/COLOR_SCHEME_REFERENCE.md +147 -0
  48. supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_CHANGELOG.md +259 -0
  49. supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_DOCUMENTATION_INDEX.md +275 -0
  50. supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_IMPLEMENTATION_SUMMARY.md +242 -0
  51. supervertaler-1.9.114/docs/archive/development/COMPACT_LAYOUT_UPDATE.md +226 -0
  52. supervertaler-1.9.114/docs/archive/development/COMPLETE_IMPLEMENTATION_SUMMARY.md +224 -0
  53. supervertaler-1.9.114/docs/archive/development/COMPLETE_PROJECT_SUMMARY.md +478 -0
  54. supervertaler-1.9.114/docs/archive/development/DATABASE_FINAL_SUMMARY.md +293 -0
  55. supervertaler-1.9.114/docs/archive/development/DATABASE_IMPLEMENTATION.md +324 -0
  56. supervertaler-1.9.114/docs/archive/development/DATABASE_PRODUCTION_READY.md +304 -0
  57. supervertaler-1.9.114/docs/archive/development/DATABASE_QUICK_REFERENCE.md +246 -0
  58. supervertaler-1.9.114/docs/archive/development/DUAL_VERSION_STRATEGY.md +368 -0
  59. supervertaler-1.9.114/docs/archive/development/FINAL_SESSION_SUMMARY.md +326 -0
  60. supervertaler-1.9.114/docs/archive/development/FOLDER_STRUCTURE_UPDATE.md +208 -0
  61. supervertaler-1.9.114/docs/archive/development/GITHUB_PAGES_SETUP.md +298 -0
  62. supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_CHECKLIST.md +332 -0
  63. supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_COMPLETE.md +409 -0
  64. supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_COMPLETE_COMPACT_LAYOUT.md +362 -0
  65. supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_READY.md +144 -0
  66. supervertaler-1.9.114/docs/archive/development/IMPLEMENTATION_STATUS_PHASE2_READY.md +332 -0
  67. supervertaler-1.9.114/docs/archive/development/KEYBOARD_SHORTCUTS_MATCHES.md +155 -0
  68. supervertaler-1.9.114/docs/archive/development/LAYOUT_BEFORE_AFTER.md +319 -0
  69. supervertaler-1.9.114/docs/archive/development/MASTER_INDEX.md +333 -0
  70. supervertaler-1.9.114/docs/archive/development/MATCH_DISPLAY_IMPROVEMENTS.md +239 -0
  71. supervertaler-1.9.114/docs/archive/development/MATCH_DISPLAY_LONG_SEGMENTS_UPDATE.md +179 -0
  72. supervertaler-1.9.114/docs/archive/development/MATCH_DISPLAY_QUICK_REFERENCE.md +200 -0
  73. supervertaler-1.9.114/docs/archive/development/MATCH_INSERTION_FEATURES.md +249 -0
  74. supervertaler-1.9.114/docs/archive/development/MATCH_SHORTCUTS_QUICK_REF.md +185 -0
  75. supervertaler-1.9.114/docs/archive/development/MODULAR_ARCHITECTURE_GUIDE.md +266 -0
  76. supervertaler-1.9.114/docs/archive/development/PHASE2_IMPLEMENTATION_CHECKLIST.md +400 -0
  77. supervertaler-1.9.114/docs/archive/development/PHASE2_IMPLEMENTATION_DETAILED_CHECKLIST.md +758 -0
  78. supervertaler-1.9.114/docs/archive/development/PHASE2_IMPLEMENTATION_IN_PROGRESS.md +268 -0
  79. supervertaler-1.9.114/docs/archive/development/PHASE2_NEXT_STEPS.md +232 -0
  80. supervertaler-1.9.114/docs/archive/development/PHASE2_READY_TO_IMPLEMENT.md +255 -0
  81. supervertaler-1.9.114/docs/archive/development/PHASE2_START_HERE.md +188 -0
  82. supervertaler-1.9.114/docs/archive/development/QT_MIGRATION_PLAN.md +517 -0
  83. supervertaler-1.9.114/docs/archive/development/QT_SESSION_SUMMARY.md +439 -0
  84. supervertaler-1.9.114/docs/archive/development/QUICK_SESSION_SUMMARY.md +259 -0
  85. supervertaler-1.9.114/docs/archive/development/RELEASE_Qt_v1.0.0_Phase5.md +263 -0
  86. supervertaler-1.9.114/docs/archive/development/RELEASE_v1.9.38.md +186 -0
  87. supervertaler-1.9.114/docs/archive/development/RELEASE_v3.7.1.md +355 -0
  88. supervertaler-1.9.114/docs/archive/development/RELEASE_v3.7.6.md +236 -0
  89. supervertaler-1.9.114/docs/archive/development/RELEASE_v3.7.7.md +304 -0
  90. supervertaler-1.9.114/docs/archive/development/RESTRUCTURE_COMPLETE.md +132 -0
  91. supervertaler-1.9.114/docs/archive/development/SESSION_DOCUMENTATION_INDEX.md +298 -0
  92. supervertaler-1.9.114/docs/archive/development/SESSION_IMPLEMENTATION_SUMMARY.md +276 -0
  93. supervertaler-1.9.114/docs/archive/development/SESSION_LONG_SEGMENTS_COMPLETE.md +362 -0
  94. supervertaler-1.9.114/docs/archive/development/SESSION_MATCH_FEATURES_COMPLETE.md +341 -0
  95. supervertaler-1.9.114/docs/archive/development/SESSION_STATUS.md +386 -0
  96. supervertaler-1.9.114/docs/archive/development/SESSION_SUMMARY_Phase5.md +169 -0
  97. supervertaler-1.9.114/docs/archive/development/START_HERE.md +353 -0
  98. supervertaler-1.9.114/docs/archive/development/START_IMPLEMENTATION_HERE.md +255 -0
  99. supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_DELIVERABLES.md +497 -0
  100. supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_DOCUMENTATION_INDEX.md +380 -0
  101. supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_FEATURE_SUMMARY.md +356 -0
  102. supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_IMPLEMENTATION.md +214 -0
  103. supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_PROJECT_COMPLETION.md +545 -0
  104. supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_QUICK_REFERENCE.md +354 -0
  105. supervertaler-1.9.114/docs/archive/development/STYLE_GUIDES_VISUAL_ARCHITECTURE.md +343 -0
  106. supervertaler-1.9.114/docs/archive/development/TERMBASE_FIXES.md +150 -0
  107. supervertaler-1.9.114/docs/archive/development/TERMBASE_IMPLEMENTATION.md +281 -0
  108. supervertaler-1.9.114/docs/archive/development/TERMBASE_QUICK_START.md +235 -0
  109. supervertaler-1.9.114/docs/archive/development/TMX_CONCORDANCE_STYLE_HIGHLIGHTING.md +186 -0
  110. supervertaler-1.9.114/docs/archive/development/TMX_DUAL_HIGHLIGHTING.md +217 -0
  111. supervertaler-1.9.114/docs/archive/development/TMX_EDITOR_HIGHLIGHTING_UPDATE.md +170 -0
  112. supervertaler-1.9.114/docs/archive/development/TMX_EDITOR_IMPLEMENTATION.md +287 -0
  113. supervertaler-1.9.114/docs/archive/development/TMX_EDITOR_WORD_HIGHLIGHTING.md +129 -0
  114. supervertaler-1.9.114/docs/archive/development/TMX_TABLE_LAYOUT_INTEGRATED_EDIT.md +176 -0
  115. supervertaler-1.9.114/docs/archive/development/TMX_TREEVIEW_GRID_RESIZABLE.md +207 -0
  116. supervertaler-1.9.114/docs/archive/development/TMX_WORD_HIGHLIGHTING_IMPLEMENTATION_COMPLETE.md +145 -0
  117. supervertaler-1.9.114/docs/archive/development/TMX_WORD_HIGHLIGHTING_SUMMARY.md +65 -0
  118. supervertaler-1.9.114/docs/archive/development/TM_MATCH_PANE_CHECKLIST.md +307 -0
  119. supervertaler-1.9.114/docs/archive/development/TM_MATCH_PANE_IMPLEMENTATION.md +177 -0
  120. supervertaler-1.9.114/docs/archive/development/TM_MATCH_PANE_VISUAL_GUIDE.md +234 -0
  121. supervertaler-1.9.114/docs/archive/development/VISUAL_COLOR_REFERENCE.md +354 -0
  122. supervertaler-1.9.114/docs/archive/development/VISUAL_IMPLEMENTATION_SUMMARY.md +424 -0
  123. supervertaler-1.9.114/docs/archive/sessions/COLOR_FIX_EXPLANATION.md +100 -0
  124. supervertaler-1.9.114/docs/archive/sessions/DATABASE_CONSOLIDATION_REPORT.md +82 -0
  125. supervertaler-1.9.114/docs/archive/sessions/DUAL_EDITOR_WORKFLOW.md +287 -0
  126. supervertaler-1.9.114/docs/archive/sessions/DUAL_SELECTION_SYSTEM.md +83 -0
  127. supervertaler-1.9.114/docs/archive/sessions/IMPROVEMENTS_SUMMARY.md +161 -0
  128. supervertaler-1.9.114/docs/archive/sessions/ISSUES_FIXES_PROGRESS.md +102 -0
  129. supervertaler-1.9.114/docs/archive/sessions/MATCH_DISPLAY_COMPACT_FIXES.md +135 -0
  130. supervertaler-1.9.114/docs/archive/sessions/README_SESSION_TERMBASE.md +208 -0
  131. supervertaler-1.9.114/docs/archive/sessions/SAFE_DELETION_REMINDER.txt +22 -0
  132. supervertaler-1.9.114/docs/archive/sessions/SESSION_SUMMARY.md +178 -0
  133. supervertaler-1.9.114/docs/archive/sessions/TERMBASE_FIXES_APPLIED.md +107 -0
  134. supervertaler-1.9.114/docs/archive/sessions/TESTING_CHECKLIST.md +209 -0
  135. supervertaler-1.9.114/docs/archive/sessions/TMX_EDITOR_ANNOUNCEMENT.md +35 -0
  136. supervertaler-1.9.114/docs/archive/sessions/TRANSLATION_RESULTS_IMPROVEMENTS.md +195 -0
  137. supervertaler-1.9.114/docs/assets/Figure1.png +0 -0
  138. supervertaler-1.9.114/docs/assets/patent-drawing-1951.jpg +0 -0
  139. supervertaler-1.9.114/docs/dev-notes/QA.md +15 -0
  140. supervertaler-1.9.114/docs/dev-notes/STYLE_GUIDES_UI_TEMPLATE.py +332 -0
  141. supervertaler-1.9.114/docs/dev-notes/_Notes_2025-11-21.md +147 -0
  142. supervertaler-1.9.114/docs/dev-notes/_things_to_remind_AIs_of_when_translating.md +19 -0
  143. supervertaler-1.9.114/docs/dev-notes/issue_28.md +108 -0
  144. supervertaler-1.9.114/docs/dev-notes/openai_debug.txt +17352 -0
  145. supervertaler-1.9.114/docs/emoji_mockup.html +288 -0
  146. supervertaler-1.9.114/docs/favicon.ico +0 -0
  147. supervertaler-1.9.114/docs/guides/AI_PROMPT_ASSISTANT_USER_GUIDE.md +331 -0
  148. supervertaler-1.9.114/docs/guides/ENCODING_REPAIR_TOOL.md +255 -0
  149. supervertaler-1.9.114/docs/guides/FAQ.md +1202 -0
  150. supervertaler-1.9.114/docs/guides/GLOSSARY_OF_SUPERVERTALER_TERMINOLOGY.md +57 -0
  151. supervertaler-1.9.114/docs/guides/JSON_EDITORS_AND_HUMAN_READABLE_FORMAT.md +297 -0
  152. supervertaler-1.9.114/docs/guides/KEYBOARD_SHORTCUTS.md +210 -0
  153. supervertaler-1.9.114/docs/guides/PDF_RESCUE.md +564 -0
  154. supervertaler-1.9.114/docs/guides/PROMPT_ASSISTANT_USER_GUIDE.md +331 -0
  155. supervertaler-1.9.114/docs/guides/QT_SETTINGS_DIALOG_GUIDE.md +303 -0
  156. supervertaler-1.9.114/docs/guides/TERM_EXTRACTION_GUIDE.md +125 -0
  157. supervertaler-1.9.114/docs/guides/USER_DATA_FOLDER_SETUP.md +315 -0
  158. supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/BEIJERBOT_FEATURE_ANALYSIS.md +435 -0
  159. supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/CLI_BRIDGE_SPECIFICATION.md +703 -0
  160. supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/IMPLEMENTATION_ROADMAP.md +768 -0
  161. supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/QUICKMENU_INTEGRATION_PLAN.md +656 -0
  162. supervertaler-1.9.114/docs/idea_beijer.bot_integration_idea/README.md +369 -0
  163. supervertaler-1.9.114/docs/idea_tag-cleaner/tag_cleaner.md +35 -0
  164. supervertaler-1.9.114/docs/idea_use_vscode_as_cat_tool/ai-agent-translation-workflow.md +277 -0
  165. supervertaler-1.9.114/docs/index.html +1660 -0
  166. supervertaler-1.9.114/docs/logo.png +0 -0
  167. supervertaler-1.9.114/docs/screenshots/2025-10-13_00-46-16.jpg +0 -0
  168. supervertaler-1.9.114/docs/screenshots/Superlookup_Web_resources.jpg +0 -0
  169. supervertaler-1.9.114/docs/screenshots/Supervertaler_AI-Assistant.jpg +0 -0
  170. supervertaler-1.9.114/docs/screenshots/Supervertaler_CLASSIC_v2.4.1_(tkinter).jpg +0 -0
  171. supervertaler-1.9.114/docs/screenshots/Supervertaler_Prompt_Manager_2026-01-14.png +0 -0
  172. supervertaler-1.9.114/docs/screenshots/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  173. supervertaler-1.9.114/docs/screenshots/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  174. supervertaler-1.9.114/docs/screenshots/Supervertaler_Superbrowser.jpg +0 -0
  175. supervertaler-1.9.114/docs/screenshots/Supervertaler_dark_mode_2025-12-16.jpg +0 -0
  176. supervertaler-1.9.114/docs/screenshots/Supervertaler_dark_mode_2025-12-17.jpg +0 -0
  177. supervertaler-1.9.114/docs/screenshots/Supervertaler_grid.jpg +0 -0
  178. supervertaler-1.9.114/docs/screenshots/Supervertaler_tkinter (v3.7.7).jpg +0 -0
  179. supervertaler-1.9.114/docs/screenshots/Supervertaler_v1.9.102_compare_panel_2026-01-14.png +0 -0
  180. supervertaler-1.9.114/docs/screenshots/Supervertaler_v1.9.102_grid_2026-01-14.png +0 -0
  181. supervertaler-1.9.114/docs/screenshots/new/Supervertaler-grid.jpg +0 -0
  182. supervertaler-1.9.114/docs/screenshots/new/Supervertaler_AI-Assistant.jpg +0 -0
  183. supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Prompt-Library.jpg +0 -0
  184. supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  185. supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  186. supervertaler-1.9.114/docs/screenshots/new/Supervertaler_Superbrowser.jpg +0 -0
  187. supervertaler-1.9.114/docs/screenshots/old/2025-10-13_00-50-24.jpg +0 -0
  188. supervertaler-1.9.114/docs/screenshots/old/Supervertaler_Qt_2025-11-12.jpg +0 -0
  189. supervertaler-1.9.114/docs/script.js +138 -0
  190. supervertaler-1.9.114/docs/site.webmanifest +21 -0
  191. supervertaler-1.9.114/docs/specifications/AI_ASSISTANT_PHASE2_IMPLEMENTATION.md +519 -0
  192. supervertaler-1.9.114/docs/specifications/AI_PROMPT_ASSISTANT.md +487 -0
  193. supervertaler-1.9.114/docs/specifications/AI_PROMPT_ASSISTANT_IMPLEMENTATION.md +341 -0
  194. supervertaler-1.9.114/docs/specifications/EXPORT_MENU_UPDATE.md +468 -0
  195. supervertaler-1.9.114/docs/specifications/IMPLEMENTATION_SUMMARY.md +235 -0
  196. supervertaler-1.9.114/docs/specifications/QT_PHASE2_COMPLETE.md +212 -0
  197. supervertaler-1.9.114/docs/specifications/QT_PHASE3_COMPLETE.md +256 -0
  198. supervertaler-1.9.114/docs/specifications/SUPERVERTALER_DATA_FORMAT.md +427 -0
  199. supervertaler-1.9.114/docs/specifications/TASK_TYPE_SYSTEM.md +0 -0
  200. supervertaler-1.9.114/docs/specifications/TERMINOLOGY_UPDATE_SUMMARY.md +234 -0
  201. supervertaler-1.9.114/docs/specifications/opus-api-integration.md +264 -0
  202. supervertaler-1.9.114/docs/styles.css +1414 -0
  203. supervertaler-1.9.114/docs/superdocs/.gitbook/assets/supervertaler-logo.png +0 -0
  204. supervertaler-1.9.114/docs/superdocs/.gitbook/assets/sv-icon.svg +15 -0
  205. supervertaler-1.9.114/docs/superdocs/GITBOOK_LANDING_DRAFT.md +75 -0
  206. supervertaler-1.9.114/docs/superdocs/README.md +67 -0
  207. supervertaler-1.9.114/docs/superdocs/SUMMARY.md +107 -0
  208. supervertaler-1.9.114/docs/superdocs/ai-translation/batch-translation.md +80 -0
  209. supervertaler-1.9.114/docs/superdocs/ai-translation/ollama.md +21 -0
  210. supervertaler-1.9.114/docs/superdocs/ai-translation/overview.md +148 -0
  211. supervertaler-1.9.114/docs/superdocs/ai-translation/prompt-library.md +17 -0
  212. supervertaler-1.9.114/docs/superdocs/ai-translation/prompts.md +25 -0
  213. supervertaler-1.9.114/docs/superdocs/ai-translation/providers.md +24 -0
  214. supervertaler-1.9.114/docs/superdocs/ai-translation/single-segment.md +18 -0
  215. supervertaler-1.9.114/docs/superdocs/cat-tools/cafetran.md +30 -0
  216. supervertaler-1.9.114/docs/superdocs/cat-tools/memoq.md +128 -0
  217. supervertaler-1.9.114/docs/superdocs/cat-tools/overview.md +122 -0
  218. supervertaler-1.9.114/docs/superdocs/cat-tools/phrase.md +36 -0
  219. supervertaler-1.9.114/docs/superdocs/cat-tools/trados.md +131 -0
  220. supervertaler-1.9.114/docs/superdocs/editor/editing-confirming.md +39 -0
  221. supervertaler-1.9.114/docs/superdocs/editor/filtering.md +23 -0
  222. supervertaler-1.9.114/docs/superdocs/editor/find-replace.md +130 -0
  223. supervertaler-1.9.114/docs/superdocs/editor/keyboard-shortcuts.md +111 -0
  224. supervertaler-1.9.114/docs/superdocs/editor/navigation.md +43 -0
  225. supervertaler-1.9.114/docs/superdocs/editor/pagination.md +21 -0
  226. supervertaler-1.9.114/docs/superdocs/editor/translation-grid.md +51 -0
  227. supervertaler-1.9.114/docs/superdocs/get-started/api-keys.md +106 -0
  228. supervertaler-1.9.114/docs/superdocs/get-started/first-project.md +131 -0
  229. supervertaler-1.9.114/docs/superdocs/get-started/installation.md +80 -0
  230. supervertaler-1.9.114/docs/superdocs/get-started/quick-start.md +101 -0
  231. supervertaler-1.9.114/docs/superdocs/glossaries/basics.md +105 -0
  232. supervertaler-1.9.114/docs/superdocs/glossaries/creating.md +21 -0
  233. supervertaler-1.9.114/docs/superdocs/glossaries/extraction.md +19 -0
  234. supervertaler-1.9.114/docs/superdocs/glossaries/highlighting.md +14 -0
  235. supervertaler-1.9.114/docs/superdocs/glossaries/importing.md +18 -0
  236. supervertaler-1.9.114/docs/superdocs/import-export/bilingual-tables.md +14 -0
  237. supervertaler-1.9.114/docs/superdocs/import-export/docx-import.md +19 -0
  238. supervertaler-1.9.114/docs/superdocs/import-export/exporting.md +39 -0
  239. supervertaler-1.9.114/docs/superdocs/import-export/formats.md +39 -0
  240. supervertaler-1.9.114/docs/superdocs/import-export/multi-file.md +20 -0
  241. supervertaler-1.9.114/docs/superdocs/import-export/txt-import.md +22 -0
  242. supervertaler-1.9.114/docs/superdocs/qa/non-translatables.md +14 -0
  243. supervertaler-1.9.114/docs/superdocs/qa/spellcheck.md +129 -0
  244. supervertaler-1.9.114/docs/superdocs/qa/tag-validation.md +50 -0
  245. supervertaler-1.9.114/docs/superdocs/reference/changelog.md +19 -0
  246. supervertaler-1.9.114/docs/superdocs/reference/contributing.md +21 -0
  247. supervertaler-1.9.114/docs/superdocs/reference/faq.md +1386 -0
  248. supervertaler-1.9.114/docs/superdocs/reference/file-formats.md +121 -0
  249. supervertaler-1.9.114/docs/superdocs/settings/fonts.md +13 -0
  250. supervertaler-1.9.114/docs/superdocs/settings/general.md +20 -0
  251. supervertaler-1.9.114/docs/superdocs/settings/shortcuts.md +15 -0
  252. supervertaler-1.9.114/docs/superdocs/settings/theme.md +12 -0
  253. supervertaler-1.9.114/docs/superdocs/settings/view.md +15 -0
  254. supervertaler-1.9.114/docs/superdocs/superlookup/glossary-search.md +50 -0
  255. supervertaler-1.9.114/docs/superdocs/superlookup/mt.md +38 -0
  256. supervertaler-1.9.114/docs/superdocs/superlookup/overview.md +104 -0
  257. supervertaler-1.9.114/docs/superdocs/superlookup/tm-search.md +37 -0
  258. supervertaler-1.9.114/docs/superdocs/superlookup/web-resources.md +49 -0
  259. supervertaler-1.9.114/docs/superdocs/tools/autofingers.md +47 -0
  260. supervertaler-1.9.114/docs/superdocs/tools/image-extractor.md +28 -0
  261. supervertaler-1.9.114/docs/superdocs/tools/pdf-rescue.md +216 -0
  262. supervertaler-1.9.114/docs/superdocs/tools/tmx-editor.md +38 -0
  263. supervertaler-1.9.114/docs/superdocs/tools/voice-commands.md +60 -0
  264. supervertaler-1.9.114/docs/superdocs/translation-memory/basics.md +96 -0
  265. supervertaler-1.9.114/docs/superdocs/translation-memory/fuzzy-matching.md +18 -0
  266. supervertaler-1.9.114/docs/superdocs/translation-memory/importing-tmx.md +18 -0
  267. supervertaler-1.9.114/docs/superdocs/translation-memory/managing-tms.md +23 -0
  268. supervertaler-1.9.114/docs/superdocs/translation-memory/supermemory.md +21 -0
  269. supervertaler-1.9.114/docs/superdocs/troubleshooting/api-issues.md +44 -0
  270. supervertaler-1.9.114/docs/superdocs/troubleshooting/common-issues.md +231 -0
  271. supervertaler-1.9.114/docs/superdocs/troubleshooting/import-export-errors.md +94 -0
  272. supervertaler-1.9.114/docs/superdocs/troubleshooting/linux.md +33 -0
  273. supervertaler-1.9.114/docs/superdocs/troubleshooting/performance.md +35 -0
  274. supervertaler-1.9.114/docs/sv-icon.svg +15 -0
  275. supervertaler-1.9.114/docs/technical/AI_ASSISTANT_GUIDE.md +166 -0
  276. supervertaler-1.9.114/docs/technical/AI_ASSISTANT_IMPLEMENTATION.md +321 -0
  277. supervertaler-1.9.114/docs/technical/AI_ASSISTANT_INTEGRATION.md +402 -0
  278. supervertaler-1.9.114/docs/technical/AI_ASSISTANT_QUICK_REFERENCE.md +216 -0
  279. supervertaler-1.9.114/docs/technical/DATABASE_LOCATIONS.md +33 -0
  280. supervertaler-1.9.114/docs/technical/FILTER_HIGHLIGHTING_FIX.md +141 -0
  281. supervertaler-1.9.114/docs/technical/MODULE_HEADER_PATTERN.md +215 -0
  282. supervertaler-1.9.114/docs/technical/README.md +0 -0
  283. supervertaler-1.9.114/docs/technical/SUPERBROWSER_GUIDE.md +210 -0
  284. supervertaler-1.9.114/docs/technical/SUPERVOICE_TROUBLESHOOTING.md +152 -0
  285. supervertaler-1.9.114/docs/technical/UNIFIED_PROMPT_LIBRARY_GUIDE.md +344 -0
  286. supervertaler-1.9.114/docs/technical/VOICE_DICTATION_GUIDE.md +157 -0
  287. supervertaler-1.9.114/docs/tests/test_encoding_corruption.txt +48 -0
  288. supervertaler-1.9.114/docs/web-app-manifest-192x192.png +0 -0
  289. supervertaler-1.9.114/docs/web-app-manifest-512x512.png +0 -0
  290. supervertaler-1.9.114/modules/__init__.py +10 -0
  291. supervertaler-1.9.114/modules/ai_actions.py +964 -0
  292. supervertaler-1.9.114/modules/ai_attachment_manager.py +343 -0
  293. supervertaler-1.9.114/modules/ai_file_viewer_dialog.py +210 -0
  294. supervertaler-1.9.114/modules/autofingers_engine.py +466 -0
  295. supervertaler-1.9.114/modules/cafetran_docx_handler.py +379 -0
  296. supervertaler-1.9.114/modules/config_manager.py +469 -0
  297. supervertaler-1.9.114/modules/database_manager.py +1766 -0
  298. supervertaler-1.9.114/modules/database_migrations.py +417 -0
  299. supervertaler-1.9.114/modules/dejavurtf_handler.py +779 -0
  300. supervertaler-1.9.114/modules/document_analyzer.py +427 -0
  301. supervertaler-1.9.114/modules/docx_handler.py +689 -0
  302. supervertaler-1.9.114/modules/encoding_repair.py +319 -0
  303. supervertaler-1.9.114/modules/encoding_repair_Qt.py +393 -0
  304. supervertaler-1.9.114/modules/encoding_repair_ui.py +481 -0
  305. supervertaler-1.9.114/modules/feature_manager.py +350 -0
  306. supervertaler-1.9.114/modules/figure_context_manager.py +340 -0
  307. supervertaler-1.9.114/modules/file_dialog_helper.py +148 -0
  308. supervertaler-1.9.114/modules/find_replace.py +164 -0
  309. supervertaler-1.9.114/modules/find_replace_qt.py +457 -0
  310. supervertaler-1.9.114/modules/glossary_manager.py +433 -0
  311. supervertaler-1.9.114/modules/image_extractor.py +188 -0
  312. supervertaler-1.9.114/modules/keyboard_shortcuts_widget.py +571 -0
  313. supervertaler-1.9.114/modules/llm_clients.py +1211 -0
  314. supervertaler-1.9.114/modules/llm_leaderboard.py +737 -0
  315. supervertaler-1.9.114/modules/llm_superbench_ui.py +1401 -0
  316. supervertaler-1.9.114/modules/local_llm_setup.py +1104 -0
  317. supervertaler-1.9.114/modules/model_update_dialog.py +381 -0
  318. supervertaler-1.9.114/modules/model_version_checker.py +373 -0
  319. supervertaler-1.9.114/modules/mqxliff_handler.py +638 -0
  320. supervertaler-1.9.114/modules/non_translatables_manager.py +743 -0
  321. supervertaler-1.9.114/modules/pdf_rescue_Qt.py +1822 -0
  322. supervertaler-1.9.114/modules/pdf_rescue_tkinter.py +909 -0
  323. supervertaler-1.9.114/modules/phrase_docx_handler.py +516 -0
  324. supervertaler-1.9.114/modules/project_home_panel.py +209 -0
  325. supervertaler-1.9.114/modules/prompt_assistant.py +357 -0
  326. supervertaler-1.9.114/modules/prompt_library.py +689 -0
  327. supervertaler-1.9.114/modules/prompt_library_migration.py +447 -0
  328. supervertaler-1.9.114/modules/quick_access_sidebar.py +282 -0
  329. supervertaler-1.9.114/modules/ribbon_widget.py +597 -0
  330. supervertaler-1.9.114/modules/sdlppx_handler.py +874 -0
  331. supervertaler-1.9.114/modules/setup_wizard.py +353 -0
  332. supervertaler-1.9.114/modules/shortcut_manager.py +904 -0
  333. supervertaler-1.9.114/modules/simple_segmenter.py +128 -0
  334. supervertaler-1.9.114/modules/spellcheck_manager.py +727 -0
  335. supervertaler-1.9.114/modules/statuses.py +207 -0
  336. supervertaler-1.9.114/modules/style_guide_manager.py +315 -0
  337. supervertaler-1.9.114/modules/superbench_ui.py +1319 -0
  338. supervertaler-1.9.114/modules/superbrowser.py +325 -0
  339. supervertaler-1.9.114/modules/supercleaner.py +600 -0
  340. supervertaler-1.9.114/modules/supercleaner_ui.py +444 -0
  341. supervertaler-1.9.114/modules/superdocs.py +19 -0
  342. supervertaler-1.9.114/modules/superdocs_viewer_qt.py +382 -0
  343. supervertaler-1.9.114/modules/superlookup.py +248 -0
  344. supervertaler-1.9.114/modules/tag_cleaner.py +260 -0
  345. supervertaler-1.9.114/modules/tag_manager.py +333 -0
  346. supervertaler-1.9.114/modules/term_extractor.py +270 -0
  347. supervertaler-1.9.114/modules/termbase_entry_editor.py +842 -0
  348. supervertaler-1.9.114/modules/termbase_import_export.py +488 -0
  349. supervertaler-1.9.114/modules/termbase_manager.py +1060 -0
  350. supervertaler-1.9.114/modules/termview_widget.py +1161 -0
  351. supervertaler-1.9.114/modules/theme_manager.py +499 -0
  352. supervertaler-1.9.114/modules/tm_editor_dialog.py +99 -0
  353. supervertaler-1.9.114/modules/tm_manager_qt.py +1280 -0
  354. supervertaler-1.9.114/modules/tm_metadata_manager.py +545 -0
  355. supervertaler-1.9.114/modules/tmx_editor.py +1461 -0
  356. supervertaler-1.9.114/modules/tmx_editor_qt.py +2784 -0
  357. supervertaler-1.9.114/modules/tmx_generator.py +284 -0
  358. supervertaler-1.9.114/modules/tracked_changes.py +900 -0
  359. supervertaler-1.9.114/modules/trados_docx_handler.py +430 -0
  360. supervertaler-1.9.114/modules/translation_memory.py +670 -0
  361. supervertaler-1.9.114/modules/translation_results_panel.py +2134 -0
  362. supervertaler-1.9.114/modules/translation_services.py +282 -0
  363. supervertaler-1.9.114/modules/unified_prompt_library.py +656 -0
  364. supervertaler-1.9.114/modules/unified_prompt_manager_qt.py +3727 -0
  365. supervertaler-1.9.114/modules/voice_commands.py +920 -0
  366. supervertaler-1.9.114/modules/voice_dictation.py +477 -0
  367. supervertaler-1.9.114/modules/voice_dictation_lite.py +249 -0
  368. supervertaler-1.9.114/pyproject.toml +149 -0
  369. supervertaler-1.9.114/setup.cfg +4 -0
  370. supervertaler-1.9.114/setup.py +94 -0
  371. supervertaler-1.9.114/tests/test_add_term.py +42 -0
  372. supervertaler-1.9.114/tests/test_ai_actions.py +614 -0
  373. supervertaler-1.9.114/tests/test_all_matches.py +65 -0
  374. supervertaler-1.9.114/tests/test_api_keys.py +79 -0
  375. supervertaler-1.9.114/tests/test_attachment_manager.py +176 -0
  376. supervertaler-1.9.114/tests/test_autofingers.py +187 -0
  377. supervertaler-1.9.114/tests/test_autofingers_fuzzy.py +308 -0
  378. supervertaler-1.9.114/tests/test_cafetran_workflow.py +141 -0
  379. supervertaler-1.9.114/tests/test_chat_ui.py +133 -0
  380. supervertaler-1.9.114/tests/test_claude_models.py +38 -0
  381. supervertaler-1.9.114/tests/test_current_database.py +71 -0
  382. supervertaler-1.9.114/tests/test_database.py +139 -0
  383. supervertaler-1.9.114/tests/test_db_schema.py +35 -0
  384. supervertaler-1.9.114/tests/test_delete_entry.py +43 -0
  385. supervertaler-1.9.114/tests/test_doc_structure.py +46 -0
  386. supervertaler-1.9.114/tests/test_down_arrow_logic.py +50 -0
  387. supervertaler-1.9.114/tests/test_fts5_special_chars.py +48 -0
  388. supervertaler-1.9.114/tests/test_google_translate.py +76 -0
  389. supervertaler-1.9.114/tests/test_google_translate_locale.py +90 -0
  390. supervertaler-1.9.114/tests/test_google_translate_rest.py +83 -0
  391. supervertaler-1.9.114/tests/test_image_extractor.py +51 -0
  392. supervertaler-1.9.114/tests/test_lang_codes.py +41 -0
  393. supervertaler-1.9.114/tests/test_language_detection.py +93 -0
  394. supervertaler-1.9.114/tests/test_match_pane_ui.py +83 -0
  395. supervertaler-1.9.114/tests/test_memoq_navigation.py +41 -0
  396. supervertaler-1.9.114/tests/test_mt_apis.py +81 -0
  397. supervertaler-1.9.114/tests/test_pipe_formatting.py +135 -0
  398. supervertaler-1.9.114/tests/test_tag_cleaner_integration.py +114 -0
  399. supervertaler-1.9.114/tests/test_termbase.py +40 -0
  400. supervertaler-1.9.114/tests/test_termbase_highlighting.py +88 -0
  401. supervertaler-1.9.114/tests/test_termbase_search.py +54 -0
  402. supervertaler-1.9.114/tests/test_tm_metadata.py +43 -0
  403. supervertaler-1.9.114/tests/test_tm_methods.py +57 -0
  404. supervertaler-1.9.114/tests/test_tmx_editor.py +31 -0
  405. supervertaler-1.9.114/tests/test_tmx_export.py +153 -0
  406. 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 `&lt;b&gt;` 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>`, `&nbsp;`, 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
+