supervertaler 1.9.132__tar.gz → 1.9.147__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.132 → supervertaler-1.9.147}/CHANGELOG.md +326 -1
  2. {supervertaler-1.9.132 → supervertaler-1.9.147}/PKG-INFO +37 -3
  3. {supervertaler-1.9.132 → supervertaler-1.9.147}/README.md +35 -2
  4. {supervertaler-1.9.132 → supervertaler-1.9.147}/Supervertaler.py +543 -214
  5. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/index.html +231 -231
  6. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/database_manager.py +20 -5
  7. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/termview_widget.py +6 -2
  8. {supervertaler-1.9.132 → supervertaler-1.9.147}/pyproject.toml +4 -1
  9. {supervertaler-1.9.132 → supervertaler-1.9.147}/supervertaler.egg-info/PKG-INFO +37 -3
  10. {supervertaler-1.9.132 → supervertaler-1.9.147}/supervertaler.egg-info/requires.txt +1 -0
  11. {supervertaler-1.9.132 → supervertaler-1.9.147}/FAQ.md +0 -0
  12. {supervertaler-1.9.132 → supervertaler-1.9.147}/LICENSE +0 -0
  13. {supervertaler-1.9.132 → supervertaler-1.9.147}/MANIFEST.in +0 -0
  14. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/ICON_CONVERSION_GUIDE.md +0 -0
  15. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/MB.ico +0 -0
  16. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/README.md +0 -0
  17. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/generate_icons.py +0 -0
  18. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon.ico +0 -0
  19. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_128.png +0 -0
  20. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_24.png +0 -0
  21. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_256.png +0 -0
  22. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_32.png +0 -0
  23. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_48.png +0 -0
  24. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_64.png +0 -0
  25. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_preview.html +0 -0
  26. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_sv_modern.svg +0 -0
  27. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_sv_modern_paths.svg +0 -0
  28. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/icon_sv_simple.svg +0 -0
  29. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/patent-drawing-1951.jpg +0 -0
  30. {supervertaler-1.9.132 → supervertaler-1.9.147}/assets/supervertaler_icon_colours.png +0 -0
  31. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/.nojekyll +0 -0
  32. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/CNAME +0 -0
  33. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/SIMILAR_APPS.md +0 -0
  34. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/apple-touch-icon.png +0 -0
  35. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/BUGFIX_README.md +0 -0
  36. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/CHANGELIST.md +0 -0
  37. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/CHANGELOG_Old.md +0 -0
  38. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/FAQ.md +0 -0
  39. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/INSTALLATION_v1.7.8.md +0 -0
  40. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/PROJECT_ORGANIZATION.md +0 -0
  41. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/TERMBASE_REFACTORING_SUMMARY.md +0 -0
  42. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/USER_GUIDE_v1.7.8.md +0 -0
  43. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/VERIFICATION_CHECKLIST.md +0 -0
  44. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/BEFORE_AFTER_COMPARISON.md +0 -0
  45. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/BUGFIX_SESSION_SUMMARY.md +0 -0
  46. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/COLOR_SCHEME_REFERENCE.md +0 -0
  47. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/COMPACT_LAYOUT_CHANGELOG.md +0 -0
  48. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/COMPACT_LAYOUT_DOCUMENTATION_INDEX.md +0 -0
  49. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/COMPACT_LAYOUT_IMPLEMENTATION_SUMMARY.md +0 -0
  50. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/COMPACT_LAYOUT_UPDATE.md +0 -0
  51. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/COMPLETE_IMPLEMENTATION_SUMMARY.md +0 -0
  52. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/COMPLETE_PROJECT_SUMMARY.md +0 -0
  53. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/DATABASE_FINAL_SUMMARY.md +0 -0
  54. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/DATABASE_IMPLEMENTATION.md +0 -0
  55. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/DATABASE_PRODUCTION_READY.md +0 -0
  56. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/DATABASE_QUICK_REFERENCE.md +0 -0
  57. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/DUAL_VERSION_STRATEGY.md +0 -0
  58. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/FINAL_SESSION_SUMMARY.md +0 -0
  59. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/FOLDER_STRUCTURE_UPDATE.md +0 -0
  60. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/GITHUB_PAGES_SETUP.md +0 -0
  61. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/IMPLEMENTATION_CHECKLIST.md +0 -0
  62. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/IMPLEMENTATION_COMPLETE.md +0 -0
  63. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/IMPLEMENTATION_COMPLETE_COMPACT_LAYOUT.md +0 -0
  64. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/IMPLEMENTATION_READY.md +0 -0
  65. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/IMPLEMENTATION_STATUS_PHASE2_READY.md +0 -0
  66. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/KEYBOARD_SHORTCUTS_MATCHES.md +0 -0
  67. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/LAYOUT_BEFORE_AFTER.md +0 -0
  68. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/MASTER_INDEX.md +0 -0
  69. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/MATCH_DISPLAY_IMPROVEMENTS.md +0 -0
  70. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/MATCH_DISPLAY_LONG_SEGMENTS_UPDATE.md +0 -0
  71. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/MATCH_DISPLAY_QUICK_REFERENCE.md +0 -0
  72. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/MATCH_INSERTION_FEATURES.md +0 -0
  73. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/MATCH_SHORTCUTS_QUICK_REF.md +0 -0
  74. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/MODULAR_ARCHITECTURE_GUIDE.md +0 -0
  75. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/PHASE2_IMPLEMENTATION_CHECKLIST.md +0 -0
  76. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/PHASE2_IMPLEMENTATION_DETAILED_CHECKLIST.md +0 -0
  77. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/PHASE2_IMPLEMENTATION_IN_PROGRESS.md +0 -0
  78. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/PHASE2_NEXT_STEPS.md +0 -0
  79. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/PHASE2_READY_TO_IMPLEMENT.md +0 -0
  80. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/PHASE2_START_HERE.md +0 -0
  81. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/QT_MIGRATION_PLAN.md +0 -0
  82. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/QT_SESSION_SUMMARY.md +0 -0
  83. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/QUICK_SESSION_SUMMARY.md +0 -0
  84. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/RELEASE_Qt_v1.0.0_Phase5.md +0 -0
  85. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/RELEASE_v1.9.38.md +0 -0
  86. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/RELEASE_v3.7.1.md +0 -0
  87. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/RELEASE_v3.7.6.md +0 -0
  88. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/RELEASE_v3.7.7.md +0 -0
  89. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/RESTRUCTURE_COMPLETE.md +0 -0
  90. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/SESSION_DOCUMENTATION_INDEX.md +0 -0
  91. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/SESSION_IMPLEMENTATION_SUMMARY.md +0 -0
  92. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/SESSION_LONG_SEGMENTS_COMPLETE.md +0 -0
  93. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/SESSION_MATCH_FEATURES_COMPLETE.md +0 -0
  94. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/SESSION_STATUS.md +0 -0
  95. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/SESSION_SUMMARY_Phase5.md +0 -0
  96. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/START_HERE.md +0 -0
  97. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/START_IMPLEMENTATION_HERE.md +0 -0
  98. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/STYLE_GUIDES_DELIVERABLES.md +0 -0
  99. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/STYLE_GUIDES_DOCUMENTATION_INDEX.md +0 -0
  100. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/STYLE_GUIDES_FEATURE_SUMMARY.md +0 -0
  101. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/STYLE_GUIDES_IMPLEMENTATION.md +0 -0
  102. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/STYLE_GUIDES_PROJECT_COMPLETION.md +0 -0
  103. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/STYLE_GUIDES_QUICK_REFERENCE.md +0 -0
  104. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/STYLE_GUIDES_VISUAL_ARCHITECTURE.md +0 -0
  105. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TERMBASE_FIXES.md +0 -0
  106. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TERMBASE_IMPLEMENTATION.md +0 -0
  107. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TERMBASE_QUICK_START.md +0 -0
  108. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_CONCORDANCE_STYLE_HIGHLIGHTING.md +0 -0
  109. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_DUAL_HIGHLIGHTING.md +0 -0
  110. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_EDITOR_HIGHLIGHTING_UPDATE.md +0 -0
  111. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_EDITOR_IMPLEMENTATION.md +0 -0
  112. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_EDITOR_WORD_HIGHLIGHTING.md +0 -0
  113. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_TABLE_LAYOUT_INTEGRATED_EDIT.md +0 -0
  114. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_TREEVIEW_GRID_RESIZABLE.md +0 -0
  115. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_WORD_HIGHLIGHTING_IMPLEMENTATION_COMPLETE.md +0 -0
  116. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TMX_WORD_HIGHLIGHTING_SUMMARY.md +0 -0
  117. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TM_MATCH_PANE_CHECKLIST.md +0 -0
  118. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TM_MATCH_PANE_IMPLEMENTATION.md +0 -0
  119. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/TM_MATCH_PANE_VISUAL_GUIDE.md +0 -0
  120. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/VISUAL_COLOR_REFERENCE.md +0 -0
  121. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/development/VISUAL_IMPLEMENTATION_SUMMARY.md +0 -0
  122. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/COLOR_FIX_EXPLANATION.md +0 -0
  123. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/DATABASE_CONSOLIDATION_REPORT.md +0 -0
  124. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/DUAL_EDITOR_WORKFLOW.md +0 -0
  125. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/DUAL_SELECTION_SYSTEM.md +0 -0
  126. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/IMPROVEMENTS_SUMMARY.md +0 -0
  127. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/ISSUES_FIXES_PROGRESS.md +0 -0
  128. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/MATCH_DISPLAY_COMPACT_FIXES.md +0 -0
  129. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/README_SESSION_TERMBASE.md +0 -0
  130. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/SAFE_DELETION_REMINDER.txt +0 -0
  131. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/SESSION_SUMMARY.md +0 -0
  132. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/TERMBASE_FIXES_APPLIED.md +0 -0
  133. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/TESTING_CHECKLIST.md +0 -0
  134. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/TMX_EDITOR_ANNOUNCEMENT.md +0 -0
  135. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/archive/sessions/TRANSLATION_RESULTS_IMPROVEMENTS.md +0 -0
  136. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/assets/Figure1.png +0 -0
  137. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/assets/patent-drawing-1951.jpg +0 -0
  138. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/changelog.html +0 -0
  139. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/dev-notes/QA.md +0 -0
  140. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/dev-notes/STYLE_GUIDES_UI_TEMPLATE.py +0 -0
  141. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/dev-notes/_Notes_2025-11-21.md +0 -0
  142. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/dev-notes/_things_to_remind_AIs_of_when_translating.md +0 -0
  143. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/dev-notes/issue_28.md +0 -0
  144. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/dev-notes/openai_debug.txt +0 -0
  145. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/emoji_mockup.html +0 -0
  146. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/favicon.ico +0 -0
  147. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/AI_PROMPT_ASSISTANT_USER_GUIDE.md +0 -0
  148. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/ENCODING_REPAIR_TOOL.md +0 -0
  149. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/FAQ.md +0 -0
  150. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/GLOSSARY_OF_SUPERVERTALER_TERMINOLOGY.md +0 -0
  151. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/JSON_EDITORS_AND_HUMAN_READABLE_FORMAT.md +0 -0
  152. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/KEYBOARD_SHORTCUTS.md +0 -0
  153. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/PDF_RESCUE.md +0 -0
  154. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/PROMPT_ASSISTANT_USER_GUIDE.md +0 -0
  155. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/QT_SETTINGS_DIALOG_GUIDE.md +0 -0
  156. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/TERM_EXTRACTION_GUIDE.md +0 -0
  157. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/guides/USER_DATA_FOLDER_SETUP.md +0 -0
  158. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/idea_beijer.bot_integration_idea/BEIJERBOT_FEATURE_ANALYSIS.md +0 -0
  159. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/idea_beijer.bot_integration_idea/CLI_BRIDGE_SPECIFICATION.md +0 -0
  160. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/idea_beijer.bot_integration_idea/IMPLEMENTATION_ROADMAP.md +0 -0
  161. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/idea_beijer.bot_integration_idea/QUICKMENU_INTEGRATION_PLAN.md +0 -0
  162. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/idea_beijer.bot_integration_idea/README.md +0 -0
  163. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/idea_tag-cleaner/tag_cleaner.md +0 -0
  164. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/idea_use_vscode_as_cat_tool/ai-agent-translation-workflow.md +0 -0
  165. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/logo.png +0 -0
  166. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/2025-10-13_00-46-16.jpg +0 -0
  167. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Superlookup_Web_resources.jpg +0 -0
  168. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_AI-Assistant.jpg +0 -0
  169. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_CLASSIC_v2.4.1_(tkinter).jpg +0 -0
  170. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_Prompt_Manager_2026-01-14.png +0 -0
  171. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  172. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  173. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_Superbrowser.jpg +0 -0
  174. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_dark_mode_2025-12-16.jpg +0 -0
  175. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_dark_mode_2025-12-17.jpg +0 -0
  176. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_grid.jpg +0 -0
  177. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_tkinter (v3.7.7).jpg +0 -0
  178. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_v1.9.102_compare_panel_2026-01-14.png +0 -0
  179. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/Supervertaler_v1.9.102_grid_2026-01-14.png +0 -0
  180. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/new/Supervertaler-grid.jpg +0 -0
  181. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/new/Supervertaler_AI-Assistant.jpg +0 -0
  182. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/new/Supervertaler_Prompt-Library.jpg +0 -0
  183. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/new/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  184. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/new/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  185. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/new/Supervertaler_Superbrowser.jpg +0 -0
  186. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/old/2025-10-13_00-50-24.jpg +0 -0
  187. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/screenshots/old/Supervertaler_Qt_2025-11-12.jpg +0 -0
  188. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/script.js +0 -0
  189. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/site.webmanifest +0 -0
  190. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/AI_ASSISTANT_PHASE2_IMPLEMENTATION.md +0 -0
  191. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/AI_PROMPT_ASSISTANT.md +0 -0
  192. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/AI_PROMPT_ASSISTANT_IMPLEMENTATION.md +0 -0
  193. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/EXPORT_MENU_UPDATE.md +0 -0
  194. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/IMPLEMENTATION_SUMMARY.md +0 -0
  195. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/QT_PHASE2_COMPLETE.md +0 -0
  196. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/QT_PHASE3_COMPLETE.md +0 -0
  197. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/SUPERVERTALER_DATA_FORMAT.md +0 -0
  198. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/TASK_TYPE_SYSTEM.md +0 -0
  199. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/TERMINOLOGY_UPDATE_SUMMARY.md +0 -0
  200. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/specifications/opus-api-integration.md +0 -0
  201. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/styles.css +0 -0
  202. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/.gitbook/assets/supervertaler-logo.png +0 -0
  203. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/.gitbook/assets/sv-icon.svg +0 -0
  204. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/GITBOOK_LANDING_DRAFT.md +0 -0
  205. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/README.md +0 -0
  206. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/SUMMARY.md +0 -0
  207. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/ai-translation/batch-translation.md +0 -0
  208. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/ai-translation/ollama.md +0 -0
  209. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/ai-translation/overview.md +0 -0
  210. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/ai-translation/prompt-library.md +0 -0
  211. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/ai-translation/prompts.md +0 -0
  212. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/ai-translation/providers.md +0 -0
  213. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/ai-translation/single-segment.md +0 -0
  214. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/cat-tools/cafetran.md +0 -0
  215. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/cat-tools/memoq.md +0 -0
  216. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/cat-tools/overview.md +0 -0
  217. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/cat-tools/phrase.md +0 -0
  218. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/cat-tools/trados.md +0 -0
  219. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/editor/editing-confirming.md +0 -0
  220. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/editor/filtering.md +0 -0
  221. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/editor/find-replace.md +0 -0
  222. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/editor/keyboard-shortcuts.md +0 -0
  223. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/editor/navigation.md +0 -0
  224. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/editor/pagination.md +0 -0
  225. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/editor/translation-grid.md +0 -0
  226. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/get-started/api-keys.md +0 -0
  227. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/get-started/first-project.md +0 -0
  228. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/get-started/installation.md +0 -0
  229. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/get-started/quick-start.md +0 -0
  230. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/glossaries/basics.md +0 -0
  231. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/glossaries/creating.md +0 -0
  232. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/glossaries/extraction.md +0 -0
  233. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/glossaries/highlighting.md +0 -0
  234. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/glossaries/importing.md +0 -0
  235. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/import-export/bilingual-tables.md +0 -0
  236. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/import-export/docx-import.md +0 -0
  237. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/import-export/exporting.md +0 -0
  238. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/import-export/formats.md +0 -0
  239. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/import-export/multi-file.md +0 -0
  240. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/import-export/txt-import.md +0 -0
  241. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/qa/non-translatables.md +0 -0
  242. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/qa/spellcheck.md +0 -0
  243. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/qa/tag-validation.md +0 -0
  244. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/reference/changelog.md +0 -0
  245. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/reference/contributing.md +0 -0
  246. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/reference/faq.md +0 -0
  247. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/reference/file-formats.md +0 -0
  248. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/settings/fonts.md +0 -0
  249. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/settings/general.md +0 -0
  250. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/settings/shortcuts.md +0 -0
  251. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/settings/theme.md +0 -0
  252. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/settings/view.md +0 -0
  253. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/superlookup/glossary-search.md +0 -0
  254. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/superlookup/mt.md +0 -0
  255. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/superlookup/overview.md +0 -0
  256. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/superlookup/tm-search.md +0 -0
  257. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/superlookup/web-resources.md +0 -0
  258. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/tools/autofingers.md +0 -0
  259. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/tools/image-extractor.md +0 -0
  260. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/tools/pdf-rescue.md +0 -0
  261. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/tools/tmx-editor.md +0 -0
  262. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/tools/voice-commands.md +0 -0
  263. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/translation-memory/basics.md +0 -0
  264. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/translation-memory/fuzzy-matching.md +0 -0
  265. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/translation-memory/importing-tmx.md +0 -0
  266. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/translation-memory/managing-tms.md +0 -0
  267. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/translation-memory/supermemory.md +0 -0
  268. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/troubleshooting/api-issues.md +0 -0
  269. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/troubleshooting/common-issues.md +0 -0
  270. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/troubleshooting/import-export-errors.md +0 -0
  271. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/troubleshooting/linux.md +0 -0
  272. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/superdocs/troubleshooting/performance.md +0 -0
  273. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/sv-icon.svg +0 -0
  274. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/AI_ASSISTANT_GUIDE.md +0 -0
  275. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/AI_ASSISTANT_IMPLEMENTATION.md +0 -0
  276. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/AI_ASSISTANT_INTEGRATION.md +0 -0
  277. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/AI_ASSISTANT_QUICK_REFERENCE.md +0 -0
  278. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/DATABASE_LOCATIONS.md +0 -0
  279. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/FILTER_HIGHLIGHTING_FIX.md +0 -0
  280. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/MODULE_HEADER_PATTERN.md +0 -0
  281. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/README.md +0 -0
  282. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/SUPERBROWSER_GUIDE.md +0 -0
  283. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/SUPERVOICE_TROUBLESHOOTING.md +0 -0
  284. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/UNIFIED_PROMPT_LIBRARY_GUIDE.md +0 -0
  285. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/technical/VOICE_DICTATION_GUIDE.md +0 -0
  286. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/tests/test_encoding_corruption.txt +0 -0
  287. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/web-app-manifest-192x192.png +0 -0
  288. {supervertaler-1.9.132 → supervertaler-1.9.147}/docs/web-app-manifest-512x512.png +0 -0
  289. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/__init__.py +0 -0
  290. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/ai_actions.py +0 -0
  291. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/ai_attachment_manager.py +0 -0
  292. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/ai_file_viewer_dialog.py +0 -0
  293. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/autofingers_engine.py +0 -0
  294. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/cafetran_docx_handler.py +0 -0
  295. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/config_manager.py +0 -0
  296. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/database_migrations.py +0 -0
  297. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/dejavurtf_handler.py +0 -0
  298. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/document_analyzer.py +0 -0
  299. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/docx_handler.py +0 -0
  300. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/encoding_repair.py +0 -0
  301. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/encoding_repair_Qt.py +0 -0
  302. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/encoding_repair_ui.py +0 -0
  303. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/feature_manager.py +0 -0
  304. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/figure_context_manager.py +0 -0
  305. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/file_dialog_helper.py +0 -0
  306. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/find_replace.py +0 -0
  307. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/find_replace_qt.py +0 -0
  308. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/glossary_manager.py +0 -0
  309. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/image_extractor.py +0 -0
  310. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/keyboard_shortcuts_widget.py +0 -0
  311. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/llm_clients.py +0 -0
  312. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/llm_leaderboard.py +0 -0
  313. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/llm_superbench_ui.py +0 -0
  314. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/local_llm_setup.py +0 -0
  315. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/model_update_dialog.py +0 -0
  316. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/model_version_checker.py +0 -0
  317. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/mqxliff_handler.py +0 -0
  318. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/non_translatables_manager.py +0 -0
  319. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/pdf_rescue_Qt.py +0 -0
  320. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/pdf_rescue_tkinter.py +0 -0
  321. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/phrase_docx_handler.py +0 -0
  322. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/project_home_panel.py +0 -0
  323. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/prompt_assistant.py +0 -0
  324. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/prompt_library.py +0 -0
  325. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/prompt_library_migration.py +0 -0
  326. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/quick_access_sidebar.py +0 -0
  327. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/ribbon_widget.py +0 -0
  328. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/sdlppx_handler.py +0 -0
  329. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/setup_wizard.py +0 -0
  330. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/shortcut_manager.py +0 -0
  331. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/simple_segmenter.py +0 -0
  332. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/spellcheck_manager.py +0 -0
  333. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/statuses.py +0 -0
  334. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/style_guide_manager.py +0 -0
  335. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/superbench_ui.py +0 -0
  336. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/superbrowser.py +0 -0
  337. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/supercleaner.py +0 -0
  338. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/supercleaner_ui.py +0 -0
  339. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/superdocs.py +0 -0
  340. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/superdocs_viewer_qt.py +0 -0
  341. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/superlookup.py +0 -0
  342. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tag_cleaner.py +0 -0
  343. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tag_manager.py +0 -0
  344. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/term_extractor.py +0 -0
  345. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/termbase_entry_editor.py +0 -0
  346. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/termbase_import_export.py +0 -0
  347. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/termbase_manager.py +0 -0
  348. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/theme_manager.py +0 -0
  349. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tm_editor_dialog.py +0 -0
  350. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tm_manager_qt.py +0 -0
  351. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tm_metadata_manager.py +0 -0
  352. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tmx_editor.py +0 -0
  353. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tmx_editor_qt.py +0 -0
  354. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tmx_generator.py +0 -0
  355. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/tracked_changes.py +0 -0
  356. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/trados_docx_handler.py +0 -0
  357. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/translation_memory.py +0 -0
  358. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/translation_results_panel.py +0 -0
  359. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/translation_services.py +0 -0
  360. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/unified_prompt_library.py +0 -0
  361. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/unified_prompt_manager_qt.py +0 -0
  362. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/voice_commands.py +0 -0
  363. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/voice_dictation.py +0 -0
  364. {supervertaler-1.9.132 → supervertaler-1.9.147}/modules/voice_dictation_lite.py +0 -0
  365. {supervertaler-1.9.132 → supervertaler-1.9.147}/setup.cfg +0 -0
  366. {supervertaler-1.9.132 → supervertaler-1.9.147}/setup.py +0 -0
  367. {supervertaler-1.9.132 → supervertaler-1.9.147}/supervertaler.egg-info/SOURCES.txt +0 -0
  368. {supervertaler-1.9.132 → supervertaler-1.9.147}/supervertaler.egg-info/dependency_links.txt +0 -0
  369. {supervertaler-1.9.132 → supervertaler-1.9.147}/supervertaler.egg-info/entry_points.txt +0 -0
  370. {supervertaler-1.9.132 → supervertaler-1.9.147}/supervertaler.egg-info/not-zip-safe +0 -0
  371. {supervertaler-1.9.132 → supervertaler-1.9.147}/supervertaler.egg-info/top_level.txt +0 -0
  372. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_add_term.py +0 -0
  373. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_ai_actions.py +0 -0
  374. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_all_matches.py +0 -0
  375. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_api_keys.py +0 -0
  376. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_attachment_manager.py +0 -0
  377. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_autofingers.py +0 -0
  378. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_autofingers_fuzzy.py +0 -0
  379. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_cafetran_workflow.py +0 -0
  380. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_chat_ui.py +0 -0
  381. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_claude_models.py +0 -0
  382. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_current_database.py +0 -0
  383. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_database.py +0 -0
  384. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_db_schema.py +0 -0
  385. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_delete_entry.py +0 -0
  386. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_doc_structure.py +0 -0
  387. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_down_arrow_logic.py +0 -0
  388. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_fts5_special_chars.py +0 -0
  389. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_google_translate.py +0 -0
  390. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_google_translate_locale.py +0 -0
  391. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_google_translate_rest.py +0 -0
  392. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_image_extractor.py +0 -0
  393. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_lang_codes.py +0 -0
  394. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_language_detection.py +0 -0
  395. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_match_pane_ui.py +0 -0
  396. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_memoq_navigation.py +0 -0
  397. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_mt_apis.py +0 -0
  398. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_pipe_formatting.py +0 -0
  399. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_tag_cleaner_integration.py +0 -0
  400. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_termbase.py +0 -0
  401. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_termbase_highlighting.py +0 -0
  402. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_termbase_search.py +0 -0
  403. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_tm_metadata.py +0 -0
  404. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_tm_methods.py +0 -0
  405. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_tmx_editor.py +0 -0
  406. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_tmx_export.py +0 -0
  407. {supervertaler-1.9.132 → supervertaler-1.9.147}/tests/test_unified_prompt_library.py +0 -0
