supervertaler 1.9.176b0__tar.gz → 1.9.178__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.

Potentially problematic release.


This version of supervertaler might be problematic. Click here for more details.

Files changed (372) hide show
  1. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/CHANGELOG.md +23 -1
  2. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/PKG-INFO +1 -1
  3. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/Supervertaler.py +135 -46
  4. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/index.html +4 -4
  5. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/database_manager.py +169 -64
  6. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/mqxliff_handler.py +71 -2
  7. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tm_metadata_manager.py +23 -18
  8. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/pyproject.toml +1 -1
  9. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/supervertaler.egg-info/PKG-INFO +1 -1
  10. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/FAQ.md +0 -0
  11. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/LICENSE +0 -0
  12. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/MANIFEST.in +0 -0
  13. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/README.md +0 -0
  14. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/ICON_CONVERSION_GUIDE.md +0 -0
  15. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/MB.ico +0 -0
  16. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/README.md +0 -0
  17. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/generate_icons.py +0 -0
  18. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon.ico +0 -0
  19. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_128.png +0 -0
  20. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_24.png +0 -0
  21. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_256.png +0 -0
  22. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_32.png +0 -0
  23. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_48.png +0 -0
  24. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_64.png +0 -0
  25. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_preview.html +0 -0
  26. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_sv_modern.svg +0 -0
  27. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_sv_modern_paths.svg +0 -0
  28. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/icon_sv_simple.svg +0 -0
  29. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/patent-drawing-1951.jpg +0 -0
  30. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/assets/supervertaler_icon_colours.png +0 -0
  31. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/.nojekyll +0 -0
  32. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/CNAME +0 -0
  33. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/SIMILAR_APPS.md +0 -0
  34. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/apple-touch-icon.png +0 -0
  35. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/BUGFIX_README.md +0 -0
  36. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/CHANGELIST.md +0 -0
  37. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/CHANGELOG_Old.md +0 -0
  38. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/FAQ.md +0 -0
  39. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/INSTALLATION_v1.7.8.md +0 -0
  40. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/PROJECT_ORGANIZATION.md +0 -0
  41. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/TERMBASE_REFACTORING_SUMMARY.md +0 -0
  42. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/USER_GUIDE_v1.7.8.md +0 -0
  43. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/VERIFICATION_CHECKLIST.md +0 -0
  44. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/BEFORE_AFTER_COMPARISON.md +0 -0
  45. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/BUGFIX_SESSION_SUMMARY.md +0 -0
  46. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/COLOR_SCHEME_REFERENCE.md +0 -0
  47. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/COMPACT_LAYOUT_CHANGELOG.md +0 -0
  48. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/COMPACT_LAYOUT_DOCUMENTATION_INDEX.md +0 -0
  49. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/COMPACT_LAYOUT_IMPLEMENTATION_SUMMARY.md +0 -0
  50. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/COMPACT_LAYOUT_UPDATE.md +0 -0
  51. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/COMPLETE_IMPLEMENTATION_SUMMARY.md +0 -0
  52. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/COMPLETE_PROJECT_SUMMARY.md +0 -0
  53. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/DATABASE_FINAL_SUMMARY.md +0 -0
  54. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/DATABASE_IMPLEMENTATION.md +0 -0
  55. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/DATABASE_PRODUCTION_READY.md +0 -0
  56. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/DATABASE_QUICK_REFERENCE.md +0 -0
  57. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/DUAL_VERSION_STRATEGY.md +0 -0
  58. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/FINAL_SESSION_SUMMARY.md +0 -0
  59. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/FOLDER_STRUCTURE_UPDATE.md +0 -0
  60. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/GITHUB_PAGES_SETUP.md +0 -0
  61. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/IMPLEMENTATION_CHECKLIST.md +0 -0
  62. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/IMPLEMENTATION_COMPLETE.md +0 -0
  63. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/IMPLEMENTATION_COMPLETE_COMPACT_LAYOUT.md +0 -0
  64. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/IMPLEMENTATION_READY.md +0 -0
  65. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/IMPLEMENTATION_STATUS_PHASE2_READY.md +0 -0
  66. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/KEYBOARD_SHORTCUTS_MATCHES.md +0 -0
  67. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/LAYOUT_BEFORE_AFTER.md +0 -0
  68. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/MASTER_INDEX.md +0 -0
  69. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/MATCH_DISPLAY_IMPROVEMENTS.md +0 -0
  70. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/MATCH_DISPLAY_LONG_SEGMENTS_UPDATE.md +0 -0
  71. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/MATCH_DISPLAY_QUICK_REFERENCE.md +0 -0
  72. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/MATCH_INSERTION_FEATURES.md +0 -0
  73. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/MATCH_SHORTCUTS_QUICK_REF.md +0 -0
  74. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/MODULAR_ARCHITECTURE_GUIDE.md +0 -0
  75. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/PHASE2_IMPLEMENTATION_CHECKLIST.md +0 -0
  76. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/PHASE2_IMPLEMENTATION_DETAILED_CHECKLIST.md +0 -0
  77. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/PHASE2_IMPLEMENTATION_IN_PROGRESS.md +0 -0
  78. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/PHASE2_NEXT_STEPS.md +0 -0
  79. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/PHASE2_READY_TO_IMPLEMENT.md +0 -0
  80. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/PHASE2_START_HERE.md +0 -0
  81. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/QT_MIGRATION_PLAN.md +0 -0
  82. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/QT_SESSION_SUMMARY.md +0 -0
  83. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/QUICK_SESSION_SUMMARY.md +0 -0
  84. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/RELEASE_Qt_v1.0.0_Phase5.md +0 -0
  85. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/RELEASE_v1.9.38.md +0 -0
  86. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/RELEASE_v3.7.1.md +0 -0
  87. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/RELEASE_v3.7.6.md +0 -0
  88. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/RELEASE_v3.7.7.md +0 -0
  89. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/RESTRUCTURE_COMPLETE.md +0 -0
  90. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/SESSION_DOCUMENTATION_INDEX.md +0 -0
  91. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/SESSION_IMPLEMENTATION_SUMMARY.md +0 -0
  92. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/SESSION_LONG_SEGMENTS_COMPLETE.md +0 -0
  93. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/SESSION_MATCH_FEATURES_COMPLETE.md +0 -0
  94. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/SESSION_STATUS.md +0 -0
  95. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/SESSION_SUMMARY_Phase5.md +0 -0
  96. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/START_HERE.md +0 -0
  97. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/START_IMPLEMENTATION_HERE.md +0 -0
  98. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/STYLE_GUIDES_DELIVERABLES.md +0 -0
  99. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/STYLE_GUIDES_DOCUMENTATION_INDEX.md +0 -0
  100. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/STYLE_GUIDES_FEATURE_SUMMARY.md +0 -0
  101. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/STYLE_GUIDES_IMPLEMENTATION.md +0 -0
  102. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/STYLE_GUIDES_PROJECT_COMPLETION.md +0 -0
  103. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/STYLE_GUIDES_QUICK_REFERENCE.md +0 -0
  104. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/STYLE_GUIDES_VISUAL_ARCHITECTURE.md +0 -0
  105. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TERMBASE_FIXES.md +0 -0
  106. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TERMBASE_IMPLEMENTATION.md +0 -0
  107. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TERMBASE_QUICK_START.md +0 -0
  108. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_CONCORDANCE_STYLE_HIGHLIGHTING.md +0 -0
  109. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_DUAL_HIGHLIGHTING.md +0 -0
  110. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_EDITOR_HIGHLIGHTING_UPDATE.md +0 -0
  111. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_EDITOR_IMPLEMENTATION.md +0 -0
  112. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_EDITOR_WORD_HIGHLIGHTING.md +0 -0
  113. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_TABLE_LAYOUT_INTEGRATED_EDIT.md +0 -0
  114. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_TREEVIEW_GRID_RESIZABLE.md +0 -0
  115. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_WORD_HIGHLIGHTING_IMPLEMENTATION_COMPLETE.md +0 -0
  116. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TMX_WORD_HIGHLIGHTING_SUMMARY.md +0 -0
  117. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TM_MATCH_PANE_CHECKLIST.md +0 -0
  118. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TM_MATCH_PANE_IMPLEMENTATION.md +0 -0
  119. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/TM_MATCH_PANE_VISUAL_GUIDE.md +0 -0
  120. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/VISUAL_COLOR_REFERENCE.md +0 -0
  121. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/development/VISUAL_IMPLEMENTATION_SUMMARY.md +0 -0
  122. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/COLOR_FIX_EXPLANATION.md +0 -0
  123. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/DATABASE_CONSOLIDATION_REPORT.md +0 -0
  124. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/DUAL_EDITOR_WORKFLOW.md +0 -0
  125. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/DUAL_SELECTION_SYSTEM.md +0 -0
  126. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/IMPROVEMENTS_SUMMARY.md +0 -0
  127. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/ISSUES_FIXES_PROGRESS.md +0 -0
  128. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/MATCH_DISPLAY_COMPACT_FIXES.md +0 -0
  129. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/README_SESSION_TERMBASE.md +0 -0
  130. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/SAFE_DELETION_REMINDER.txt +0 -0
  131. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/SESSION_SUMMARY.md +0 -0
  132. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/TERMBASE_FIXES_APPLIED.md +0 -0
  133. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/TESTING_CHECKLIST.md +0 -0
  134. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/TMX_EDITOR_ANNOUNCEMENT.md +0 -0
  135. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/archive/sessions/TRANSLATION_RESULTS_IMPROVEMENTS.md +0 -0
  136. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/assets/Figure1.png +0 -0
  137. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/assets/patent-drawing-1951.jpg +0 -0
  138. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/changelog.html +0 -0
  139. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/dev-notes/QA.md +0 -0
  140. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/dev-notes/STYLE_GUIDES_UI_TEMPLATE.py +0 -0
  141. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/dev-notes/_Notes_2025-11-21.md +0 -0
  142. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/dev-notes/_things_to_remind_AIs_of_when_translating.md +0 -0
  143. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/dev-notes/issue_28.md +0 -0
  144. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/dev-notes/openai_debug.txt +0 -0
  145. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/dev-notes/pre-translation-dialog-enhancement.md +0 -0
  146. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/emoji_mockup.html +0 -0
  147. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/favicon.ico +0 -0
  148. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/AI_PROMPT_ASSISTANT_USER_GUIDE.md +0 -0
  149. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/ENCODING_REPAIR_TOOL.md +0 -0
  150. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/FAQ.md +0 -0
  151. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/GLOSSARY_OF_SUPERVERTALER_TERMINOLOGY.md +0 -0
  152. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/JSON_EDITORS_AND_HUMAN_READABLE_FORMAT.md +0 -0
  153. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/KEYBOARD_SHORTCUTS.md +0 -0
  154. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/PDF_RESCUE.md +0 -0
  155. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/PROMPT_ASSISTANT_USER_GUIDE.md +0 -0
  156. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/QT_SETTINGS_DIALOG_GUIDE.md +0 -0
  157. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/TERM_EXTRACTION_GUIDE.md +0 -0
  158. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/guides/USER_DATA_FOLDER_SETUP.md +0 -0
  159. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/idea_beijer.bot_integration_idea/BEIJERBOT_FEATURE_ANALYSIS.md +0 -0
  160. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/idea_beijer.bot_integration_idea/CLI_BRIDGE_SPECIFICATION.md +0 -0
  161. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/idea_beijer.bot_integration_idea/IMPLEMENTATION_ROADMAP.md +0 -0
  162. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/idea_beijer.bot_integration_idea/QUICKMENU_INTEGRATION_PLAN.md +0 -0
  163. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/idea_beijer.bot_integration_idea/README.md +0 -0
  164. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/idea_tag-cleaner/tag_cleaner.md +0 -0
  165. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/idea_use_vscode_as_cat_tool/ai-agent-translation-workflow.md +0 -0
  166. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/logo.png +0 -0
  167. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/2025-10-13_00-46-16.jpg +0 -0
  168. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Superlookup_Web_resources.jpg +0 -0
  169. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_AI-Assistant.jpg +0 -0
  170. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_CLASSIC_v2.4.1_(tkinter).jpg +0 -0
  171. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_Prompt_Manager_2026-01-14.png +0 -0
  172. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  173. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  174. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_Superbrowser.jpg +0 -0
  175. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_dark_mode_2025-12-16.jpg +0 -0
  176. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_dark_mode_2025-12-17.jpg +0 -0
  177. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_grid.jpg +0 -0
  178. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_tkinter (v3.7.7).jpg +0 -0
  179. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_v1.9.102_compare_panel_2026-01-14.png +0 -0
  180. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/Supervertaler_v1.9.102_grid_2026-01-14.png +0 -0
  181. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/new/Supervertaler-grid.jpg +0 -0
  182. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/new/Supervertaler_AI-Assistant.jpg +0 -0
  183. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/new/Supervertaler_Prompt-Library.jpg +0 -0
  184. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/new/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  185. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/new/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  186. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/new/Supervertaler_Superbrowser.jpg +0 -0
  187. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/old/2025-10-13_00-50-24.jpg +0 -0
  188. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/screenshots/old/Supervertaler_Qt_2025-11-12.jpg +0 -0
  189. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/script.js +0 -0
  190. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/site.webmanifest +0 -0
  191. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/AI_ASSISTANT_PHASE2_IMPLEMENTATION.md +0 -0
  192. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/AI_PROMPT_ASSISTANT.md +0 -0
  193. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/AI_PROMPT_ASSISTANT_IMPLEMENTATION.md +0 -0
  194. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/EXPORT_MENU_UPDATE.md +0 -0
  195. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/IMPLEMENTATION_SUMMARY.md +0 -0
  196. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/QT_PHASE2_COMPLETE.md +0 -0
  197. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/QT_PHASE3_COMPLETE.md +0 -0
  198. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/SUPERVERTALER_DATA_FORMAT.md +0 -0
  199. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/TASK_TYPE_SYSTEM.md +0 -0
  200. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/TERMINOLOGY_UPDATE_SUMMARY.md +0 -0
  201. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/specifications/opus-api-integration.md +0 -0
  202. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/styles.css +0 -0
  203. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/.gitbook/assets/supervertaler-logo.png +0 -0
  204. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/.gitbook/assets/sv-icon.svg +0 -0
  205. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/GITBOOK_LANDING_DRAFT.md +0 -0
  206. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/README.md +0 -0
  207. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/SUMMARY.md +0 -0
  208. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/ai-translation/batch-translation.md +0 -0
  209. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/ai-translation/ollama.md +0 -0
  210. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/ai-translation/overview.md +0 -0
  211. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/ai-translation/prompt-library.md +0 -0
  212. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/ai-translation/prompts.md +0 -0
  213. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/ai-translation/providers.md +0 -0
  214. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/ai-translation/single-segment.md +0 -0
  215. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/cat-tools/cafetran.md +0 -0
  216. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/cat-tools/memoq.md +0 -0
  217. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/cat-tools/overview.md +0 -0
  218. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/cat-tools/phrase.md +0 -0
  219. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/cat-tools/trados.md +0 -0
  220. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/editor/editing-confirming.md +0 -0
  221. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/editor/filtering.md +0 -0
  222. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/editor/find-replace.md +0 -0
  223. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/editor/keyboard-shortcuts.md +0 -0
  224. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/editor/navigation.md +0 -0
  225. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/editor/pagination.md +0 -0
  226. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/editor/translation-grid.md +0 -0
  227. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/get-started/api-keys.md +0 -0
  228. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/get-started/first-project.md +0 -0
  229. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/get-started/installation.md +0 -0
  230. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/get-started/quick-start.md +0 -0
  231. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/glossaries/basics.md +0 -0
  232. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/glossaries/creating.md +0 -0
  233. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/glossaries/extraction.md +0 -0
  234. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/glossaries/highlighting.md +0 -0
  235. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/glossaries/importing.md +0 -0
  236. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/import-export/bilingual-tables.md +0 -0
  237. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/import-export/docx-import.md +0 -0
  238. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/import-export/exporting.md +0 -0
  239. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/import-export/formats.md +0 -0
  240. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/import-export/multi-file.md +0 -0
  241. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/import-export/txt-import.md +0 -0
  242. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/qa/non-translatables.md +0 -0
  243. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/qa/spellcheck.md +0 -0
  244. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/qa/tag-validation.md +0 -0
  245. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/reference/changelog.md +0 -0
  246. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/reference/contributing.md +0 -0
  247. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/reference/faq.md +0 -0
  248. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/reference/file-formats.md +0 -0
  249. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/settings/fonts.md +0 -0
  250. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/settings/general.md +0 -0
  251. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/settings/shortcuts.md +0 -0
  252. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/settings/theme.md +0 -0
  253. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/settings/view.md +0 -0
  254. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/superlookup/glossary-search.md +0 -0
  255. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/superlookup/mt.md +0 -0
  256. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/superlookup/overview.md +0 -0
  257. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/superlookup/tm-search.md +0 -0
  258. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/superlookup/web-resources.md +0 -0
  259. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/tools/autofingers.md +0 -0
  260. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/tools/image-extractor.md +0 -0
  261. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/tools/pdf-rescue.md +0 -0
  262. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/tools/tmx-editor.md +0 -0
  263. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/tools/voice-commands.md +0 -0
  264. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/translation-memory/basics.md +0 -0
  265. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/translation-memory/fuzzy-matching.md +0 -0
  266. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/translation-memory/importing-tmx.md +0 -0
  267. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/translation-memory/managing-tms.md +0 -0
  268. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/translation-memory/supermemory.md +0 -0
  269. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/troubleshooting/api-issues.md +0 -0
  270. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/troubleshooting/common-issues.md +0 -0
  271. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/troubleshooting/import-export-errors.md +0 -0
  272. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/troubleshooting/linux.md +0 -0
  273. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/superdocs/troubleshooting/performance.md +0 -0
  274. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/sv-icon.svg +0 -0
  275. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/AI_ASSISTANT_GUIDE.md +0 -0
  276. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/AI_ASSISTANT_IMPLEMENTATION.md +0 -0
  277. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/AI_ASSISTANT_INTEGRATION.md +0 -0
  278. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/AI_ASSISTANT_QUICK_REFERENCE.md +0 -0
  279. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/DATABASE_LOCATIONS.md +0 -0
  280. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/FILTER_HIGHLIGHTING_FIX.md +0 -0
  281. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/MODULE_HEADER_PATTERN.md +0 -0
  282. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/README.md +0 -0
  283. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/SUPERBROWSER_GUIDE.md +0 -0
  284. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/SUPERVOICE_TROUBLESHOOTING.md +0 -0
  285. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/UNIFIED_PROMPT_LIBRARY_GUIDE.md +0 -0
  286. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/technical/VOICE_DICTATION_GUIDE.md +0 -0
  287. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/tests/test_encoding_corruption.txt +0 -0
  288. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/web-app-manifest-192x192.png +0 -0
  289. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/docs/web-app-manifest-512x512.png +0 -0
  290. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/__init__.py +0 -0
  291. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/ai_actions.py +0 -0
  292. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/ai_attachment_manager.py +0 -0
  293. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/ai_file_viewer_dialog.py +0 -0
  294. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/autofingers_engine.py +0 -0
  295. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/cafetran_docx_handler.py +0 -0
  296. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/config_manager.py +0 -0
  297. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/database_migrations.py +0 -0
  298. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/dejavurtf_handler.py +0 -0
  299. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/document_analyzer.py +0 -0
  300. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/docx_handler.py +0 -0
  301. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/encoding_repair.py +0 -0
  302. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/encoding_repair_Qt.py +0 -0
  303. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/encoding_repair_ui.py +0 -0
  304. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/feature_manager.py +0 -0
  305. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/figure_context_manager.py +0 -0
  306. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/file_dialog_helper.py +0 -0
  307. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/find_replace.py +0 -0
  308. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/find_replace_qt.py +0 -0
  309. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/glossary_manager.py +0 -0
  310. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/image_extractor.py +0 -0
  311. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/keyboard_shortcuts_widget.py +0 -0
  312. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/llm_clients.py +0 -0
  313. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/llm_leaderboard.py +0 -0
  314. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/llm_superbench_ui.py +0 -0
  315. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/local_llm_setup.py +0 -0
  316. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/model_update_dialog.py +0 -0
  317. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/model_version_checker.py +0 -0
  318. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/non_translatables_manager.py +0 -0
  319. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/pdf_rescue_Qt.py +0 -0
  320. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/pdf_rescue_tkinter.py +0 -0
  321. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/phrase_docx_handler.py +0 -0
  322. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/project_home_panel.py +0 -0
  323. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/prompt_assistant.py +0 -0
  324. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/prompt_library.py +0 -0
  325. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/prompt_library_migration.py +0 -0
  326. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/quick_access_sidebar.py +0 -0
  327. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/ribbon_widget.py +0 -0
  328. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/sdlppx_handler.py +0 -0
  329. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/setup_wizard.py +0 -0
  330. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/shortcut_manager.py +0 -0
  331. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/simple_segmenter.py +0 -0
  332. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/spellcheck_manager.py +0 -0
  333. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/statuses.py +0 -0
  334. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/style_guide_manager.py +0 -0
  335. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/superbench_ui.py +0 -0
  336. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/superbrowser.py +0 -0
  337. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/supercleaner.py +0 -0
  338. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/supercleaner_ui.py +0 -0
  339. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/superdocs.py +0 -0
  340. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/superdocs_viewer_qt.py +0 -0
  341. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/superlookup.py +0 -0
  342. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tag_cleaner.py +0 -0
  343. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tag_manager.py +0 -0
  344. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/term_extractor.py +0 -0
  345. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/termbase_entry_editor.py +0 -0
  346. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/termbase_import_export.py +0 -0
  347. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/termbase_manager.py +0 -0
  348. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/termview_widget.py +0 -0
  349. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/theme_manager.py +0 -0
  350. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tm_editor_dialog.py +0 -0
  351. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tm_manager_qt.py +0 -0
  352. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tmx_editor.py +0 -0
  353. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tmx_editor_qt.py +0 -0
  354. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tmx_generator.py +0 -0
  355. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/tracked_changes.py +0 -0
  356. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/trados_docx_handler.py +0 -0
  357. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/translation_memory.py +0 -0
  358. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/translation_results_panel.py +0 -0
  359. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/translation_services.py +0 -0
  360. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/unified_prompt_library.py +0 -0
  361. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/unified_prompt_manager_qt.py +0 -0
  362. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/voice_commands.py +0 -0
  363. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/voice_dictation.py +0 -0
  364. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/modules/voice_dictation_lite.py +0 -0
  365. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/setup.cfg +0 -0
  366. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/setup.py +0 -0
  367. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/supervertaler.egg-info/SOURCES.txt +0 -0
  368. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/supervertaler.egg-info/dependency_links.txt +0 -0
  369. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/supervertaler.egg-info/entry_points.txt +0 -0
  370. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/supervertaler.egg-info/not-zip-safe +0 -0
  371. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/supervertaler.egg-info/requires.txt +0 -0
  372. {supervertaler-1.9.176b0 → supervertaler-1.9.178}/supervertaler.egg-info/top_level.txt +0 -0
