supervertaler 1.9.177b0__tar.gz → 1.9.178b0__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.177b0 → supervertaler-1.9.178b0}/CHANGELOG.md +15 -1
  2. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/PKG-INFO +1 -1
  3. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/Supervertaler.py +63 -21
  4. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/index.html +4 -4
  5. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/mqxliff_handler.py +71 -2
  6. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tm_metadata_manager.py +23 -18
  7. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/pyproject.toml +1 -1
  8. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/supervertaler.egg-info/PKG-INFO +1 -1
  9. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/FAQ.md +0 -0
  10. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/LICENSE +0 -0
  11. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/MANIFEST.in +0 -0
  12. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/README.md +0 -0
  13. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/ICON_CONVERSION_GUIDE.md +0 -0
  14. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/MB.ico +0 -0
  15. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/README.md +0 -0
  16. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/generate_icons.py +0 -0
  17. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon.ico +0 -0
  18. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_128.png +0 -0
  19. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_24.png +0 -0
  20. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_256.png +0 -0
  21. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_32.png +0 -0
  22. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_48.png +0 -0
  23. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_64.png +0 -0
  24. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_preview.html +0 -0
  25. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_sv_modern.svg +0 -0
  26. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_sv_modern_paths.svg +0 -0
  27. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/icon_sv_simple.svg +0 -0
  28. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/patent-drawing-1951.jpg +0 -0
  29. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/assets/supervertaler_icon_colours.png +0 -0
  30. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/.nojekyll +0 -0
  31. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/CNAME +0 -0
  32. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/SIMILAR_APPS.md +0 -0
  33. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/apple-touch-icon.png +0 -0
  34. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/BUGFIX_README.md +0 -0
  35. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/CHANGELIST.md +0 -0
  36. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/CHANGELOG_Old.md +0 -0
  37. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/FAQ.md +0 -0
  38. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/INSTALLATION_v1.7.8.md +0 -0
  39. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/PROJECT_ORGANIZATION.md +0 -0
  40. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/TERMBASE_REFACTORING_SUMMARY.md +0 -0
  41. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/USER_GUIDE_v1.7.8.md +0 -0
  42. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/VERIFICATION_CHECKLIST.md +0 -0
  43. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/BEFORE_AFTER_COMPARISON.md +0 -0
  44. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/BUGFIX_SESSION_SUMMARY.md +0 -0
  45. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/COLOR_SCHEME_REFERENCE.md +0 -0
  46. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/COMPACT_LAYOUT_CHANGELOG.md +0 -0
  47. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/COMPACT_LAYOUT_DOCUMENTATION_INDEX.md +0 -0
  48. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/COMPACT_LAYOUT_IMPLEMENTATION_SUMMARY.md +0 -0
  49. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/COMPACT_LAYOUT_UPDATE.md +0 -0
  50. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/COMPLETE_IMPLEMENTATION_SUMMARY.md +0 -0
  51. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/COMPLETE_PROJECT_SUMMARY.md +0 -0
  52. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/DATABASE_FINAL_SUMMARY.md +0 -0
  53. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/DATABASE_IMPLEMENTATION.md +0 -0
  54. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/DATABASE_PRODUCTION_READY.md +0 -0
  55. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/DATABASE_QUICK_REFERENCE.md +0 -0
  56. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/DUAL_VERSION_STRATEGY.md +0 -0
  57. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/FINAL_SESSION_SUMMARY.md +0 -0
  58. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/FOLDER_STRUCTURE_UPDATE.md +0 -0
  59. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/GITHUB_PAGES_SETUP.md +0 -0
  60. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/IMPLEMENTATION_CHECKLIST.md +0 -0
  61. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/IMPLEMENTATION_COMPLETE.md +0 -0
  62. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/IMPLEMENTATION_COMPLETE_COMPACT_LAYOUT.md +0 -0
  63. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/IMPLEMENTATION_READY.md +0 -0
  64. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/IMPLEMENTATION_STATUS_PHASE2_READY.md +0 -0
  65. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/KEYBOARD_SHORTCUTS_MATCHES.md +0 -0
  66. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/LAYOUT_BEFORE_AFTER.md +0 -0
  67. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/MASTER_INDEX.md +0 -0
  68. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/MATCH_DISPLAY_IMPROVEMENTS.md +0 -0
  69. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/MATCH_DISPLAY_LONG_SEGMENTS_UPDATE.md +0 -0
  70. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/MATCH_DISPLAY_QUICK_REFERENCE.md +0 -0
  71. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/MATCH_INSERTION_FEATURES.md +0 -0
  72. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/MATCH_SHORTCUTS_QUICK_REF.md +0 -0
  73. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/MODULAR_ARCHITECTURE_GUIDE.md +0 -0
  74. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/PHASE2_IMPLEMENTATION_CHECKLIST.md +0 -0
  75. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/PHASE2_IMPLEMENTATION_DETAILED_CHECKLIST.md +0 -0
  76. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/PHASE2_IMPLEMENTATION_IN_PROGRESS.md +0 -0
  77. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/PHASE2_NEXT_STEPS.md +0 -0
  78. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/PHASE2_READY_TO_IMPLEMENT.md +0 -0
  79. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/PHASE2_START_HERE.md +0 -0
  80. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/QT_MIGRATION_PLAN.md +0 -0
  81. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/QT_SESSION_SUMMARY.md +0 -0
  82. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/QUICK_SESSION_SUMMARY.md +0 -0
  83. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/RELEASE_Qt_v1.0.0_Phase5.md +0 -0
  84. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/RELEASE_v1.9.38.md +0 -0
  85. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/RELEASE_v3.7.1.md +0 -0
  86. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/RELEASE_v3.7.6.md +0 -0
  87. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/RELEASE_v3.7.7.md +0 -0
  88. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/RESTRUCTURE_COMPLETE.md +0 -0
  89. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/SESSION_DOCUMENTATION_INDEX.md +0 -0
  90. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/SESSION_IMPLEMENTATION_SUMMARY.md +0 -0
  91. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/SESSION_LONG_SEGMENTS_COMPLETE.md +0 -0
  92. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/SESSION_MATCH_FEATURES_COMPLETE.md +0 -0
  93. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/SESSION_STATUS.md +0 -0
  94. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/SESSION_SUMMARY_Phase5.md +0 -0
  95. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/START_HERE.md +0 -0
  96. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/START_IMPLEMENTATION_HERE.md +0 -0
  97. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/STYLE_GUIDES_DELIVERABLES.md +0 -0
  98. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/STYLE_GUIDES_DOCUMENTATION_INDEX.md +0 -0
  99. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/STYLE_GUIDES_FEATURE_SUMMARY.md +0 -0
  100. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/STYLE_GUIDES_IMPLEMENTATION.md +0 -0
  101. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/STYLE_GUIDES_PROJECT_COMPLETION.md +0 -0
  102. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/STYLE_GUIDES_QUICK_REFERENCE.md +0 -0
  103. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/STYLE_GUIDES_VISUAL_ARCHITECTURE.md +0 -0
  104. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TERMBASE_FIXES.md +0 -0
  105. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TERMBASE_IMPLEMENTATION.md +0 -0
  106. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TERMBASE_QUICK_START.md +0 -0
  107. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_CONCORDANCE_STYLE_HIGHLIGHTING.md +0 -0
  108. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_DUAL_HIGHLIGHTING.md +0 -0
  109. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_EDITOR_HIGHLIGHTING_UPDATE.md +0 -0
  110. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_EDITOR_IMPLEMENTATION.md +0 -0
  111. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_EDITOR_WORD_HIGHLIGHTING.md +0 -0
  112. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_TABLE_LAYOUT_INTEGRATED_EDIT.md +0 -0
  113. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_TREEVIEW_GRID_RESIZABLE.md +0 -0
  114. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_WORD_HIGHLIGHTING_IMPLEMENTATION_COMPLETE.md +0 -0
  115. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TMX_WORD_HIGHLIGHTING_SUMMARY.md +0 -0
  116. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TM_MATCH_PANE_CHECKLIST.md +0 -0
  117. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TM_MATCH_PANE_IMPLEMENTATION.md +0 -0
  118. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/TM_MATCH_PANE_VISUAL_GUIDE.md +0 -0
  119. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/VISUAL_COLOR_REFERENCE.md +0 -0
  120. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/development/VISUAL_IMPLEMENTATION_SUMMARY.md +0 -0
  121. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/COLOR_FIX_EXPLANATION.md +0 -0
  122. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/DATABASE_CONSOLIDATION_REPORT.md +0 -0
  123. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/DUAL_EDITOR_WORKFLOW.md +0 -0
  124. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/DUAL_SELECTION_SYSTEM.md +0 -0
  125. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/IMPROVEMENTS_SUMMARY.md +0 -0
  126. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/ISSUES_FIXES_PROGRESS.md +0 -0
  127. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/MATCH_DISPLAY_COMPACT_FIXES.md +0 -0
  128. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/README_SESSION_TERMBASE.md +0 -0
  129. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/SAFE_DELETION_REMINDER.txt +0 -0
  130. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/SESSION_SUMMARY.md +0 -0
  131. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/TERMBASE_FIXES_APPLIED.md +0 -0
  132. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/TESTING_CHECKLIST.md +0 -0
  133. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/TMX_EDITOR_ANNOUNCEMENT.md +0 -0
  134. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/archive/sessions/TRANSLATION_RESULTS_IMPROVEMENTS.md +0 -0
  135. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/assets/Figure1.png +0 -0
  136. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/assets/patent-drawing-1951.jpg +0 -0
  137. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/changelog.html +0 -0
  138. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/dev-notes/QA.md +0 -0
  139. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/dev-notes/STYLE_GUIDES_UI_TEMPLATE.py +0 -0
  140. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/dev-notes/_Notes_2025-11-21.md +0 -0
  141. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/dev-notes/_things_to_remind_AIs_of_when_translating.md +0 -0
  142. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/dev-notes/issue_28.md +0 -0
  143. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/dev-notes/openai_debug.txt +0 -0
  144. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/dev-notes/pre-translation-dialog-enhancement.md +0 -0
  145. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/emoji_mockup.html +0 -0
  146. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/favicon.ico +0 -0
  147. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/AI_PROMPT_ASSISTANT_USER_GUIDE.md +0 -0
  148. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/ENCODING_REPAIR_TOOL.md +0 -0
  149. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/FAQ.md +0 -0
  150. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/GLOSSARY_OF_SUPERVERTALER_TERMINOLOGY.md +0 -0
  151. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/JSON_EDITORS_AND_HUMAN_READABLE_FORMAT.md +0 -0
  152. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/KEYBOARD_SHORTCUTS.md +0 -0
  153. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/PDF_RESCUE.md +0 -0
  154. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/PROMPT_ASSISTANT_USER_GUIDE.md +0 -0
  155. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/QT_SETTINGS_DIALOG_GUIDE.md +0 -0
  156. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/TERM_EXTRACTION_GUIDE.md +0 -0
  157. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/guides/USER_DATA_FOLDER_SETUP.md +0 -0
  158. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/idea_beijer.bot_integration_idea/BEIJERBOT_FEATURE_ANALYSIS.md +0 -0
  159. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/idea_beijer.bot_integration_idea/CLI_BRIDGE_SPECIFICATION.md +0 -0
  160. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/idea_beijer.bot_integration_idea/IMPLEMENTATION_ROADMAP.md +0 -0
  161. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/idea_beijer.bot_integration_idea/QUICKMENU_INTEGRATION_PLAN.md +0 -0
  162. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/idea_beijer.bot_integration_idea/README.md +0 -0
  163. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/idea_tag-cleaner/tag_cleaner.md +0 -0
  164. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/idea_use_vscode_as_cat_tool/ai-agent-translation-workflow.md +0 -0
  165. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/logo.png +0 -0
  166. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/2025-10-13_00-46-16.jpg +0 -0
  167. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Superlookup_Web_resources.jpg +0 -0
  168. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_AI-Assistant.jpg +0 -0
  169. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_CLASSIC_v2.4.1_(tkinter).jpg +0 -0
  170. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_Prompt_Manager_2026-01-14.png +0 -0
  171. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  172. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  173. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_Superbrowser.jpg +0 -0
  174. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_dark_mode_2025-12-16.jpg +0 -0
  175. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_dark_mode_2025-12-17.jpg +0 -0
  176. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_grid.jpg +0 -0
  177. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_tkinter (v3.7.7).jpg +0 -0
  178. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_v1.9.102_compare_panel_2026-01-14.png +0 -0
  179. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/Supervertaler_v1.9.102_grid_2026-01-14.png +0 -0
  180. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/new/Supervertaler-grid.jpg +0 -0
  181. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/new/Supervertaler_AI-Assistant.jpg +0 -0
  182. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/new/Supervertaler_Prompt-Library.jpg +0 -0
  183. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/new/Supervertaler_Qt_LLM_LeaderboardResults_2025-11-12.jpg +0 -0
  184. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/new/Supervertaler_Qt_LLM_Leaderboard_2025-11-12.jpg +0 -0
  185. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/new/Supervertaler_Superbrowser.jpg +0 -0
  186. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/old/2025-10-13_00-50-24.jpg +0 -0
  187. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/screenshots/old/Supervertaler_Qt_2025-11-12.jpg +0 -0
  188. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/script.js +0 -0
  189. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/site.webmanifest +0 -0
  190. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/AI_ASSISTANT_PHASE2_IMPLEMENTATION.md +0 -0
  191. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/AI_PROMPT_ASSISTANT.md +0 -0
  192. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/AI_PROMPT_ASSISTANT_IMPLEMENTATION.md +0 -0
  193. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/EXPORT_MENU_UPDATE.md +0 -0
  194. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/IMPLEMENTATION_SUMMARY.md +0 -0
  195. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/QT_PHASE2_COMPLETE.md +0 -0
  196. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/QT_PHASE3_COMPLETE.md +0 -0
  197. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/SUPERVERTALER_DATA_FORMAT.md +0 -0
  198. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/TASK_TYPE_SYSTEM.md +0 -0
  199. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/TERMINOLOGY_UPDATE_SUMMARY.md +0 -0
  200. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/specifications/opus-api-integration.md +0 -0
  201. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/styles.css +0 -0
  202. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/.gitbook/assets/supervertaler-logo.png +0 -0
  203. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/.gitbook/assets/sv-icon.svg +0 -0
  204. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/GITBOOK_LANDING_DRAFT.md +0 -0
  205. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/README.md +0 -0
  206. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/SUMMARY.md +0 -0
  207. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/ai-translation/batch-translation.md +0 -0
  208. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/ai-translation/ollama.md +0 -0
  209. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/ai-translation/overview.md +0 -0
  210. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/ai-translation/prompt-library.md +0 -0
  211. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/ai-translation/prompts.md +0 -0
  212. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/ai-translation/providers.md +0 -0
  213. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/ai-translation/single-segment.md +0 -0
  214. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/cat-tools/cafetran.md +0 -0
  215. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/cat-tools/memoq.md +0 -0
  216. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/cat-tools/overview.md +0 -0
  217. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/cat-tools/phrase.md +0 -0
  218. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/cat-tools/trados.md +0 -0
  219. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/editor/editing-confirming.md +0 -0
  220. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/editor/filtering.md +0 -0
  221. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/editor/find-replace.md +0 -0
  222. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/editor/keyboard-shortcuts.md +0 -0
  223. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/editor/navigation.md +0 -0
  224. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/editor/pagination.md +0 -0
  225. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/editor/translation-grid.md +0 -0
  226. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/get-started/api-keys.md +0 -0
  227. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/get-started/first-project.md +0 -0
  228. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/get-started/installation.md +0 -0
  229. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/get-started/quick-start.md +0 -0
  230. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/glossaries/basics.md +0 -0
  231. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/glossaries/creating.md +0 -0
  232. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/glossaries/extraction.md +0 -0
  233. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/glossaries/highlighting.md +0 -0
  234. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/glossaries/importing.md +0 -0
  235. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/import-export/bilingual-tables.md +0 -0
  236. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/import-export/docx-import.md +0 -0
  237. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/import-export/exporting.md +0 -0
  238. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/import-export/formats.md +0 -0
  239. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/import-export/multi-file.md +0 -0
  240. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/import-export/txt-import.md +0 -0
  241. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/qa/non-translatables.md +0 -0
  242. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/qa/spellcheck.md +0 -0
  243. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/qa/tag-validation.md +0 -0
  244. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/reference/changelog.md +0 -0
  245. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/reference/contributing.md +0 -0
  246. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/reference/faq.md +0 -0
  247. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/reference/file-formats.md +0 -0
  248. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/settings/fonts.md +0 -0
  249. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/settings/general.md +0 -0
  250. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/settings/shortcuts.md +0 -0
  251. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/settings/theme.md +0 -0
  252. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/settings/view.md +0 -0
  253. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/superlookup/glossary-search.md +0 -0
  254. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/superlookup/mt.md +0 -0
  255. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/superlookup/overview.md +0 -0
  256. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/superlookup/tm-search.md +0 -0
  257. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/superlookup/web-resources.md +0 -0
  258. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/tools/autofingers.md +0 -0
  259. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/tools/image-extractor.md +0 -0
  260. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/tools/pdf-rescue.md +0 -0
  261. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/tools/tmx-editor.md +0 -0
  262. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/tools/voice-commands.md +0 -0
  263. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/translation-memory/basics.md +0 -0
  264. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/translation-memory/fuzzy-matching.md +0 -0
  265. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/translation-memory/importing-tmx.md +0 -0
  266. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/translation-memory/managing-tms.md +0 -0
  267. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/translation-memory/supermemory.md +0 -0
  268. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/troubleshooting/api-issues.md +0 -0
  269. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/troubleshooting/common-issues.md +0 -0
  270. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/troubleshooting/import-export-errors.md +0 -0
  271. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/troubleshooting/linux.md +0 -0
  272. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/superdocs/troubleshooting/performance.md +0 -0
  273. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/sv-icon.svg +0 -0
  274. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/AI_ASSISTANT_GUIDE.md +0 -0
  275. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/AI_ASSISTANT_IMPLEMENTATION.md +0 -0
  276. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/AI_ASSISTANT_INTEGRATION.md +0 -0
  277. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/AI_ASSISTANT_QUICK_REFERENCE.md +0 -0
  278. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/DATABASE_LOCATIONS.md +0 -0
  279. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/FILTER_HIGHLIGHTING_FIX.md +0 -0
  280. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/MODULE_HEADER_PATTERN.md +0 -0
  281. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/README.md +0 -0
  282. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/SUPERBROWSER_GUIDE.md +0 -0
  283. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/SUPERVOICE_TROUBLESHOOTING.md +0 -0
  284. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/UNIFIED_PROMPT_LIBRARY_GUIDE.md +0 -0
  285. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/technical/VOICE_DICTATION_GUIDE.md +0 -0
  286. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/tests/test_encoding_corruption.txt +0 -0
  287. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/web-app-manifest-192x192.png +0 -0
  288. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/docs/web-app-manifest-512x512.png +0 -0
  289. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/__init__.py +0 -0
  290. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/ai_actions.py +0 -0
  291. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/ai_attachment_manager.py +0 -0
  292. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/ai_file_viewer_dialog.py +0 -0
  293. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/autofingers_engine.py +0 -0
  294. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/cafetran_docx_handler.py +0 -0
  295. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/config_manager.py +0 -0
  296. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/database_manager.py +0 -0
  297. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/database_migrations.py +0 -0
  298. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/dejavurtf_handler.py +0 -0
  299. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/document_analyzer.py +0 -0
  300. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/docx_handler.py +0 -0
  301. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/encoding_repair.py +0 -0
  302. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/encoding_repair_Qt.py +0 -0
  303. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/encoding_repair_ui.py +0 -0
  304. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/feature_manager.py +0 -0
  305. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/figure_context_manager.py +0 -0
  306. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/file_dialog_helper.py +0 -0
  307. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/find_replace.py +0 -0
  308. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/find_replace_qt.py +0 -0
  309. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/glossary_manager.py +0 -0
  310. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/image_extractor.py +0 -0
  311. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/keyboard_shortcuts_widget.py +0 -0
  312. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/llm_clients.py +0 -0
  313. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/llm_leaderboard.py +0 -0
  314. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/llm_superbench_ui.py +0 -0
  315. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/local_llm_setup.py +0 -0
  316. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/model_update_dialog.py +0 -0
  317. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/model_version_checker.py +0 -0
  318. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/non_translatables_manager.py +0 -0
  319. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/pdf_rescue_Qt.py +0 -0
  320. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/pdf_rescue_tkinter.py +0 -0
  321. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/phrase_docx_handler.py +0 -0
  322. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/project_home_panel.py +0 -0
  323. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/prompt_assistant.py +0 -0
  324. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/prompt_library.py +0 -0
  325. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/prompt_library_migration.py +0 -0
  326. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/quick_access_sidebar.py +0 -0
  327. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/ribbon_widget.py +0 -0
  328. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/sdlppx_handler.py +0 -0
  329. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/setup_wizard.py +0 -0
  330. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/shortcut_manager.py +0 -0
  331. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/simple_segmenter.py +0 -0
  332. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/spellcheck_manager.py +0 -0
  333. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/statuses.py +0 -0
  334. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/style_guide_manager.py +0 -0
  335. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/superbench_ui.py +0 -0
  336. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/superbrowser.py +0 -0
  337. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/supercleaner.py +0 -0
  338. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/supercleaner_ui.py +0 -0
  339. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/superdocs.py +0 -0
  340. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/superdocs_viewer_qt.py +0 -0
  341. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/superlookup.py +0 -0
  342. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tag_cleaner.py +0 -0
  343. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tag_manager.py +0 -0
  344. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/term_extractor.py +0 -0
  345. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/termbase_entry_editor.py +0 -0
  346. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/termbase_import_export.py +0 -0
  347. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/termbase_manager.py +0 -0
  348. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/termview_widget.py +0 -0
  349. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/theme_manager.py +0 -0
  350. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tm_editor_dialog.py +0 -0
  351. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tm_manager_qt.py +0 -0
  352. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tmx_editor.py +0 -0
  353. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tmx_editor_qt.py +0 -0
  354. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tmx_generator.py +0 -0
  355. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/tracked_changes.py +0 -0
  356. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/trados_docx_handler.py +0 -0
  357. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/translation_memory.py +0 -0
  358. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/translation_results_panel.py +0 -0
  359. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/translation_services.py +0 -0
  360. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/unified_prompt_library.py +0 -0
  361. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/unified_prompt_manager_qt.py +0 -0
  362. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/voice_commands.py +0 -0
  363. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/voice_dictation.py +0 -0
  364. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/modules/voice_dictation_lite.py +0 -0
  365. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/setup.cfg +0 -0
  366. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/setup.py +0 -0
  367. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/supervertaler.egg-info/SOURCES.txt +0 -0
  368. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/supervertaler.egg-info/dependency_links.txt +0 -0
  369. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/supervertaler.egg-info/entry_points.txt +0 -0
  370. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/supervertaler.egg-info/not-zip-safe +0 -0
  371. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/supervertaler.egg-info/requires.txt +0 -0
  372. {supervertaler-1.9.177b0 → supervertaler-1.9.178b0}/supervertaler.egg-info/top_level.txt +0 -0
