textflowkit 0.1.13__tar.gz → 0.1.14__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.
- {textflowkit-0.1.13 → textflowkit-0.1.14}/AGENTS.md +9 -1
- {textflowkit-0.1.13 → textflowkit-0.1.14}/CHANGELOG.md +9 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/CONTRIBUTING.md +4 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/PKG-INFO +11 -9
- {textflowkit-0.1.13 → textflowkit-0.1.14}/README.md +10 -8
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/adapters.md +8 -4
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/architecture.md +1 -1
- textflowkit-0.1.14/docs/deepseek-worker.md +29 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/index.html +6 -5
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/install.md +6 -4
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/release-checklist.md +7 -1
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/roadmap.md +5 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/streaming.md +4 -4
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/user-manual.md +8 -6
- {textflowkit-0.1.13 → textflowkit-0.1.14}/pyproject.toml +1 -1
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/__init__.py +1 -1
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.dockerignore +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.env.example +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.gitattributes +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.github/dependabot.yml +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.github/workflows/ci.yml +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.github/workflows/publish-pypi.yml +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.gitignore +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/.pre-commit-config.yaml +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/Dockerfile +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/LEGAL.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/LICENSE +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/SECURITY.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/compose.yaml +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/.nojekyll +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/404.html +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/assets/architecture-overview.svg +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/assets/live-streaming-flow.svg +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/assets/local-ui-flow.svg +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/assets/whistle-resume.svg +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/site-deployment.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/sources.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/verification/whistle-coverage-20261019.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/docs/verification/windows-sources-20261019.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/packaging/windows/README.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/packaging/windows/THIRD-PARTY-NOTICES.txt +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/packaging/windows/assets.lock.json +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/packaging/windows/launch.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/packaging/windows/source-materials.json +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/packaging/windows/textflowkit.iss +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/build_windows_installer.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/fetch_published_fonts.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/prepare_windows_payload.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/run_deepseek_worker.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/smoke_installed_wheel.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/smoke_live_youtube.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/verify_readme_release.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/verify_release_ci.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/verify_release_versions.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/scripts/write_release_manifest.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/adapters/__init__.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/adapters/http_server.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/adapters/mcp_server.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/adapters/streaming_ws.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/assets/README.md +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/assets/selftest-speech.wav +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/cli.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/__init__.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/batch.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/bind.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/cancel.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/checkpoint.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/diarize.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/engine.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/executor.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/jobs.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/model.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/paths.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/pipeline.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/retrieval.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/runner.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/service.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/sqlite_store.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/startup.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/stream_worker.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/streaming.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/streaming_assets.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/streaming_events.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/streaming_process.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/submission.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/timeutil.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/translate.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/whistle.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/whistle_assets.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/core/windows_process.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/__init__.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/_cue_layout.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/_cue_text.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/_rename_excl.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/_rename_noreplace.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/docx.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/markdown.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/pdf.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/srt.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/txt.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/render/vtt.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/sources/__init__.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/sources/acquire.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/sources/detect.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/sources/scratch.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/__init__.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/app.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/capabilities.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/cleanup.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/launcher.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/ownership.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/paths.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/security.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/static/app.css +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/static/app.js +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/static/cleanup.js +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/static/index.html +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/static/streaming-capture-worklet.js +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/static/streaming-example.html +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/src/textflowkit/ui/uploads.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/__init__.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/fixtures/whistle_seam_regressions.json +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/ollama_stub.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_acquire.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_adapters.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_admission_ownership.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_atomic_resume.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_atomic_resume_aba.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_batch.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_batch_item_boundary.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_batch_resume_shared.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_bind.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cancellation_finalization.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_checkpoint.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_checkpoint_single_copy.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cli.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cli_batch_feedback.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cli_owning_recovery.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cli_resume_batch.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cli_stage_feedback.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cli_stdout_format.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_confined_decoder_boundary.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_confined_indirect_media.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_confined_resume_boundary.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_container_example.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_cue_layout.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_diarize.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_diarize_example_flags.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_diarize_token_docs.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_docx_publication_identity.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_done_output_integrity.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_empty_formats_resume.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_engine_adapters.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_engine_cache.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_engine_faster.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_engine_quiet.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_executor.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_executor_store_failure.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_export.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_export_file_mode.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_export_preflight.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_faster_whisper_docs.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_fetch_published_fonts.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_font_notices.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_http_host_boundary.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_http_trusted_proxy.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_job_progress.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_jobs.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_landing_commands.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_landing_page.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_legal_summary.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_linux_no_hardlink.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_live_smoke_script.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_macos_no_hardlink.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_mcp_batch_cookie_docs.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_mcp_http_boundary.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_mcp_protocol_cleanliness.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_mcp_terminal_guidance.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_mcp_tool_descriptions.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_mcp_work_root.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_model.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_partial_output_resume.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_partial_pdf_resume.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_paths.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_pipeline_integrity.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_pipeline_resume_setup.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_production_browser_cookies.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_publish_ci_gate.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_publish_fonts_wiring.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_publish_manifest_wiring.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_publish_workflow_gate.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_readme_layout.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_readme_release_guard.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_release_boundaries.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_release_manifest.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_release_surfaces.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_render.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_retrieval.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_sdist_allowlist.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_service_profile.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_site_not_found.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_sources.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_stage_reuse_resume.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_startup_recovery.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_stdio_protocol.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_assets.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_browser_lifecycle.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_core.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_example.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_repairs.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_transport.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_u5_repairs.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_streaming_ui_integration.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_submission.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_submission_validation.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_translate.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_translate_completeness.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_assets_and_capabilities.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_cleanup.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_consoleless_logging.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_existing_routes_unchanged.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_launcher.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_ownership_and_shutdown.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_packaging.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_real_serve.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_security.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_submission_and_download.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_ui_uploads.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_verify_release_versions.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_whistle_assets.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_whistle_defaults.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_whistle_engine.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_whistle_job_resume.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_whistle_seams.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_windows_installer.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_windows_no_hardlink.py +0 -0
- {textflowkit-0.1.13 → textflowkit-0.1.14}/tests/test_windows_payload.py +0 -0
|
@@ -10,7 +10,15 @@ The main assistant coordinates, plans and oversees. A worker invoked for an impl
|
|
|
10
10
|
|
|
11
11
|
Follow Scott's active task selection; do not impose a project-wide Ollama default. His normal substantial-work/coordination preference is gpt-6.1-sol at medium, with gpt-6-luna at xhigh for small bounded work when available. Do not spawn a worker merely to switch models or add providers without authorization.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## Required harness for all TextFlowKit DeepSeek coding (owner directive, 2026-10-19)
|
|
14
|
+
|
|
15
|
+
Whenever DeepSeek is selected for coding work on TextFlowKit, use native **headless Codex exec through Ollama**, model **`deepseek-v4.1-flash:1017-cloud`**, thinking OFF (`model_reasoning_effort = "none"`). This is a standing project instruction, not limited to one release. The observed provider response ID is `deepseek-v4.1-flash:1017`; verify it from transport receipts, not model self-description.
|
|
16
|
+
|
|
17
|
+
**Do not use `scripts/run_deepseek_worker.py`, another custom agent loop, or Claude Code for this work.** If the approved setup is missing, blocked or broken after restart, inspect/repair it within authorization or report the concrete blocker; never silently fall back, change the model, enable reasoning, or bypass safeguards.
|
|
18
|
+
|
|
19
|
+
Use the dedicated worker worktree, separate CODEX_HOME/profile/temp directories, allowlisted environment and supported Windows workspace-write sandbox. No personal auth/settings/hooks/MCP configuration copied; no inherited provider/GitHub tokens; no nested workers or publishing. A worktree isolates changes, not all disk reads. Supply a scoped brief through stdin and retain native Codex events, provider model/reasoning evidence and actual tool results.
|
|
20
|
+
|
|
21
|
+
Read `docs/deepseek-worker.md` before the next DeepSeek unit and after restart. Verified local launcher: `C:\Users\scott\Documents\Codex\2026-09-21\re\outputs\headless-codex-deepseek-20261019\run-codex.ps1`; local state and evidence are alongside it. This selects the harness whenever DeepSeek is used; it does not make DeepSeek the default for unrelated work.
|
|
14
22
|
|
|
15
23
|
This does not change the application's transcription or AI-cleanup defaults. Whistle remains the default transcription engine.
|
|
16
24
|
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.1.14 — 2026-10-19
|
|
4
|
+
|
|
5
|
+
Documentation-only patch; core 0.1.14, unchanged optional fonts 0.1.6.
|
|
6
|
+
|
|
7
|
+
- Persist the required native headless Codex workflow for all TextFlowKit DeepSeek coding: exact `deepseek-v4.1-flash:1017-cloud`, thinking off, isolated worktree/configuration/environment, supported Windows sandbox, and no silent fallback to the historical Python runner or Claude Code.
|
|
8
|
+
- Link the workflow from contributor and integration documentation and update current package/manual/website release references.
|
|
9
|
+
- No transcription, cleanup, streaming, dependency, or installer behavior change. The latest verified Windows installer remains v0.1.13 and retains its matching FFmpeg sources/notices. Native/live proof remains explicitly attributed to that earlier release; no new accuracy claim.
|
|
10
|
+
- Math comparison fixtures, local logs, model credentials and machine-local launcher/profile files are not included.
|
|
11
|
+
|
|
3
12
|
## v0.1.13 — 2026-10-19
|
|
4
13
|
|
|
5
14
|
Core: 0.1.13; unchanged optional fonts: 0.1.6. Whistle missing-speech fixes and a
|
|
@@ -99,3 +99,7 @@ Read [LEGAL.md](LEGAL.md) before adding a source adapter.
|
|
|
99
99
|
## Security
|
|
100
100
|
|
|
101
101
|
Do not open a public issue for a vulnerability. See [SECURITY.md](SECURITY.md).
|
|
102
|
+
|
|
103
|
+
## DeepSeek coding workers
|
|
104
|
+
|
|
105
|
+
When DeepSeek is selected for TextFlowKit coding, follow the required [isolated headless Codex workflow](docs/deepseek-worker.md): exact `deepseek-v4.1-flash:1017-cloud`, thinking off. Do not use the historical Python agent loop or Claude Code. This does not change application engines or make DeepSeek the default for unrelated work.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: textflowkit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.14
|
|
4
4
|
Summary: Cross-platform media transcription toolkit: URL or file in, timestamped transcripts and subtitle files out.
|
|
5
5
|
Project-URL: Homepage, https://www.textflowkit.org/
|
|
6
6
|
Project-URL: Issues, https://github.com/scottconverse/textflowkit/issues
|
|
@@ -73,7 +73,7 @@ Cross-platform media transcription toolkit. **One core, one CLI, thin adapters.*
|
|
|
73
73
|
[User manual](https://github.com/scottconverse/textflowkit/blob/main/docs/user-manual.md) ·
|
|
74
74
|
[Developer and integration manual](https://github.com/scottconverse/textflowkit/blob/main/docs/adapters.md)
|
|
75
75
|
|
|
76
|
-
**Current release: [v0.1.
|
|
76
|
+
**Current release: [v0.1.14](https://github.com/scottconverse/textflowkit/releases/tag/v0.1.14).**
|
|
77
77
|
|
|
78
78
|
The [static site deployment](https://github.com/scottconverse/textflowkit/blob/main/docs/site-deployment.md) is hosted on Cloudflare
|
|
79
79
|
Pages. GitHub remains the source and CI host; the website does not run the
|
|
@@ -134,7 +134,7 @@ DOCX and PDF are available through the optional `export` extra.
|
|
|
134
134
|
|
|
135
135
|
## Architecture
|
|
136
136
|
|
|
137
|
-
 sit above one core that acquires and decodes media, transcribes with the default Whistle engine or an explicitly selected openai-whisper, keeps job state and resume checkpoints in an optional SQLite store, adds optional speaker or translation postprocessing, and publishes TXT, SRT, VTT, JSON, Markdown, and optional DOCX/PDF exports.](https://raw.githubusercontent.com/scottconverse/textflowkit/v0.1.14/docs/assets/architecture-overview.svg)
|
|
138
138
|
|
|
139
139
|
The design principle is **one shared core, thin doors**. Everything of substance
|
|
140
140
|
lives in the core; the interfaces are thin — the local browser UI is a fifth door
|
|
@@ -158,7 +158,7 @@ see [docs/architecture.md](https://github.com/scottconverse/textflowkit/blob/mai
|
|
|
158
158
|
|
|
159
159
|
## Live microphone streaming (opt-in)
|
|
160
160
|
|
|
161
|
-
In v0.1.
|
|
161
|
+
In v0.1.14, live streaming supports **Windows x86_64 only**. When
|
|
162
162
|
`TEXTFLOWKIT_STREAMING=1` is set, the developer HTTP app serves a `/stream`
|
|
163
163
|
WebSocket and the local UI serves `/api/stream`, both transcribing a live microphone
|
|
164
164
|
as you speak. A **runnable, self-hosted browser example** ships at
|
|
@@ -167,7 +167,7 @@ as you speak. A **runnable, self-hosted browser example** ships at
|
|
|
167
167
|
No CDN, no analytics, no external fetch. Requires the `streaming` extra:
|
|
168
168
|
|
|
169
169
|
```bash
|
|
170
|
-
python -m pip install "textflowkit[streaming]==0.1.
|
|
170
|
+
python -m pip install "textflowkit[streaming]==0.1.14"
|
|
171
171
|
```
|
|
172
172
|
|
|
173
173
|
It is **off by default** — with the switch unset the endpoint does not exist — and
|
|
@@ -233,7 +233,7 @@ installs `textflowkit-fonts` for offline multilingual PDF rendering:
|
|
|
233
233
|
python -m pip install 'textflowkit[export]'
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
## Windows desktop installer (v0.1.13)
|
|
236
|
+
## Windows desktop installer (latest verified installer: v0.1.13)
|
|
237
237
|
|
|
238
238
|
[Download Windows x64 setup](https://github.com/scottconverse/textflowkit/releases/download/v0.1.13/TextFlowKit-0.1.13-windows-x64-setup.exe) · [Matching sources and notices](https://github.com/scottconverse/textflowkit/releases/tag/v0.1.13)
|
|
239
239
|
|
|
@@ -362,7 +362,7 @@ textflowkit export ./transcript.json --format vtt
|
|
|
362
362
|
needs no PyTorch, so a fresh `pip install textflowkit` stays small and pulls no
|
|
363
363
|
torch; `openai-whisper` is an explicitly selectable opt-in engine.
|
|
364
364
|
|
|
365
|
-
, each core runs as one owned child with forced telemetry-off flags, a partial checkpoint is written after each core, and a resume validates the source and decoded-WAV hashes then re-runs only the unfinished cores.](https://raw.githubusercontent.com/scottconverse/textflowkit/v0.1.14/docs/assets/whistle-resume.svg)
|
|
366
366
|
|
|
367
367
|
- **CPU only, no torch.** It runs a pinned native binary and downloads one pinned
|
|
368
368
|
model on first use. Naming a GPU device is refused rather than silently
|
|
@@ -483,7 +483,7 @@ its own beyond the `http` extra. It ships with the core package as of v0.1.10:
|
|
|
483
483
|
a regular install of the current release carries it.
|
|
484
484
|
|
|
485
485
|
```bash
|
|
486
|
-
python -m pip install 'textflowkit[http,export]==0.1.
|
|
486
|
+
python -m pip install 'textflowkit[http,export]==0.1.14'
|
|
487
487
|
textflowkit-ui
|
|
488
488
|
```
|
|
489
489
|
|
|
@@ -554,7 +554,9 @@ browser interface share the job contract without blocking a request.
|
|
|
554
554
|
|
|
555
555
|
## Status
|
|
556
556
|
|
|
557
|
-
**v0.1.
|
|
557
|
+
**v0.1.14 release.** Documentation-only patch: records the required isolated headless Codex workflow for DeepSeek coding contributors. Transcription, AI cleanup and streaming behavior are unchanged from v0.1.13; fonts remain 0.1.6. The latest verified Windows installer remains v0.1.13, with its matching source and notice bundles. No new native transcription proof is claimed for this documentation patch.
|
|
558
|
+
|
|
559
|
+
**Whistle behavior introduced in v0.1.13.** Fixes reproduced Whistle speech omissions. Native decode
|
|
558
560
|
inputs are now bounded to 15 seconds (11-second owned cores with up to 2 seconds
|
|
559
561
|
of context per side), short interior speech gaps get a bounded second listen that
|
|
560
562
|
accepts words only between matching timed anchors, and shared-context words are
|
|
@@ -8,7 +8,7 @@ Cross-platform media transcription toolkit. **One core, one CLI, thin adapters.*
|
|
|
8
8
|
[User manual](https://github.com/scottconverse/textflowkit/blob/main/docs/user-manual.md) ·
|
|
9
9
|
[Developer and integration manual](https://github.com/scottconverse/textflowkit/blob/main/docs/adapters.md)
|
|
10
10
|
|
|
11
|
-
**Current release: [v0.1.
|
|
11
|
+
**Current release: [v0.1.14](https://github.com/scottconverse/textflowkit/releases/tag/v0.1.14).**
|
|
12
12
|
|
|
13
13
|
The [static site deployment](https://github.com/scottconverse/textflowkit/blob/main/docs/site-deployment.md) is hosted on Cloudflare
|
|
14
14
|
Pages. GitHub remains the source and CI host; the website does not run the
|
|
@@ -69,7 +69,7 @@ DOCX and PDF are available through the optional `export` extra.
|
|
|
69
69
|
|
|
70
70
|
## Architecture
|
|
71
71
|
|
|
72
|
-
 sit above one core that acquires and decodes media, transcribes with the default Whistle engine or an explicitly selected openai-whisper, keeps job state and resume checkpoints in an optional SQLite store, adds optional speaker or translation postprocessing, and publishes TXT, SRT, VTT, JSON, Markdown, and optional DOCX/PDF exports.](https://raw.githubusercontent.com/scottconverse/textflowkit/v0.1.14/docs/assets/architecture-overview.svg)
|
|
73
73
|
|
|
74
74
|
The design principle is **one shared core, thin doors**. Everything of substance
|
|
75
75
|
lives in the core; the interfaces are thin — the local browser UI is a fifth door
|
|
@@ -93,7 +93,7 @@ see [docs/architecture.md](https://github.com/scottconverse/textflowkit/blob/mai
|
|
|
93
93
|
|
|
94
94
|
## Live microphone streaming (opt-in)
|
|
95
95
|
|
|
96
|
-
In v0.1.
|
|
96
|
+
In v0.1.14, live streaming supports **Windows x86_64 only**. When
|
|
97
97
|
`TEXTFLOWKIT_STREAMING=1` is set, the developer HTTP app serves a `/stream`
|
|
98
98
|
WebSocket and the local UI serves `/api/stream`, both transcribing a live microphone
|
|
99
99
|
as you speak. A **runnable, self-hosted browser example** ships at
|
|
@@ -102,7 +102,7 @@ as you speak. A **runnable, self-hosted browser example** ships at
|
|
|
102
102
|
No CDN, no analytics, no external fetch. Requires the `streaming` extra:
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
|
-
python -m pip install "textflowkit[streaming]==0.1.
|
|
105
|
+
python -m pip install "textflowkit[streaming]==0.1.14"
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
It is **off by default** — with the switch unset the endpoint does not exist — and
|
|
@@ -168,7 +168,7 @@ installs `textflowkit-fonts` for offline multilingual PDF rendering:
|
|
|
168
168
|
python -m pip install 'textflowkit[export]'
|
|
169
169
|
```
|
|
170
170
|
|
|
171
|
-
## Windows desktop installer (v0.1.13)
|
|
171
|
+
## Windows desktop installer (latest verified installer: v0.1.13)
|
|
172
172
|
|
|
173
173
|
[Download Windows x64 setup](https://github.com/scottconverse/textflowkit/releases/download/v0.1.13/TextFlowKit-0.1.13-windows-x64-setup.exe) · [Matching sources and notices](https://github.com/scottconverse/textflowkit/releases/tag/v0.1.13)
|
|
174
174
|
|
|
@@ -297,7 +297,7 @@ textflowkit export ./transcript.json --format vtt
|
|
|
297
297
|
needs no PyTorch, so a fresh `pip install textflowkit` stays small and pulls no
|
|
298
298
|
torch; `openai-whisper` is an explicitly selectable opt-in engine.
|
|
299
299
|
|
|
300
|
-
, each core runs as one owned child with forced telemetry-off flags, a partial checkpoint is written after each core, and a resume validates the source and decoded-WAV hashes then re-runs only the unfinished cores.](https://raw.githubusercontent.com/scottconverse/textflowkit/v0.1.14/docs/assets/whistle-resume.svg)
|
|
301
301
|
|
|
302
302
|
- **CPU only, no torch.** It runs a pinned native binary and downloads one pinned
|
|
303
303
|
model on first use. Naming a GPU device is refused rather than silently
|
|
@@ -418,7 +418,7 @@ its own beyond the `http` extra. It ships with the core package as of v0.1.10:
|
|
|
418
418
|
a regular install of the current release carries it.
|
|
419
419
|
|
|
420
420
|
```bash
|
|
421
|
-
python -m pip install 'textflowkit[http,export]==0.1.
|
|
421
|
+
python -m pip install 'textflowkit[http,export]==0.1.14'
|
|
422
422
|
textflowkit-ui
|
|
423
423
|
```
|
|
424
424
|
|
|
@@ -489,7 +489,9 @@ browser interface share the job contract without blocking a request.
|
|
|
489
489
|
|
|
490
490
|
## Status
|
|
491
491
|
|
|
492
|
-
**v0.1.
|
|
492
|
+
**v0.1.14 release.** Documentation-only patch: records the required isolated headless Codex workflow for DeepSeek coding contributors. Transcription, AI cleanup and streaming behavior are unchanged from v0.1.13; fonts remain 0.1.6. The latest verified Windows installer remains v0.1.13, with its matching source and notice bundles. No new native transcription proof is claimed for this documentation patch.
|
|
493
|
+
|
|
494
|
+
**Whistle behavior introduced in v0.1.13.** Fixes reproduced Whistle speech omissions. Native decode
|
|
493
495
|
inputs are now bounded to 15 seconds (11-second owned cores with up to 2 seconds
|
|
494
496
|
of context per side), short interior speech gaps get a bounded second listen that
|
|
495
497
|
accepts words only between matching timed anchors, and shared-context words are
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Developer and integration manual
|
|
2
2
|
|
|
3
|
-
Current release: [v0.1.
|
|
3
|
+
Current release: [v0.1.14](https://github.com/scottconverse/textflowkit/releases/tag/v0.1.14).
|
|
4
|
+
|
|
5
|
+
v0.1.14 updates developer workflow documentation only; runtime behavior is unchanged. The latest verified Windows installer remains v0.1.13 with its matching sources and notices.
|
|
6
|
+
For DeepSeek coding contributions, use the required [headless Codex worker workflow](deepseek-worker.md); this is a development tool, not a transcription-engine setting.
|
|
7
|
+
|
|
4
8
|
Start with the [user manual](user-manual.md) for everyday use. Harness versions
|
|
5
9
|
in the compatibility table below identify **historical test sessions**, not
|
|
6
10
|
the version of TextFlowKit currently published.
|
|
@@ -553,7 +557,7 @@ observation rather than forwarding the caller's header, and keep
|
|
|
553
557
|
|
|
554
558
|
## Live microphone streaming (`/stream`, opt-in)
|
|
555
559
|
|
|
556
|
-
In v0.1.
|
|
560
|
+
In v0.1.14, native live streaming (introduced in v0.1.11) supports **Windows x86_64 only**. Other live
|
|
557
561
|
platforms are unsupported; existing standalone defaults and platform support are
|
|
558
562
|
unchanged. Physical browser microphone capture was not verified. The public site
|
|
559
563
|
is static documentation and serves no streams. Both local server surfaces can
|
|
@@ -564,7 +568,7 @@ exist and a connection is refused before any session is allocated - and it needs
|
|
|
564
568
|
`streaming` extra (`websockets`).
|
|
565
569
|
|
|
566
570
|
```powershell
|
|
567
|
-
python -m pip install "textflowkit[streaming]==0.1.
|
|
571
|
+
python -m pip install "textflowkit[streaming]==0.1.14"
|
|
568
572
|
# Native Windows PowerShell:
|
|
569
573
|
$env:TEXTFLOWKIT_API_TOKEN="choose-a-long-random-token"
|
|
570
574
|
$env:TEXTFLOWKIT_STREAMING="1"
|
|
@@ -604,7 +608,7 @@ supplies FastAPI and uvicorn, and adds no new dependency). It has no public site
|
|
|
604
608
|
of its own: it is a local app, not a hosted service.
|
|
605
609
|
|
|
606
610
|
```bash
|
|
607
|
-
python -m pip install 'textflowkit[http,export]==0.1.
|
|
611
|
+
python -m pip install 'textflowkit[http,export]==0.1.14'
|
|
608
612
|
textflowkit-ui # serve on 127.0.0.1 and open a browser
|
|
609
613
|
textflowkit-ui --no-browser --port 8901
|
|
610
614
|
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Required DeepSeek coding harness
|
|
2
|
+
|
|
3
|
+
Owner directive, 2026-10-19: all DeepSeek coding work on TextFlowKit uses native headless Codex exec through Ollama. No custom agent loop or Claude Code. This remains binding after restart unless Scott changes it.
|
|
4
|
+
|
|
5
|
+
- Exact requested model: `deepseek-v4.1-flash:1017-cloud`. Provider-reported canonical ID: `deepseek-v4.1-flash:1017`.
|
|
6
|
+
- Thinking off: `model_reasoning_effort = "none"`; verify actual provider effort and reasoning-token receipts.
|
|
7
|
+
- No model/provider/harness fallback. Missing setup is a repair task or blocker, not permission to revert to `scripts/run_deepseek_worker.py`.
|
|
8
|
+
- Use dedicated worktree/branch, isolated CODEX_HOME/profile/temp, cleared-and-allowlisted process environment, no copied personal auth/settings/hooks/MCP configuration, and native Windows workspace-write sandbox. Do not bypass enforced controls. This is not a VM or full read-confidentiality boundary.
|
|
9
|
+
- Send a scoped brief on stdin. Preserve native JSONL events, stderr, session/metadata, PID ownership and terminal state. Workers do not publish or launch nested workers. Main assistant coordinates/audits; worker implements the assigned unit.
|
|
10
|
+
|
|
11
|
+
## Local installation on Scott's Windows machine
|
|
12
|
+
|
|
13
|
+
- Worktree: `C:\Users\scott\Desktop\Code\textflowkit-headless-worker`
|
|
14
|
+
- Branch: `worker/headless-codex-deepseek`
|
|
15
|
+
- Setup directory: `C:\Users\scott\Documents\Codex\2026-09-21\re\outputs\headless-codex-deepseek-20261019`
|
|
16
|
+
- Launcher: `run-codex.ps1` in that directory (Brief, Unit and optional Resume parameters).
|
|
17
|
+
- Configuration: `codex-home\config.toml`; model metadata: `codex-home\models.json`.
|
|
18
|
+
- Endpoint: `http://127.0.0.1:11434/v1`. IPv6 localhost refused the setup probe; no service configuration was changed.
|
|
19
|
+
- Tested Codex: `0.163.0-alpha.10.2`; launcher pins the tested executable path. If an app upgrade removes that path, verify the replacement executable/configuration and affected behavior, preserving the exact model and thinking-off setting. Do not silently revert to another harness.
|
|
20
|
+
- Evidence: `verification.json`, `runs\`, `README.md`, current `STATE.md` alongside the launcher.
|
|
21
|
+
|
|
22
|
+
## Restart checklist
|
|
23
|
+
|
|
24
|
+
1. Read repository AGENTS.md, this document and the setup STATE.md.
|
|
25
|
+
2. Inspect worktree status and the scoped brief; preserve unrelated changes.
|
|
26
|
+
3. Check the launcher/config still select exact model, none effort, isolation and sandbox. Reuse unaffected verification evidence; retest changed inputs or unresolved acceptance only.
|
|
27
|
+
4. Use native Codex, never the historical Python runner. Report actual provider/model, reasoning setting and tool results separately from configuration.
|
|
28
|
+
|
|
29
|
+
The old Python runner remains historical repository code; its presence is not authorization to use it. This instruction does not change Whistle, application cleanup models, normal non-DeepSeek preferences, or existing release authorization boundaries.
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
<main id="main">
|
|
207
207
|
<div class="wrap hero">
|
|
208
208
|
<div>
|
|
209
|
-
<span class="eyebrow">Open source · Apache 2.0 · v0.1.
|
|
209
|
+
<span class="eyebrow">Open source · Apache 2.0 · v0.1.14</span>
|
|
210
210
|
<h1>Media in.<br><em>Useful text</em> out.</h1>
|
|
211
211
|
<p class="lead">Transcribe video and audio into timestamped, searchable text. One shared core for your command line, AI harness, and application.</p>
|
|
212
212
|
<div class="actions">
|
|
@@ -214,7 +214,8 @@
|
|
|
214
214
|
<a class="button secondary" href="https://pypi.org/project/textflowkit/">Install from PyPI <span aria-hidden="true"> ↗</span></a>
|
|
215
215
|
</div>
|
|
216
216
|
<p class="micro">Self-hosted toolkit · Native Windows, macOS, Linux · No account required</p>
|
|
217
|
-
<p class="micro">Latest verified release: <a href="https://github.com/scottconverse/textflowkit/releases/tag/v0.1.
|
|
217
|
+
<p class="micro">Latest verified release: <a href="https://github.com/scottconverse/textflowkit/releases/tag/v0.1.14">v0.1.14</a> · <a href="https://github.com/scottconverse/textflowkit/blob/main/docs/user-manual.md">User manual</a></p>
|
|
218
|
+
<p class="micro">v0.1.14 is a developer-documentation patch; transcription behavior is unchanged. The verified Windows installer remains v0.1.13.</p>
|
|
218
219
|
</div>
|
|
219
220
|
<div class="terminal" aria-label="Example transcription command and output">
|
|
220
221
|
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-label">textflowkit / terminal</span></div>
|
|
@@ -308,7 +309,7 @@
|
|
|
308
309
|
<div class="install-grid">
|
|
309
310
|
<div>
|
|
310
311
|
<ul>
|
|
311
|
-
<li><strong>Install and launch:</strong> <code>python -m pip install "textflowkit[http,export]==0.1.
|
|
312
|
+
<li><strong>Install and launch:</strong> <code>python -m pip install "textflowkit[http,export]==0.1.14"</code> then <code>textflowkit-ui</code>. It adds no dependency beyond the <code>http</code> extra.</li>
|
|
312
313
|
<li><strong>Desktop shortcut (Windows):</strong> <code>textflowkit-ui --create-shortcut</code> makes a Start Menu entry that launches with <code>pythonw</code> (no console) and needs no <code>pywin32</code>. That shortcut is the normal way to open it.</li>
|
|
313
314
|
<li><strong>Loopback only:</strong> it binds <code>127.0.0.1</code> and is never reachable off the machine, whatever <code>TEXTFLOWKIT_ALLOW_REMOTE</code> is set to.</li>
|
|
314
315
|
<li><strong>Durable jobs, cancel, and resume:</strong> jobs and checkpoints are stored durably; you can cancel a running job and resume a saved one. Shutdown <em>drains</em> — it waits for current jobs to finish rather than cancelling them.</li>
|
|
@@ -319,7 +320,7 @@
|
|
|
319
320
|
<a class="button secondary" href="https://github.com/scottconverse/textflowkit/blob/main/docs/user-manual.md#7-local-browser-interface">Read the local UI guide ↗</a>
|
|
320
321
|
</div>
|
|
321
322
|
<div>
|
|
322
|
-
<pre class="codebox"><span class="prompt">$ </span>python -m pip install "textflowkit[http,export]==0.1.
|
|
323
|
+
<pre class="codebox"><span class="prompt">$ </span>python -m pip install "textflowkit[http,export]==0.1.14"
|
|
323
324
|
<span class="prompt">$ </span>textflowkit-ui --create-shortcut
|
|
324
325
|
<span class="comment"># then open it from the Start Menu shortcut</span></pre>
|
|
325
326
|
<p class="note"><strong>Public page vs. local app.</strong> This landing page is the public, static site. The browser workspace is a separate, local program: it never runs here and is not reachable from the internet. v0.1.12 added optional UI-only local Ollama cleanup and native Windows packaging (that cleanup remains as introduced in v0.1.12); existing standalone defaults, file/URL jobs, CLI, and MCP behavior remain unchanged. This public site serves no streaming endpoint.</p>
|
|
@@ -387,7 +388,7 @@
|
|
|
387
388
|
<li>Find the right setup for AMD ROCm in the install guide before installing dependencies — this applies to the optional <code>openai-whisper</code> engine and to diarization.</li>
|
|
388
389
|
</ul>
|
|
389
390
|
<a class="button secondary" href="https://github.com/scottconverse/textflowkit/blob/main/docs/install.md">Read install guide ↗</a>
|
|
390
|
-
<p class="note">New here? Follow the <a href="https://github.com/scottconverse/textflowkit/blob/main/docs/user-manual.md">v0.1.
|
|
391
|
+
<p class="note">New here? Follow the <a href="https://github.com/scottconverse/textflowkit/blob/main/docs/user-manual.md">v0.1.14 user manual</a> for CLI, MCP, HTTP, the local browser interface, export, and troubleshooting examples, or the <a href="https://github.com/scottconverse/textflowkit/blob/main/docs/adapters.md">developer and integration manual</a> for harness configuration and production settings.</p>
|
|
391
392
|
</div>
|
|
392
393
|
<div>
|
|
393
394
|
<pre class="codebox"><span class="prompt">$ </span>python -m pip install "textflowkit[mcp,http]"
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Install notes
|
|
2
2
|
|
|
3
|
-
Current release: [v0.1.
|
|
3
|
+
Current release: [v0.1.14](https://github.com/scottconverse/textflowkit/releases/tag/v0.1.14).
|
|
4
|
+
|
|
5
|
+
v0.1.14 updates developer workflow documentation only; runtime behavior is unchanged. The latest verified Windows installer remains v0.1.13 with its matching sources and notices.
|
|
4
6
|
Use `textflowkit --version` to confirm the installed version. For everyday
|
|
5
7
|
commands and outputs, start with the [user manual](user-manual.md).
|
|
6
8
|
|
|
@@ -55,7 +57,7 @@ The local browser workspace **ships in the core package as of v0.1.10**. A
|
|
|
55
57
|
regular install of the current release carries the `textflowkit-ui` command:
|
|
56
58
|
|
|
57
59
|
```bash
|
|
58
|
-
python -m pip install 'textflowkit[http,export]==0.1.
|
|
60
|
+
python -m pip install 'textflowkit[http,export]==0.1.14'
|
|
59
61
|
textflowkit-ui
|
|
60
62
|
```
|
|
61
63
|
|
|
@@ -84,14 +86,14 @@ them; cancel a job first to stop it early. See the
|
|
|
84
86
|
|
|
85
87
|
## Live microphone streaming
|
|
86
88
|
|
|
87
|
-
Live streaming in v0.1.
|
|
89
|
+
Live streaming in v0.1.14 (introduced in v0.1.11) is **Windows x86_64 only, opt-in and off by default**.
|
|
88
90
|
Other live platforms are unsupported; existing standalone platform support and
|
|
89
91
|
Whistle defaults are unchanged. Physical browser microphone capture has not been
|
|
90
92
|
verified; the public website is static documentation and does not accept streams. It needs one extra dependency
|
|
91
93
|
(the WebSocket implementation for the ASGI server):
|
|
92
94
|
|
|
93
95
|
```bash
|
|
94
|
-
python -m pip install "textflowkit[streaming]==0.1.
|
|
96
|
+
python -m pip install "textflowkit[streaming]==0.1.14"
|
|
95
97
|
```
|
|
96
98
|
|
|
97
99
|
Set `TEXTFLOWKIT_STREAMING=1` to serve it, then open the shipped browser example.
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Release verification checklist
|
|
2
2
|
|
|
3
|
-
## v0.1.
|
|
3
|
+
## v0.1.14 documentation-only patch
|
|
4
|
+
|
|
5
|
+
Core 0.1.14; fonts 0.1.6 reused unchanged. This release changes developer workflow documentation and current version metadata only, not application logic/dependencies. Run `python scripts/verify_release_versions.py --tag v0.1.14`, `python scripts/verify_readme_release.py --version v0.1.14`, affected release-surface tests and required CI. Merge only after green PR CI; require exact merged-main CI before tagging/publishing. Verify published distribution hashes, fresh installed version and the deployed website.
|
|
6
|
+
|
|
7
|
+
The verified Windows installer and its corresponding sources/notices remain v0.1.13; keep those download links explicitly versioned. Do not relabel/rebuild unchanged installer artifacts merely for this documentation patch. Reuse unaffected v0.1.13 native/live evidence with its original commit/version and do not claim a new live YouTube or native accuracy verification for v0.1.14. No changes to the live-check script or its requirements.
|
|
8
|
+
|
|
9
|
+
## Historical v0.1.13 release preparation
|
|
4
10
|
|
|
5
11
|
Core is 0.1.13; fonts remain 0.1.6, unchanged. Run the existing guards from the candidate root:
|
|
6
12
|
|
|
@@ -262,3 +262,8 @@ the full five-role audit of v0.1.6 main commit
|
|
|
262
262
|
Deferral does not remove these findings or waive their acceptance criteria.
|
|
263
263
|
Core engineering/runtime bugs and the major documentation corrections remain
|
|
264
264
|
in the active repair goal. See the [changelog](../CHANGELOG.md).
|
|
265
|
+
|
|
266
|
+
## v0.1.14 — developer workflow documentation
|
|
267
|
+
|
|
268
|
+
- [x] Ship v0.1.14 review follow-ups: persist the headless-Codex-only DeepSeek coding policy across restarts; require the exact 1017-cloud model, thinking off, isolated worktree/config/environment and native Windows sandbox, with no silent fallback.
|
|
269
|
+
- [x] Update current package/documentation release references; retain the verified v0.1.13 Windows installer and historical native evidence unchanged. No new application capability.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Live microphone streaming — v0.1.
|
|
1
|
+
# Live microphone streaming — v0.1.14
|
|
2
2
|
|
|
3
3
|
TextFlowKit can transcribe a **live microphone** as you speak: audio is captured in
|
|
4
4
|
the browser, resampled to 16 kHz mono, and streamed to a local WebSocket, and the
|
|
@@ -9,7 +9,7 @@ commands, and the limits.
|
|
|
9
9
|
The capability is **opt-in, loopback-only, and verified on this machine's native
|
|
10
10
|
engine for bounded live runs** — 65 s and 300 s end-to-end native streams ran
|
|
11
11
|
locally on Windows x86_64 (see *Limits and known constraints*). Native live support is **Windows x86_64 only**; other live platforms are
|
|
12
|
-
unsupported. This v0.1.
|
|
12
|
+
unsupported. This v0.1.14 release surface (introduced in v0.1.11) is gated behind an environment switch
|
|
13
13
|
so a default install never serves it. The public website is static documentation,
|
|
14
14
|
not a streaming service. Publication and remote CI are separate release gates.
|
|
15
15
|
|
|
@@ -45,7 +45,7 @@ audio buffer is allocated.
|
|
|
45
45
|
### Option A — the local browser UI (point and click)
|
|
46
46
|
|
|
47
47
|
```bat
|
|
48
|
-
python -m pip install "textflowkit[streaming]==0.1.
|
|
48
|
+
python -m pip install "textflowkit[streaming]==0.1.14"
|
|
49
49
|
set TEXTFLOWKIT_STREAMING=1
|
|
50
50
|
textflowkit-ui
|
|
51
51
|
```
|
|
@@ -61,7 +61,7 @@ first WebSocket message; it is never written into the page, its JavaScript, or a
|
|
|
61
61
|
### Option B — the developer HTTP API (programmatic clients)
|
|
62
62
|
|
|
63
63
|
```bat
|
|
64
|
-
python -m pip install "textflowkit[streaming]==0.1.
|
|
64
|
+
python -m pip install "textflowkit[streaming]==0.1.14"
|
|
65
65
|
set TEXTFLOWKIT_STREAMING=1
|
|
66
66
|
set TEXTFLOWKIT_API_TOKEN=choose-a-long-random-token
|
|
67
67
|
textflowkit-http --streaming
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
# TextFlowKit user manual — v0.1.
|
|
1
|
+
# TextFlowKit user manual — v0.1.14
|
|
2
|
+
|
|
3
|
+
v0.1.14 is a documentation-only patch. Transcription behavior is unchanged from v0.1.13; the latest verified Windows installer remains v0.1.13. Developer workflow changes are described in the [integration manual](adapters.md).
|
|
2
4
|
|
|
3
5
|
TextFlowKit turns a local audio/video file or a supported media URL into a
|
|
4
6
|
timestamped transcript. It is a **self-hosted developer tool**, not a hosted
|
|
@@ -79,7 +81,7 @@ Install Python 3.10 or later and `ffmpeg`/`ffprobe` on `PATH`. For a standard
|
|
|
79
81
|
CPU setup, install the current release from PyPI:
|
|
80
82
|
|
|
81
83
|
```bash
|
|
82
|
-
python -m pip install 'textflowkit[export,mcp,http]==0.1.
|
|
84
|
+
python -m pip install 'textflowkit[export,mcp,http]==0.1.14'
|
|
83
85
|
textflowkit --version
|
|
84
86
|
textflowkit doctor
|
|
85
87
|
textflowkit selftest
|
|
@@ -347,7 +349,7 @@ point from the developer HTTP API, reuses the same pipeline and job store, and i
|
|
|
347
349
|
served on loopback only.
|
|
348
350
|
|
|
349
351
|
```bash
|
|
350
|
-
python -m pip install 'textflowkit[http,export]==0.1.
|
|
352
|
+
python -m pip install 'textflowkit[http,export]==0.1.14'
|
|
351
353
|
textflowkit-ui
|
|
352
354
|
```
|
|
353
355
|
|
|
@@ -439,7 +441,7 @@ and nowhere else.
|
|
|
439
441
|
|
|
440
442
|
It is **off by default**: with the switch unset the endpoint
|
|
441
443
|
does not exist. It needs the `streaming` extra
|
|
442
|
-
(`python -m pip install "textflowkit[streaming]==0.1.
|
|
444
|
+
(`python -m pip install "textflowkit[streaming]==0.1.14"`). This is a capability of the
|
|
443
445
|
**servers**, not the command-line `textflowkit` tool — the CLI never opens a
|
|
444
446
|
microphone. See [streaming.md](streaming.md) for the full contract and the
|
|
445
447
|
programmatic API.
|
|
@@ -523,8 +525,8 @@ passes with Whistle's own real speech output.
|
|
|
523
525
|
|
|
524
526
|
## 9. Release and help
|
|
525
527
|
|
|
526
|
-
- [v0.1.
|
|
527
|
-
- [Core package 0.1.
|
|
528
|
+
- [v0.1.14 GitHub release](https://github.com/scottconverse/textflowkit/releases/tag/v0.1.14)
|
|
529
|
+
- [Core package 0.1.14 on PyPI](https://pypi.org/project/textflowkit/0.1.14/) and [unchanged optional font package 0.1.6](https://pypi.org/project/textflowkit-fonts/0.1.6/)
|
|
528
530
|
- [Release verification procedure](release-checklist.md), [security policy](../SECURITY.md), and [issues](https://github.com/scottconverse/textflowkit/issues)
|
|
529
531
|
|
|
530
532
|
The v0.1.13 release fixes reproduced Whistle speech omissions with a 15-second
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "textflowkit"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.14"
|
|
8
8
|
description = "Cross-platform media transcription toolkit: URL or file in, timestamped transcripts and subtitle files out."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|