@@ -2,10 +2,32 @@
2
2
 
3
3
  All notable changes to Supervertaler are documented in this file.
4
4
 
5
- **Current Version:** v1.9.176-beta (January 28, 2026)
5
+ **Current Version:** v1.9.178-beta (January 28, 2026)
6
6
 
7
7
 
8
8
 
9
+ ## v1.9.178-beta - January 28, 2026
10
+
11
+ ### 🐛 Bug Fixes
12
+
13
+ - **Slovak Language in Import Dialogs**: Slovak and other languages were missing from the Trados and Phrase import language dropdowns. Both dialogs now use the full language list matching the main New Project dialog.
14
+
15
+ - **mqxliff Target Loading for Pretranslated Files**: When importing pretranslated mqxliff files, the target translations were not being loaded. Added new `extract_bilingual_segments()` method to properly extract both source and target text from memoQ XLIFF files.
16
+
17
+ - **TM Activation for Global TMs**: Fixed issue where TMs created when no project was loaded would not save segments later. The TM activation system now properly handles global activations (project_id=0), so TMs activated before loading a project continue to work after a project is opened.
18
+
19
+ - **TM Storage Consistency**: The `get_writable_tm_ids`, `get_active_tm_ids`, and `is_tm_active` functions now include globally-activated TMs in addition to project-specific activations.
20
+
21
+ ---
22
+
23
+ ## v1.9.177-beta - January 28, 2026
24
+
25
+ ### ✨ New Features
26
+
27
+ - **Bidirectional Termbase Matching**: Glossaries now work like memoQ and Trados - a termbase created for NL→EN will also find matches when working on EN→NL projects (and vice versa). This "direction-insensitive" behavior means you no longer need separate termbases for different language directions. When a match is found on the target side, source and target are automatically swapped in the results.
28
+
29
+ ---
30
+
9
31
  ## v1.9.176-beta - January 28, 2026