@@ -2,10 +2,24 @@
2
2
 
3
3
  All notable changes to Supervertaler are documented in this file.
4
4
 
5
- **Current Version:** v1.9.177-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
+
9
23
  ## v1.9.177-beta - January 28, 2026
10
24
 
11
25
  ### ✨ New Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: supervertaler
3
- Version: 1.9.177b0
3
+ Version: 1.9.178b0
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
@@ -10622,7 +10622,11 @@ class SupervertalerQt(QMainWindow):
10622
10622
  button_layout = QHBoxLayout()
10623
10623
 
10624
10624
  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))
10625
+ # Get project_id dynamically - use 0 (global) when no project is loaded
10626
+ create_btn.clicked.connect(lambda: self._show_create_tm_dialog(
10627
+ tm_metadata_mgr, refresh_tm_list,
10628
+ self.current_project.id if (hasattr(self, 'current_project') and self.current_project and hasattr(self.current_project, 'id')) else 0
10629
+ ))
10626
10630
  button_layout.addWidget(create_btn)
10627
10631
 
10628
10632
  import_btn = QPushButton("📥 Import TMX")
@@ -14974,8 +14978,8 @@ class SupervertalerQt(QMainWindow):
14974
14978
  )
14975
14979
 
14976
14980
  if result:
14977
- # Auto-activate for current project
14978
- if project_id:
14981
+ # Auto-activate for current project (or global=0 if no project loaded)
14982
+ if project_id is not None:
14979
14983
  tm_metadata_mgr.activate_tm(result, project_id)
