contextweave 2.8.2__tar.gz → 2.8.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. {contextweave-2.8.2 → contextweave-2.8.3}/PKG-INFO +1 -1
  2. {contextweave-2.8.2 → contextweave-2.8.3}/cat-ui.spec +2 -0
  3. contextweave-2.8.3/context_aware_translation/ui/constants.py +46 -0
  4. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/app_setup_view.py +15 -23
  5. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/library_view.py +6 -0
  6. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/project_settings_pane.py +5 -5
  7. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/queue_drawer_view.py +1 -1
  8. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/work_view.py +21 -24
  9. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/workflow_profile_editor.py +5 -1
  10. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/app/AppShellChrome.qml +15 -24
  11. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/dialogs/app_settings/AppSettingsPane.qml +1 -0
  12. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/dialogs/project_settings/ProjectSettingsPane.qml +23 -13
  13. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/document/DocumentShellChrome.qml +15 -15
  14. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/document/translation/DocumentTranslationPaneChrome.qml +33 -14
  15. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/project/ProjectShellChrome.qml +14 -13
  16. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/project/work_home/WorkHomeChrome.qml +12 -6
  17. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/queue/QueueShellChrome.qml +17 -7
  18. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/resources/styles.qss +89 -86
  19. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/app_settings_dialog_host.py +3 -21
  20. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/hybrid.py +19 -5
  21. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/project_settings_dialog_host.py +3 -21
  22. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/translations/zh_CN.qm +0 -0
  23. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/translations/zh_CN.ts +7 -8
  24. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/app_settings_pane.py +1 -3
  25. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/document_translation_pane.py +1 -1
  26. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/window_controllers.py +11 -0
  27. {contextweave-2.8.2 → contextweave-2.8.3}/pyproject.toml +1 -1
  28. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_app_settings_dialog_host.py +11 -12
  29. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_app_settings_pane.py +33 -0
  30. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_app_settings_pane_viewmodel.py +1 -1
  31. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_app_setup_view.py +51 -0
  32. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_app_shell_host.py +3 -1
  33. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_translation_pane_viewmodel.py +1 -0
  34. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_library_view.py +6 -0
  35. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_main.py +13 -0
  36. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_project_settings_dialog_host.py +11 -12
  37. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_project_settings_pane.py +56 -22
  38. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_project_shell_host.py +2 -0
  39. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_qml_bootstrap.py +1 -1
  40. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_queue_shell_host.py +2 -0
  41. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_shell_host_infrastructure.py +1 -0
  42. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_ui_clickthrough_smoke.py +5 -0
  43. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_work_view.py +37 -1
  44. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_workflow_profile_editor.py +43 -0
  45. contextweave-2.8.2/context_aware_translation/ui/constants.py +0 -26
  46. contextweave-2.8.2/context_aware_translation/ui/qml/dialogs/app_settings/AppSettingsDialogChrome.qml +0 -77
  47. contextweave-2.8.2/context_aware_translation/ui/qml/dialogs/project_settings/ProjectSettingsDialogChrome.qml +0 -77
  48. {contextweave-2.8.2 → contextweave-2.8.3}/.github/workflows/release.yml +0 -0
  49. {contextweave-2.8.2 → contextweave-2.8.3}/.gitignore +0 -0
  50. {contextweave-2.8.2 → contextweave-2.8.3}/AGENTS.md +0 -0
  51. {contextweave-2.8.2 → contextweave-2.8.3}/LICENSE +0 -0
  52. {contextweave-2.8.2 → contextweave-2.8.3}/Makefile +0 -0
  53. {contextweave-2.8.2 → contextweave-2.8.3}/README.md +0 -0
  54. {contextweave-2.8.2 → contextweave-2.8.3}/README_ZH.md +0 -0
  55. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/AGENTS.md +0 -0
  56. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/__init__.py +0 -0
  57. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/__init__.py +0 -0
  58. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/files/__init__.py +0 -0
  59. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/files/glossary_io.py +0 -0
  60. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/__init__.py +0 -0
  61. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/application_event_bridge.py +0 -0
  62. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/task_engine.py +0 -0
  63. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/__init__.py +0 -0
  64. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/base_worker.py +0 -0
  65. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/batch_task_overlap_guard.py +0 -0
  66. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/batch_translation_task_worker.py +0 -0
  67. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/chunk_retranslation_task_worker.py +0 -0
  68. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/export_worker.py +0 -0
  69. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/glossary_export_task_worker.py +0 -0
  70. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/glossary_extraction_task_worker.py +0 -0
  71. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/glossary_review_task_worker.py +0 -0
  72. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/glossary_translation_task_worker.py +0 -0
  73. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/image_reembedding_task_worker.py +0 -0
  74. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/import_worker.py +0 -0
  75. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/ocr_task_worker.py +0 -0
  76. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/operation_tracker.py +0 -0
  77. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/translate_and_export_task_worker.py +0 -0
  78. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/translation_manga_task_worker.py +0 -0
  79. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/adapters/qt/workers/translation_text_task_worker.py +0 -0
  80. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/app_identity.py +0 -0
  81. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/__init__.py +0 -0
  82. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/composition.py +0 -0
  83. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/__init__.py +0 -0
  84. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/app_setup.py +0 -0
  85. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/common.py +0 -0
  86. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/document.py +0 -0
  87. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/project_setup.py +0 -0
  88. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/projects.py +0 -0
  89. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/queue.py +0 -0
  90. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/terms.py +0 -0
  91. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/contracts/work.py +0 -0
  92. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/errors.py +0 -0
  93. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/events.py +0 -0
  94. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/runtime.py +0 -0
  95. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/__init__.py +0 -0
  96. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/_export_support.py +0 -0
  97. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/app_setup.py +0 -0
  98. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/document.py +0 -0
  99. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/project_setup.py +0 -0
  100. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/projects.py +0 -0
  101. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/queue.py +0 -0
  102. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/terms.py +0 -0
  103. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/application/services/work.py +0 -0
  104. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/cli/__init__.py +0 -0
  105. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/cli/config_file.py +0 -0
  106. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/cli/galgame_skill.py +0 -0
  107. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/cli/main.py +0 -0
  108. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/cli/output.py +0 -0
  109. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/cli/runtime.py +0 -0
  110. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/cli/wait.py +0 -0
  111. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/config.py +0 -0
  112. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/AGENTS.md +0 -0
  113. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/__init__.py +0 -0
  114. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/cancellation.py +0 -0
  115. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/context_extractor.py +0 -0
  116. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/context_manager.py +0 -0
  117. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/galgame_document_handler.py +0 -0
  118. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/manga_document_handler.py +0 -0
  119. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/models.py +0 -0
  120. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/progress.py +0 -0
  121. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/term_memory.py +0 -0
  122. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/term_memory_builder.py +0 -0
  123. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/core/translation_strategies.py +0 -0
  124. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/AGENTS.md +0 -0
  125. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/__init__.py +0 -0
  126. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/base.py +0 -0
  127. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/content/AGENTS.md +0 -0
  128. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/content/__init__.py +0 -0
  129. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/content/ocr_content.py +0 -0
  130. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/content/ocr_items.py +0 -0
  131. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub.py +0 -0
  132. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_container.py +0 -0
  133. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/AGENTS.md +0 -0
  134. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/__init__.py +0 -0
  135. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/container_model.py +0 -0
  136. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/container_patch.py +0 -0
  137. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/container_reader.py +0 -0
  138. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/container_shared.py +0 -0
  139. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/container_writer.py +0 -0
  140. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/inline_markers.py +0 -0
  141. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/nav_ops.py +0 -0
  142. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/slot_lines.py +0 -0
  143. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_support/xml_utils.py +0 -0
  144. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/epub_xhtml_utils.py +0 -0
  145. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/galgame.py +0 -0
  146. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/manga.py +0 -0
  147. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/manga_alignment.py +0 -0
  148. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/manga_reembed_planner.py +0 -0
  149. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/pdf.py +0 -0
  150. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/scanned_book.py +0 -0
  151. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/subtitle.py +0 -0
  152. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/documents/text.py +0 -0
  153. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/languages.py +0 -0
  154. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/AGENTS.md +0 -0
  155. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/__init__.py +0 -0
  156. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/batch_jobs/AGENTS.md +0 -0
  157. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/batch_jobs/__init__.py +0 -0
  158. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/batch_jobs/base.py +0 -0
  159. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/batch_jobs/gemini_gateway.py +0 -0
  160. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/client.py +0 -0
  161. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/epub_ocr.py +0 -0
  162. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/extractor.py +0 -0
  163. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/glossary_translator.py +0 -0
  164. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/image_backend_base.py +0 -0
  165. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/image_backends/AGENTS.md +0 -0
  166. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/image_backends/__init__.py +0 -0
  167. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/image_backends/gemini_backend.py +0 -0
  168. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/image_backends/openai_backend.py +0 -0
  169. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/image_backends/qwen_backend.py +0 -0
  170. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/image_generator.py +0 -0
  171. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/language_detector.py +0 -0
  172. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/language_pair_prompts/__init__.py +0 -0
  173. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/language_pair_prompts/japanese_to_simplified_chinese.py +0 -0
  174. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/manga_ocr.py +0 -0
  175. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/manga_translator.py +0 -0
  176. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/ocr.py +0 -0
  177. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/reviewer.py +0 -0
  178. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/session_trace.py +0 -0
  179. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/summarizor.py +0 -0
  180. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/token_tracker.py +0 -0
  181. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/translation_strategies.py +0 -0
  182. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/llm/translator.py +0 -0
  183. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/hk2s.json +0 -0
  184. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/jp2s.json +0 -0
  185. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/s2hk.json +0 -0
  186. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/s2t.json +0 -0
  187. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/s2tw.json +0 -0
  188. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/s2twp.json +0 -0
  189. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/t2hk.json +0 -0
  190. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/t2s.json +0 -0
  191. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/t2tw.json +0 -0
  192. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/tw2s.json +0 -0
  193. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/config/tw2sp.json +0 -0
  194. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/HKVariants.txt +0 -0
  195. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/HKVariantsPhrases.txt +0 -0
  196. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/HKVariantsRev.txt +0 -0
  197. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/HKVariantsRevPhrases.txt +0 -0
  198. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/JPVariants.txt +0 -0
  199. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/JPVariantsRev.txt +0 -0
  200. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/STCharacters.txt +0 -0
  201. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/STPhrases.txt +0 -0
  202. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/TSCharacters.txt +0 -0
  203. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/TSPhrases.txt +0 -0
  204. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/TWPhrases.txt +0 -0
  205. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/TWPhrasesRev.txt +0 -0
  206. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/TWVariants.txt +0 -0
  207. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/TWVariantsRev.txt +0 -0
  208. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/opencc/dictionary/TWVariantsRevPhrases.txt +0 -0
  209. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/tokenizers/deepseek-v3/special_tokens_map.json +0 -0
  210. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/tokenizers/deepseek-v3/tokenizer.json +0 -0
  211. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/resources/tokenizers/deepseek-v3/tokenizer_config.json +0 -0
  212. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/stdio.py +0 -0
  213. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/AGENTS.md +0 -0
  214. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/__init__.py +0 -0
  215. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/library/__init__.py +0 -0
  216. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/library/book_manager.py +0 -0
  217. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/models/__init__.py +0 -0
  218. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/models/book.py +0 -0
  219. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/models/config_profile.py +0 -0
  220. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/models/endpoint_profile.py +0 -0
  221. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/repositories/__init__.py +0 -0
  222. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/repositories/document_repository.py +0 -0
  223. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/repositories/llm_batch_store.py +0 -0
  224. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/repositories/task_store.py +0 -0
  225. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/repositories/term_repository.py +0 -0
  226. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/repositories/translation_batch_task_store.py +0 -0
  227. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/schema/__init__.py +0 -0
  228. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/schema/book_db.py +0 -0
  229. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/schema/registry_db.py +0 -0
  230. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/storage/sqlite_locking.py +0 -0
  231. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/AGENTS.md +0 -0
  232. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/__init__.py +0 -0
  233. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/chrome_sizing.py +0 -0
  234. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/app_settings_pane.py +0 -0
  235. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/document_images_view.py +0 -0
  236. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/document_ocr_tab.py +0 -0
  237. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/document_translation_view.py +1 -1
  238. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/document_workspace_view.py +0 -0
  239. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/terms_table_widget.py +0 -0
  240. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/features/terms_view.py +0 -0
  241. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/i18n.py +0 -0
  242. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/json_utils.py +0 -0
  243. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/main.py +0 -0
  244. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/main_window.py +0 -0
  245. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/BootstrapProbe.qml +0 -0
  246. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/document/export/DocumentExportPaneChrome.qml +0 -0
  247. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/document/images/DocumentImagesPaneChrome.qml +0 -0
  248. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/document/ocr/DocumentOCRPaneChrome.qml +0 -0
  249. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml/project/terms/TermsPaneChrome.qml +0 -0
  250. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/qml_resources.py +0 -0
  251. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/resources/__init__.py +0 -0
  252. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/__init__.py +0 -0
  253. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/app_shell_host.py +0 -0
  254. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/document_shell_host.py +0 -0
  255. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/project_shell_host.py +0 -0
  256. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/shell_hosts/queue_shell_host.py +0 -0
  257. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/sleep_inhibitor.py +0 -0
  258. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/startup.py +0 -0
  259. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/tips.py +0 -0
  260. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/__init__.py +0 -0
  261. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/app_settings_dialog.py +0 -0
  262. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/app_shell.py +0 -0
  263. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/base.py +0 -0
  264. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/document_export_pane.py +0 -0
  265. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/document_images_pane.py +0 -0
  266. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/document_ocr_pane.py +0 -0
  267. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/document_shell.py +0 -0
  268. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/project_settings_dialog.py +0 -0
  269. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/project_settings_pane.py +0 -0
  270. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/project_shell.py +0 -0
  271. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/queue_shell.py +0 -0
  272. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/router.py +0 -0
  273. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/terms_pane.py +0 -0
  274. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/viewmodels/work_home.py +0 -0
  275. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/widgets/AGENTS.md +0 -0
  276. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/widgets/hybrid_controls.py +0 -0
  277. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/widgets/image_viewer.py +0 -0
  278. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/widgets/progress_widget.py +0 -0
  279. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/ui/widgets/table_support.py +0 -0
  280. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/AGENTS.md +0 -0
  281. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/__init__.py +0 -0
  282. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/chunking.py +0 -0
  283. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/cjk_normalize.py +0 -0
  284. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/compression_marker.py +0 -0
  285. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/file_utils.py +0 -0
  286. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/hard_wrap.py +0 -0
  287. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/hashing.py +0 -0
  288. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/image_utils.py +0 -0
  289. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/llm_json_cleaner.py +0 -0
  290. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/markdown_escape.py +0 -0
  291. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/pandoc_export.py +0 -0
  292. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/semantic_chunker.py +0 -0
  293. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/string_similarity.py +0 -0
  294. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/utils/symbol_check.py +0 -0
  295. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/AGENTS.md +0 -0
  296. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/__init__.py +0 -0
  297. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/bootstrap.py +0 -0
  298. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/image_fetcher.py +0 -0
  299. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/__init__.py +0 -0
  300. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/bootstrap_ops.py +0 -0
  301. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/export_ops.py +0 -0
  302. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/glossary_ops.py +0 -0
  303. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/import_ops.py +0 -0
  304. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/import_support.py +0 -0
  305. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/ocr_ops.py +0 -0
  306. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/ops/translation_ops.py +0 -0
  307. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/runtime.py +0 -0
  308. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/session.py +0 -0
  309. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/task_runtime.py +0 -0
  310. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/AGENTS.md +0 -0
  311. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/__init__.py +0 -0
  312. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/claims.py +0 -0
  313. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/engine_core.py +0 -0
  314. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/exceptions.py +0 -0
  315. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/execution/AGENTS.md +0 -0
  316. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/execution/__init__.py +0 -0
  317. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/execution/batch_translation_executor.py +0 -0
  318. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/execution/batch_translation_ops.py +0 -0
  319. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/glossary_preflight.py +0 -0
  320. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/AGENTS.md +0 -0
  321. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/__init__.py +0 -0
  322. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/base.py +0 -0
  323. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/batch_translation.py +0 -0
  324. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/chunk_retranslation.py +0 -0
  325. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/glossary_export.py +0 -0
  326. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/glossary_extraction.py +0 -0
  327. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/glossary_review.py +0 -0
  328. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/glossary_translation.py +0 -0
  329. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/image_reembedding.py +0 -0
  330. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/ocr.py +0 -0
  331. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/translate_and_export.py +0 -0
  332. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/translation_manga.py +0 -0
  333. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/handlers/translation_text.py +0 -0
  334. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/models.py +0 -0
  335. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/translate_and_export_support.py +0 -0
  336. {contextweave-2.8.2 → contextweave-2.8.3}/context_aware_translation/workflow/tasks/worker_deps.py +0 -0
  337. {contextweave-2.8.2 → contextweave-2.8.3}/demo/The Count of Monte Cristo.epub +0 -0
  338. {contextweave-2.8.2 → contextweave-2.8.3}/demo//345/237/272/347/235/243/345/261/261/344/274/257/347/210/265.epub" +0 -0
  339. {contextweave-2.8.2 → contextweave-2.8.3}/docs/.nojekyll +0 -0
  340. {contextweave-2.8.2 → contextweave-2.8.3}/docs/examples/contextweave-cli.yaml +0 -0
  341. {contextweave-2.8.2 → contextweave-2.8.3}/docs/index.html +0 -0
  342. {contextweave-2.8.2 → contextweave-2.8.3}/docs/project-terms-manual-entry-ux.md +0 -0
  343. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN/API/351/205/215/347/275/256.png" +0 -0
  344. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN/latest_new_project_dialog.png +0 -0
  345. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN/latest_project_work_overview.png +0 -0
  346. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN/latest_projects_overview.png +0 -0
  347. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN/latest_setup_wizard_provider_selection.png +0 -0
  348. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN/latest_setup_wizard_workflow_profile_review.png +0 -0
  349. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN/latest_terms_overview.png +0 -0
  350. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//345/257/274/345/205/245.png" +0 -0
  351. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//345/257/274/345/207/272.png" +0 -0
  352. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//346/226/260/351/241/271/347/233/256.png" +0 -0
  353. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//346/234/257/350/257/255.png" +0 -0
  354. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//347/277/273/350/257/221.png" +0 -0
  355. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//350/256/276/347/275/256.png" +0 -0
  356. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//350/256/276/347/275/256/345/220/221/345/257/274.png" +0 -0
  357. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/CN//350/256/276/347/275/256/347/273/223/346/235/237.png" +0 -0
  358. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/APISetup.png +0 -0
  359. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/Export.png +0 -0
  360. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/Import.png +0 -0
  361. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/InitialSetup.png +0 -0
  362. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/Language.png +0 -0
  363. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/NewProject.png +0 -0
  364. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/Terms.png +0 -0
  365. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/Translate.png +0 -0
  366. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/TranslateAndExport.png +0 -0
  367. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/Wizard.png +0 -0
  368. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/latest_new_project_dialog.png +0 -0
  369. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/latest_project_work_overview.png +0 -0
  370. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/latest_projects_overview.png +0 -0
  371. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/latest_setup_wizard_provider_selection.png +0 -0
  372. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/latest_setup_wizard_workflow_profile_review.png +0 -0
  373. {contextweave-2.8.2 → contextweave-2.8.3}/docs/screenshots/EN/latest_terms_overview.png +0 -0
  374. {contextweave-2.8.2 → contextweave-2.8.3}/docs/styles.css +0 -0
  375. {contextweave-2.8.2 → contextweave-2.8.3}/installer/AGENTS.md +0 -0
  376. {contextweave-2.8.2 → contextweave-2.8.3}/installer/macos/AGENTS.md +0 -0
  377. {contextweave-2.8.2 → contextweave-2.8.3}/installer/macos/entitlements.plist +0 -0
  378. {contextweave-2.8.2 → contextweave-2.8.3}/installer/windows/AGENTS.md +0 -0
  379. {contextweave-2.8.2 → contextweave-2.8.3}/scripts/AGENTS.md +0 -0
  380. {contextweave-2.8.2 → contextweave-2.8.3}/scripts/build_ui.py +0 -0
  381. {contextweave-2.8.2 → contextweave-2.8.3}/scripts/generate_readme_screenshots.py +0 -0
  382. {contextweave-2.8.2 → contextweave-2.8.3}/scripts/run_ui_tests.py +0 -0
  383. {contextweave-2.8.2 → contextweave-2.8.3}/tests/AGENTS.md +0 -0
  384. {contextweave-2.8.2 → contextweave-2.8.3}/tests/adapters/AGENTS.md +0 -0
  385. {contextweave-2.8.2 → contextweave-2.8.3}/tests/adapters/files/test_glossary_io.py +0 -0
  386. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/fakes.py +0 -0
  387. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_composition.py +0 -0
  388. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_contracts.py +0 -0
  389. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_document_service.py +0 -0
  390. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_document_translation_service.py +0 -0
  391. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_events.py +0 -0
  392. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_export_services.py +0 -0
  393. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_queue_service.py +0 -0
  394. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_terms_service.py +0 -0
  395. {contextweave-2.8.2 → contextweave-2.8.3}/tests/application/test_ui_harness_pattern.py +0 -0
  396. {contextweave-2.8.2 → contextweave-2.8.3}/tests/architecture/test_migrated_ui_boundaries.py +0 -0
  397. {contextweave-2.8.2 → contextweave-2.8.3}/tests/architecture/test_packaging_hidden_imports.py +0 -0
  398. {contextweave-2.8.2 → contextweave-2.8.3}/tests/architecture/test_qml_ui_boundaries.py +0 -0
  399. {contextweave-2.8.2 → contextweave-2.8.3}/tests/cli/test_cli.py +0 -0
  400. {contextweave-2.8.2 → contextweave-2.8.3}/tests/config/AGENTS.md +0 -0
  401. {contextweave-2.8.2 → contextweave-2.8.3}/tests/config/__init__.py +0 -0
  402. {contextweave-2.8.2 → contextweave-2.8.3}/tests/config/test_endpoint_profiles.py +0 -0
  403. {contextweave-2.8.2 → contextweave-2.8.3}/tests/conftest.py +0 -0
  404. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/AGENTS.md +0 -0
  405. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/__init__.py +0 -0
  406. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/expected_batching_output.json +0 -0
  407. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test-terms.json +0 -0
  408. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_context_extractor.py +0 -0
  409. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_context_manager.py +0 -0
  410. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_galgame_document_handler.py +0 -0
  411. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_manga_document_handler.py +0 -0
  412. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_models.py +0 -0
  413. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_noise_filtering_pipeline.py +0 -0
  414. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_term_memory_builder.py +0 -0
  415. {contextweave-2.8.2 → contextweave-2.8.3}/tests/core/test_translation_context_manager_strategy_api.py +0 -0
  416. {contextweave-2.8.2 → contextweave-2.8.3}/tests/data/test_chunk.txt +0 -0
  417. {contextweave-2.8.2 → contextweave-2.8.3}/tests/data/test_chunk2.txt +0 -0
  418. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/AGENTS.md +0 -0
  419. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/__init__.py +0 -0
  420. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/content/AGENTS.md +0 -0
  421. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/content/test_ocr_content.py +0 -0
  422. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/content/test_ocr_items.py +0 -0
  423. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_base.py +0 -0
  424. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_epub.py +0 -0
  425. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_epub_container.py +0 -0
  426. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_epub_inline_markers.py +0 -0
  427. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_epub_xhtml_utils.py +0 -0
  428. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_galgame.py +0 -0
  429. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_manga.py +0 -0
  430. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_manga_alignment.py +0 -0
  431. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_ocr_image_embedded_text.py +0 -0
  432. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_pdf.py +0 -0
  433. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_scanned_book.py +0 -0
  434. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_subtitle.py +0 -0
  435. {contextweave-2.8.2 → contextweave-2.8.3}/tests/documents/test_text.py +0 -0
  436. {contextweave-2.8.2 → contextweave-2.8.3}/tests/integration/AGENTS.md +0 -0
  437. {contextweave-2.8.2 → contextweave-2.8.3}/tests/integration/__init__.py +0 -0
  438. {contextweave-2.8.2 → contextweave-2.8.3}/tests/integration/test_business_logic.py +0 -0
  439. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/AGENTS.md +0 -0
  440. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/__init__.py +0 -0
  441. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_extractor.py +0 -0
  442. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_extractor_unit.py +0 -0
  443. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_gemini_backend.py +0 -0
  444. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_gemini_batch_gateway.py +0 -0
  445. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_glossary_translator.py +0 -0
  446. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_image_generator.py +0 -0
  447. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_image_token_usage.py +0 -0
  448. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_language_detector.py +0 -0
  449. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_language_pair_prompts.py +0 -0
  450. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_llm_client.py +0 -0
  451. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_manga_translator.py +0 -0
  452. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_ocr.py +0 -0
  453. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_reviewer.py +0 -0
  454. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_session_trace.py +0 -0
  455. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_summarizor.py +0 -0
  456. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_token_tracker.py +0 -0
  457. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_token_usage_extraction.py +0 -0
  458. {contextweave-2.8.2 → contextweave-2.8.3}/tests/llm/test_translator.py +0 -0
  459. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/AGENTS.md +0 -0
  460. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/__init__.py +0 -0
  461. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_book_db.py +0 -0
  462. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_book_manager.py +0 -0
  463. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_document_repository.py +0 -0
  464. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_document_tables.py +0 -0
  465. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_llm_batch_store.py +0 -0
  466. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_task_store.py +0 -0
  467. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_term_repository.py +0 -0
  468. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_token_tracking.py +0 -0
  469. {contextweave-2.8.2 → contextweave-2.8.3}/tests/storage/test_translation_batch_task_store.py +0 -0
  470. {contextweave-2.8.2 → contextweave-2.8.3}/tests/test_languages.py +0 -0
  471. {contextweave-2.8.2 → contextweave-2.8.3}/tests/test_logging_handlers.py +0 -0
  472. {contextweave-2.8.2 → contextweave-2.8.3}/tests/test_stdio.py +0 -0
  473. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/AGENTS.md +0 -0
  474. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/__init__.py +0 -0
  475. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/conftest.py +0 -0
  476. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/tasks/test_task_engine.py +0 -0
  477. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_app_settings_dialog_viewmodel.py +0 -0
  478. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_app_shell_viewmodel.py +0 -0
  479. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_export_pane_viewmodel.py +0 -0
  480. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_images_pane_viewmodel.py +0 -0
  481. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_images_view.py +0 -0
  482. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_ocr_tab.py +0 -0
  483. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_shell_host.py +0 -0
  484. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_shell_viewmodel.py +0 -0
  485. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_translation_view.py +0 -0
  486. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_document_workspace_view.py +0 -0
  487. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_i18n_progress_messages.py +0 -0
  488. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_image_viewer.py +0 -0
  489. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_main_window_shell.py +0 -0
  490. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_progress_widget.py +0 -0
  491. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_project_settings_dialog_viewmodel.py +0 -0
  492. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_project_settings_pane_viewmodel.py +0 -0
  493. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_project_shell_viewmodel.py +0 -0
  494. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_qml_viewmodel_harness.py +0 -0
  495. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_queue_drawer_view.py +0 -0
  496. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_queue_shell_viewmodel.py +0 -0
  497. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_sleep_inhibitor.py +0 -0
  498. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_terms_pane_viewmodel.py +0 -0
  499. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_terms_view.py +0 -0
  500. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_viewmodel_base.py +0 -0
  501. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/test_worker_cancellation_reporting.py +0 -0
  502. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_batch_task_overlap_guard.py +0 -0
  503. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_chunk_retranslation_task_worker.py +0 -0
  504. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_config_snapshot_workers.py +0 -0
  505. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_glossary_export_task_worker.py +0 -0
  506. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_glossary_review_task_worker.py +0 -0
  507. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_ocr_task_worker.py +0 -0
  508. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_operation_tracker.py +0 -0
  509. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_translate_and_export_task_worker.py +0 -0
  510. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_translation_manga_task_worker.py +0 -0
  511. {contextweave-2.8.2 → contextweave-2.8.3}/tests/ui/workers/test_translation_text_task_worker.py +0 -0
  512. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/AGENTS.md +0 -0
  513. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/__init__.py +0 -0
  514. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_chunking.py +0 -0
  515. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_cjk_normalize.py +0 -0
  516. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_file_utils.py +0 -0
  517. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_hard_wrap.py +0 -0
  518. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_hashing.py +0 -0
  519. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_llm_json_cleaner.py +0 -0
  520. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_markdown_escape.py +0 -0
  521. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_semantic_chunker.py +0 -0
  522. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_string_similarity.py +0 -0
  523. {contextweave-2.8.2 → contextweave-2.8.3}/tests/utils/test_symbol_check.py +0 -0
  524. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/AGENTS.md +0 -0
  525. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/__init__.py +0 -0
  526. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/AGENTS.md +0 -0
  527. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/__init__.py +0 -0
  528. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/execution/AGENTS.md +0 -0
  529. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/execution/__init__.py +0 -0
  530. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/execution/test_batch_translation_executor.py +0 -0
  531. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/AGENTS.md +0 -0
  532. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/__init__.py +0 -0
  533. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_batch_translation_handler.py +0 -0
  534. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_chunk_retranslation_handler.py +0 -0
  535. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_glossary_export_handler.py +0 -0
  536. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_glossary_extraction_handler.py +0 -0
  537. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_glossary_review_handler.py +0 -0
  538. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_glossary_translation_handler.py +0 -0
  539. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_image_reembedding_handler.py +0 -0
  540. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_ocr_handler.py +0 -0
  541. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_translate_and_export_handler.py +0 -0
  542. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_translation_manga_handler.py +0 -0
  543. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/handlers/test_translation_text_handler.py +0 -0
  544. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/test_claims.py +0 -0
  545. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/tasks/test_engine_core.py +0 -0
  546. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_glossary_ops_scoping.py +0 -0
  547. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_import_export.py +0 -0
  548. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_multi_document.py +0 -0
  549. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_ocr_required_for_translation.py +0 -0
  550. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_run_ocr.py +0 -0
  551. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_service_bootstrap_lock.py +0 -0
  552. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_service_cancellation_semantics.py +0 -0
  553. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_session.py +0 -0
  554. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_translator_image_fetcher.py +0 -0
  555. {contextweave-2.8.2 → contextweave-2.8.3}/tests/workflow/test_translator_import_path.py +0 -0
  556. {contextweave-2.8.2 → contextweave-2.8.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: contextweave
3
- Version: 2.8.2
3
+ Version: 2.8.3
4
4
  Summary: ContextWeave: context-aware document translation with glossary management
5
5
  Project-URL: Homepage, https://github.com/bot-32142/ContextWeave
6
6
  Project-URL: Documentation, https://bot-32142.github.io/ContextWeave/
@@ -20,6 +20,8 @@ APP_VERSION = _pyproject['project']['version']
20
20
 
21
21
  # Collect data files
22
22
  datas = [
23
+ # Runtime version source used by the About dialog.
24
+ (str(project_root / 'pyproject.toml'), '.'),
23
25
  # UI resources
24
26
  (str(project_root / 'context_aware_translation' / 'ui' / 'resources'),
25
27
  'context_aware_translation/ui/resources'),
@@ -0,0 +1,46 @@
1
+ """Constants for the UI module."""
2
+
3
+ import tomllib
4
+ from importlib.metadata import PackageNotFoundError, version
5
+ from pathlib import Path
6
+ from typing import Final
7
+
8
+ from context_aware_translation.languages import (
9
+ LANGUAGES,
10
+ display_target_language_name,
11
+ storage_target_language_name,
12
+ )
13
+
14
+ __all__ = ("LANGUAGES", "display_target_language_name", "storage_target_language_name")
15
+
16
+
17
+ def _application_version() -> str:
18
+ """Return the source version in development and installed metadata in builds."""
19
+ source_pyproject = Path(__file__).resolve().parents[2] / "pyproject.toml"
20
+ try:
21
+ project = tomllib.loads(source_pyproject.read_text(encoding="utf-8")).get("project")
22
+ except (OSError, tomllib.TOMLDecodeError):
23
+ project = None
24
+ if isinstance(project, dict):
25
+ source_version = project.get("version")
26
+ if isinstance(source_version, str) and source_version:
27
+ return source_version
28
+ try:
29
+ return version("context-aware-translation")
30
+ except PackageNotFoundError: # pragma: no cover - only possible in malformed bundles
31
+ return "unknown"
32
+
33
+
34
+ APP_VERSION: Final[str] = _application_version()
35
+
36
+ # Default window dimensions
37
+ DEFAULT_WINDOW_WIDTH: Final[int] = 1120
38
+ DEFAULT_WINDOW_HEIGHT: Final[int] = 760
39
+ MIN_WINDOW_WIDTH: Final[int] = 800
40
+ MIN_WINDOW_HEIGHT: Final[int] = 600
41
+
42
+ # Sidebar width
43
+ SIDEBAR_WIDTH: Final[int] = 280
44
+
45
+ # Table defaults
46
+ DEFAULT_PAGE_SIZE: Final[int] = 50
@@ -4,6 +4,7 @@ from collections.abc import Callable
4
4
  from dataclasses import dataclass
5
5
 
6
6
  from PySide6.QtCore import QT_TRANSLATE_NOOP, QCoreApplication, Qt, QTimer
7
+ from PySide6.QtGui import QShowEvent
7
8
  from PySide6.QtWidgets import (
8
9
  QButtonGroup,
9
10
  QCheckBox,
@@ -435,13 +436,17 @@ class ConnectionEditorDialog(QDialog):
435
436
  set_button_tone(self.button_box.button(QDialogButtonBox.StandardButton.Save), "primary")
436
437
  set_button_tone(self.button_box.button(QDialogButtonBox.StandardButton.Cancel), "ghost")
437
438
  set_button_tone(self.test_button)
438
- self.form.advanced_section.toggled.connect(self._schedule_resize)
439
- self.form.tabs.currentChanged.connect(lambda _index: self._schedule_resize())
440
- self._schedule_resize()
439
+ self.form.advanced_section.toggled.connect(self._schedule_content_layout)
440
+ self.form.tabs.currentChanged.connect(lambda _index: self._schedule_content_layout())
441
+ self._schedule_content_layout()
441
442
 
442
443
  def request(self) -> SaveConnectionRequest:
443
444
  return SaveConnectionRequest(connection=self.form.to_draft(), connection_id=self._connection_id)
444
445
 
446
+ def showEvent(self, event: QShowEvent) -> None:
447
+ super().showEvent(event)
448
+ self._refresh_content_layout()
449
+
445
450
  def _accept_if_valid(self) -> None:
446
451
  valid, message = self.form.validate(require_api_key=self._connection_id is None)
447
452
  if not valid:
@@ -473,14 +478,11 @@ class ConnectionEditorDialog(QDialog):
473
478
  self.uncached_input_label.setText(f"{summary.uncached_input_tokens_used:,}")
474
479
  self.output_used_label.setText(f"{summary.output_tokens_used:,}")
475
480
 
476
- def _schedule_resize(self, *_args: object) -> None:
477
- QTimer.singleShot(0, self._resize_to_content)
478
- QTimer.singleShot(220, self._resize_to_content)
481
+ def _schedule_content_layout(self, *_args: object) -> None:
482
+ QTimer.singleShot(0, self._refresh_content_layout)
483
+ QTimer.singleShot(220, self._refresh_content_layout)
479
484
 
480
- def _resize_to_content(self) -> None:
481
- current_tab = self.form.tabs.currentIndex()
482
- is_advanced = current_tab == 0 and self.form.advanced_section.isExpanded()
483
- target_width = 960 if is_advanced else 860
485
+ def _refresh_content_layout(self) -> None:
484
486
  current_widget = self.form.tabs.currentWidget()
485
487
  if current_widget is not None:
486
488
  current_widget.adjustSize()
@@ -489,13 +491,6 @@ class ConnectionEditorDialog(QDialog):
489
491
  self.form.tabs.setFixedHeight(tab_height)
490
492
  self.layout().activate()
491
493
  self.form.adjustSize()
492
- if current_tab == 0 and not is_advanced:
493
- target_height = 520
494
- elif current_tab == 1:
495
- target_height = 560 if self._connection_summary is not None else 500
496
- else:
497
- target_height = min(max(self.sizeHint().height(), 620), 760)
498
- self.resize(max(self.width(), self.minimumWidth(), target_width), max(self.minimumHeight(), target_height))
499
494
 
500
495
  def _show_test_result(self, result: ConnectionTestResult) -> None:
501
496
  lines = [result.connection_label]
@@ -748,8 +743,8 @@ class SetupWizardDialog(QDialog):
748
743
  self.page_layout.addWidget(profile_group)
749
744
  self.page_layout.addStretch()
750
745
  self._update_buttons()
751
- QTimer.singleShot(0, self._resize_to_page)
752
- QTimer.singleShot(120, self._resize_to_page)
746
+ QTimer.singleShot(0, self._refresh_page_layout)
747
+ QTimer.singleShot(120, self._refresh_page_layout)
753
748
 
754
749
  def selected_providers(self) -> list[ProviderKind]:
755
750
  checked = [provider for provider, (checkbox, _) in self._provider_inputs.items() if checkbox.isChecked()]
@@ -903,12 +898,9 @@ class SetupWizardDialog(QDialog):
903
898
  self.next_button.setVisible(self._page_index < 1)
904
899
  self.finish_button.setVisible(self._page_index == 1)
905
900
 
906
- def _resize_to_page(self) -> None:
901
+ def _refresh_page_layout(self) -> None:
907
902
  self.layout().activate()
908
903
  self.page_content.adjustSize()
909
- minimum_height = 360 if self._page_index == 0 else 520
910
- target_height = min(max(self.sizeHint().height(), minimum_height), 760)
911
- self.resize(max(self.width(), 780), target_height)
912
904
 
913
905
  def _clear_page_layout(self) -> None:
914
906
  while self.page_layout.count():
@@ -166,6 +166,8 @@ class LibraryView(QWidget):
166
166
 
167
167
  def _setup_ui(self) -> None:
168
168
  layout = QVBoxLayout(self)
169
+ layout.setContentsMargins(18, 14, 18, 18)
170
+ layout.setSpacing(12)
169
171
 
170
172
  self.tip_label = create_tip_label(self._tip_text())
171
173
  layout.addWidget(self.tip_label)
@@ -188,8 +190,12 @@ class LibraryView(QWidget):
188
190
  self.table_view.setSortingEnabled(True)
189
191
  self.table_view.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
190
192
  self.table_view.verticalHeader().setVisible(False)
193
+ self.table_view.verticalHeader().setDefaultSectionSize(44)
194
+ self.table_view.verticalHeader().setMinimumSectionSize(44)
195
+ self.table_view.setShowGrid(False)
191
196
 
192
197
  header = self.table_view.horizontalHeader()
198
+ header.setMinimumHeight(40)
193
199
  header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch)
194
200
  header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents)
195
201
  header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents)
