contextweave 2.8.0__tar.gz → 2.8.2__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.
- {contextweave-2.8.0 → contextweave-2.8.2}/PKG-INFO +1 -1
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/language_pair_prompts/__init__.py +9 -2
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/language_pair_prompts/japanese_to_simplified_chinese.py +17 -2
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/translator.py +7 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/document_translation_view.py +4 -1
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/app/AppShellChrome.qml +6 -6
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/queue/QueueShellChrome.qml +12 -12
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/resources/styles.qss +34 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/pyproject.toml +1 -1
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_language_pair_prompts.py +18 -2
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_app_shell_host.py +1 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_translation_view.py +51 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_main.py +10 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_queue_shell_host.py +1 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/.github/workflows/release.yml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/.gitignore +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/LICENSE +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/Makefile +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/README.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/README_ZH.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/cat-ui.spec +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/files/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/files/glossary_io.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/application_event_bridge.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/task_engine.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/base_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/batch_task_overlap_guard.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/batch_translation_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/chunk_retranslation_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/export_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/glossary_export_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/glossary_extraction_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/glossary_review_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/glossary_translation_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/image_reembedding_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/import_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/ocr_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/operation_tracker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/translate_and_export_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/translation_manga_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/translation_text_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/app_identity.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/composition.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/app_setup.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/common.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/document.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/project_setup.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/projects.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/queue.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/terms.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/work.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/errors.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/events.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/runtime.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/_export_support.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/app_setup.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/document.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/project_setup.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/projects.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/queue.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/terms.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/work.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/cli/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/cli/config_file.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/cli/galgame_skill.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/cli/main.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/cli/output.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/cli/runtime.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/cli/wait.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/config.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/cancellation.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/context_extractor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/context_manager.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/galgame_document_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/manga_document_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/models.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/progress.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/term_memory.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/term_memory_builder.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/translation_strategies.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/base.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/content/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/content/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/content/ocr_content.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/content/ocr_items.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_container.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/container_model.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/container_patch.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/container_reader.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/container_shared.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/container_writer.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/inline_markers.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/nav_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/slot_lines.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_support/xml_utils.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/epub_xhtml_utils.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/galgame.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/manga.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/manga_alignment.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/manga_reembed_planner.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/pdf.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/scanned_book.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/subtitle.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/text.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/languages.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/batch_jobs/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/batch_jobs/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/batch_jobs/base.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/batch_jobs/gemini_gateway.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/client.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/epub_ocr.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/extractor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/glossary_translator.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/image_backend_base.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/image_backends/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/image_backends/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/image_backends/gemini_backend.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/image_backends/openai_backend.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/image_backends/qwen_backend.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/image_generator.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/language_detector.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/manga_ocr.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/manga_translator.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/ocr.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/reviewer.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/session_trace.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/summarizor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/token_tracker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/llm/translation_strategies.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/hk2s.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/jp2s.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/s2hk.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/s2t.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/s2tw.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/s2twp.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/t2hk.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/t2s.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/t2tw.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/tw2s.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/config/tw2sp.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/HKVariants.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/HKVariantsPhrases.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/HKVariantsRev.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/HKVariantsRevPhrases.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/JPVariants.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/JPVariantsRev.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/STCharacters.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/STPhrases.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/TSCharacters.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/TSPhrases.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/TWPhrases.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/TWPhrasesRev.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/TWVariants.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/TWVariantsRev.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/opencc/dictionary/TWVariantsRevPhrases.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/tokenizers/deepseek-v3/special_tokens_map.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/tokenizers/deepseek-v3/tokenizer.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/resources/tokenizers/deepseek-v3/tokenizer_config.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/stdio.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/library/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/library/book_manager.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/models/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/models/book.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/models/config_profile.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/models/endpoint_profile.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/repositories/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/repositories/document_repository.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/repositories/llm_batch_store.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/repositories/task_store.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/repositories/term_repository.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/repositories/translation_batch_task_store.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/schema/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/schema/book_db.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/schema/registry_db.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/storage/sqlite_locking.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/chrome_sizing.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/constants.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/app_settings_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/app_setup_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/document_images_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/document_ocr_tab.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/document_workspace_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/library_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/project_settings_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/queue_drawer_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/terms_table_widget.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/terms_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/work_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/features/workflow_profile_editor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/i18n.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/json_utils.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/main.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/main_window.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/BootstrapProbe.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/dialogs/app_settings/AppSettingsDialogChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/dialogs/app_settings/AppSettingsPane.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/dialogs/project_settings/ProjectSettingsDialogChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/dialogs/project_settings/ProjectSettingsPane.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/document/DocumentShellChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/document/export/DocumentExportPaneChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/document/images/DocumentImagesPaneChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/document/ocr/DocumentOCRPaneChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/document/translation/DocumentTranslationPaneChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/project/ProjectShellChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/project/terms/TermsPaneChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/project/work_home/WorkHomeChrome.qml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml_resources.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/resources/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/app_settings_dialog_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/app_shell_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/document_shell_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/hybrid.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/project_settings_dialog_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/project_shell_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/shell_hosts/queue_shell_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/sleep_inhibitor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/startup.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/tips.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/translations/zh_CN.qm +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/translations/zh_CN.ts +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/app_settings_dialog.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/app_settings_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/app_shell.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/base.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/document_export_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/document_images_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/document_ocr_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/document_shell.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/document_translation_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/project_settings_dialog.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/project_settings_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/project_shell.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/queue_shell.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/router.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/terms_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/viewmodels/work_home.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/widgets/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/widgets/hybrid_controls.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/widgets/image_viewer.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/widgets/progress_widget.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/widgets/table_support.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/window_controllers.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/chunking.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/cjk_normalize.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/compression_marker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/file_utils.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/hard_wrap.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/hashing.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/image_utils.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/llm_json_cleaner.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/markdown_escape.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/pandoc_export.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/semantic_chunker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/string_similarity.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/utils/symbol_check.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/bootstrap.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/image_fetcher.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/bootstrap_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/export_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/glossary_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/import_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/import_support.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/ocr_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/ops/translation_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/runtime.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/session.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/task_runtime.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/claims.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/engine_core.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/exceptions.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/execution/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/execution/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/execution/batch_translation_executor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/execution/batch_translation_ops.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/glossary_preflight.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/base.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/batch_translation.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/chunk_retranslation.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/glossary_export.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/glossary_extraction.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/glossary_review.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/glossary_translation.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/image_reembedding.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/ocr.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/translate_and_export.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/translation_manga.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/handlers/translation_text.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/models.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/translate_and_export_support.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/workflow/tasks/worker_deps.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/demo/The Count of Monte Cristo.epub +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/demo//345/237/272/347/235/243/345/261/261/344/274/257/347/210/265.epub" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/.nojekyll +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/examples/contextweave-cli.yaml +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/index.html +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/project-terms-manual-entry-ux.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN/API/351/205/215/347/275/256.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN/latest_new_project_dialog.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN/latest_project_work_overview.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN/latest_projects_overview.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN/latest_setup_wizard_provider_selection.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN/latest_setup_wizard_workflow_profile_review.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN/latest_terms_overview.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//345/257/274/345/205/245.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//345/257/274/345/207/272.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//346/226/260/351/241/271/347/233/256.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//346/234/257/350/257/255.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//347/277/273/350/257/221.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//350/256/276/347/275/256.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//350/256/276/347/275/256/345/220/221/345/257/274.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/CN//350/256/276/347/275/256/347/273/223/346/235/237.png" +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/APISetup.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/Export.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/Import.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/InitialSetup.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/Language.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/NewProject.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/Terms.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/Translate.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/TranslateAndExport.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/Wizard.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/latest_new_project_dialog.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/latest_project_work_overview.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/latest_projects_overview.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/latest_setup_wizard_provider_selection.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/latest_setup_wizard_workflow_profile_review.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/screenshots/EN/latest_terms_overview.png +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/docs/styles.css +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/installer/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/installer/macos/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/installer/macos/entitlements.plist +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/installer/windows/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/scripts/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/scripts/build_ui.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/scripts/generate_readme_screenshots.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/scripts/run_ui_tests.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/adapters/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/adapters/files/test_glossary_io.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/fakes.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_composition.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_contracts.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_document_service.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_document_translation_service.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_events.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_export_services.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_queue_service.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_terms_service.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/application/test_ui_harness_pattern.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/architecture/test_migrated_ui_boundaries.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/architecture/test_packaging_hidden_imports.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/architecture/test_qml_ui_boundaries.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/cli/test_cli.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/config/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/config/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/config/test_endpoint_profiles.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/conftest.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/expected_batching_output.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test-terms.json +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_context_extractor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_context_manager.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_galgame_document_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_manga_document_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_models.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_noise_filtering_pipeline.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_term_memory_builder.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/core/test_translation_context_manager_strategy_api.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/data/test_chunk.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/data/test_chunk2.txt +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/content/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/content/test_ocr_content.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/content/test_ocr_items.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_base.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_epub.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_epub_container.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_epub_inline_markers.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_epub_xhtml_utils.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_galgame.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_manga.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_manga_alignment.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_ocr_image_embedded_text.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_pdf.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_scanned_book.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_subtitle.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/documents/test_text.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/integration/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/integration/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/integration/test_business_logic.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_extractor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_extractor_unit.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_gemini_backend.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_gemini_batch_gateway.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_glossary_translator.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_image_generator.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_image_token_usage.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_language_detector.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_llm_client.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_manga_translator.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_ocr.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_reviewer.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_session_trace.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_summarizor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_token_tracker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_token_usage_extraction.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/llm/test_translator.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_book_db.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_book_manager.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_document_repository.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_document_tables.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_llm_batch_store.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_task_store.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_term_repository.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_token_tracking.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/storage/test_translation_batch_task_store.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/test_languages.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/test_logging_handlers.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/test_stdio.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/conftest.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/tasks/test_task_engine.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_app_settings_dialog_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_app_settings_dialog_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_app_settings_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_app_settings_pane_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_app_setup_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_app_shell_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_export_pane_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_images_pane_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_images_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_ocr_tab.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_shell_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_shell_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_translation_pane_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_document_workspace_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_i18n_progress_messages.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_image_viewer.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_library_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_main_window_shell.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_progress_widget.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_project_settings_dialog_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_project_settings_dialog_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_project_settings_pane.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_project_settings_pane_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_project_shell_host.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_project_shell_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_qml_bootstrap.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_qml_viewmodel_harness.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_queue_drawer_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_queue_shell_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_shell_host_infrastructure.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_sleep_inhibitor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_terms_pane_viewmodel.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_terms_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_ui_clickthrough_smoke.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_viewmodel_base.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_work_view.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_worker_cancellation_reporting.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/test_workflow_profile_editor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_batch_task_overlap_guard.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_chunk_retranslation_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_config_snapshot_workers.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_glossary_export_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_glossary_review_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_ocr_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_operation_tracker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_translate_and_export_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_translation_manga_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/ui/workers/test_translation_text_task_worker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_chunking.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_cjk_normalize.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_file_utils.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_hard_wrap.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_hashing.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_llm_json_cleaner.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_markdown_escape.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_semantic_chunker.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_string_similarity.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/utils/test_symbol_check.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/execution/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/execution/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/execution/test_batch_translation_executor.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/AGENTS.md +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/__init__.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_batch_translation_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_chunk_retranslation_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_glossary_export_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_glossary_extraction_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_glossary_review_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_glossary_translation_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_image_reembedding_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_ocr_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_translate_and_export_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_translation_manga_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/handlers/test_translation_text_handler.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/test_claims.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/tasks/test_engine_core.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_glossary_ops_scoping.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_import_export.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_multi_document.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_ocr_required_for_translation.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_run_ocr.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_service_bootstrap_lock.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_service_cancellation_semantics.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_session.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_translator_image_fetcher.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/tests/workflow/test_translator_import_path.py +0 -0
- {contextweave-2.8.0 → contextweave-2.8.2}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: contextweave
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.2
|
|
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/
|
|
@@ -8,10 +8,11 @@ from typing import Literal
|
|
|
8
8
|
from context_aware_translation.languages import storage_target_language_name
|
|
9
9
|
from context_aware_translation.llm.language_pair_prompts.japanese_to_simplified_chinese import (
|
|
10
10
|
NAME_TRANSLATION_PROMPT,
|
|
11
|
+
POLISH_PROMPT,
|
|
11
12
|
TRANSLATION_PROMPT,
|
|
12
13
|
)
|
|
13
14
|
|
|
14
|
-
PromptKind = Literal["translation", "name_translation"]
|
|
15
|
+
PromptKind = Literal["translation", "polish", "name_translation"]
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
@dataclass(frozen=True)
|
|
@@ -19,11 +20,13 @@ class LanguagePairPromptPolicy:
|
|
|
19
20
|
"""Optional prompt additions for one canonical language pair."""
|
|
20
21
|
|
|
21
22
|
translation: str | None = None
|
|
23
|
+
polish: str | None = None
|
|
22
24
|
name_translation: str | None = None
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
_JAPANESE_TO_SIMPLIFIED_CHINESE_POLICY = LanguagePairPromptPolicy(
|
|
26
28
|
translation=TRANSLATION_PROMPT,
|
|
29
|
+
polish=POLISH_PROMPT,
|
|
27
30
|
name_translation=NAME_TRANSLATION_PROMPT,
|
|
28
31
|
)
|
|
29
32
|
|
|
@@ -55,7 +58,11 @@ def apply_language_pair_prompt_policy(
|
|
|
55
58
|
if policy is None:
|
|
56
59
|
return prompt
|
|
57
60
|
|
|
58
|
-
guidance =
|
|
61
|
+
guidance = {
|
|
62
|
+
"translation": policy.translation,
|
|
63
|
+
"polish": policy.polish,
|
|
64
|
+
"name_translation": policy.name_translation,
|
|
65
|
+
}[prompt_kind]
|
|
59
66
|
if not guidance:
|
|
60
67
|
return prompt
|
|
61
68
|
if before_marker not in prompt:
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
"""Japanese-to-Simplified-Chinese prompt additions."""
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
PUNCTUATION_PROMPT = """--日译简中标点规范(中国大陆横排)--
|
|
4
|
+
默认以中国大陆横排简体中文出版规范为准,不采用港澳台地区或竖排文稿使用直角引号的习惯。
|
|
5
|
+
先判断日文标点在句中的语义作用和层级,再选择中文标点,不得按字符机械替换。
|
|
6
|
+
1. 对话和直接引语使用弯双引号“……”;引语内的引语使用弯单引号‘……’。
|
|
7
|
+
2. 作品名称使用书名号《……》;不得因原文使用引号而忽略其作品名语义。
|
|
8
|
+
3. 日文直角引号和双直角引号只用于理解原文的引用层级;最终译文不得把它们作为引号保留,也不得出现孤立或不配对的开闭引号。
|
|
9
|
+
4. 日文顿号应根据并列或停顿关系使用中文顿号或逗号。
|
|
10
|
+
5. 省略号和破折号按中文语义及排版规范使用“……”和“——”。
|
|
11
|
+
输出前检查引号所表达的语义、嵌套层级和成对关系是否符合上述规范。"""
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
TRANSLATION_PROMPT = f"""--日译简中专项要求--
|
|
4
15
|
1. 警惕日中同形异义词和汉字表面直译;按句中含义选择中文表达。
|
|
5
16
|
2. 日语的形式名词、助词、终助词和敬语不得逐字对应;根据其在句中的实际作用翻译。
|
|
6
17
|
3. 日语拟声词、拟态词、惯用语和双关语没有直接对应表达时,传达其在当前语境中的作用。
|
|
7
|
-
|
|
18
|
+
|
|
19
|
+
{PUNCTUATION_PROMPT}"""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
POLISH_PROMPT = PUNCTUATION_PROMPT
|
|
8
23
|
|
|
9
24
|
|
|
10
25
|
NAME_TRANSLATION_PROMPT = """---日语名称译简中专项要求---
|
|
@@ -620,6 +620,13 @@ def build_polish_prompt(
|
|
|
620
620
|
只输出一个 JSON 对象,且仅包含字段 "翻译文本"。
|
|
621
621
|
"翻译文本" 中的每个元素都必须包含字段 "id" 和 "文本"。
|
|
622
622
|
不得输出任何额外说明、前后缀文本或代码块围栏。"""
|
|
623
|
+
system_prompt = apply_language_pair_prompt_policy(
|
|
624
|
+
system_prompt,
|
|
625
|
+
source_language=source_language,
|
|
626
|
+
target_language=target_language,
|
|
627
|
+
prompt_kind="polish",
|
|
628
|
+
before_marker="--输出--",
|
|
629
|
+
)
|
|
623
630
|
|
|
624
631
|
user_payload = {"翻译文本": _indexed_text_entries(translated_blocks)}
|
|
625
632
|
user_prompt = _render_json_payload(user_payload)
|
|
@@ -565,7 +565,10 @@ class DocumentTranslationView(QWidget):
|
|
|
565
565
|
self._render_selected_unit(state.units[selected_row])
|
|
566
566
|
else:
|
|
567
567
|
self._render_selected_unit(None)
|
|
568
|
-
|
|
568
|
+
# The first refresh happens when the task is queued, before its result is
|
|
569
|
+
# persisted. Keep stale drafts suppressed until the completion refresh.
|
|
570
|
+
if state.active_task_id is None:
|
|
571
|
+
self._suppressed_draft_unit_ids -= {unit.unit_id for unit in state.units}
|
|
569
572
|
self._sync_chrome_state()
|
|
570
573
|
|
|
571
574
|
def _on_unit_selected(self, row: int) -> None:
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/ui/qml/app/AppShellChrome.qml
RENAMED
|
@@ -3,8 +3,8 @@ import QtQuick
|
|
|
3
3
|
Rectangle {
|
|
4
4
|
id: root
|
|
5
5
|
objectName: "appShellChrome"
|
|
6
|
-
color: "#
|
|
7
|
-
height:
|
|
6
|
+
color: "#f6f3ed"
|
|
7
|
+
height: 88
|
|
8
8
|
|
|
9
9
|
signal projectsRequested
|
|
10
10
|
signal setupWizardRequested
|
|
@@ -24,19 +24,19 @@ Rectangle {
|
|
|
24
24
|
|
|
25
25
|
Rectangle {
|
|
26
26
|
anchors.fill: parent
|
|
27
|
-
color: "#
|
|
27
|
+
color: "#f6f3ed"
|
|
28
28
|
|
|
29
29
|
Rectangle {
|
|
30
30
|
anchors.left: parent.left
|
|
31
31
|
anchors.right: parent.right
|
|
32
32
|
anchors.bottom: parent.bottom
|
|
33
33
|
height: 1
|
|
34
|
-
color: "#
|
|
34
|
+
color: "#d8d0c6"
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
Row {
|
|
38
38
|
anchors.left: parent.left
|
|
39
|
-
anchors.leftMargin:
|
|
39
|
+
anchors.leftMargin: 24
|
|
40
40
|
anchors.verticalCenter: parent.verticalCenter
|
|
41
41
|
spacing: 10
|
|
42
42
|
|
|
@@ -60,7 +60,7 @@ Rectangle {
|
|
|
60
60
|
|
|
61
61
|
Row {
|
|
62
62
|
anchors.right: parent.right
|
|
63
|
-
anchors.rightMargin:
|
|
63
|
+
anchors.rightMargin: 24
|
|
64
64
|
anchors.verticalCenter: parent.verticalCenter
|
|
65
65
|
spacing: 12
|
|
66
66
|
|
|
@@ -3,8 +3,8 @@ import QtQuick
|
|
|
3
3
|
Rectangle {
|
|
4
4
|
id: root
|
|
5
5
|
objectName: "queueShellChrome"
|
|
6
|
-
color: "#
|
|
7
|
-
height:
|
|
6
|
+
color: "#f6f3ed"
|
|
7
|
+
height: 88
|
|
8
8
|
|
|
9
9
|
signal closeRequested
|
|
10
10
|
|
|
@@ -13,43 +13,43 @@ Rectangle {
|
|
|
13
13
|
|
|
14
14
|
Rectangle {
|
|
15
15
|
anchors.fill: parent
|
|
16
|
-
color: "#
|
|
16
|
+
color: "#f6f3ed"
|
|
17
17
|
|
|
18
18
|
Rectangle {
|
|
19
19
|
anchors.left: parent.left
|
|
20
20
|
anchors.right: parent.right
|
|
21
21
|
anchors.bottom: parent.bottom
|
|
22
22
|
height: 1
|
|
23
|
-
color: "#
|
|
23
|
+
color: "#d8d0c6"
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
Column {
|
|
27
27
|
anchors.left: parent.left
|
|
28
|
-
anchors.leftMargin:
|
|
28
|
+
anchors.leftMargin: 24
|
|
29
29
|
anchors.verticalCenter: parent.verticalCenter
|
|
30
|
-
spacing:
|
|
30
|
+
spacing: 4
|
|
31
31
|
|
|
32
32
|
Text {
|
|
33
33
|
text: root.titleText
|
|
34
34
|
color: "#2f251d"
|
|
35
|
-
font.pixelSize:
|
|
35
|
+
font.pixelSize: 20
|
|
36
36
|
font.bold: true
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
Text {
|
|
40
40
|
text: root.subtitleText
|
|
41
41
|
color: "#786b5e"
|
|
42
|
-
font.pixelSize:
|
|
42
|
+
font.pixelSize: 12
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
Rectangle {
|
|
47
47
|
anchors.right: parent.right
|
|
48
|
-
anchors.rightMargin:
|
|
48
|
+
anchors.rightMargin: 24
|
|
49
49
|
anchors.verticalCenter: parent.verticalCenter
|
|
50
|
-
width:
|
|
51
|
-
height:
|
|
52
|
-
radius:
|
|
50
|
+
width: 36
|
|
51
|
+
height: 36
|
|
52
|
+
radius: 18
|
|
53
53
|
color: "#e7ddd0"
|
|
54
54
|
|
|
55
55
|
Text {
|
|
@@ -5,6 +5,32 @@ QMainWindow {
|
|
|
5
5
|
background-color: #f5f5f5;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
/* Keep dock resize targets easy to grab without drawing a heavy gutter. */
|
|
9
|
+
QMainWindow::separator:vertical {
|
|
10
|
+
width: 7px;
|
|
11
|
+
background: qlineargradient(
|
|
12
|
+
x1: 0, y1: 0, x2: 1, y2: 0,
|
|
13
|
+
stop: 0 transparent,
|
|
14
|
+
stop: 0.44 transparent,
|
|
15
|
+
stop: 0.45 #d8d0c6,
|
|
16
|
+
stop: 0.55 #d8d0c6,
|
|
17
|
+
stop: 0.56 transparent,
|
|
18
|
+
stop: 1 transparent
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
QMainWindow::separator:vertical:hover {
|
|
23
|
+
background: qlineargradient(
|
|
24
|
+
x1: 0, y1: 0, x2: 1, y2: 0,
|
|
25
|
+
stop: 0 #f1ebe3,
|
|
26
|
+
stop: 0.44 #f1ebe3,
|
|
27
|
+
stop: 0.45 #8b7c6a,
|
|
28
|
+
stop: 0.55 #8b7c6a,
|
|
29
|
+
stop: 0.56 #f1ebe3,
|
|
30
|
+
stop: 1 #f1ebe3
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
8
34
|
QWidget {
|
|
9
35
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
10
36
|
font-size: 13px;
|
|
@@ -210,6 +236,10 @@ QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
|
|
|
210
236
|
height: 0;
|
|
211
237
|
}
|
|
212
238
|
|
|
239
|
+
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
|
|
240
|
+
background: transparent;
|
|
241
|
+
}
|
|
242
|
+
|
|
213
243
|
QScrollBar:horizontal {
|
|
214
244
|
background-color: #f5f5f5;
|
|
215
245
|
height: 12px;
|
|
@@ -231,6 +261,10 @@ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
|
|
|
231
261
|
width: 0;
|
|
232
262
|
}
|
|
233
263
|
|
|
264
|
+
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
|
|
265
|
+
background: transparent;
|
|
266
|
+
}
|
|
267
|
+
|
|
234
268
|
/* Splitter */
|
|
235
269
|
QSplitter::handle {
|
|
236
270
|
background-color: #e0e0e0;
|
|
@@ -7,7 +7,7 @@ packages = ["context_aware_translation"]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "contextweave"
|
|
10
|
-
version = "2.8.
|
|
10
|
+
version = "2.8.2"
|
|
11
11
|
description = "ContextWeave: context-aware document translation with glossary management"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
license = "GPL-3.0-only"
|
|
@@ -7,7 +7,7 @@ from context_aware_translation.llm.language_pair_prompts import (
|
|
|
7
7
|
apply_language_pair_prompt_policy,
|
|
8
8
|
get_language_pair_prompt_policy,
|
|
9
9
|
)
|
|
10
|
-
from context_aware_translation.llm.translator import build_translation_prompt
|
|
10
|
+
from context_aware_translation.llm.translator import build_polish_prompt, build_translation_prompt
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
@pytest.mark.parametrize("source_language", ["日语", "日本語"])
|
|
@@ -70,10 +70,24 @@ def test_japanese_to_simplified_chinese_document_prompt_includes_special_guidanc
|
|
|
70
70
|
|
|
71
71
|
assert "--日译简中专项要求--" in system_prompt
|
|
72
72
|
assert "日中同形异义词" in system_prompt
|
|
73
|
-
assert "
|
|
73
|
+
assert "--日译简中标点规范(中国大陆横排)--" in system_prompt
|
|
74
|
+
assert "对话和直接引语使用弯双引号“……”" in system_prompt
|
|
75
|
+
assert "不采用港澳台地区或竖排文稿使用直角引号的习惯" in system_prompt
|
|
74
76
|
assert system_prompt.index("--日译简中专项要求--") < system_prompt.index("--格式与标记(必须严格遵守)--")
|
|
75
77
|
|
|
76
78
|
|
|
79
|
+
def test_japanese_to_simplified_chinese_polish_prompt_includes_punctuation_guidance() -> None:
|
|
80
|
+
system_prompt, _user_prompt = build_polish_prompt(
|
|
81
|
+
["彼说:「我读过『雪国』。」"],
|
|
82
|
+
"简体中文",
|
|
83
|
+
"日语",
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
assert "--日译简中标点规范(中国大陆横排)--" in system_prompt
|
|
87
|
+
assert "引语内的引语使用弯单引号‘……’" in system_prompt
|
|
88
|
+
assert system_prompt.index("--日译简中标点规范(中国大陆横排)--") < system_prompt.index("--输出--")
|
|
89
|
+
|
|
90
|
+
|
|
77
91
|
def test_japanese_to_simplified_chinese_name_prompt_includes_special_guidance() -> None:
|
|
78
92
|
prompt = _build_batch_system_prompt("日语", "简体中文")
|
|
79
93
|
|
|
@@ -84,7 +98,9 @@ def test_japanese_to_simplified_chinese_name_prompt_includes_special_guidance()
|
|
|
84
98
|
|
|
85
99
|
def test_other_pairs_do_not_receive_japanese_guidance() -> None:
|
|
86
100
|
translation_prompt, _user_prompt = build_translation_prompt([], [], "英语", "简体中文")
|
|
101
|
+
polish_prompt, _polish_user_prompt = build_polish_prompt([], "简体中文", "英语")
|
|
87
102
|
name_prompt = _build_batch_system_prompt("英语", "简体中文")
|
|
88
103
|
|
|
89
104
|
assert "--日译简中专项要求--" not in translation_prompt
|
|
105
|
+
assert "--日译简中标点规范(中国大陆横排)--" not in polish_prompt
|
|
90
106
|
assert "---日语名称译简中专项要求---" not in name_prompt
|
|
@@ -34,6 +34,7 @@ def test_app_shell_host_loads_qml_chrome_and_tracks_project_state():
|
|
|
34
34
|
root = host.chrome_host.rootObject()
|
|
35
35
|
assert root is not None
|
|
36
36
|
assert root.objectName() == "appShellChrome"
|
|
37
|
+
assert root.height() == 88
|
|
37
38
|
assert root.property("hasCurrentProject") is True
|
|
38
39
|
assert root.property("surfaceTitle") == "One Piece"
|
|
39
40
|
assert host.current_content_key() == "project_1"
|
|
@@ -726,6 +726,57 @@ def test_document_translation_view_retranslate_clears_only_target_unit_draft_on_
|
|
|
726
726
|
view.deleteLater()
|
|
727
727
|
|
|
728
728
|
|
|
729
|
+
def test_document_translation_view_retranslate_suppresses_target_draft_until_task_finishes():
|
|
730
|
+
from context_aware_translation.ui.features.document_translation_view import DocumentTranslationView
|
|
731
|
+
|
|
732
|
+
state = _make_state().model_copy(
|
|
733
|
+
update={
|
|
734
|
+
"units": [
|
|
735
|
+
_make_state().units[0].model_copy(update={"translated_text": "server chunk v1"}),
|
|
736
|
+
_make_state().units[1],
|
|
737
|
+
]
|
|
738
|
+
}
|
|
739
|
+
)
|
|
740
|
+
service = FakeDocumentService(
|
|
741
|
+
workspace=state.workspace,
|
|
742
|
+
translation=state,
|
|
743
|
+
)
|
|
744
|
+
|
|
745
|
+
def _start_retranslation(request): # noqa: ANN001
|
|
746
|
+
service.calls.append(("retranslate", request))
|
|
747
|
+
service.translation = state.model_copy(update={"active_task_id": "task-retranslate-1"})
|
|
748
|
+
return AcceptedCommand(command_name="retranslate", command_id="task-retranslate-1")
|
|
749
|
+
|
|
750
|
+
service.retranslate = _start_retranslation
|
|
751
|
+
view = DocumentTranslationView(service, "proj-1", 4)
|
|
752
|
+
try:
|
|
753
|
+
view.refresh()
|
|
754
|
+
view.translation_text.setPlainText("stale local chunk draft")
|
|
755
|
+
|
|
756
|
+
with patch.object(_QMESSAGEBOX, "question", return_value=_QMESSAGEBOX.StandardButton.Yes):
|
|
757
|
+
view.retranslate_button.click()
|
|
758
|
+
|
|
759
|
+
# A task-progress refresh must not end draft suppression before the
|
|
760
|
+
# persisted retranslation becomes available.
|
|
761
|
+
view.translation_text.setPlainText("stale editor text during retranslation")
|
|
762
|
+
view.refresh()
|
|
763
|
+
|
|
764
|
+
service.translation = state.model_copy(
|
|
765
|
+
update={
|
|
766
|
+
"active_task_id": None,
|
|
767
|
+
"units": [
|
|
768
|
+
state.units[0].model_copy(update={"translated_text": "fresh backend chunk result"}),
|
|
769
|
+
state.units[1],
|
|
770
|
+
],
|
|
771
|
+
}
|
|
772
|
+
)
|
|
773
|
+
view.refresh()
|
|
774
|
+
|
|
775
|
+
assert view.translation_text.toPlainText() == "fresh backend chunk result"
|
|
776
|
+
finally:
|
|
777
|
+
view.deleteLater()
|
|
778
|
+
|
|
779
|
+
|
|
729
780
|
def test_document_translation_view_full_translate_clears_document_drafts_on_refresh():
|
|
730
781
|
from context_aware_translation.ui.features.document_translation_view import DocumentTranslationView
|
|
731
782
|
|
|
@@ -53,6 +53,16 @@ def test_configure_qt_environment_pins_rounding_policy(monkeypatch: pytest.Monke
|
|
|
53
53
|
assert "QT_AUTO_SCREEN_SCALE_FACTOR" not in ui_main.os.environ
|
|
54
54
|
|
|
55
55
|
|
|
56
|
+
def test_stylesheet_draws_thin_dock_rules_inside_wide_resize_targets() -> None:
|
|
57
|
+
stylesheet = ui_main.load_stylesheet()
|
|
58
|
+
|
|
59
|
+
assert "QMainWindow::separator:vertical" in stylesheet
|
|
60
|
+
assert "QMainWindow::separator:vertical:hover" in stylesheet
|
|
61
|
+
assert "width: 7px" in stylesheet
|
|
62
|
+
assert "stop: 0.45 #d8d0c6" in stylesheet
|
|
63
|
+
assert "QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical" in stylesheet
|
|
64
|
+
|
|
65
|
+
|
|
56
66
|
def test_bounds_fit_available_geometries_accepts_secondary_screen() -> None:
|
|
57
67
|
assert bounds_fit_available_geometries(
|
|
58
68
|
(1600, 120, 1120, 760),
|
|
@@ -34,6 +34,7 @@ def test_queue_shell_host_loads_qml_chrome_and_tracks_scope() -> None:
|
|
|
34
34
|
root = host.chrome_host.rootObject()
|
|
35
35
|
assert root is not None
|
|
36
36
|
assert root.objectName() == "queueShellChrome"
|
|
37
|
+
assert root.height() == 88
|
|
37
38
|
assert root.property("titleText") == "Queue"
|
|
38
39
|
assert "One Piece" in root.property("subtitleText")
|
|
39
40
|
assert host.current_content_key() == "queue"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/files/__init__.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/files/glossary_io.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/task_engine.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/adapters/qt/workers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/composition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/queue.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/terms.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/contracts/work.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/document.py
RENAMED
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/projects.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/queue.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/terms.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/application/services/work.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/context_extractor.py
RENAMED
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/galgame_document_handler.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/manga_document_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/term_memory_builder.py
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/core/translation_strategies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/content/AGENTS.md
RENAMED
|
File without changes
|
{contextweave-2.8.0 → contextweave-2.8.2}/context_aware_translation/documents/content/__init__.py
RENAMED
|
File without changes
|