14980
14984
 
14981
14985
  QMessageBox.information(self, "Success", f"Translation Memory '{name}' created successfully!")
@@ -26694,24 +26698,32 @@ class SupervertalerQt(QMainWindow):
26694
26698
  )
26695
26699
  return
26696
26700
 
26697
- # Extract segments
26698
- mqxliff_segments = handler.extract_source_segments()
26699
-
26701
+ # Extract segments (including targets for pretranslated files)
26702
+ mqxliff_segments = handler.extract_bilingual_segments()
26703
+
26700
26704
  if not mqxliff_segments:
26701
26705
  QMessageBox.warning(
26702
26706
  self, "No Segments",
26703
26707
  "No segments found in the memoQ XLIFF file."
26704
26708
  )
26705
26709
  return
26706
-
26710
+
26711
+ # Count pretranslated segments
26712
+ pretranslated_count = sum(1 for s in mqxliff_segments if s.get('target', '').strip())
26713
+
26707
26714
  # Convert to internal Segment format
26708
26715
  segments = []
26709
26716
  for i, mq_seg in enumerate(mqxliff_segments):
26717
+ # Map status from mqxliff
26718
+ status = mq_seg.get('status', 'not_started')
26719
+ if status not in ['not_started', 'pre_translated', 'translated', 'confirmed', 'locked']:
26720
+ status = 'not_started'
26721
+
26710
26722
  segment = Segment(
26711
26723
  id=i + 1,
26712
- source=mq_seg.plain_text,
26713
- target="",
26714
- status=DEFAULT_STATUS.key,
26724
+ source=mq_seg.get('source', ''),
26725
+ target=mq_seg.get('target', ''),
26726
+ status=status,
26715
26727
  notes="",
26716
26728
  )