@@ -68,11 +68,10 @@ class ProjectSettingsPane(QWidget):
68
68
  context_objects={"projectSettingsPane": self.viewmodel},
69
69
  parent=self,
70
70
  )
71
- layout.addWidget(self.chrome_host)
72
71
 
73
72
  self.profile_section = QWidget(self)
74
73
  profile_layout = QVBoxLayout(self.profile_section)
75
- profile_layout.setContentsMargins(18, 0, 18, 0)
74
+ profile_layout.setContentsMargins(18, 14, 18, 0)
76
75
  profile_layout.setSpacing(6)
77
76
  self.profile_label = QLabel(self.tr("Workflow profile"), self.profile_section)
78
77
  self.profile_label.setStyleSheet("font-size: 14px; font-weight: 600; color: #2f251d;")
@@ -92,7 +91,7 @@ class ProjectSettingsPane(QWidget):
92
91
  profile_layout.addWidget(self.profile_combo)
93
92
  self.profile_detail_label = QLabel(self.profile_section)
94
93
  self.profile_detail_label.setWordWrap(True)
95
- self.profile_detail_label.setStyleSheet("color: #6e6154; font-size: 12px;")
94
+ self.profile_detail_label.setStyleSheet("color: #6e6154; font-size: 13px;")
96
95
  profile_layout.addWidget(self.profile_detail_label)