10
32
 
11
33
  ### ✨ New Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: supervertaler
3
- Version: 1.9.176b0
3
+ Version: 1.9.178
4
4
  Summary: Professional AI-enhanced 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
@@ -3,8 +3,6 @@ Supervertaler
3
3
  =============
4
4
  The Ultimate Translation Workbench.
5
5
  Modern PyQt6 interface with specialised modules to handle any problem.
6
- Version: 1.9.153 (Tab Layout Reorganization)
7
- Release Date: January 23, 2026
8
6
  Framework: PyQt6
9
7
 
10
8
  This is the modern edition of Supervertaler using PyQt6 framework.
@@ -34,7 +32,7 @@ License: MIT
34
32
  """
35
33
 
36
34
  # Version Information.
37
- __version__ = "1.9.176-beta"
35
+ __version__ = "1.9.178"
38
36
  __phase__ = "0.9"
39
37
  __release_date__ = "2026-01-28"
40
38
  __edition__ = "Qt"
@@ -10622,7 +10620,11 @@ class SupervertalerQt(QMainWindow):
10622
10620
  button_layout = QHBoxLayout()
10623
10621
 
10624
10622
  create_btn = QPushButton("+ Create New TM")
10625
- create_btn.clicked.connect(lambda: self._show_create_tm_dialog(tm_metadata_mgr, refresh_tm_list, project_id))
10623
+ # Get project_id dynamically - use 0 (global) when no project is loaded
10624
+ create_btn.clicked.connect(lambda: self._show_create_tm_dialog(
10625
+ tm_metadata_mgr, refresh_tm_list,
10626
+ self.current_project.id if (hasattr(self, 'current_project') and self.current_project and hasattr(self.current_project, 'id')) else 0
10627
+ ))
10626
10628
  button_layout.addWidget(create_btn)
10627
10629
 
10628
10630
  import_btn = QPushButton("📥 Import TMX")
@@ -14974,8 +14976,8 @@ class SupervertalerQt(QMainWindow):
14974
14976
  )
14975
14977
 
14976
14978
  if result:
14977
- # Auto-activate for current project
14978
- if project_id:
14979
+ # Auto-activate for current project (or global=0 if no project loaded)
14980
+ if project_id is not None:
14979
14981
  tm_metadata_mgr.activate_tm(result, project_id)
14980
14982
 
14981
14983
  QMessageBox.information(self, "Success", f"Translation Memory '{name}' created successfully!")
@@ -22319,20 +22321,24 @@ class SupervertalerQt(QMainWindow):
22319
22321
  """