26717
26729
  segments.append(segment)
@@ -26755,11 +26767,17 @@ class SupervertalerQt(QMainWindow):
26755
26767
  # Log success
26756
26768
  self.log(f"✓ Imported {len(segments)} segments from memoQ XLIFF: {Path(file_path).name}")
26757
26769
  self.log(f" Source: {source_lang}, Target: {target_lang}")
26758
-
26770
+ if pretranslated_count > 0:
26771
+ self.log(f" Pretranslated: {pretranslated_count} segments with target text")
26772
+
26773
+ # Build message with pretranslation info
26774
+ msg = f"Successfully imported {len(segments)} segment(s) from memoQ XLIFF.\n\nLanguages: {source_lang} → {target_lang}"
26775
+ if pretranslated_count > 0:
26776
+ msg += f"\n\nPretranslated: {pretranslated_count} segment(s) with target text loaded."
26777
+
26759
26778
  QMessageBox.information(
26760
26779
  self, "Import Successful",
26761
- f"Successfully imported {len(segments)} segment(s) from memoQ XLIFF.\n\n"
26762
- f"Languages: {source_lang} → {target_lang}"
26780
+ msg
26763
26781
  )
26764
26782
  except Exception as e:
26765
26783
  self.log(f"❌ Error importing memoQ XLIFF: {e}")