@@ -2,7 +2,332 @@
2
2
 
3
3
  All notable changes to Supervertaler are documented in this file.
4
4
 
5
- **Current Version:** v1.9.132 (January 20, 2026)
5
+ **Current Version:** v1.9.147 (January 21, 2026)
6
+
7
+ ## 📁 Persistent User Data Location (v1.9.147) - January 21, 2026
8
+
9
+ **Major Enhancement:** User data (API keys, TMs, glossaries, prompts, settings) now persists across pip upgrades!
10
+
11
+ **The Problem:**
12
+ - When users ran `pip install --upgrade supervertaler`, their data was wiped
13
+ - This happened because user_data/ was stored inside the pip package directory
14
+ - pip replaces the entire package directory on upgrade, deleting all user files
15
+ - Users reported losing API keys, TMs, glossaries, and prompts after every update
16
+
17
+ **The Solution:**
18
+ User data is now stored in a **platform-specific persistent location** that lives OUTSIDE the pip package:
19
+
20
+ | Platform | Location |
21
+ |----------|----------|
22
+ | **Windows** | `%LOCALAPPDATA%\MichaelBeijer\Supervertaler\` (e.g., `C:\Users\John\AppData\Local\MichaelBeijer\Supervertaler\`) |
23
+ | **macOS** | `~/Library/Application Support/Supervertaler/` |
24
+ | **Linux** | `~/.local/share/Supervertaler/` (follows XDG spec) |
25
+ | **Windows EXE** | `user_data/` folder next to the executable (portable mode) |
26
+ | **Development** | `user_data/` or `user_data_private/` next to the script |
27
+
28
+ **Automatic Migration:**
29
+ - On first run after upgrade, existing data is automatically migrated from the old location
30
+ - A marker file is left in the old location explaining where data went
31
+ - No user action required - just upgrade and everything moves automatically
32
+
33
+ **What This Means for Users:**
34
+ - ✅ API keys persist across pip upgrades
35
+ - ✅ Translation Memories are preserved
36
+ - ✅ Glossaries (termbases) are preserved
37
+ - ✅ Custom prompts are preserved
38
+ - ✅ All settings are preserved
39
+ - ✅ Windows EXE users unaffected (already portable)
40
+
41
+ **Technical Details:**
42
+ - Uses `platformdirs` library for cross-platform path handling
43
+ - Added `migrate_user_data_if_needed()` function for one-time migration
44
+ - Migration is safe: copies (not moves) and only runs if old location has content
45
+
46
+ ---
47
+
48
+ ## 🔑 Gemini/Google API Key Alias Fix (v1.9.146) - January 21, 2026
49
+
50
+ **Bug Fix:** Fixed "Gemini API Key Missing" error when users had `google=...` instead of `gemini=...` in their api_keys.txt file.
51
+
52
+ **The Problem:**
53
+ - Users could use either `google=YOUR_KEY` or `gemini=YOUR_KEY` in api_keys.txt
54
+ - Some code paths only checked for `gemini`, others only for `google`
55
+ - This caused confusing "API Key Missing" dialogs even when keys were properly configured
56
+
57
+ **The Solution:**
58
+ - Added **automatic normalization** in `load_api_keys()` - if either `google` or `gemini` is set, both keys are now populated
59
+ - Users can use either name interchangeably
60
+ - Fixed 6+ locations where the alias wasn't being handled correctly:
61
+ - Single segment translation (Ctrl+T)
62
+ - Batch translation
63
+ - QuickMenu prompts
64
+ - Async LLM fetch for Translation Results panel
65
+ - Proofreading (also fixed `anthropic` → `claude` provider name bug)
66
+
67
+ **For Users:**
68
+ - Both `google=YOUR_KEY` and `gemini=YOUR_KEY` now work identically
69
+ - No action needed - existing api_keys.txt files will continue to work
70
+
71
+ ---
72
+
73
+ ## ✨ memoQ-Style Track Changes in Compare Panel (v1.9.145) - January 20, 2026
74
+
75
+ **Improvement:** Changed Compare Panel diff highlighting to match memoQ's "Track changes view" style.
76
+
77
+ **New Styling (memoQ-style):**
78
+ - **Deletions**: Red text + strikethrough (~~deleted~~)
79
+ - **Insertions**: Red text + underline (<u>inserted</u>)
80
+ - **Unchanged**: Normal text
81
+
82
+ This is cleaner and more familiar to translators who use Word's track changes or memoQ.
83
+
84
+ **Example:**
85
+ ```
86
+ Current: In een derde aspect betreft de huidige uitvinding het gebruik van een dichtingskit...
87
+ TM: In een tweede aspect betreft de huidige uitvinding een dichtingskit...
88
+
89
+ Compare Panel shows:
90
+ In een ~~tweede~~ derde aspect betreft de huidige uitvinding het gebruik van een dichtingskit...
91
+ ^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^
92
+ red+strike red+under red+underline
93
+ ```
94
+
95
+ ---
96
+
97
+ ## ✨ Enhanced Compare Panel Diff Highlighting (v1.9.144) - January 20, 2026
98
+
99
+ **Improvement:** The Compare Panel now shows a complete diff with additions, deletions, and changes - matching what professional CAT tools display.
100
+
101
+ **Before:**
102
+ - Only showed text that was **different** (in red)
103
+ - Didn't show what was **added** in the current segment
104
+ - Hard to understand what changed between TM source and current source
105
+
106
+ **After:**
107
+ - **Red with strikethrough**: Text in TM that was changed/deleted in current segment
108
+ - **Green background**: Text in current segment that was added (not in TM)
109
+ - **Normal text**: Identical text in both
110
+
111
+ **Example:**
112
+ ```
113
+ Current: In een derde aspect betreft de huidige uitvinding het gebruik van een dichtingskit...
114
+ TM: In een tweede aspect betreft de huidige uitvinding een dichtingskit...
115
+
116
+ Compare Panel now shows:
117
+ In een [tweede→derde] aspect betreft de huidige uitvinding [+het gebruik van] een dichtingskit...
118
+ ```
119
+
120
+ **Technical:**
121
+ - Changed from character-level to word-level diffing for better readability
122
+ - Additions shown inline in green where they would appear
123
+ - Deletions shown with strikethrough so you can see what was removed
124
+
125
+ ---
126
+
127
+ ## 🐛 Fix: Deleting Glossary Entry from Termview (v1.9.143) - January 20, 2026
128
+
129
+ **Bug Fix:** Deleting glossary entries via right-click in Termview failed with an error.
130
+
131
+ **Error in Logs:**
132
+ ```
133
+ ✗ Error deleting glossary entry from database: 'DatabaseManager' object has no attribute 'get_connection'
134
+ ```
135
+
136
+ **Root Cause:**
137
+ - The delete handler was trying to call `db_manager.get_connection()` which doesn't exist
138
+ - Was using raw SQL instead of the existing `termbase_mgr.delete_term()` method
139
+
140
+ **The Fix:**
141
+ - Changed to use `self.termbase_mgr.delete_term(term_id)` which already exists and works correctly
142
+
143
+ ---
144
+
145
+ ## 🐛 Fix: Error When Editing Glossary Entry from Termview (v1.9.142) - January 20, 2026
146
+
147
+ **Bug Fix:** After editing a glossary entry via right-click → Edit in Termview, an error would occur preventing proper refresh.
148
+
149
+ **Error in Logs:**
150
+ ```
151
+ Error refreshing segment matches: SupervertalerQt.on_cell_selected() missing 2 required positional arguments: 'previous_row' and 'previous_col'
152
+ ```
153
+
154
+ **Root Cause:**
155
+ - The `_refresh_current_segment_matches()` method was calling `on_cell_selected(current_row, 2)` with only 2 arguments
156
+ - But `on_cell_selected()` requires 4 arguments: `current_row`, `current_col`, `previous_row`, `previous_col`
157
+
158
+ **The Fix:**
159
+ - Simplified `_refresh_current_segment_matches()` to use the targeted `_refresh_termbase_display_for_current_segment()` method
160
+ - This method already handles termbase cache clearing and display refresh correctly
161
+
162
+ ---
163
+
164
+ ## 🐛 Fix: Termview Blank After Adding Glossary Term (v1.9.141) - January 20, 2026
165
+
166
+ **Bug Fix:** After adding a term to a glossary via Alt+Down (or similar shortcuts), the Termview pane would go blank and stay blank until navigating to another segment.
167
+
168
+ **Error in Logs:**
169
+ ```
170
+ Error updating termview: list index out of range
171
+ ```
172
+
173
+ **Root Cause:**
174
+ - The `_refresh_termbase_display_for_current_segment()` method (added in v1.9.140) was using incorrect dictionary keys
175
+ - `find_termbase_matches_in_source()` returns dict with keys `source` and `translation`
176
+ - But the refresh method was looking for keys `source_term` and `target_term`
177
+ - This resulted in empty strings being passed to the termview, causing the index error
178
+
179
+ **The Fix:**
180
+ - Changed `match.get('source_term', '')` → `match.get('source', '')`
181
+ - Changed `match.get('target_term', '')` → `match.get('translation', '')`
182
+ - Applied same fix to Translation Results panel update section
183
+
184
+ ---
185
+
186
+ ## 🐛 Fix: Adding Glossary Term No Longer Triggers TM Search (v1.9.140) - January 20, 2026
187
+
188
+ **Performance Fix ([#118](https://github.com/michaelbeijer/Supervertaler/issues/118)):** Adding a term to a glossary was unnecessarily triggering a full Translation Memory search, causing delays.
189
+
190
+ **The Problem:**
191
+ - When adding a term via Ctrl+E, Ctrl+Q, or Ctrl+Shift+1/2, the app cleared BOTH caches and called `on_cell_selected()`
192
+ - This triggered a complete TM search even though adding a glossary term doesn't change the source/target text
193
+
194
+ **The Fix:**
195
+ - Created new targeted method `_refresh_termbase_display_for_current_segment()`
196
+ - Only clears the termbase cache (not TM cache)
197
+ - Updates TermView widget with fresh glossary matches
198
+ - Updates Translation Results panel's Termbases section only
199
+ - Re-highlights termbase matches in source cell
200
+ - TM results remain untouched
201
+
202
+ **Also in this release:**
203
+ - 🎤 Renamed "Voice OFF/ON" button to "Voice Commands OFF/ON" for clarity
204
+ - 🎤 Renamed "Dictate" button to "Dictation"
205
+
206
+ ---
207
+
208
+ ## 📐 Auto-Sizing Segment Number Column (v1.9.138) - January 20, 2026
209
+
210
+ **Grid UX Improvement:** The segment number column (#) now automatically sizes itself based on:
211
+ - The current font size (scales when you zoom in/out)
212
+ - The number of segments in the project (fits 3-digit, 4-digit numbers, etc.)
213
+
214
+ Uses Qt font metrics to calculate the exact pixel width needed. No more truncated numbers or wasted space!
215
+
216
+ **Also in this release:**
217
+ - Status column made slightly narrower (70px → 60px)
218
+
219
+ ---
220
+
221
+ ## 🏷️ Termview Punctuated Terms Fix (v1.9.138) - January 20, 2026
222
+
223
+ **Fixed: Glossary terms with punctuation now appear in Termview**
224
+
225
+ Glossary entries like "ca." (with period) or "typisch" (when appearing in parentheses as "(typisch)") were found by the termbase search (grid showed green highlighting) but did NOT appear in the Termview pane.
226
+
227
+ **Root Cause - Key Mismatch:**
228
+ - `matches_dict` keys were built using the raw source term: `"ca."` (with period)
229
+ - But lookup stripped punctuation from tokens: `"ca."` → `"ca"`
230
+ - Result: `matches_dict.get("ca")` returned nothing because the key was `"ca."`
231
+
232
+ **The Fix:**
233
+ - When building `matches_dict`, keys are now normalized by stripping punctuation
234
+ - Both the dictionary keys and lookup keys now use the same normalization
235
+ - Added brackets `()[]` to punctuation chars so "(typisch)" matches "typisch"
236
+
237
+ **Files Modified:**
238
+ - `modules/termview_widget.py` - Normalize punctuation in `matches_dict` keys and lookup
239
+
240
+ ---
241
+
242
+ ## 🔧 Termview Race Condition Fix (v1.9.137) - January 20, 2026
243
+
244
+ **Fixed: Glossary terms now appear in Termview pane**
245
+
246
+ When navigating to a segment, the Termview pane showed "No glossary matches" even though:
247
+ - The grid highlighted terms in green (glossary highlighting worked)
248
+ - Force Refresh (F5) would then show the terms correctly
249
+
250
+ **Root Cause - Timing/Race Condition:**
251
+ - `update_tab_segment_editor()` was called EARLY in the cell selection process
252
+ - It tried to read from `termbase_cache[segment_id]` to update Termview
253
+ - But the termbase search (`find_termbase_matches_in_source()`) hadn't run yet!
254
+ - Result: Termview called with empty list before matches were found
255
+
256
+ **The Fix:**
257
+ 1. Removed premature Termview update from `update_tab_segment_editor()`
258
+ 2. Termview is now updated ONLY after the termbase search completes in `_on_cell_selected_full()`
259
+ 3. Also fixed: Termview now updates even when no matches found (shows "No matches" state)
260
+
261
+ **Files Modified:**
262
+ - `Supervertaler.py` - Removed premature Termview update, fixed condition to always update Termview
263
+ - `modules/termview_widget.py` - Removed debug logging
264
+
265
+ ---
266
+
267
+ ## 📚 Glossary Matching Fix for Punctuation (v1.9.136) - January 20, 2026
268
+
269
+ **Fixed: Glossary terms with trailing punctuation now match correctly**
270
+
271
+ Glossary entries like "ca." (with period), "psi", and "typisch" were not being found in the Termview window when they appeared in source text like "ca. 2,2 (270 psi)".
272
+
273
+ **Root Cause:**
274
+ - When tokenizing source text, punctuation was stripped from words ("ca." → "ca")
275
+ - The database search then looked for "ca" but the glossary had "ca." — no match
276
+ - Short terms in parentheses like "(psi)" were also affected
277
+
278
+ **The Fix:**
279
+ 1. Now searches for BOTH the stripped word AND the original word with punctuation
280
+ 2. Database query enhanced with reverse matching: finds glossary terms where the search word matches the term with trailing punctuation stripped
281
+ 3. Handles entries like "ca.", "gew.%", "psi", etc.
282
+
283
+ **Files Modified:**
284
+ - `Supervertaler.py` - Enhanced `find_termbase_matches_in_source()` to search with original punctuation
285
+ - `modules/database_manager.py` - Enhanced `search_termbases()` with punctuation-tolerant matching
286
+
287
+ ---
288
+
289
+ ## 🔍 Filter Now Searches Entire Document (v1.9.135) - January 20, 2026
290
+
291
+ **Fixed: Filter Source/Target boxes now search across ALL pages**
292
+
293
+ Previously, the Filter Source and Filter Target boxes above the grid would only search within the currently visible page. If the text you were looking for was on a different page, it wouldn't be found.
294
+
295
+ Now, filtering searches through the **entire document** regardless of pagination. When a filter is active, ALL matching rows are displayed (pagination is temporarily ignored). When you clear the filter, normal pagination resumes.
296
+
297
+ **Files Modified:**
298
+ - `Supervertaler.py` - Fixed `_apply_pagination_to_grid()` to show all filter matches
299
+
300
+ ---
301
+
302
+ ## 🔊 Fuzzy TM Match Sound Effect (v1.9.134) - January 20, 2026
303
+
304
+ **New sound effect option: "Fuzzy TM match found"**
305
+
306
+ Plays when navigating to a segment and a fuzzy TM match (50-99%) is found, but NO 100% match exists.
307
+
308
+ **Access:** Settings → General → Sound Effects → "Fuzzy TM match found"
309
+
310
+ Disabled by default (set to "None"). Works with the same sound options as other effects.
311
+
312
+ ---
313
+
314
+ ## 🔊 New Sound Effects (v1.9.133) - January 20, 2026
315
+
316
+ **Two new sound effect options added:**
317
+
318
+ 1. **Segment confirmed** - Plays when you confirm a segment with Ctrl+Enter
319
+ 2. **100% TM match alert** - Plays when navigating to a segment and a 100% TM match is found and auto-inserted
320
+
321
+ **Access:** Settings → General → Sound Effects
322
+
323
+ Both sounds are disabled by default (set to "None"). Users can configure them to any of the available Windows system sounds:
324
+ - OK, Asterisk, Exclamation, Hand, Question
325
+ - Windows .wav files: Restore, Navigation Start, Speech Disambiguation, etc.
326
+
327
+ **Files Modified:**
328
+ - `Supervertaler.py` - Added sound effect options and trigger points
329
+
330
+ ---
6
331
 
7
332
  ## 🐛 Ctrl+K Superlookup Shortcut Fix (v1.9.132) - January 20, 2026
8
333
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: supervertaler
3
- Version: 1.9.132
3
+ Version: 1.9.147
4
4
  Summary: Professional AI-powered translation workbench with multi-LLM support, glossary system, TM, spellcheck, voice commands, and PyQt6 interface. Batteries included (core).
5
5
  Home-page: https://supervertaler.com
6
6
  Author: Michael Beijer
@@ -46,6 +46,7 @@ Requires-Dist: chardet>=5.0.0
46
46
  Requires-Dist: pyyaml>=6.0.0
47
47
  Requires-Dist: markdown>=3.4.0
48
48
  Requires-Dist: pyspellchecker>=0.7.0
49
+ Requires-Dist: platformdirs>=4.0.0
49
50
  Requires-Dist: sounddevice>=0.4.6
50
51
  Requires-Dist: numpy>=1.24.0
51
52
  Requires-Dist: PyMuPDF>=1.23.0
@@ -71,7 +72,7 @@ Dynamic: home-page
71
72
  Dynamic: license-file
72
73
  Dynamic: requires-python
73
74
 
74
- # 🚀 Supervertaler v1.9.128
75
+ # 🚀 Supervertaler v1.9.147
75
76
 
76
77
  [![PyPI version](https://badge.fury.io/py/supervertaler.svg)](https://pypi.org/project/Supervertaler/)
77
78
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
@@ -79,7 +80,40 @@ Dynamic: requires-python
79
80
 
80
81
  AI-enhanced CAT tool with multi-LLM support (GPT-4, Claude, Gemini, Ollama), innovative Superlookup concordance system offering access to multiple terminology sources (TMs, glossaries, web resources, etc.), and seamless CAT tool integration (memoQ, Trados, CafeTran, Phrase).
81
82
 
82
- **Current Version:** v1.9.132 (January 20, 2026)
83
+ **Current Version:** v1.9.147 (January 21, 2026)
84
+
85
+ ### NEW in v1.9.147 - 📁 Persistent User Data Location
86
+
87
+ **No More Data Loss on Upgrade!** User data (API keys, TMs, glossaries, prompts, settings) is now stored in a persistent location that survives `pip install --upgrade`:
88
+
89
+ | Platform | User Data Location |
90
+ |----------|-------------------|
91
+ | **Windows** | `%LOCALAPPDATA%\MichaelBeijer\Supervertaler\` |
92
+ | **macOS** | `~/Library/Application Support/Supervertaler/` |
93
+ | **Linux** | `~/.local/share/Supervertaler/` |
94
+ | **Windows EXE** | `user_data\` next to executable (portable) |
95
+
96
+ Existing data is automatically migrated on first run after upgrade.
97
+
98
+ ### FIXED in v1.9.146 - 🔑 Gemini/Google API Key Alias
99
+
100
+ **Bug Fix:** Fixed "Gemini API Key Missing" error when users had `google=...` instead of `gemini=...` in their api_keys.txt. Both names now work identically thanks to automatic normalization at load time.
101
+
102
+ ### FIXED in v1.9.140 - 🐛 Glossary Add No Longer Triggers TM Search
103
+
104
+ **Performance Fix ([#118](https://github.com/michaelbeijer/Supervertaler/issues/118)):** Adding a term to a glossary was unnecessarily triggering a full TM search. Now uses targeted refresh that only updates glossary display - TM results stay cached.
105
+
106
+ **Also:** Renamed "Voice OFF" → "Voice Commands OFF" and "Dictate" → "Dictation" for clarity.
107
+
108
+ ### FIXED in v1.9.138 - 🏷️ Termview Punctuated Terms & Auto-Sizing Columns
109
+
110
+ **Termview Fix:** Glossary terms with punctuation (like "ca." or "(typisch)") now correctly appear in the Termview pane. Previously they were found but not displayed due to a key normalization mismatch.
111
+
112
+ **Grid UX:** Segment number column now auto-sizes based on font size and segment count - no more truncated numbers!
113
+
114
+ ### FIXED in v1.9.137 - 🔧 Termview Race Condition
115
+
116
+ **Glossary terms now appear immediately:** Fixed timing bug where Termview showed "No glossary matches" until you pressed F5. Now updates correctly when navigating segments.
83
117
 
84
118
  ### ENHANCED in v1.9.128 - 📝 Placeholders Tab Layout Optimization
85
119
 
@@ -1,4 +1,4 @@
1
- # 🚀 Supervertaler v1.9.128
1
+ # 🚀 Supervertaler v1.9.147
2
2
 
3
3
  [![PyPI version](https://badge.fury.io/py/supervertaler.svg)](https://pypi.org/project/Supervertaler/)
4
4
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
@@ -6,7 +6,40 @@
6
6
 
7
7
  AI-enhanced CAT tool with multi-LLM support (GPT-4, Claude, Gemini, Ollama), innovative Superlookup concordance system offering access to multiple terminology sources (TMs, glossaries, web resources, etc.), and seamless CAT tool integration (memoQ, Trados, CafeTran, Phrase).
8
8
 
9
- **Current Version:** v1.9.132 (January 20, 2026)
9
+ **Current Version:** v1.9.147 (January 21, 2026)
10
+
11
+ ### NEW in v1.9.147 - 📁 Persistent User Data Location
12
+
13
+ **No More Data Loss on Upgrade!** User data (API keys, TMs, glossaries, prompts, settings) is now stored in a persistent location that survives `pip install --upgrade`:
14
+
15
+ | Platform | User Data Location |
16
+ |----------|-------------------|
17
+ | **Windows** | `%LOCALAPPDATA%\MichaelBeijer\Supervertaler\` |
18
+ | **macOS** | `~/Library/Application Support/Supervertaler/` |
19
+ | **Linux** | `~/.local/share/Supervertaler/` |
20
+ | **Windows EXE** | `user_data\` next to executable (portable) |
21
+
22
+ Existing data is automatically migrated on first run after upgrade.
23
+
24
+ ### FIXED in v1.9.146 - 🔑 Gemini/Google API Key Alias
25
+
26
+ **Bug Fix:** Fixed "Gemini API Key Missing" error when users had `google=...` instead of `gemini=...` in their api_keys.txt. Both names now work identically thanks to automatic normalization at load time.
27
+
28
+ ### FIXED in v1.9.140 - 🐛 Glossary Add No Longer Triggers TM Search
29
+
30
+ **Performance Fix ([#118](https://github.com/michaelbeijer/Supervertaler/issues/118)):** Adding a term to a glossary was unnecessarily triggering a full TM search. Now uses targeted refresh that only updates glossary display - TM results stay cached.
31
+
32
+ **Also:** Renamed "Voice OFF" → "Voice Commands OFF" and "Dictate" → "Dictation" for clarity.
33
+
34
+ ### FIXED in v1.9.138 - 🏷️ Termview Punctuated Terms & Auto-Sizing Columns
35
+
36
+ **Termview Fix:** Glossary terms with punctuation (like "ca." or "(typisch)") now correctly appear in the Termview pane. Previously they were found but not displayed due to a key normalization mismatch.
37
+
38
+ **Grid UX:** Segment number column now auto-sizes based on font size and segment count - no more truncated numbers!
39
+
40
+ ### FIXED in v1.9.137 - 🔧 Termview Race Condition
41
+
42
+ **Glossary terms now appear immediately:** Fixed timing bug where Termview showed "No glossary matches" until you pressed F5. Now updates correctly when navigating segments.
10
43
 
11
44
  ### ENHANCED in v1.9.128 - 📝 Placeholders Tab Layout Optimization
12
45