readio 0.2.2__tar.gz → 0.2.4__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.
- {readio-0.2.2 → readio-0.2.4}/.github/workflows/codecov.yml +1 -2
- readio-0.2.4/.github/workflows/python-publish.yml +49 -0
- {readio-0.2.2 → readio-0.2.4}/.github/workflows/tests.yml +47 -6
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +23 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0001.md +29 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0002.md +27 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0003.md +25 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0004.md +30 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0005.md +31 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0006.md +29 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.3/release.md +27 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.4/audit/commit-audit.yaml +212 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.4/entries/entry-0001.md +46 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.4/entries/entry-0002.md +66 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.4/entries/entry-0003.md +51 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.4/entries/entry-0004.md +47 -0
- readio-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/v0.2.4/release.md +27 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/audit-decisions.yaml +65 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/audit.yaml +171 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/entries.yaml +157 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/evidence/18d1765.patch +1713 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/evidence/2c5e221.patch +781 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/evidence/4791e70.patch +828 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/evidence/5840ad5.patch +2691 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/evidence/manifest.json +155 -0
- readio-0.2.4/.ledger/releaseledger/work/v0.2.4/range.json +13 -0
- {readio-0.2.2/readio.egg-info → readio-0.2.4}/PKG-INFO +55 -8
- {readio-0.2.2 → readio-0.2.4}/README.md +52 -5
- {readio-0.2.2 → readio-0.2.4}/docs/changelog.md +36 -1
- {readio-0.2.2 → readio-0.2.4}/docs/index.md +42 -15
- {readio-0.2.2 → readio-0.2.4}/llm-guides/README.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/audio-drama.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/debate-pro-con.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/document-summary.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/dramatic-story.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/educational-explainer.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/funny-story.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/general-narration.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/guided-meditation.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/kids-story.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/language-learning.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/news-briefing.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/podcast-interview.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/podcast-roundtable.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/podcast-solo.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/llm-guides/ssmd/quiz-trivia.md +2 -2
- {readio-0.2.2 → readio-0.2.4}/pyproject.toml +2 -2
- {readio-0.2.2 → readio-0.2.4}/readio/audio.py +21 -8
- readio-0.2.4/readio/backends/__init__.py +15 -0
- readio-0.2.4/readio/backends/base.py +122 -0
- readio-0.2.4/readio/backends/pykokoro.py +409 -0
- readio-0.2.4/readio/backends/registry.py +39 -0
- {readio-0.2.2 → readio-0.2.4}/readio/cli.py +495 -133
- {readio-0.2.2 → readio-0.2.4}/readio/config.py +108 -5
- {readio-0.2.2 → readio-0.2.4}/readio/formats.py +3 -0
- readio-0.2.4/readio/lexicons.py +147 -0
- readio-0.2.4/readio/logging_config.py +50 -0
- {readio-0.2.2 → readio-0.2.4}/readio/models.py +132 -8
- {readio-0.2.2 → readio-0.2.4}/readio/plan.py +289 -120
- {readio-0.2.2 → readio-0.2.4}/readio/reader.py +125 -105
- {readio-0.2.2 → readio-0.2.4}/readio/spotify.py +5 -0
- {readio-0.2.2 → readio-0.2.4}/readio/spotify_cli.py +8 -0
- {readio-0.2.2 → readio-0.2.4}/readio/ssmd.py +43 -12
- {readio-0.2.2 → readio-0.2.4}/readio/synthesis.py +99 -8
- readio-0.2.4/readio/voices.py +351 -0
- {readio-0.2.2 → readio-0.2.4/readio.egg-info}/PKG-INFO +55 -8
- {readio-0.2.2 → readio-0.2.4}/readio.egg-info/SOURCES.txt +38 -1
- {readio-0.2.2 → readio-0.2.4}/readio.egg-info/requires.txt +2 -2
- {readio-0.2.2 → readio-0.2.4}/readio.egg-info/scm_file_list.json +38 -1
- readio-0.2.4/readio.egg-info/scm_version.json +8 -0
- {readio-0.2.2 → readio-0.2.4}/skill/readio/SKILL.md +11 -5
- {readio-0.2.2 → readio-0.2.4}/skill/readio/references/cli.md +36 -9
- {readio-0.2.2 → readio-0.2.4}/skill/readio/references/ssmd.md +1 -1
- {readio-0.2.2 → readio-0.2.4}/skill/readio/references/troubleshooting.md +27 -4
- readio-0.2.4/tests/test_backend_config.py +27 -0
- readio-0.2.4/tests/test_backend_dispatch.py +76 -0
- readio-0.2.4/tests/test_backends.py +24 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_cli.py +6 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_config.py +41 -1
- readio-0.2.4/tests/test_lexicon_catalog.py +60 -0
- readio-0.2.4/tests/test_lexicons_cli.py +98 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_llm_guides.py +2 -2
- readio-0.2.4/tests/test_logging_cli.py +136 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_manifest.py +28 -0
- readio-0.2.4/tests/test_packaging_metadata.py +30 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_plan.py +49 -1
- {readio-0.2.2 → readio-0.2.4}/tests/test_plan_no_tts_load.py +8 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_pykokoro_09_contract.py +11 -7
- {readio-0.2.2 → readio-0.2.4}/tests/test_pykokoro_09_regressions.py +24 -11
- readio-0.2.4/tests/test_pykokoro_09_support.py +231 -0
- readio-0.2.4/tests/test_reader_synthesis.py +134 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_render_from_plan.py +35 -4
- {readio-0.2.2 → readio-0.2.4}/tests/test_synthesis.py +6 -1
- readio-0.2.4/tests/test_voice_catalog.py +125 -0
- readio-0.2.4/tests/test_voices_cli.py +96 -0
- readio-0.2.2/.github/workflows/python-publish.yml +0 -30
- readio-0.2.2/CHANGELOG.md +0 -18
- readio-0.2.2/readio.egg-info/scm_version.json +0 -8
- readio-0.2.2/tests/test_reader_synthesis.py +0 -36
- readio-0.2.2/tests/test_voices_cli.py +0 -60
- {readio-0.2.2 → readio-0.2.4}/.codecrate.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.github/workflows/pre-commit.yml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.gitignore +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/.ledger-project.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/config.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/data/.ledger-project.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/data/docs/docs-changelog-md-77f023b9.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/data/docs/docs-index-md-b4d68dc8.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/data/docs/readme-md-b3356305.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/data/scan.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/data/source-index.json +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/documentledger/data/storage.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/ledger.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/.ledger-project.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/config.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/audit/commit-audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0001.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0002.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0003.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0004.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0005.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/release.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.1/audit/commit-audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.1/entries/entry-0001.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.1/release.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/audit/commit-audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0001.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0002.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0003.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0004.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/release.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/audit/commit-audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/entries/entry-0001.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/entries/entry-0002.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/release.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/audit/commit-audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0001.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0002.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0003.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0004.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0005.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0006.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/release.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.1/audit/commit-audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.1/entries/entry-0001.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.1/release.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/audit/commit-audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0001.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0002.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0003.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0004.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0005.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0006.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0007.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/release.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/work/v0.2.0/audit-decisions.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/work/v0.2.0/audit.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/work/v0.2.0/entries.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/work/v0.2.0/evidence/4ecf165.patch +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/work/v0.2.0/evidence/manifest.json +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/work/v0.2.0/range.json +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/releaseledger/write.lock +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/taskledger/.ledger-project.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.ledger/taskledger/config.toml +0 -0
- {readio-0.2.2 → readio-0.2.4}/.pre-commit-config.yaml +0 -0
- {readio-0.2.2 → readio-0.2.4}/LICENSE +0 -0
- {readio-0.2.2 → readio-0.2.4}/docs/conf.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/docs/make.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/docs/requirements.txt +0 -0
- {readio-0.2.2 → readio-0.2.4}/examples/README.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/examples/readio-podcast.ssmd +0 -0
- {readio-0.2.2 → readio-0.2.4}/examples/readio-prosody.ssmd +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/__init__.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/__main__.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/document.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/errors.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/ingest.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/jsonutil.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/manifest.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/markdown.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/paths.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/progress.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/resources/__init__.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/resources/templates/__init__.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/resources/templates/briefing.ssmd +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/resources/templates/dialogue.ssmd +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/resources/templates/podcast.ssmd +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/ssmd_authoring.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/templates.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/text.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio/wave.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio.egg-info/dependency_links.txt +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio.egg-info/entry_points.txt +0 -0
- {readio-0.2.2 → readio-0.2.4}/readio.egg-info/top_level.txt +0 -0
- {readio-0.2.2 → readio-0.2.4}/setup.cfg +0 -0
- {readio-0.2.2 → readio-0.2.4}/skill/readio/references/input-formats.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/skill/readio/references/spotify.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/conftest.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/fixtures/architecture-review.ssmd +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/fixtures/markdown/all-elements.md +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/fixtures/markdown/all-elements.txt +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_audio.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_audio_formats.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_chapters.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_defaults_cli.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_doctor.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_document.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_examples.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_ffmpeg_sink.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_ingest.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_language_defaults_config.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_markdown.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_model_source_preference.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_models_cli.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_package_resources.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_paths.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_plan_cli.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_plan_validation.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_progress.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_reader_markdown.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_reader_selection.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_reader_ssmd.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_render_manifest_cli.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_skill_integrity.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_spotify.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_spotify_cli.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_spotify_lifecycle.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_ssmd_cli.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_ssmd_integration.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_ssmd_model_roster.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_ssmd_preflight.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_ssmd_single_source.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_template_validate.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_templates.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_text.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_voice_resolution_workflow.py +0 -0
- {readio-0.2.2 → readio-0.2.4}/tests/test_wave.py +0 -0
|
@@ -16,8 +16,7 @@ jobs:
|
|
|
16
16
|
cache: pip
|
|
17
17
|
- name: Install Readio runtime dependencies
|
|
18
18
|
run: |
|
|
19
|
-
python -m pip install "
|
|
20
|
-
python -m pip install "pykokoro[playback] @ git+https://github.com/buchwandler/pykokoro.git@07fdd07f4cccff7ab58bbe1f5c801bebe8b41a85"
|
|
19
|
+
python -m pip install "pykokoro[playback]==0.9.9"
|
|
21
20
|
- name: Install project and coverage tools
|
|
22
21
|
run: |
|
|
23
22
|
python -m pip install --upgrade pip
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Build and publish Readio when a GitHub Release is published.
|
|
2
|
+
|
|
3
|
+
name: Upload Python Package
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
release:
|
|
7
|
+
types: [published]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
deploy:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Check out release
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.13"
|
|
22
|
+
- name: Install build tooling
|
|
23
|
+
run: python -m pip install --upgrade pip build twine
|
|
24
|
+
- name: Build package
|
|
25
|
+
run: python -m build
|
|
26
|
+
- name: Validate artifact metadata
|
|
27
|
+
run: python -m twine check dist/*
|
|
28
|
+
- name: Validate release version
|
|
29
|
+
env:
|
|
30
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
31
|
+
run: |
|
|
32
|
+
python - <<'PY'
|
|
33
|
+
import os
|
|
34
|
+
from pathlib import Path
|
|
35
|
+
from packaging.utils import parse_wheel_filename
|
|
36
|
+
|
|
37
|
+
expected = os.environ["RELEASE_TAG"].removeprefix("v")
|
|
38
|
+
wheels = list(Path("dist").glob("*.whl"))
|
|
39
|
+
assert len(wheels) == 1, f"expected one wheel, found {len(wheels)}"
|
|
40
|
+
_, version, _, _ = parse_wheel_filename(wheels[0].name)
|
|
41
|
+
assert str(version) == expected, (
|
|
42
|
+
f"wheel version {version} does not match release tag {expected}"
|
|
43
|
+
)
|
|
44
|
+
PY
|
|
45
|
+
- name: Publish package to PyPI
|
|
46
|
+
uses: pypa/gh-action-pypi-publish@v1.14.1
|
|
47
|
+
with:
|
|
48
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
49
|
+
attestations: false
|
|
@@ -25,8 +25,7 @@ jobs:
|
|
|
25
25
|
cache: pip
|
|
26
26
|
- name: Install Readio runtime dependencies
|
|
27
27
|
run: |
|
|
28
|
-
python -m pip install "
|
|
29
|
-
python -m pip install "pykokoro[playback] @ git+https://github.com/buchwandler/pykokoro.git@07fdd07f4cccff7ab58bbe1f5c801bebe8b41a85"
|
|
28
|
+
python -m pip install "pykokoro[playback]==0.9.9"
|
|
30
29
|
- name: Install project and test tools
|
|
31
30
|
run: |
|
|
32
31
|
python -m pip install --upgrade pip
|
|
@@ -34,6 +33,49 @@ jobs:
|
|
|
34
33
|
- name: Run test suite
|
|
35
34
|
run: python -m pytest -q
|
|
36
35
|
|
|
36
|
+
|
|
37
|
+
minimum-compatibility:
|
|
38
|
+
name: Minimum PyKokoro compatibility (Ubuntu, Python 3.10)
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v4
|
|
42
|
+
- name: Install PortAudio
|
|
43
|
+
run: sudo apt-get update && sudo apt-get install --yes portaudio19-dev
|
|
44
|
+
- name: Set up Python
|
|
45
|
+
uses: actions/setup-python@v5
|
|
46
|
+
with:
|
|
47
|
+
python-version: "3.10"
|
|
48
|
+
cache: pip
|
|
49
|
+
- name: Install minimum PyKokoro runtime
|
|
50
|
+
run: python -m pip install "pykokoro[playback]==0.9.9"
|
|
51
|
+
- name: Install project and test tools
|
|
52
|
+
run: |
|
|
53
|
+
python -m pip install --upgrade pip
|
|
54
|
+
python -m pip install -e ".[dev]"
|
|
55
|
+
- name: Run minimum-version test suite
|
|
56
|
+
run: python -m pytest -q
|
|
57
|
+
current-compatibility:
|
|
58
|
+
name: Current PyKokoro compatibility (Ubuntu, Python 3.13)
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
steps:
|
|
61
|
+
- uses: actions/checkout@v4
|
|
62
|
+
- name: Install PortAudio
|
|
63
|
+
run: sudo apt-get update && sudo apt-get install --yes portaudio19-dev
|
|
64
|
+
- name: Set up Python
|
|
65
|
+
uses: actions/setup-python@v5
|
|
66
|
+
with:
|
|
67
|
+
python-version: "3.13"
|
|
68
|
+
cache: pip
|
|
69
|
+
- name: Install current supported PyKokoro range
|
|
70
|
+
run: python -m pip install "pykokoro[playback]>=0.9.9,<0.10"
|
|
71
|
+
- name: Show installed PyKokoro version
|
|
72
|
+
run: python -c "import importlib.metadata; print('PyKokoro', importlib.metadata.version('pykokoro'))"
|
|
73
|
+
- name: Install project and test tools
|
|
74
|
+
run: |
|
|
75
|
+
python -m pip install --upgrade pip
|
|
76
|
+
python -m pip install -e ".[dev]"
|
|
77
|
+
- name: Run current-range test suite
|
|
78
|
+
run: python -m pytest -q
|
|
37
79
|
quality:
|
|
38
80
|
name: Static quality checks
|
|
39
81
|
runs-on: ubuntu-latest
|
|
@@ -48,8 +90,7 @@ jobs:
|
|
|
48
90
|
cache: pip
|
|
49
91
|
- name: Install Readio runtime dependencies
|
|
50
92
|
run: |
|
|
51
|
-
python -m pip install "
|
|
52
|
-
python -m pip install "pykokoro[playback] @ git+https://github.com/buchwandler/pykokoro.git@07fdd07f4cccff7ab58bbe1f5c801bebe8b41a85"
|
|
93
|
+
python -m pip install "pykokoro[playback]==0.9.9"
|
|
53
94
|
- name: Install development tools
|
|
54
95
|
run: python -m pip install -e ".[dev]"
|
|
55
96
|
- name: Ruff lint
|
|
@@ -81,9 +122,9 @@ jobs:
|
|
|
81
122
|
shell: bash
|
|
82
123
|
run: |
|
|
83
124
|
python -m venv "${RUNNER_TEMP}/readio-wheel-smoke"
|
|
84
|
-
"${RUNNER_TEMP}/readio-wheel-smoke/bin/python" -m pip install "
|
|
85
|
-
"${RUNNER_TEMP}/readio-wheel-smoke/bin/python" -m pip install "pykokoro[playback] @ git+https://github.com/buchwandler/pykokoro.git@07fdd07f4cccff7ab58bbe1f5c801bebe8b41a85"
|
|
125
|
+
"${RUNNER_TEMP}/readio-wheel-smoke/bin/python" -m pip install "pykokoro[playback]==0.9.9"
|
|
86
126
|
"${RUNNER_TEMP}/readio-wheel-smoke/bin/python" -m pip install dist/*.whl
|
|
127
|
+
"${RUNNER_TEMP}/readio-wheel-smoke/bin/python" -m pip check
|
|
87
128
|
cd "${RUNNER_TEMP}"
|
|
88
129
|
"${RUNNER_TEMP}/readio-wheel-smoke/bin/python" - <<'PY'
|
|
89
130
|
import importlib.metadata
|
|
@@ -55,3 +55,26 @@
|
|
|
55
55
|
{"data":{"kind":"quality","status":"accepted"},"entry_id":"entry-0005","event":"entry.added","event_id":"event-0055","record_revisions":{"entry:v0.2.2/entry-0005":1,"release:v0.2.2":9},"release_version":"v0.2.2","schema_version":2}
|
|
56
56
|
{"data":{"kind":"quality","status":"accepted"},"entry_id":"entry-0006","event":"entry.added","event_id":"event-0056","record_revisions":{"entry:v0.2.2/entry-0006":1,"release:v0.2.2":10},"release_version":"v0.2.2","schema_version":2}
|
|
57
57
|
{"data":{"kind":"internal","status":"accepted"},"entry_id":"entry-0007","event":"entry.added","event_id":"event-0057","record_revisions":{"entry:v0.2.2/entry-0007":1,"release:v0.2.2":11},"release_version":"v0.2.2","schema_version":2}
|
|
58
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0058","record_revisions":{"release:v0.2.3":1},"release_version":"v0.2.3","schema_version":2}
|
|
59
|
+
{"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0001","event":"entry.added","event_id":"event-0059","record_revisions":{"entry:v0.2.3/entry-0001":1,"release:v0.2.3":2},"release_version":"v0.2.3","schema_version":2}
|
|
60
|
+
{"data":{"kind":"quality","status":"accepted"},"entry_id":"entry-0002","event":"entry.added","event_id":"event-0060","record_revisions":{"entry:v0.2.3/entry-0002":1,"release:v0.2.3":3},"release_version":"v0.2.3","schema_version":2}
|
|
61
|
+
{"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0003","event":"entry.added","event_id":"event-0061","record_revisions":{"entry:v0.2.3/entry-0003":1,"release:v0.2.3":4},"release_version":"v0.2.3","schema_version":2}
|
|
62
|
+
{"data":{"kind":"docs","status":"accepted"},"entry_id":"entry-0004","event":"entry.added","event_id":"event-0062","record_revisions":{"entry:v0.2.3/entry-0004":1,"release:v0.2.3":5},"release_version":"v0.2.3","schema_version":2}
|
|
63
|
+
{"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0005","event":"entry.added","event_id":"event-0063","record_revisions":{"entry:v0.2.3/entry-0005":1,"release:v0.2.3":6},"release_version":"v0.2.3","schema_version":2}
|
|
64
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0005","event":"entry.updated","event_id":"event-0064","record_revisions":{"entry:v0.2.3/entry-0005":2},"release_version":"v0.2.3","schema_version":2}
|
|
65
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"reason":"Correct stale tested PyKokoro version to the supported 0.9.5 floor.","removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0001","event":"entry.updated","event_id":"event-0065","record_revisions":{"entry:v0.2.3/entry-0001":2},"release_version":"v0.2.3","schema_version":2}
|
|
66
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"reason":"Correct stale tested PyKokoro version to the supported 0.9.5 floor.","removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0004","event":"entry.updated","event_id":"event-0066","record_revisions":{"entry:v0.2.3/entry-0004":2},"release_version":"v0.2.3","schema_version":2}
|
|
67
|
+
{"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0006","event":"entry.added","event_id":"event-0067","record_revisions":{"entry:v0.2.3/entry-0006":1,"release:v0.2.3":7},"release_version":"v0.2.3","schema_version":2}
|
|
68
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"reason":"Align the changed entry wording with its kind and supported dependency floor.","removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0001","event":"entry.updated","event_id":"event-0068","record_revisions":{"entry:v0.2.3/entry-0001":3},"release_version":"v0.2.3","schema_version":2}
|
|
69
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"reason":"Align the quality entry wording with its kind.","removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0002","event":"entry.updated","event_id":"event-0069","record_revisions":{"entry:v0.2.3/entry-0002":2},"release_version":"v0.2.3","schema_version":2}
|
|
70
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"reason":"Align the changed entry wording with its kind.","removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0003","event":"entry.updated","event_id":"event-0070","record_revisions":{"entry:v0.2.3/entry-0003":2},"release_version":"v0.2.3","schema_version":2}
|
|
71
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"reason":"Align the changed entry wording with its kind and recommended summary length.","removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0005","event":"entry.updated","event_id":"event-0071","record_revisions":{"entry:v0.2.3/entry-0005":3},"release_version":"v0.2.3","schema_version":2}
|
|
72
|
+
{"data":{"added_source_refs":[],"fields":["summary"],"reason":"Shorten the new user-facing entry while retaining its behavior.","removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0006","event":"entry.updated","event_id":"event-0072","record_revisions":{"entry:v0.2.3/entry-0006":2},"release_version":"v0.2.3","schema_version":2}
|
|
73
|
+
{"data":{"released_at":"2026-09-11"},"event":"release.finalized","event_id":"event-0073","record_revisions":{"release:v0.2.3":8},"release_version":"v0.2.3","schema_version":2}
|
|
74
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0074","record_revisions":{"release:v0.2.4":1},"release_version":"v0.2.4","schema_version":2}
|
|
75
|
+
{"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_head_ref","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0075","record_revisions":{"release:v0.2.4":2},"release_version":"v0.2.4","schema_version":2}
|
|
76
|
+
{"data":{"row_count":4},"event":"audit.created","event_id":"event-0076","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.2.4","schema_version":2}
|
|
77
|
+
{"data":{"updated_rows":4},"event":"audit.updated","event_id":"event-0077","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.2.4","schema_version":2}
|
|
78
|
+
{"data":{"entry_ids":["entry-0001","entry-0002","entry-0003","entry-0004"],"synced_audit_rows":4},"event":"entry.batch_added","event_id":"event-0078","record_revisions":{"commit_audit_sheet":3,"entry:v0.2.4/entry-0001":1,"entry:v0.2.4/entry-0002":1,"entry:v0.2.4/entry-0003":1,"entry:v0.2.4/entry-0004":1,"release:v0.2.4":3},"release_version":"v0.2.4","schema_version":2}
|
|
79
|
+
{"data":{"released_at":"2026-09-14"},"event":"release.finalized","event_id":"event-0079","record_revisions":{"release:v0.2.4":4},"release_version":"v0.2.4","schema_version":2}
|
|
80
|
+
{"data":{"fields":["released_at"]},"event":"release.updated","event_id":"event-0080","record_revisions":{"release:v0.2.4":5},"release_version":"v0.2.4","schema_version":2}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 3
|
|
7
|
+
entry_id: entry-0001
|
|
8
|
+
release_version: v0.2.3
|
|
9
|
+
kind: changed
|
|
10
|
+
summary:
|
|
11
|
+
Changed Readio dependency metadata and CI to use PyKokoro 0.9.5 and SSMD
|
|
12
|
+
0.8.7+
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- tl:task-0019
|
|
18
|
+
paths:
|
|
19
|
+
- pyproject.toml
|
|
20
|
+
- .github/workflows/tests.yml
|
|
21
|
+
- .github/workflows/codecov.yml
|
|
22
|
+
issues: []
|
|
23
|
+
prs: []
|
|
24
|
+
sources: []
|
|
25
|
+
contributors: []
|
|
26
|
+
breaking: false
|
|
27
|
+
internal: false
|
|
28
|
+
order: 1
|
|
29
|
+
---
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 2
|
|
7
|
+
entry_id: entry-0002
|
|
8
|
+
release_version: v0.2.3
|
|
9
|
+
kind: quality
|
|
10
|
+
summary: Improved PyKokoro compatibility and package metadata regression coverage
|
|
11
|
+
status: accepted
|
|
12
|
+
audience: null
|
|
13
|
+
scopes: []
|
|
14
|
+
source_refs: []
|
|
15
|
+
paths:
|
|
16
|
+
- tests/test_pykokoro_09_contract.py
|
|
17
|
+
- tests/test_pykokoro_09_support.py
|
|
18
|
+
- tests/test_packaging_metadata.py
|
|
19
|
+
issues: []
|
|
20
|
+
prs: []
|
|
21
|
+
sources:
|
|
22
|
+
- tl:task-0019
|
|
23
|
+
contributors: []
|
|
24
|
+
breaking: false
|
|
25
|
+
internal: false
|
|
26
|
+
order: 2
|
|
27
|
+
---
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 2
|
|
7
|
+
entry_id: entry-0003
|
|
8
|
+
release_version: v0.2.3
|
|
9
|
+
kind: changed
|
|
10
|
+
summary: Changed package publishing with artifact checks and release-tag version validation
|
|
11
|
+
status: accepted
|
|
12
|
+
audience: null
|
|
13
|
+
scopes: []
|
|
14
|
+
source_refs: []
|
|
15
|
+
paths:
|
|
16
|
+
- .github/workflows/python-publish.yml
|
|
17
|
+
issues: []
|
|
18
|
+
prs: []
|
|
19
|
+
sources:
|
|
20
|
+
- tl:task-0019
|
|
21
|
+
contributors: []
|
|
22
|
+
breaking: false
|
|
23
|
+
internal: false
|
|
24
|
+
order: 3
|
|
25
|
+
---
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 2
|
|
7
|
+
entry_id: entry-0004
|
|
8
|
+
release_version: v0.2.3
|
|
9
|
+
kind: docs
|
|
10
|
+
summary:
|
|
11
|
+
Documented the PyKokoro support floor, 0.9.5 tested target, and supported
|
|
12
|
+
SSMD API
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs: []
|
|
17
|
+
paths:
|
|
18
|
+
- README.md
|
|
19
|
+
- docs/index.md
|
|
20
|
+
- skill/readio/SKILL.md
|
|
21
|
+
- llm-guides
|
|
22
|
+
issues: []
|
|
23
|
+
prs: []
|
|
24
|
+
sources:
|
|
25
|
+
- tl:task-0019
|
|
26
|
+
contributors: []
|
|
27
|
+
breaking: false
|
|
28
|
+
internal: false
|
|
29
|
+
order: 4
|
|
30
|
+
---
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 3
|
|
7
|
+
entry_id: entry-0005
|
|
8
|
+
release_version: v0.2.3
|
|
9
|
+
kind: changed
|
|
10
|
+
summary:
|
|
11
|
+
Changed spaCy model-size and short-sentence synthesis controls, including
|
|
12
|
+
reader configuration migration
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- tl:task-0021
|
|
18
|
+
paths:
|
|
19
|
+
- readio/config.py
|
|
20
|
+
- readio/cli.py
|
|
21
|
+
- readio/plan.py
|
|
22
|
+
- readio/reader.py
|
|
23
|
+
- readio/synthesis.py
|
|
24
|
+
issues: []
|
|
25
|
+
prs: []
|
|
26
|
+
sources: []
|
|
27
|
+
contributors: []
|
|
28
|
+
breaking: false
|
|
29
|
+
internal: false
|
|
30
|
+
order: 5
|
|
31
|
+
---
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 2
|
|
7
|
+
entry_id: entry-0006
|
|
8
|
+
release_version: v0.2.3
|
|
9
|
+
kind: changed
|
|
10
|
+
summary:
|
|
11
|
+
Changed Readio's speak/render pause default from tts to auto while preserving
|
|
12
|
+
config and CLI overrides
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- tl:task-0025
|
|
18
|
+
paths:
|
|
19
|
+
- readio/config.py
|
|
20
|
+
- readio/plan.py
|
|
21
|
+
- readio/synthesis.py
|
|
22
|
+
issues: []
|
|
23
|
+
prs: []
|
|
24
|
+
sources: []
|
|
25
|
+
contributors: []
|
|
26
|
+
breaking: false
|
|
27
|
+
internal: false
|
|
28
|
+
order: 6
|
|
29
|
+
---
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 8
|
|
7
|
+
version: v0.2.3
|
|
8
|
+
status: released
|
|
9
|
+
history_state: curated
|
|
10
|
+
title: Readio v0.2.3
|
|
11
|
+
released_at: "2026-09-11"
|
|
12
|
+
previous_version: v0.2.2
|
|
13
|
+
cancel_reason: null
|
|
14
|
+
superseded_by: null
|
|
15
|
+
changelog_file: null
|
|
16
|
+
boundary_ref: null
|
|
17
|
+
source_refs: []
|
|
18
|
+
source_count: null
|
|
19
|
+
entry_count: 6
|
|
20
|
+
artifact_count: 0
|
|
21
|
+
git_base_ref: null
|
|
22
|
+
git_base_sha: null
|
|
23
|
+
git_head_ref: null
|
|
24
|
+
git_head_sha: null
|
|
25
|
+
git_range: null
|
|
26
|
+
git_commit_count: null
|
|
27
|
+
---
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
object_type: commit_audit_sheet
|
|
3
|
+
versioning:
|
|
4
|
+
schema_version: 1
|
|
5
|
+
revision: 3
|
|
6
|
+
release_version: v0.2.4
|
|
7
|
+
git_base_ref: v0.2.3
|
|
8
|
+
git_base_sha: 9b264c5a7b09096c299b90d2f8fe6fb30a2a96d0
|
|
9
|
+
git_head_ref: HEAD
|
|
10
|
+
git_head_sha: 2c5e221eab0f4047a8157dcacb85e5d31c956d3a
|
|
11
|
+
git_range: 9b264c5a7b09096c299b90d2f8fe6fb30a2a96d0..2c5e221eab0f4047a8157dcacb85e5d31c956d3a
|
|
12
|
+
commit_count: 4
|
|
13
|
+
rows:
|
|
14
|
+
- sha: 4791e709a5f940404c7e40f04333f0996931453d
|
|
15
|
+
source_ref: git:4791e709a5f940404c7e40f04333f0996931453d
|
|
16
|
+
short_sha: 4791e70
|
|
17
|
+
changed_paths:
|
|
18
|
+
- .ledger/releaseledger/data/ledgers/main/events/events.jsonl
|
|
19
|
+
- .ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0005.md
|
|
20
|
+
- .ledger/releaseledger/data/ledgers/main/releases/v0.2.3/release.md
|
|
21
|
+
- README.md
|
|
22
|
+
- docs/changelog.md
|
|
23
|
+
- docs/index.md
|
|
24
|
+
- readio/cli.py
|
|
25
|
+
- readio/config.py
|
|
26
|
+
- readio/plan.py
|
|
27
|
+
- readio/reader.py
|
|
28
|
+
- readio/synthesis.py
|
|
29
|
+
- skill/readio/references/cli.md
|
|
30
|
+
- skill/readio/references/troubleshooting.md
|
|
31
|
+
- tests/test_config.py
|
|
32
|
+
- tests/test_plan.py
|
|
33
|
+
- tests/test_plan_no_tts_load.py
|
|
34
|
+
- tests/test_reader_synthesis.py
|
|
35
|
+
- tests/test_render_from_plan.py
|
|
36
|
+
stats:
|
|
37
|
+
files_changed: 0
|
|
38
|
+
insertions: 369
|
|
39
|
+
deletions: 26
|
|
40
|
+
inspected: true
|
|
41
|
+
inspected_paths:
|
|
42
|
+
- readio/config.py
|
|
43
|
+
- readio/plan.py
|
|
44
|
+
- readio/reader.py
|
|
45
|
+
- readio/synthesis.py
|
|
46
|
+
- tests/test_config.py
|
|
47
|
+
- tests/test_plan.py
|
|
48
|
+
- tests/test_reader_synthesis.py
|
|
49
|
+
observed_behavior:
|
|
50
|
+
Reader synthesis planning now supports explicit spaCy tiers and
|
|
51
|
+
configurable short-sentence handling, with legacy required values normalized to
|
|
52
|
+
sm.
|
|
53
|
+
public_impact: public
|
|
54
|
+
decision: accepted
|
|
55
|
+
stale: false
|
|
56
|
+
evidence_subject: "feat: add spacy policy and parameter for short sentences"
|
|
57
|
+
target_entry_id: entry-0001
|
|
58
|
+
notes: ""
|
|
59
|
+
- sha: 18d17658338164cf7a62f805eece4802de217394
|
|
60
|
+
source_ref: git:18d17658338164cf7a62f805eece4802de217394
|
|
61
|
+
short_sha: 18d1765
|
|
62
|
+
changed_paths:
|
|
63
|
+
- .github/workflows/codecov.yml
|
|
64
|
+
- .github/workflows/tests.yml
|
|
65
|
+
- README.md
|
|
66
|
+
- docs/index.md
|
|
67
|
+
- llm-guides/README.md
|
|
68
|
+
- llm-guides/ssmd/audio-drama.md
|
|
69
|
+
- llm-guides/ssmd/debate-pro-con.md
|
|
70
|
+
- llm-guides/ssmd/document-summary.md
|
|
71
|
+
- llm-guides/ssmd/dramatic-story.md
|
|
72
|
+
- llm-guides/ssmd/educational-explainer.md
|
|
73
|
+
- llm-guides/ssmd/funny-story.md
|
|
74
|
+
- llm-guides/ssmd/general-narration.md
|
|
75
|
+
- llm-guides/ssmd/guided-meditation.md
|
|
76
|
+
- llm-guides/ssmd/kids-story.md
|
|
77
|
+
- llm-guides/ssmd/language-learning.md
|
|
78
|
+
- llm-guides/ssmd/news-briefing.md
|
|
79
|
+
- llm-guides/ssmd/podcast-interview.md
|
|
80
|
+
- llm-guides/ssmd/podcast-roundtable.md
|
|
81
|
+
- llm-guides/ssmd/podcast-solo.md
|
|
82
|
+
- llm-guides/ssmd/quiz-trivia.md
|
|
83
|
+
- pyproject.toml
|
|
84
|
+
- readio/cli.py
|
|
85
|
+
- readio/config.py
|
|
86
|
+
- readio/models.py
|
|
87
|
+
- readio/plan.py
|
|
88
|
+
- readio/ssmd.py
|
|
89
|
+
- readio/synthesis.py
|
|
90
|
+
- readio/voices.py
|
|
91
|
+
- skill/readio/SKILL.md
|
|
92
|
+
- skill/readio/references/cli.md
|
|
93
|
+
- skill/readio/references/ssmd.md
|
|
94
|
+
- skill/readio/references/troubleshooting.md
|
|
95
|
+
- tests/test_llm_guides.py
|
|
96
|
+
- tests/test_packaging_metadata.py
|
|
97
|
+
- tests/test_pykokoro_09_contract.py
|
|
98
|
+
- tests/test_pykokoro_09_regressions.py
|
|
99
|
+
- tests/test_voice_catalog.py
|
|
100
|
+
- tests/test_voices_cli.py
|
|
101
|
+
stats:
|
|
102
|
+
files_changed: 0
|
|
103
|
+
insertions: 817
|
|
104
|
+
deletions: 200
|
|
105
|
+
inspected: true
|
|
106
|
+
inspected_paths:
|
|
107
|
+
- readio/voices.py
|
|
108
|
+
- readio/cli.py
|
|
109
|
+
- readio/models.py
|
|
110
|
+
- tests/test_voice_catalog.py
|
|
111
|
+
- tests/test_voices_cli.py
|
|
112
|
+
observed_behavior:
|
|
113
|
+
Voice discovery now exposes stable locale-number selectors, metadata
|
|
114
|
+
filtering, selector inspection, and selector-aware role/default resolution.
|
|
115
|
+
public_impact: public
|
|
116
|
+
decision: accepted
|
|
117
|
+
stale: false
|
|
118
|
+
evidence_subject: "feat: short form for voice selection and new voices command"
|
|
119
|
+
target_entry_id: entry-0002
|
|
120
|
+
notes: ""
|
|
121
|
+
- sha: 5840ad53704ab4efd000346c048638c9b2271eb7
|
|
122
|
+
source_ref: git:5840ad53704ab4efd000346c048638c9b2271eb7
|
|
123
|
+
short_sha: 5840ad5
|
|
124
|
+
changed_paths:
|
|
125
|
+
- README.md
|
|
126
|
+
- docs/index.md
|
|
127
|
+
- readio/audio.py
|
|
128
|
+
- readio/backends/__init__.py
|
|
129
|
+
- readio/backends/base.py
|
|
130
|
+
- readio/backends/pykokoro.py
|
|
131
|
+
- readio/backends/registry.py
|
|
132
|
+
- readio/cli.py
|
|
133
|
+
- readio/config.py
|
|
134
|
+
- readio/lexicons.py
|
|
135
|
+
- readio/models.py
|
|
136
|
+
- readio/plan.py
|
|
137
|
+
- readio/reader.py
|
|
138
|
+
- readio/ssmd.py
|
|
139
|
+
- readio/synthesis.py
|
|
140
|
+
- readio/voices.py
|
|
141
|
+
- skill/readio/SKILL.md
|
|
142
|
+
- skill/readio/references/cli.md
|
|
143
|
+
- tests/test_backend_config.py
|
|
144
|
+
- tests/test_backend_dispatch.py
|
|
145
|
+
- tests/test_backends.py
|
|
146
|
+
- tests/test_lexicon_catalog.py
|
|
147
|
+
- tests/test_lexicons_cli.py
|
|
148
|
+
stats:
|
|
149
|
+
files_changed: 0
|
|
150
|
+
insertions: 1508
|
|
151
|
+
deletions: 366
|
|
152
|
+
inspected: true
|
|
153
|
+
inspected_paths:
|
|
154
|
+
- readio/backends/base.py
|
|
155
|
+
- readio/backends/pykokoro.py
|
|
156
|
+
- readio/lexicons.py
|
|
157
|
+
- readio/cli.py
|
|
158
|
+
- tests/test_lexicon_catalog.py
|
|
159
|
+
- tests/test_lexicons_cli.py
|
|
160
|
+
observed_behavior:
|
|
161
|
+
Synthesis backend contracts and the PyKokoro adapter now expose
|
|
162
|
+
backend-neutral lexicon discovery, filtering, inspection, and runtime option plumbing.
|
|
163
|
+
public_impact: public
|
|
164
|
+
decision: accepted
|
|
165
|
+
stale: false
|
|
166
|
+
evidence_subject: "feat: lexicon command to view lexicons"
|
|
167
|
+
target_entry_id: entry-0003
|
|
168
|
+
notes: ""
|
|
169
|
+
- sha: 2c5e221eab0f4047a8157dcacb85e5d31c956d3a
|
|
170
|
+
source_ref: git:2c5e221eab0f4047a8157dcacb85e5d31c956d3a
|
|
171
|
+
short_sha: 2c5e221
|
|
172
|
+
changed_paths:
|
|
173
|
+
- README.md
|
|
174
|
+
- docs/index.md
|
|
175
|
+
- readio/audio.py
|
|
176
|
+
- readio/backends/base.py
|
|
177
|
+
- readio/backends/pykokoro.py
|
|
178
|
+
- readio/cli.py
|
|
179
|
+
- readio/lexicons.py
|
|
180
|
+
- readio/models.py
|
|
181
|
+
- readio/plan.py
|
|
182
|
+
- readio/reader.py
|
|
183
|
+
- readio/ssmd.py
|
|
184
|
+
- readio/synthesis.py
|
|
185
|
+
- readio/voices.py
|
|
186
|
+
- skill/readio/SKILL.md
|
|
187
|
+
- skill/readio/references/cli.md
|
|
188
|
+
- tests/test_backend_dispatch.py
|
|
189
|
+
- tests/test_lexicons_cli.py
|
|
190
|
+
- tests/test_voice_catalog.py
|
|
191
|
+
- tests/test_voices_cli.py
|
|
192
|
+
stats:
|
|
193
|
+
files_changed: 0
|
|
194
|
+
insertions: 128
|
|
195
|
+
deletions: 88
|
|
196
|
+
inspected: true
|
|
197
|
+
inspected_paths:
|
|
198
|
+
- readio/lexicons.py
|
|
199
|
+
- readio/voices.py
|
|
200
|
+
- readio/cli.py
|
|
201
|
+
- tests/test_lexicons_cli.py
|
|
202
|
+
- tests/test_voice_catalog.py
|
|
203
|
+
- tests/test_voices_cli.py
|
|
204
|
+
observed_behavior:
|
|
205
|
+
Lexicon listing remains usable without a language filter and
|
|
206
|
+
backend-aware voice and lexicon selection is formatted and validated consistently.
|
|
207
|
+
public_impact: public
|
|
208
|
+
decision: accepted
|
|
209
|
+
stale: false
|
|
210
|
+
evidence_subject: "fix: lexicons list"
|
|
211
|
+
target_entry_id: entry-0004
|
|
212
|
+
notes: ""
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 1
|
|
7
|
+
entry_id: entry-0001
|
|
8
|
+
release_version: v0.2.4
|
|
9
|
+
kind: added
|
|
10
|
+
summary:
|
|
11
|
+
Added explicit spaCy model tiers and configurable short-sentence synthesis
|
|
12
|
+
policies
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- git:4791e709a5f940404c7e40f04333f0996931453d
|
|
18
|
+
paths:
|
|
19
|
+
- .ledger/releaseledger/data/ledgers/main/events/events.jsonl
|
|
20
|
+
- .ledger/releaseledger/data/ledgers/main/releases/v0.2.3/entries/entry-0005.md
|
|
21
|
+
- .ledger/releaseledger/data/ledgers/main/releases/v0.2.3/release.md
|
|
22
|
+
- README.md
|
|
23
|
+
- docs/changelog.md
|
|
24
|
+
- docs/index.md
|
|
25
|
+
- readio/cli.py
|
|
26
|
+
- readio/config.py
|
|
27
|
+
- readio/plan.py
|
|
28
|
+
- readio/reader.py
|
|
29
|
+
- readio/synthesis.py
|
|
30
|
+
- skill/readio/references/cli.md
|
|
31
|
+
- skill/readio/references/troubleshooting.md
|
|
32
|
+
- tests/test_config.py
|
|
33
|
+
- tests/test_plan.py
|
|
34
|
+
- tests/test_plan_no_tts_load.py
|
|
35
|
+
- tests/test_reader_synthesis.py
|
|
36
|
+
- tests/test_render_from_plan.py
|
|
37
|
+
issues: []
|
|
38
|
+
prs: []
|
|
39
|
+
sources:
|
|
40
|
+
- git:4791e709a5f940404c7e40f04333f0996931453d
|
|
41
|
+
contributors:
|
|
42
|
+
- "@holgern"
|
|
43
|
+
breaking: false
|
|
44
|
+
internal: false
|
|
45
|
+
order: 1
|
|
46
|
+
---
|