@@ -27168,7 +27186,19 @@ class SupervertalerQt(QMainWindow):
27168
27186
  source_row = QHBoxLayout()
27169
27187
  source_row.addWidget(QLabel("Source Language:"))
27170
27188
  source_combo = QComboBox()
27171
- source_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27189
+ # Full language list (same as New Project dialog)
27190
+ available_languages = [
27191
+ "Afrikaans", "Albanian", "Arabic", "Armenian", "Basque", "Bengali",
27192
+ "Bulgarian", "Catalan", "Chinese (Simplified)", "Chinese (Traditional)",
27193
+ "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian",
27194
+ "Finnish", "French", "Galician", "Georgian", "German", "Greek",
27195
+ "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Irish",
27196
+ "Italian", "Japanese", "Korean", "Latvian", "Lithuanian", "Macedonian",
27197
+ "Malay", "Norwegian", "Persian", "Polish", "Portuguese", "Romanian",
27198
+ "Russian", "Serbian", "Slovak", "Slovenian", "Spanish", "Swahili",
27199
+ "Swedish", "Thai", "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"
27200
+ ]
27201
+ source_combo.addItems(available_languages)
27172
27202
  # Try to match current UI selection
27173
27203
  current_source = self.source_lang_combo.currentText() if hasattr(self, 'source_lang_combo') else "English"
