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