22320
22322
  Search termbases using a provided cursor (thread-safe for background threads).
22321
22323
  This method allows background workers to query the database without SQLite threading errors.
22322
-
22324
+
22325
+ Implements BIDIRECTIONAL matching: searches both source_term and target_term columns.
22326
+ When a match is found on target_term, source and target are swapped in the result.
22327
+ This matches memoQ/Trados behavior where a NL→EN termbase also works for EN→NL projects.
22328
+
22323
22329
  Args:
22324
22330
  source_text: The source text to search for
22325
22331
  cursor: A database cursor from a thread-local connection
22326
22332
  source_lang: Source language code
22327
22333
  target_lang: Target language code
22328
22334
  project_id: Current project ID (required to filter by activated termbases)
22329
-
22335
+
22330
22336
  Returns:
22331
22337
  Dictionary of {term: translation} matches
22332
22338
  """
22333
22339
  if not source_text or not cursor:
22334
22340
  return {}
22335
-
22341
+
22336
22342
  try:
22337
22343
  # Convert language names to codes (match interactive search logic)
22338
22344
  source_lang_code = self._convert_language_to_code(source_lang) if source_lang else None
@@ -22352,20 +22358,26 @@ class SupervertalerQt(QMainWindow):
22352
22358
  try:
22353
22359
  # JOIN termbases AND termbase_activation to filter by activated termbases
22354
22360
  # This matches the logic in database_manager.py search_termbases()
22361
+ # BIDIRECTIONAL: Search both source_term (forward) and target_term (reverse)
22362
+ # Using UNION to combine both directions
22355
22363
  query = """
