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