27174
27204
  source_idx = source_combo.findText(current_source)
@@ -27176,12 +27206,12 @@ class SupervertalerQt(QMainWindow):
27176
27206
  source_combo.setCurrentIndex(source_idx)
27177
27207
  source_row.addWidget(source_combo)
27178
27208
  lang_group_layout.addLayout(source_row)
27179
-
27209
+
27180
27210
  # Target language
27181
27211
  target_row = QHBoxLayout()
27182
27212
  target_row.addWidget(QLabel("Target Language:"))
27183
27213
  target_combo = QComboBox()
27184
- target_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27214
+ target_combo.addItems(available_languages)
27185
27215
  # Try to match current UI selection
27186
27216
  current_target = self.target_lang_combo.currentText() if hasattr(self, 'target_lang_combo') else "Dutch"
27187
27217
  target_idx = target_combo.findText(current_target)
@@ -27189,15 +27219,15 @@ class SupervertalerQt(QMainWindow):
27189
27219
  target_combo.setCurrentIndex(target_idx)
27190
27220
  target_row.addWidget(target_combo)
27191
27221
  lang_group_layout.addLayout(target_row)
27192
-
27222
+
27193
27223
  lang_layout.addWidget(lang_group)
27194
-
27224
+
27195
27225
  # Buttons