22356
- SELECT
22357
- t.id, t.source_term, t.target_term, t.termbase_id, t.priority,
22358
- t.domain, t.notes, t.project, t.client, t.forbidden,
22359
- tb.is_project_termbase, tb.name as termbase_name,
22360
- COALESCE(ta.priority, tb.ranking) as ranking
22361
- FROM termbase_terms t
22362
- LEFT JOIN termbases tb ON CAST(t.termbase_id AS INTEGER) = tb.id
22363
- LEFT JOIN termbase_activation ta ON ta.termbase_id = tb.id AND ta.project_id = ? AND ta.is_active = 1
22364
- WHERE LOWER(t.source_term) LIKE ?
22365
- AND (ta.is_active = 1 OR tb.is_project_termbase = 1)
22364
+ SELECT * FROM (
22365
+ -- Forward match: search source_term
22366
+ SELECT
22367
+ t.id, t.source_term, t.target_term, t.termbase_id, t.priority,
22368
+ t.domain, t.notes, t.project, t.client, t.forbidden,
22369
+ tb.is_project_termbase, tb.name as termbase_name,
22370
+ COALESCE(ta.priority, tb.ranking) as ranking,
22371
+ 'source' as match_direction
22372
+ FROM termbase_terms t
22373
+ LEFT JOIN termbases tb ON CAST(t.termbase_id AS INTEGER) = tb.id
22374
+ LEFT JOIN termbase_activation ta ON ta.termbase_id = tb.id AND ta.project_id = ? AND ta.is_active = 1
22375
+ WHERE LOWER(t.source_term) LIKE ?
22376
+ AND (ta.is_active = 1 OR tb.is_project_termbase = 1)
22366
22377
  """
22367
22378
  params = [project_id if project_id else 0, f"%{clean_word.lower()}%"]
22368
22379
 
22380
+ # Language filters for forward query
22369
22381
  if source_lang_code:
22370
22382
  query += " AND (t.source_lang = ? OR (t.source_lang IS NULL AND tb.source_lang = ?) OR (t.source_lang IS NULL AND tb.source_lang IS NULL))"
22371
22383
  params.extend([source_lang_code, source_lang_code])
@@ -22373,15 +22385,45 @@ class SupervertalerQt(QMainWindow):
22373
22385
  query += " AND (t.target_lang = ? OR (t.target_lang IS NULL AND tb.target_lang = ?) OR (t.target_lang IS NULL AND tb.target_lang IS NULL))"
22374
22386
  params.extend([target_lang_code, target_lang_code])
22375
22387
 
22376
- # Limit raw hits per word to keep batch worker light
22377
- query += " LIMIT 15"
22388
+ # Reverse match: search target_term, swap source/target in output
22389
+ query += """
22390
+ UNION ALL
22391
+ -- Reverse match: search target_term, swap columns
22392
+ SELECT
22393
+ t.id, t.target_term as source_term, t.source_term as target_term,
22394
+ t.termbase_id, t.priority,
22395
+ t.domain, t.notes, t.project, t.client, t.forbidden,
22396
+ tb.is_project_termbase, tb.name as termbase_name,
22397
+ COALESCE(ta.priority, tb.ranking) as ranking,
22398
+ 'target' as match_direction
22399
+ FROM termbase_terms t
22400
+ LEFT JOIN termbases tb ON CAST(t.termbase_id AS INTEGER) = tb.id
22401
+ LEFT JOIN termbase_activation ta ON ta.termbase_id = tb.id AND ta.project_id = ? AND ta.is_active = 1
22402
+ WHERE LOWER(t.target_term) LIKE ?
22403
+ AND (ta.is_active = 1 OR tb.is_project_termbase = 1)
22404
+ """
22405
+ params.extend([project_id if project_id else 0, f"%{clean_word.lower()}%"])
22406
+
22407
+ # Language filters for reverse query (swapped)
22408
+ if source_lang_code:
22409
+ # For reverse: source_lang filters target_lang column
22410
+ query += " AND (t.target_lang = ? OR (t.target_lang IS NULL AND tb.target_lang = ?) OR (t.target_lang IS NULL AND tb.target_lang IS NULL))"
22411
+ params.extend([source_lang_code, source_lang_code])
22412
+ if target_lang_code:
22413
+ # For reverse: target_lang filters source_lang column
22414
+ query += " AND (t.source_lang = ? OR (t.source_lang IS NULL AND tb.source_lang = ?) OR (t.source_lang IS NULL AND tb.source_lang IS NULL))"
22415
+ params.extend([target_lang_code, target_lang_code])
22416
+
22417
+ # Close UNION and limit
22418
+ query += ") combined LIMIT 30"
22378
22419
  cursor.execute(query, params)
22379
22420
  results = cursor.fetchall()
22380
22421
 
22381
22422
  for row in results:
22382
- # Uniform access
22423
+ # Uniform access (columns are already swapped for reverse matches)
22383
22424
  source_term = row[1] if isinstance(row, tuple) else row['source_term']
22384
22425
  target_term = row[2] if isinstance(row, tuple) else row['target_term']
22426
+ match_direction = row[13] if isinstance(row, tuple) else row.get('match_direction', 'source')
22385
22427
  if not source_term or not target_term:
22386
22428
  continue
22387
22429
 
@@ -22405,8 +22447,10 @@ class SupervertalerQt(QMainWindow):
22405
22447
  existing = matches.get(source_term.strip())
22406
22448
  # Deduplicate: keep numerically lowest ranking (highest priority)
22407
22449
  # For project termbases, ranking is None so they always win
22450
+ # Also prefer 'source' matches over 'target' matches when equal
22408
22451
  if existing:
22409
22452
  existing_ranking = existing.get('ranking', None)
22453
+ existing_direction = existing.get('match_direction', 'source')
22410
22454
  if is_project_tb:
22411
22455
  # Project termbase always wins
22412
22456
  pass
@@ -22415,8 +22459,12 @@ class SupervertalerQt(QMainWindow):
22415
22459
  continue
22416
22460
  elif existing_ranking is not None and ranking is not None:
22417
22461
  # Both have rankings, keep lower (higher priority)
22418
- if existing_ranking <= ranking:
22462
+ if existing_ranking < ranking:
22419
22463
  continue
22464
+ elif existing_ranking == ranking:
22465
+ # Same ranking: prefer source match over target match
22466
+ if existing_direction == 'source' and match_direction == 'target':
22467
+ continue
22420
22468
 
22421
22469
  matches[source_term.strip()] = {
22422
22470
  'translation': target_term.strip(),
@@ -22431,15 +22479,18 @@ class SupervertalerQt(QMainWindow):
22431
22479
  'forbidden': forbidden or False,
22432
22480
  'is_project_termbase': bool(is_project_tb),
22433
22481
  'termbase_name': termbase_name or '',
22434
- 'target_synonyms': [] # Will be populated below
22482
+ 'target_synonyms': [], # Will be populated below
22483
+ 'match_direction': match_direction # Track if this was a reverse match
22435
22484
  }
22436
-
22485
+
22437
22486
  # Fetch synonyms for this term
22487
+ # For reverse matches, fetch 'source' synonyms since they become targets
22438
22488
  try:
22489
+ synonym_lang = 'source' if match_direction == 'target' else 'target'
22439
22490
  cursor.execute("""
22440
- SELECT synonym_text FROM termbase_synonyms
22441
- WHERE term_id = ? AND language = 'target' AND forbidden = 0
22442
- """, (term_id,))
22491
+ SELECT synonym_text FROM termbase_synonyms
22492
+ WHERE term_id = ? AND language = ? AND forbidden = 0
22493
+ """, (term_id, synonym_lang))
22443
22494
  synonym_rows = cursor.fetchall()