97
96
  layout.addWidget(self.profile_section)
98
97
 
@@ -106,7 +105,7 @@ class ProjectSettingsPane(QWidget):
106
105
  [],
107
106
  [],
108
107
  hint_text=self.tr("Use the Advanced column to edit step-specific settings."),
109
- max_visible_rows=6,
108
+ max_visible_rows=3,
110
109
  parent=self.routes_group,
111
110
  )
112
111
  self.routes_editor.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Maximum)
@@ -116,6 +115,7 @@ class ProjectSettingsPane(QWidget):
116
115
  group_layout.addWidget(self.routes_editor)
117
116
  layout.addWidget(self.routes_group, 0, Qt.AlignmentFlag.AlignTop)
118
117
  layout.addStretch(1)
118
+ layout.addWidget(self.chrome_host)
119
119
  self.routes_group.hide()
120
120
 
121
121
  apply_hybrid_control_theme(self)
@@ -210,7 +210,7 @@ class ProjectSettingsPane(QWidget):
210
210
 
211
211
  options: list[dict[str, object]] = []
212
212
  option_values: list[str] = []
213
- shared_detail = self.tr("Shared workflow profile")
213
+ shared_detail = ""
214
214
  for profile in state.shared_profiles:
215
215
  options.append(
216
216
  {
@@ -247,7 +247,7 @@ class QueueDrawerView(QWidget):
247
247
 
248
248
  self.message_label = QLabel()
249
249
  self.message_label.setWordWrap(True)
250
- self.message_label.setStyleSheet("color: #475467;")
250
+ self.message_label.setStyleSheet("color: #675b4e;")
251
251
  layout.addWidget(self.message_label)
252
252
 
253
253
  self.body_stack = QStackedWidget(self)
@@ -6,6 +6,7 @@ from PySide6.QtCore import QEvent, Qt, QTimer, Signal
6
6
  from PySide6.QtWidgets import (
7
7
  QFileDialog,
8
8
  QHBoxLayout,
9
+ QHeaderView,
9
10
  QLabel,
10
11
  QMessageBox,
11
12
  QPushButton,
@@ -50,6 +51,7 @@ from context_aware_translation.ui.i18n import translate_backend_text
50
51
  from context_aware_translation.ui.shell_hosts.hybrid import QmlChromeHost
51
52
  from context_aware_translation.ui.tips import create_tip_label
52
53
  from context_aware_translation.ui.viewmodels.work_home import WorkHomeViewModel
54
+ from context_aware_translation.ui.widgets.hybrid_controls import apply_hybrid_control_theme, set_button_tone
53
55
  from context_aware_translation.ui.widgets.table_support import (
54
56
  apply_header_resize_modes,
55
57
  configure_readonly_row_table,
@@ -68,25 +70,6 @@ _TARGET_TO_SECTION: dict[NavigationTargetKind, DocumentSection] = {
68
70
  class WorkView(QWidget):
69
71
  _TABLE_MAX_VISIBLE_ROWS = 10
70
72
  _HARD_WRAP_IMPORT_TYPES = frozenset({"text", "epub"})
71
- _TOOLBAR_BUTTON_STYLE = """
72
- QPushButton {
73
- min-width: 150px;
74
- min-height: 38px;
75
- padding: 0 16px;
76
- border-radius: 14px;
77
- border: 1px solid #d9d0c4;
78
- background: #f8f3ea;
79
- color: #2f251d;
80
- font-weight: 600;
81
- }
82
- QPushButton:hover:enabled {
83
- background: #efe7da;
84
- }
85
- QPushButton:disabled {
86
- background: #efe7da;
87
- color: #8b8174;
88
- }
89
- """
90
73
 
91
74
  open_app_setup_requested = Signal()
92
75
  open_project_setup_requested = Signal()
@@ -185,20 +168,17 @@ class WorkView(QWidget):
185
168
  row_actions = QHBoxLayout()
186
169
  self.translate_and_export_button = QPushButton(self.tr("Translate and Export"))
187
170
  self.translate_and_export_button.setEnabled(False)
188
- self.translate_and_export_button.setStyleSheet(self._TOOLBAR_BUTTON_STYLE)
189
171
  self.translate_and_export_button.clicked.connect(self._open_selected_translate_and_export_dialog)
190
172
  row_actions.addWidget(self.translate_and_export_button)
173
+ row_actions.addStretch()
191
174
  self.reset_document_button = QPushButton(self.tr("Reset Document"))
192
175
  self.reset_document_button.setEnabled(False)
193
- self.reset_document_button.setStyleSheet(self._TOOLBAR_BUTTON_STYLE)
194
176
  self.reset_document_button.clicked.connect(self._reset_selected_document)
195
177
  row_actions.addWidget(self.reset_document_button)
196
178
  self.delete_document_button = QPushButton(self.tr("Delete Document"))
197
179
  self.delete_document_button.setEnabled(False)
198
- self.delete_document_button.setStyleSheet(self._TOOLBAR_BUTTON_STYLE)
199
180
  self.delete_document_button.clicked.connect(self._delete_selected_document)
200
181
  row_actions.addWidget(self.delete_document_button)
201
- row_actions.addStretch()
202
182
  home_layout.addLayout(row_actions)
203
183
 
204
184
  self.empty_label = create_tip_label(self.tr("No documents imported yet."))
@@ -208,6 +188,10 @@ class WorkView(QWidget):
208
188
 
209
189
  self.stack.addWidget(self.home_page)
210
190
  layout.addWidget(self.stack)
191
+ apply_hybrid_control_theme(self)
192
+ set_button_tone(self.translate_and_export_button, "primary", size="wide")
193
+ set_button_tone(self.reset_document_button, "ghost", size="wide")
194
+ set_button_tone(self.delete_document_button, "danger", size="wide")
211
195
  self._sync_import_chrome_state()
212
196
  self._schedule_chrome_resize()
213
197
 
@@ -283,6 +267,8 @@ class WorkView(QWidget):
283
267
  self._schedule_chrome_resize()
284
268
 
285
269
  def _apply_state(self, state: WorkboardState) -> None:
270
+ selected = self._selected_row_state()
271
+ selected_document_id = selected.document.document_id if selected is not None else None
286
272
  self._state = state
287
273
  context_summary = (
288
274
  translate_backend_text(state.context_frontier.summary)
@@ -308,10 +294,19 @@ class WorkView(QWidget):
308
294
  for row_state in state.rows:
309
295
  self._append_row(row_state)
310
296
  self.rows_table.resizeColumnsToContents()
311
- apply_header_resize_modes(self.rows_table, (), column_widths=((1, 280), (3, 170), (4, 170), (5, 170)))
297
+ apply_header_resize_modes(
298
+ self.rows_table,
299
+ ((1, QHeaderView.ResizeMode.Stretch),),
300
+ column_widths=((3, 170), (4, 170), (5, 170)),
301
+ )
312
302
  self.rows_table.horizontalHeader().setStretchLastSection(False)
313
303
  self._ensure_row_heights()
314
304
  self._fit_table_height()
305
+ if selected_document_id is not None:
306
+ for row, row_state in enumerate(self._row_states):
307
+ if row_state.document.document_id == selected_document_id:
308
+ self.rows_table.selectRow(row)
309
+ break
315
310
  self._on_selection_changed()
316
311
  self._schedule_chrome_resize()
317
312
 
@@ -339,6 +334,7 @@ class WorkView(QWidget):
339
334
  def _build_status_badge(self, text: str, *, tooltip: str) -> QWidget:
340
335
  background, foreground = self._status_colors(text)
341
336
  label = QLabel(text)
337
+ label.setAttribute(Qt.WidgetAttribute.WA_TransparentForMouseEvents)
342
338
  label.setAlignment(Qt.AlignmentFlag.AlignCenter)
343
339
  label.setToolTip(tooltip)
344
340
  label.setStyleSheet(
@@ -351,6 +347,7 @@ class WorkView(QWidget):
351
347
  "}"
352
348
  )
353
349
  container = QWidget(self.rows_table)
350
+ container.setAttribute(Qt.WidgetAttribute.WA_TransparentForMouseEvents)
354
351
  layout = QHBoxLayout(container)
355
352
  layout.setContentsMargins(6, 2, 6, 2)
356
353
  layout.setSpacing(0)
@@ -5,7 +5,7 @@ from collections.abc import Callable, Mapping
5
5
  from dataclasses import dataclass
6
6
 
7
7
  from PySide6.QtCore import QT_TRANSLATE_NOOP, Qt, QTimer
8
- from PySide6.QtGui import QResizeEvent
8
+ from PySide6.QtGui import QResizeEvent, QShowEvent
9
9
  from PySide6.QtWidgets import (
10
10
  QCheckBox,
11
11
  QComboBox,
@@ -1250,6 +1250,10 @@ class WorkflowProfileEditorDialog(QDialog):
1250
1250
  is_default=self._original_profile.is_default,
1251
1251
  )
1252
1252
 
1253
+ def showEvent(self, event: QShowEvent) -> None:
1254
+ super().showEvent(event)
1255
+ self._refresh_body_layout()
1256
+
1253
1257
  def _accept_if_valid(self) -> None:
1254
1258
  target_language = self.target_language_combo.currentText().strip()
1255
1259
  if not target_language:
@@ -4,7 +4,8 @@ Rectangle {
4
4
  id: root
5
5
  objectName: "appShellChrome"
6
6
  color: "#f6f3ed"
7
- height: 88
7
+ implicitHeight: 64
8
+ height: implicitHeight
8
9
 
9
10
  signal projectsRequested
10
11
  signal setupWizardRequested
@@ -40,21 +41,11 @@ Rectangle {
40
41
  anchors.verticalCenter: parent.verticalCenter
41
42
  spacing: 10
42
43
 
43
- Column {
44
- spacing: 3
45
-
46
- Text {
47
- text: root.appName
48
- color: "#2f251d"
49
- font.pixelSize: 20
50
- font.bold: true
51
- }
52
-
53
- Text {
54
- text: root.surfaceTitle
55
- color: "#786b5e"
56
- font.pixelSize: 12
57
- }
44
+ Text {
45
+ text: root.appName
46
+ color: "#2f251d"
47
+ font.pixelSize: 21
48
+ font.weight: Font.DemiBold
58
49
  }
59
50
  }
60
51
 
@@ -76,8 +67,8 @@ Rectangle {
76
67
  anchors.centerIn: parent
77
68
  text: root.queueLabelText
78
69
  color: "#2f251d"
79
- font.pixelSize: 13
80
- font.bold: true
70
+ font.pixelSize: 14
71
+ font.weight: Font.DemiBold
81
72
  }
82
73
 
83
74
  MouseArea {
@@ -98,8 +89,8 @@ Rectangle {
98
89
  anchors.centerIn: parent
99
90
  text: root.appSettingsLabelText
100
91
  color: "#2f251d"
101
- font.pixelSize: 13
102
- font.bold: true
92
+ font.pixelSize: 14
93
+ font.weight: Font.DemiBold
103
94
  }
104
95
 
105
96
  MouseArea {
@@ -121,8 +112,8 @@ Rectangle {
121
112
  anchors.centerIn: parent
122
113
  text: root.setupWizardLabelText
123
114
  color: "#2f251d"
124
- font.pixelSize: 13
125
- font.bold: true
115
+ font.pixelSize: 14
116
+ font.weight: Font.DemiBold
126
117
  }
127
118
 
128
119
  MouseArea {
@@ -146,8 +137,8 @@ Rectangle {
146
137
  anchors.centerIn: parent
147
138
  text: root.backToProjectsLabelText
148
139
  color: "#2f251d"
149
- font.pixelSize: 13
150
- font.bold: true
140
+ font.pixelSize: 14
141
+ font.weight: Font.DemiBold
151
142
  }
152
143
 
153
144
  MouseArea {
@@ -91,6 +91,7 @@ Rectangle {
91
91
 
92
92
  Flow {
93
93
  width: parent.width
94
+ height: Math.max(40, childrenRect.height)
94
95
  spacing: 8
95
96
 
96
97
  Repeater {
@@ -4,8 +4,8 @@ import QtQuick.Controls
4
4
  Rectangle {
5
5
  id: root
6
6
  objectName: "projectSettingsPaneChrome"
7
- color: "#fcfaf6"
8
- implicitHeight: contentColumn.implicitHeight + 36
7
+ color: "#f8f3ea"
8
+ implicitHeight: contentColumn.implicitHeight + 24
9
9
 
10
10
  signal saveRequested
11
11
  signal openAppSetupRequested
@@ -57,12 +57,20 @@ Rectangle {
57
57
  return kind === "error" ? "#b42318" : "#027a48"
58
58
  }
59
59
 
60
+ Rectangle {
61
+ anchors.left: parent.left
62
+ anchors.right: parent.right
63
+ anchors.top: parent.top
64
+ height: 1
65
+ color: "#e5ddd0"
66
+ }
67
+
60
68
  Column {
61
69
  id: contentColumn
62
70
  anchors.left: parent.left
63
71
  anchors.right: parent.right
64
72
  anchors.top: parent.top
65
- anchors.margins: 18
73
+ anchors.margins: 12
66
74
  spacing: 12
67
75
 
68
76
  Text {
@@ -72,7 +80,7 @@ Rectangle {
72
80
  text: root.titleText
73
81
  color: "#2f251d"
74
82
  font.pixelSize: 24
75
- font.bold: true
83
+ font.weight: Font.DemiBold
76
84
  wrapMode: Text.WordWrap
77
85
  }
78
86
 
@@ -112,7 +120,7 @@ Rectangle {
112
120
  width: parent.width
113
121
  text: root.blockerText
114
122
  color: "#9a3412"
115
- font.pixelSize: 12
123
+ font.pixelSize: 13
116
124
  wrapMode: Text.WordWrap
117
125
  }
118
126
 
@@ -128,8 +136,8 @@ Rectangle {
128
136
  anchors.centerIn: parent
129
137
  text: root.openAppSetupLabel
130
138
  color: root.secondaryLabelColor()
131
- font.pixelSize: 12
132
- font.bold: true
139
+ font.pixelSize: 13
140
+ font.weight: Font.DemiBold
133
141
  }
134
142
 
135
143
  MouseArea {
@@ -163,17 +171,19 @@ Rectangle {
163
171
  anchors.margins: 10
164
172
  text: root.messageText
165
173
  color: root.messageTextColor(root.messageKind)
166
- font.pixelSize: 12
167
- font.bold: true
174
+ font.pixelSize: 13
175
+ font.weight: Font.DemiBold
168
176
  wrapMode: Text.WordWrap
169
177
  }
170
178
  }
171
179
 
172
- Row {
180
+ Item {
173
181
  id: actionRow
174
- spacing: 8
182
+ width: parent.width
183
+ height: 40
175
184
 
176
185
  Rectangle {
186
+ anchors.right: parent.right
177
187
  width: saveButtonLabel.implicitWidth + 28
178
188
  height: 40
179
189
  radius: 14
@@ -184,8 +194,8 @@ Rectangle {
184
194
  anchors.centerIn: parent
185
195
  text: root.saveLabel
186
196
  color: root.primaryLabelColor(root.canSave)
187
- font.pixelSize: 12
188
- font.bold: true
197
+ font.pixelSize: 13
198
+ font.weight: Font.DemiBold
189
199
  }
190
200
 
191
201
  MouseArea {
@@ -56,8 +56,8 @@ Rectangle {
56
56
  anchors.centerIn: parent
57
57
  text: root.backToWorkLabelText
58
58
  color: "#2f251d"
59
- font.pixelSize: 13
60
- font.bold: true
59
+ font.pixelSize: 14
60
+ font.weight: Font.DemiBold
61
61
  }
62
62
 
63
63
  MouseArea {
@@ -75,8 +75,8 @@ Rectangle {
75
75
  width: parent.width
76
76
  text: root.surfaceTitleText
77
77
  color: "#2f251d"
78
- font.pixelSize: 22
79
- font.bold: true
78
+ font.pixelSize: 23
79
+ font.weight: Font.DemiBold
80
80
  wrapMode: Text.WordWrap
81
81
  }
82
82
 
@@ -84,7 +84,7 @@ Rectangle {
84
84
  width: parent.width
85
85
  text: root.scopeTipText
86
86
  color: "#76695d"
87
- font.pixelSize: 12
87
+ font.pixelSize: 13
88
88
  lineHeight: 1.2
89
89
  wrapMode: Text.WordWrap
90
90
  }
@@ -104,8 +104,8 @@ Rectangle {
104
104
  anchors.centerIn: parent
105
105
  text: root.ocrLabelText
106
106
  color: root.ocrSelected ? "#fcfaf6" : "#2f251d"
107
- font.pixelSize: 13
108
- font.bold: true
107
+ font.pixelSize: 14
108
+ font.weight: Font.DemiBold
109
109
  }
110
110
 
111
111
  MouseArea {
@@ -125,8 +125,8 @@ Rectangle {
125
125
  anchors.centerIn: parent
126
126
  text: root.termsLabelText
127
127
  color: root.termsSelected ? "#fcfaf6" : "#2f251d"
128
- font.pixelSize: 13
129
- font.bold: true
128
+ font.pixelSize: 14
129
+ font.weight: Font.DemiBold
130
130
  }
131
131
 
132
132
  MouseArea {
@@ -146,8 +146,8 @@ Rectangle {
146
146
  anchors.centerIn: parent
147
147
  text: root.translationLabelText
148
148
  color: root.translationSelected ? "#fcfaf6" : "#2f251d"
149
- font.pixelSize: 13
150
- font.bold: true
149
+ font.pixelSize: 14
150
+ font.weight: Font.DemiBold
151
151
  }
152
152
 
153
153
  MouseArea {
@@ -167,8 +167,8 @@ Rectangle {
167
167
  anchors.centerIn: parent
168
168
  text: root.imagesLabelText
169
169
  color: root.imagesSelected ? "#fcfaf6" : "#2f251d"
170
- font.pixelSize: 13
171
- font.bold: true
170
+ font.pixelSize: 14
171
+ font.weight: Font.DemiBold
172
172
  }
173
173
 
174
174
  MouseArea {
@@ -188,8 +188,8 @@ Rectangle {
188
188
  anchors.centerIn: parent
189
189
  text: root.exportLabelText
190
190
  color: root.exportSelected ? "#fcfaf6" : "#2f251d"
191
- font.pixelSize: 13
192
- font.bold: true
191
+ font.pixelSize: 14
192
+ font.weight: Font.DemiBold
193
193
  }
194
194
 
195
195
  MouseArea {