27196
27226
  lang_buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
27197
27227
  lang_buttons.accepted.connect(lang_dialog.accept)
27198
27228
  lang_buttons.rejected.connect(lang_dialog.reject)
27199
27229
  lang_layout.addWidget(lang_buttons)
27200
-
27230
+
27201
27231
  if lang_dialog.exec() != QDialog.DialogCode.Accepted:
27202
27232
  self.log("✗ User cancelled Trados import during language selection")
27203
27233
  return
@@ -27848,7 +27878,19 @@ class SupervertalerQt(QMainWindow):
27848
27878
  source_row = QHBoxLayout()
27849
27879
  source_row.addWidget(QLabel("Source Language:"))
27850
27880
  source_combo = QComboBox()
27851
- source_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27881
+ # Full language list (same as New Project dialog)
27882
+ available_languages = [
27883
+ "Afrikaans", "Albanian", "Arabic", "Armenian", "Basque", "Bengali",
27884
+ "Bulgarian", "Catalan", "Chinese (Simplified)", "Chinese (Traditional)",
27885
+ "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian",
27886
+ "Finnish", "French", "Galician", "Georgian", "German", "Greek",
27887
+ "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Irish",
27888
+ "Italian", "Japanese", "Korean", "Latvian", "Lithuanian", "Macedonian",
27889
+ "Malay", "Norwegian", "Persian", "Polish", "Portuguese", "Romanian",
27890
+ "Russian", "Serbian", "Slovak", "Slovenian", "Spanish", "Swahili",
27891
+ "Swedish", "Thai", "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"
27892
+ ]
27893
+ source_combo.addItems(available_languages)
27852
27894
  # Try to match current UI selection
27853
27895
  current_source = self.source_lang_combo.currentText() if hasattr(self, 'source_lang_combo') else "English"
27854
27896
  source_idx = source_combo.findText(current_source)
@@ -27861,7 +27903,7 @@ class SupervertalerQt(QMainWindow):
27861
27903
  target_row = QHBoxLayout()
27862
27904
  target_row.addWidget(QLabel("Target Language:"))
27863
27905
  target_combo = QComboBox()
27864
- target_combo.addItems(["English", "Dutch", "German", "French", "Spanish", "Italian", "Portuguese", "Polish", "Chinese", "Japanese", "Korean", "Russian"])
27906
+ target_combo.addItems(available_languages)
27865
27907
  # Try to match current UI selection
27866
27908
  current_target = self.target_lang_combo.currentText() if hasattr(self, 'target_lang_combo') else "Dutch"
27867
27909
  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.177-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.177-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.177-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.177-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
@@ -159,9 +159,78 @@ class MQXLIFFHandler:
159
159
 
160
160
  segment = FormattedSegment(trans_unit_id, plain_text, formatted_xml)
161
161
  segments.append(segment)
162
-
162
+
163
163
  return segments
164
-
164
+
165
+ def extract_bilingual_segments(self) -> List[Dict]:
166
+ """
167
+ Extract all source AND target segments from the MQXLIFF file.
168
+ Used for importing pretranslated mqxliff files.
169
+
170
+ Returns:
171
+ List of dicts with 'id', 'source', 'target', 'status' keys
172
+ """
173
+ segments = []
174
+
175
+ if self.body_element is None:
176
+ return segments
177
+
178
+ # Find all trans-unit elements (with or without namespace)
179
+ trans_units = self.body_element.findall('.//xliff:trans-unit', self.NAMESPACES)
180
+ if not trans_units:
181
+ trans_units = self.body_element.findall('.//trans-unit')
182
+
183
+ for trans_unit in trans_units:
184
+ trans_unit_id = trans_unit.get('id', 'unknown')
185
+
186
+ # Skip auxiliary segments (like hyperlink URLs with mq:nosplitjoin="true")
187
+ nosplitjoin = trans_unit.get('{MQXliff}nosplitjoin', 'false')
188
+ if nosplitjoin == 'true':
189
+ continue
190
+
191
+ # Find source element
192
+ source_elem = trans_unit.find('xliff:source', self.NAMESPACES)
193
+ if source_elem is None:
194
+ source_elem = trans_unit.find('source')
195
+
196
+ # Find target element
197
+ target_elem = trans_unit.find('xliff:target', self.NAMESPACES)
198
+ if target_elem is None:
199
+ target_elem = trans_unit.find('target')
200
+
201
+ source_text = ""
202
+ target_text = ""
203
+
204
+ if source_elem is not None:
205
+ source_text = self._extract_plain_text(source_elem)
206
+
207
+ if target_elem is not None:
208
+ target_text = self._extract_plain_text(target_elem)
209
+
210
+ # Get memoQ status if available
211
+ mq_status = trans_unit.get('{MQXliff}status', '')
212
+
213
+ # Map memoQ status to internal status
214
+ # memoQ statuses: "NotStarted", "Editing", "Confirmed", "Reviewed", "Rejected", etc.
215
+ status = 'not_started'
216
+ if mq_status in ['Confirmed', 'ProofRead', 'Reviewed']:
217
+ status = 'confirmed'
218
+ elif mq_status == 'Editing':
219
+ status = 'translated'
220
+ elif target_text.strip():
221
+ # Has target but unknown status - mark as pre-translated
222
+ status = 'pre_translated'
223
+
224
+ segments.append({
225
+ 'id': trans_unit_id,
226
+ 'source': source_text,
227
+ 'target': target_text,
228
+ 'status': status,
229
+ 'mq_status': mq_status
230
+ })
231
+
232
+ return segments
233
+
165
234
  def _extract_plain_text(self, element: ET.Element) -> str:
166
235
  """
167
236
  Recursively extract plain text from an XML element, stripping all tags.
@@ -344,19 +344,22 @@ class TMMetadataManager:
344
344
  """Check if a TM is active for a project (or global when project_id=0)"""
345
345
  if project_id is None:
346
346
  return False # If None (not 0), default to inactive
347
-
347
+
348
348
  try:
349
349
  cursor = self.db_manager.cursor
350
-
350
+
351
+ # Check if TM is active for this project OR globally (project_id=0)
351
352
  cursor.execute("""
352
- SELECT is_active FROM tm_activation
353
- WHERE tm_id = ? AND project_id = ?
353
+ SELECT is_active FROM tm_activation
354
+ WHERE tm_id = ? AND (project_id = ? OR project_id = 0)
355
+ ORDER BY project_id DESC
354
356
  """, (tm_db_id, project_id))
355
-
356
- row = cursor.fetchone()
357
- if row:
358
- return bool(row[0])
359
-
357
+
358
+ # Return True if any activation is active (project-specific takes priority due to ORDER BY)
359
+ for row in cursor.fetchall():
360
+ if bool(row[0]):
361
+ return True
362
+
360
363
  # If no activation record exists, TM is inactive by default
361
364
  return False
362
365
  except Exception as e:
@@ -382,15 +385,16 @@ class TMMetadataManager:
382
385
 
383
386
  try:
384
387
  cursor = self.db_manager.cursor
385
-
388
+
386
389
  # Only return TMs that have been explicitly activated (is_active = 1)
390
+ # Include both project-specific activations AND global activations (project_id=0)
387
391
  cursor.execute("""
388
- SELECT tm.tm_id
392
+ SELECT DISTINCT tm.tm_id
389
393
  FROM translation_memories tm
390
394
  INNER JOIN tm_activation ta ON tm.id = ta.tm_id
391
- WHERE ta.project_id = ? AND ta.is_active = 1
395
+ WHERE (ta.project_id = ? OR ta.project_id = 0) AND ta.is_active = 1
392
396
  """, (project_id,))
393
-
397
+
394
398
  return [row[0] for row in cursor.fetchall()]
395
399
  except Exception as e:
396
400
  self.log(f"✗ Error fetching active tm_ids: {e}")
@@ -422,16 +426,17 @@ class TMMetadataManager:
422
426
 
423
427
  try:
424
428
  cursor = self.db_manager.cursor
425
-
429
+
426
430
  # Return TMs where Write checkbox is enabled (read_only = 0)
427
- # AND the TM has an activation record for this project
431
+ # AND the TM has an activation record for this project OR for global (project_id=0)
432
+ # This ensures TMs created when no project was loaded still work
428
433
  cursor.execute("""
429
- SELECT tm.tm_id
434
+ SELECT DISTINCT tm.tm_id
430
435
  FROM translation_memories tm
431
436
  INNER JOIN tm_activation ta ON tm.id = ta.tm_id
432
- WHERE ta.project_id = ? AND tm.read_only = 0
437
+ WHERE (ta.project_id = ? OR ta.project_id = 0) AND tm.read_only = 0
433
438
  """, (project_id,))
434
-
439
+
435
440
  return [row[0] for row in cursor.fetchall()]
436
441
  except Exception as e:
437
442
  self.log(f"✗ Error fetching writable tm_ids: {e}")
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "supervertaler"
7
- version = "1.9.177-beta"
7
+ version = "1.9.178-beta"
8
8
  description = "Professional AI-enhanced translation workbench with multi-LLM support, glossary system, TM, spellcheck, voice commands, and PyQt6 interface. Batteries included (core)."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: supervertaler
3
- Version: 1.9.177b0
3
+ Version: 1.9.178b0
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