22444
22495
  for syn_row in synonym_rows:
22445
22496
  synonym = syn_row[0] if isinstance(syn_row, tuple) else syn_row['synonym_text']
@@ -26645,24 +26696,32 @@ class SupervertalerQt(QMainWindow):
26645
26696
  )
26646
26697
  return
26647
26698
 
26648
- # Extract segments
26649
- mqxliff_segments = handler.extract_source_segments()
26650
-
26699
+ # Extract segments (including targets for pretranslated files)
26700
+ mqxliff_segments = handler.extract_bilingual_segments()
26701
+
26651
26702
  if not mqxliff_segments:
26652
26703
  QMessageBox.warning(
26653
26704
  self, "No Segments",
26654
26705
  "No segments found in the memoQ XLIFF file."
26655
26706
  )
26656
26707
  return
26657
-
26708
+
26709
+ # Count pretranslated segments
26710
+ pretranslated_count = sum(1 for s in mqxliff_segments if s.get('target', '').strip())
26711
+
26658
26712
  # Convert to internal Segment format
26659
26713
  segments = []
26660
26714
  for i, mq_seg in enumerate(mqxliff_segments):
26715
+ # Map status from mqxliff
26716
+ status = mq_seg.get('status', 'not_started')
26717
+ if status not in ['not_started', 'pre_translated', 'translated', 'confirmed', 'locked']:
26718
+ status = 'not_started'
26719
+
26661
26720
  segment = Segment(
26662
26721
  id=i + 1,
26663
- source=mq_seg.plain_text,
26664
- target="",
26665
- status=DEFAULT_STATUS.key,
26722
+ source=mq_seg.get('source', ''),
26723
+ target=mq_seg.get('target', ''),
26724
+ status=status,
26666
26725
  notes="",
26667
26726
  )
26668
26727
  segments.append(segment)
@@ -26706,11 +26765,17 @@ class SupervertalerQt(QMainWindow):
26706
26765
  # Log success
26707
26766
  self.log(f"✓ Imported {len(segments)} segments from memoQ XLIFF: {Path(file_path).name}")
26708
26767
  self.log(f" Source: {source_lang}, Target: {target_lang}")
26709
-
26768
+ if pretranslated_count > 0:
26769
+ self.log(f" Pretranslated: {pretranslated_count} segments with target text")
26770
+
26771
+ # Build message with pretranslation info
26772
+ msg = f"Successfully imported {len(segments)} segment(s) from memoQ XLIFF.\n\nLanguages: {source_lang} → {target_lang}"
26773
+ if pretranslated_count > 0:
26774
+ msg += f"\n\nPretranslated: {pretranslated_count} segment(s) with target text loaded."
26775
+
26710
26776
  QMessageBox.information(
26711
26777
  self, "Import Successful",
26712
- f"Successfully imported {len(segments)} segment(s) from memoQ XLIFF.\n\n"
26713
- f"Languages: {source_lang} → {target_lang}"
26778
+ msg
26714
26779
  )
26715
26780
  except Exception as e:
26716
26781
  self.log(f"❌ Error importing memoQ XLIFF: {e}")
@@ -27119,7 +27184,19 @@ class SupervertalerQt(QMainWindow):
27119
27184
  source_row = QHBoxLayout()
27120
27185
  source_row.addWidget(QLabel("Source Language:"))
27121
27186
  source_combo = QComboBox()
27122
- source_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27187
+ # Full language list (same as New Project dialog)
27188
+ available_languages = [
27189
+ "Afrikaans", "Albanian", "Arabic", "Armenian", "Basque", "Bengali",
27190
+ "Bulgarian", "Catalan", "Chinese (Simplified)", "Chinese (Traditional)",
27191
+ "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian",
27192
+ "Finnish", "French", "Galician", "Georgian", "German", "Greek",
27193
+ "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Irish",
27194
+ "Italian", "Japanese", "Korean", "Latvian", "Lithuanian", "Macedonian",
27195
+ "Malay", "Norwegian", "Persian", "Polish", "Portuguese", "Romanian",
27196
+ "Russian", "Serbian", "Slovak", "Slovenian", "Spanish", "Swahili",
27197
+ "Swedish", "Thai", "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"
27198
+ ]
27199
+ source_combo.addItems(available_languages)
27123
27200
  # Try to match current UI selection
27124
27201
  current_source = self.source_lang_combo.currentText() if hasattr(self, 'source_lang_combo') else "English"
27125
27202
  source_idx = source_combo.findText(current_source)
@@ -27127,12 +27204,12 @@ class SupervertalerQt(QMainWindow):
27127
27204
  source_combo.setCurrentIndex(source_idx)
27128
27205
  source_row.addWidget(source_combo)
27129
27206
  lang_group_layout.addLayout(source_row)
27130
-
27207
+
27131
27208
  # Target language
27132
27209
  target_row = QHBoxLayout()
27133
27210
  target_row.addWidget(QLabel("Target Language:"))
27134
27211
  target_combo = QComboBox()
27135
- target_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27212
+ target_combo.addItems(available_languages)
27136
27213
  # Try to match current UI selection
27137
27214
  current_target = self.target_lang_combo.currentText() if hasattr(self, 'target_lang_combo') else "Dutch"
27138
27215
  target_idx = target_combo.findText(current_target)
@@ -27140,15 +27217,15 @@ class SupervertalerQt(QMainWindow):
27140
27217
  target_combo.setCurrentIndex(target_idx)
27141
27218
  target_row.addWidget(target_combo)
27142
27219
  lang_group_layout.addLayout(target_row)
27143
-
27220
+
27144
27221
  lang_layout.addWidget(lang_group)
27145
-
27222
+
27146
27223
  # Buttons
27147
27224
  lang_buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
27148
27225
  lang_buttons.accepted.connect(lang_dialog.accept)
27149
27226
  lang_buttons.rejected.connect(lang_dialog.reject)
27150
27227
  lang_layout.addWidget(lang_buttons)
27151
-
27228
+
27152
27229
  if lang_dialog.exec() != QDialog.DialogCode.Accepted:
27153
27230
  self.log("✗ User cancelled Trados import during language selection")
27154
27231
  return
@@ -27799,7 +27876,19 @@ class SupervertalerQt(QMainWindow):
27799
27876
  source_row = QHBoxLayout()
27800
27877
  source_row.addWidget(QLabel("Source Language:"))
27801
27878
  source_combo = QComboBox()
27802
- source_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27879
+ # Full language list (same as New Project dialog)
27880
+ available_languages = [
27881
+ "Afrikaans", "Albanian", "Arabic", "Armenian", "Basque", "Bengali",
27882
+ "Bulgarian", "Catalan", "Chinese (Simplified)", "Chinese (Traditional)",
27883
+ "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian",
27884
+ "Finnish", "French", "Galician", "Georgian", "German", "Greek",
27885
+ "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Irish",
27886
+ "Italian", "Japanese", "Korean", "Latvian", "Lithuanian", "Macedonian",
27887
+ "Malay", "Norwegian", "Persian", "Polish", "Portuguese", "Romanian",
27888
+ "Russian", "Serbian", "Slovak", "Slovenian", "Spanish", "Swahili",
27889
+ "Swedish", "Thai", "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"
27890
+ ]
27891
+ source_combo.addItems(available_languages)
27803
27892
  # Try to match current UI selection
27804
27893
  current_source = self.source_lang_combo.currentText() if hasattr(self, 'source_lang_combo') else "English"
27805
27894
  source_idx = source_combo.findText(current_source)
@@ -27812,7 +27901,7 @@ class SupervertalerQt(QMainWindow):
27812
27901
  target_row = QHBoxLayout()
27813
27902
  target_row.addWidget(QLabel("Target Language:"))
27814
27903
  target_combo = QComboBox()
27815
- target_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27904
+ target_combo.addItems(available_languages)
27816
27905
  # Try to match current UI selection
27817
27906
  current_target = self.target_lang_combo.currentText() if hasattr(self, 'target_lang_combo') else "Dutch"
27818
27907
  target_idx = target_combo.findText(current_target)
@@ -17,7 +17,7 @@
17
17
  <link rel="apple-touch-icon" href="apple-touch-icon.png">
18
18
  <link rel="manifest" href="site.webmanifest">
19
19
 
20
- <link rel="stylesheet" href="styles.css?v=1.9.176-beta">
20
+ <link rel="stylesheet" href="styles.css?v=1.9.178-beta">
21
21
  <link rel="preconnect" href="https://fonts.googleapis.com">
22
22
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
23
23
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap"
@@ -50,7 +50,7 @@
50
50
  class="nav-discussions">💬 Discussions</a></li>
51
51
  <li class="nav-action">
52
52
  <a href="https://github.com/michaelbeijer/Supervertaler/blob/main/CHANGELOG.md" target="_blank"
53
- class="nav-version" title="Current version">v1.9.176-beta</a>
53
+ class="nav-version" title="Current version">v1.9.178-beta</a>
54
54
  </li>
55
55
  <li class="nav-action">
56
56
  <a href="https://github.com/michaelbeijer/Supervertaler" target="_blank" class="nav-icon-link"
@@ -74,7 +74,7 @@
74
74
  Supervertaler
75
75
  <span class="gradient-text">The Ultimate Translation Workbench</span>
76
76
  </h1>
77
- <p class="version-badge">v1.9.176-beta</p>
77
+ <p class="version-badge">v1.9.178-beta</p>
78
78
  <p class="hero-subtitle">
79
79
  AI-enhanced translation workbench. Work with ChatGPT, Claude, and Gemini simultaneously.
80
80
  Built by translators, for translators and writers.
@@ -711,7 +711,7 @@
711
711
  <div style="text-align: center; margin: 40px 0;">
712
712
  <div class="download-card featured"
713
713
  style="border: 3px solid #6366F1; max-width: 700px; margin: 0 auto;">
714
- <div class="download-badge" style="background: #6366F1;">v1.9.176-beta</div>
714
+ <div class="download-badge" style="background: #6366F1;">v1.9.178-beta</div>
715
715
  <h3>🎨 Supervertaler</h3>
716
716
  <p class="download-description" style="font-weight: 600; color: #6366F1; margin-bottom: 10px;">
717
717
  Modern Professional Interface