voicerender 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.
Files changed (244) hide show
  1. {voicerender-0.2.2 → voicerender-0.2.4}/.github/workflows/tests.yml +4 -0
  2. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +12 -0
  3. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.3/audit/commit-audit.yaml +74 -0
  4. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.3/entries/entry-0001.md +32 -0
  5. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.3/entries/entry-0002.md +34 -0
  6. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.3/release.md +27 -0
  7. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.4/audit/commit-audit.yaml +183 -0
  8. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.4/entries/entry-0001.md +36 -0
  9. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.4/entries/entry-0002.md +35 -0
  10. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.4/entries/entry-0003.md +28 -0
  11. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.4/entries/entry-0004.md +43 -0
  12. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.4/entries/entry-0005.md +27 -0
  13. voicerender-0.2.4/.ledger/releaseledger/data/ledgers/main/releases/0.2.4/release.md +27 -0
  14. voicerender-0.2.4/.ledger/releaseledger/work/0.2.3/audit-decisions.yaml +31 -0
  15. voicerender-0.2.4/.ledger/releaseledger/work/0.2.3/audit.yaml +53 -0
  16. voicerender-0.2.4/.ledger/releaseledger/work/0.2.3/entries.yaml +45 -0
  17. voicerender-0.2.4/.ledger/releaseledger/work/0.2.3/evidence/67e4d8e.patch +145 -0
  18. voicerender-0.2.4/.ledger/releaseledger/work/0.2.3/evidence/b17f1a9.patch +1868 -0
  19. voicerender-0.2.4/.ledger/releaseledger/work/0.2.3/evidence/manifest.json +45 -0
  20. voicerender-0.2.4/.ledger/releaseledger/work/0.2.3/range.json +13 -0
  21. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/audit-decisions.yaml +98 -0
  22. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/audit.yaml +121 -0
  23. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/entries.yaml +106 -0
  24. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/evidence/304b84d.patch +28 -0
  25. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/evidence/3d486d5.patch +1592 -0
  26. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/evidence/5ffdff4.patch +1108 -0
  27. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/evidence/ccd30d2.patch +16 -0
  28. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/evidence/efe4f37.patch +815 -0
  29. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/evidence/manifest.json +96 -0
  30. voicerender-0.2.4/.ledger/releaseledger/work/0.2.4/range.json +13 -0
  31. {voicerender-0.2.2 → voicerender-0.2.4}/PKG-INFO +99 -15
  32. {voicerender-0.2.2 → voicerender-0.2.4}/README.md +94 -13
  33. {voicerender-0.2.2 → voicerender-0.2.4}/docs/changelog.md +25 -0
  34. {voicerender-0.2.2 → voicerender-0.2.4}/docs/index.md +5 -1
  35. {voicerender-0.2.2 → voicerender-0.2.4}/docs/renderprofile.md +89 -13
  36. {voicerender-0.2.2 → voicerender-0.2.4}/pyproject.toml +4 -1
  37. voicerender-0.2.4/tests/test_chatterboxsynth_engine.py +668 -0
  38. voicerender-0.2.4/tests/test_document_contract.py +294 -0
  39. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_engine_options.py +11 -0
  40. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_engine_registry.py +68 -6
  41. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_kittensynth_engine.py +31 -1
  42. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_kokoro_reference.py +401 -3
  43. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_preflight.py +37 -0
  44. voicerender-0.2.4/tests/test_profile_roles_cli.py +276 -0
  45. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_renderplan_render.py +36 -0
  46. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_voice_clone.py +71 -1
  47. {voicerender-0.2.2 → voicerender-0.2.4}/tests/wheel_smoke.py +3 -0
  48. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/__init__.py +13 -1
  49. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/_version.py +3 -3
  50. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/book.py +12 -0
  51. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/cli.py +187 -37
  52. voicerender-0.2.4/voicerender/document.py +454 -0
  53. voicerender-0.2.4/voicerender/document_contract.py +127 -0
  54. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/base.py +57 -0
  55. voicerender-0.2.4/voicerender/engines/chatterboxsynth.py +906 -0
  56. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/kittensynth.py +13 -33
  57. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/kokoro.py +291 -19
  58. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/registry.py +7 -0
  59. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/errors.py +11 -0
  60. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/estimates.py +41 -1
  61. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/renderplan_render.py +36 -1
  62. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/voice_clone.py +47 -16
  63. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender.egg-info/PKG-INFO +99 -15
  64. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender.egg-info/SOURCES.txt +33 -0
  65. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender.egg-info/requires.txt +5 -1
  66. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender.egg-info/scm_file_list.json +33 -0
  67. voicerender-0.2.4/voicerender.egg-info/scm_version.json +8 -0
  68. voicerender-0.2.2/tests/test_profile_roles_cli.py +0 -149
  69. voicerender-0.2.2/voicerender.egg-info/scm_version.json +0 -8
  70. {voicerender-0.2.2 → voicerender-0.2.4}/.codecrate.toml +0 -0
  71. {voicerender-0.2.2 → voicerender-0.2.4}/.github/workflows/codecov.yml +0 -0
  72. {voicerender-0.2.2 → voicerender-0.2.4}/.github/workflows/pre-commit.yml +0 -0
  73. {voicerender-0.2.2 → voicerender-0.2.4}/.github/workflows/python-publish.yml +0 -0
  74. {voicerender-0.2.2 → voicerender-0.2.4}/.gitignore +0 -0
  75. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/ledger.toml +0 -0
  76. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/.ledger-project.toml +0 -0
  77. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/config.toml +0 -0
  78. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
  79. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/audit/commit-audit.yaml +0 -0
  80. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/entries/entry-0001.md +0 -0
  81. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/release.md +0 -0
  82. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/audit/commit-audit.yaml +0 -0
  83. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0001.md +0 -0
  84. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0002.md +0 -0
  85. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0003.md +0 -0
  86. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0004.md +0 -0
  87. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0005.md +0 -0
  88. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0006.md +0 -0
  89. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0007.md +0 -0
  90. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/release.md +0 -0
  91. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/audit/commit-audit.yaml +0 -0
  92. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0001.md +0 -0
  93. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0002.md +0 -0
  94. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0003.md +0 -0
  95. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0004.md +0 -0
  96. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0005.md +0 -0
  97. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0006.md +0 -0
  98. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/release.md +0 -0
  99. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.2/audit/commit-audit.yaml +0 -0
  100. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.2/entries/entry-0001.md +0 -0
  101. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.2/entries/entry-0002.md +0 -0
  102. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.2/entries/entry-0003.md +0 -0
  103. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.2/entries/entry-0004.md +0 -0
  104. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/0.2.2/release.md +0 -0
  105. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/audit/commit-audit.yaml +0 -0
  106. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0001.md +0 -0
  107. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0002.md +0 -0
  108. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0003.md +0 -0
  109. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0004.md +0 -0
  110. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0005.md +0 -0
  111. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/release.md +0 -0
  112. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.1.1/audit-decisions.yaml +0 -0
  113. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.1.1/entries.yaml +0 -0
  114. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/audit-decisions.yaml +0 -0
  115. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/audit.yaml +0 -0
  116. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/entries.yaml +0 -0
  117. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/19f5b06.patch +0 -0
  118. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/245ca9f.patch +0 -0
  119. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/42a90e3.patch +0 -0
  120. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/480cbea.patch +0 -0
  121. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/4eb3c28.patch +0 -0
  122. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/50f298e.patch +0 -0
  123. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/56ae327.patch +0 -0
  124. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/57f1e24.patch +0 -0
  125. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/6dae2b6.patch +0 -0
  126. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/84f29db.patch +0 -0
  127. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/a390661.patch +0 -0
  128. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/a431dfa.patch +0 -0
  129. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/c2be7b3.patch +0 -0
  130. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/da15247.patch +0 -0
  131. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/ede34ea.patch +0 -0
  132. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/evidence/manifest.json +0 -0
  133. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.0/range.json +0 -0
  134. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/audit-decisions.yaml +0 -0
  135. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/audit.yaml +0 -0
  136. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/entries.yaml +0 -0
  137. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/evidence/3342e15.patch +0 -0
  138. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/evidence/3c82349.patch +0 -0
  139. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/evidence/7f466cc.patch +0 -0
  140. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/evidence/84f629e.patch +0 -0
  141. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/evidence/b7e1917.patch +0 -0
  142. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/evidence/manifest.json +0 -0
  143. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.1/range.json +0 -0
  144. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/audit-decisions.yaml +0 -0
  145. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/audit.yaml +0 -0
  146. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/entries.yaml +0 -0
  147. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/evidence/6510540.patch +0 -0
  148. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/evidence/8861791.patch +0 -0
  149. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/evidence/f093d36.patch +0 -0
  150. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/evidence/fdb106d.patch +0 -0
  151. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/evidence/manifest.json +0 -0
  152. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/0.2.2/range.json +0 -0
  153. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/audit-decisions.yaml +0 -0
  154. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/entries.yaml +0 -0
  155. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/evidence/264eb9b.patch +0 -0
  156. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/evidence/774f6f2.patch +0 -0
  157. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/evidence/9e71e84.patch +0 -0
  158. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/evidence/c4a2872.patch +0 -0
  159. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/evidence/fb7faaf.patch +0 -0
  160. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/work/v0.1.0/evidence/manifest.json +0 -0
  161. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/releaseledger/write.lock +0 -0
  162. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/taskledger/.ledger-project.toml +0 -0
  163. {voicerender-0.2.2 → voicerender-0.2.4}/.ledger/taskledger/config.toml +0 -0
  164. {voicerender-0.2.2 → voicerender-0.2.4}/.pre-commit-config.yaml +0 -0
  165. {voicerender-0.2.2 → voicerender-0.2.4}/LICENSE +0 -0
  166. {voicerender-0.2.2 → voicerender-0.2.4}/MANIFEST.in +0 -0
  167. {voicerender-0.2.2 → voicerender-0.2.4}/docs/Makefile +0 -0
  168. {voicerender-0.2.2 → voicerender-0.2.4}/docs/conf.py +0 -0
  169. {voicerender-0.2.2 → voicerender-0.2.4}/docs/make.bat +0 -0
  170. {voicerender-0.2.2 → voicerender-0.2.4}/docs/make.py +0 -0
  171. {voicerender-0.2.2 → voicerender-0.2.4}/docs/requirements.txt +0 -0
  172. {voicerender-0.2.2 → voicerender-0.2.4}/examples/README.md +0 -0
  173. {voicerender-0.2.2 → voicerender-0.2.4}/examples/plans/chapter.renderplan.toml +0 -0
  174. {voicerender-0.2.2 → voicerender-0.2.4}/examples/plans/chapter.voiceplan.toml +0 -0
  175. {voicerender-0.2.2 → voicerender-0.2.4}/examples/voices/narration.renderprofile.toml +0 -0
  176. {voicerender-0.2.2 → voicerender-0.2.4}/examples/voices/piper.toml +0 -0
  177. {voicerender-0.2.2 → voicerender-0.2.4}/examples/voices/pocket-reference.toml +0 -0
  178. {voicerender-0.2.2 → voicerender-0.2.4}/setup.cfg +0 -0
  179. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_backends.py +0 -0
  180. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_capacity.py +0 -0
  181. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_cli.py +0 -0
  182. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_control_surface_exports.py +0 -0
  183. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_engine_contracts.py +0 -0
  184. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_inflectsynth_engine.py +0 -0
  185. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_managed_voices.py +0 -0
  186. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_model_management_api.py +0 -0
  187. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_model_management_cli.py +0 -0
  188. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_package_metadata.py +0 -0
  189. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_pocketsynth_managed.py +0 -0
  190. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_profile_roles.py +0 -0
  191. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_progress.py +0 -0
  192. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_qwen3_voice_design.py +0 -0
  193. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_qwen3synth_engine.py +0 -0
  194. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_render_book.py +0 -0
  195. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_renderer.py +0 -0
  196. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_renderplan_input.py +0 -0
  197. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_renderprofile.py +0 -0
  198. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_soprosynth_engine.py +0 -0
  199. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_storage.py +0 -0
  200. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_voice_clone_cli.py +0 -0
  201. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_voice_descriptors.py +0 -0
  202. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_voice_source_cli.py +0 -0
  203. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_voice_source_codec.py +0 -0
  204. {voicerender-0.2.2 → voicerender-0.2.4}/tests/test_voice_sources.py +0 -0
  205. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/__main__.py +0 -0
  206. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/book_contract.py +0 -0
  207. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/book_layout.py +0 -0
  208. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/capacity.py +0 -0
  209. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/__init__.py +0 -0
  210. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/api_probe.py +0 -0
  211. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/assets.py +0 -0
  212. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/catalog.py +0 -0
  213. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/inflectsynth.py +0 -0
  214. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/metadata.py +0 -0
  215. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/options.py +0 -0
  216. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/piper.py +0 -0
  217. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/pipersynth.py +0 -0
  218. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/pocket.py +0 -0
  219. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/pocketsynth.py +0 -0
  220. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/profiles.py +0 -0
  221. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/qwen3synth.py +0 -0
  222. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/selection.py +0 -0
  223. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/soprosynth.py +0 -0
  224. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/engines/supertonicsynth.py +0 -0
  225. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/events.py +0 -0
  226. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/lexicons.py +0 -0
  227. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/managed_voices.py +0 -0
  228. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/models.py +0 -0
  229. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/models_api.py +0 -0
  230. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/preflight.py +0 -0
  231. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/profile_roles.py +0 -0
  232. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/progress.py +0 -0
  233. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/py.typed +0 -0
  234. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/render.py +0 -0
  235. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/renderplan_input.py +0 -0
  236. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/renderprofile.py +0 -0
  237. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/storage.py +0 -0
  238. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/voice_design.py +0 -0
  239. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/voice_source_codec.py +0 -0
  240. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/voice_sources.py +0 -0
  241. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender/voices_api.py +0 -0
  242. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender.egg-info/dependency_links.txt +0 -0
  243. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender.egg-info/entry_points.txt +0 -0
  244. {voicerender-0.2.2 → voicerender-0.2.4}/voicerender.egg-info/top_level.txt +0 -0
@@ -101,6 +101,7 @@ jobs:
101
101
  "pytest==8.0.0" \
102
102
  "numpy==1.23.0" \
103
103
  "soundfile==0.12.1" \
104
+ "tomlkit==0.13.3" \
104
105
  "tomli==2.0.1" \
105
106
  "renderplan==0.1.2" \
106
107
  "voicefolio==0.1.1"
@@ -197,6 +198,7 @@ jobs:
197
198
  ):
198
199
  base_requirements.add(requirement.name.lower())
199
200
  engine_sdks = {
201
+ "chatterboxsynth",
200
202
  "inflectsynth", "kittensynth", "pykokoro", "pipersynth",
201
203
  "pocketsynth", "soprosynth", "supertonicsynth",
202
204
  "qwen3synth",
@@ -235,6 +237,7 @@ jobs:
235
237
  assert resources.files("voicerender").joinpath("book_layout.py").is_file()
236
238
  assert RenderPlanSet is not None
237
239
  assert {item["id"] for item in list_engines()} == {
240
+ "chatterbox",
238
241
  "inflect",
239
242
  "kitten",
240
243
  "kokoro",
@@ -246,6 +249,7 @@ jobs:
246
249
  }
247
250
  assert not any(
248
251
  name.split(".", 1)[0] in {
252
+ "chatterboxsynth",
249
253
  "inflectsynth", "kittensynth", "pykokoro", "pipersynth",
250
254
  "pocketsynth", "soprosynth", "supertonicsynth", "utterplan",
251
255
  "qwen3synth",
@@ -28,3 +28,15 @@
28
28
  {"data":{"updated_rows":4},"event":"audit.updated","event_id":"event-0028","record_revisions":{"commit_audit_sheet":2},"release_version":"0.2.2","schema_version":2}
29
29
  {"data":{"entry_ids":["entry-0001","entry-0002","entry-0003","entry-0004"],"synced_audit_rows":4},"event":"entry.batch_added","event_id":"event-0029","record_revisions":{"commit_audit_sheet":3,"entry:0.2.2/entry-0001":1,"entry:0.2.2/entry-0002":1,"entry:0.2.2/entry-0003":1,"entry:0.2.2/entry-0004":1,"release:0.2.2":3},"release_version":"0.2.2","schema_version":2}
30
30
  {"data":{"released_at":"2026-10-17"},"event":"release.finalized","event_id":"event-0030","record_revisions":{"release:0.2.2":4},"release_version":"0.2.2","schema_version":2}
31
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0031","record_revisions":{"release:0.2.3":1},"release_version":"0.2.3","schema_version":2}
32
+ {"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-0032","record_revisions":{"release:0.2.3":2},"release_version":"0.2.3","schema_version":2}
33
+ {"data":{"row_count":2},"event":"audit.created","event_id":"event-0033","record_revisions":{"commit_audit_sheet":1},"release_version":"0.2.3","schema_version":2}
34
+ {"data":{"updated_rows":2},"event":"audit.updated","event_id":"event-0034","record_revisions":{"commit_audit_sheet":2},"release_version":"0.2.3","schema_version":2}
35
+ {"data":{"entry_ids":["entry-0001","entry-0002"],"synced_audit_rows":2},"event":"entry.batch_added","event_id":"event-0035","record_revisions":{"commit_audit_sheet":3,"entry:0.2.3/entry-0001":1,"entry:0.2.3/entry-0002":1,"release:0.2.3":3},"release_version":"0.2.3","schema_version":2}
36
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0036","record_revisions":{"release:0.2.4":1},"release_version":"0.2.4","schema_version":2}
37
+ {"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-0037","record_revisions":{"release:0.2.4":2},"release_version":"0.2.4","schema_version":2}
38
+ {"data":{"row_count":5},"event":"audit.created","event_id":"event-0038","record_revisions":{"commit_audit_sheet":1},"release_version":"0.2.4","schema_version":2}
39
+ {"data":{"updated_rows":5},"event":"audit.updated","event_id":"event-0039","record_revisions":{"commit_audit_sheet":2},"release_version":"0.2.4","schema_version":2}
40
+ {"data":{"entry_ids":["entry-0001","entry-0002","entry-0003","entry-0004","entry-0005"],"synced_audit_rows":5},"event":"entry.batch_added","event_id":"event-0040","record_revisions":{"commit_audit_sheet":3,"entry:0.2.4/entry-0001":1,"entry:0.2.4/entry-0002":1,"entry:0.2.4/entry-0003":1,"entry:0.2.4/entry-0004":1,"entry:0.2.4/entry-0005":1,"release:0.2.4":3},"release_version":"0.2.4","schema_version":2}
41
+ {"data":{"released_at":"2026-10-18"},"event":"release.finalized","event_id":"event-0041","record_revisions":{"release:0.2.3":4},"release_version":"0.2.3","schema_version":2}
42
+ {"data":{"released_at":"2026-10-20"},"event":"release.finalized","event_id":"event-0042","record_revisions":{"release:0.2.4":4},"release_version":"0.2.4","schema_version":2}
@@ -0,0 +1,74 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 3
6
+ release_version: 0.2.3
7
+ git_base_ref: v0.2.2
8
+ git_base_sha: aecc0461fdecf55f60f20991e796efd1c240679a
9
+ git_head_ref: HEAD
10
+ git_head_sha: b17f1a9010849b0e6aec846f222e12a86f04ad79
11
+ git_range: aecc0461fdecf55f60f20991e796efd1c240679a..b17f1a9010849b0e6aec846f222e12a86f04ad79
12
+ commit_count: 2
13
+ rows:
14
+ - sha: 67e4d8ec44e04f96d7041afa8c87c762bec87b6f
15
+ source_ref: git:67e4d8ec44e04f96d7041afa8c87c762bec87b6f
16
+ short_sha: 67e4d8e
17
+ changed_paths:
18
+ - pyproject.toml
19
+ - tests/test_kittensynth_engine.py
20
+ - tests/test_preflight.py
21
+ - voicerender/engines/kittensynth.py
22
+ stats:
23
+ files_changed: 4
24
+ insertions: 73
25
+ deletions: 1
26
+ inspected: true
27
+ inspected_paths:
28
+ - pyproject.toml
29
+ - tests/test_kittensynth_engine.py
30
+ - tests/test_preflight.py
31
+ - voicerender/engines/kittensynth.py
32
+ observed_behavior:
33
+ Preflight now classifies managed model dependency failures as
34
+ non-replanable runtime rejects, preserving native error context instead of treating
35
+ the failure as a text-capacity issue; the KittenSynth optional dependency floor
36
+ is raised to 0.1.6.
37
+ public_impact: public
38
+ decision: accepted
39
+ stale: false
40
+ evidence_subject: "feat: raise kittensynth floor"
41
+ target_entry_id: entry-0001
42
+ notes: ""
43
+ - sha: b17f1a9010849b0e6aec846f222e12a86f04ad79
44
+ source_ref: git:b17f1a9010849b0e6aec846f222e12a86f04ad79
45
+ short_sha: b17f1a9
46
+ changed_paths:
47
+ - README.md
48
+ - pyproject.toml
49
+ - tests/test_chatterboxsynth_engine.py
50
+ - tests/test_engine_registry.py
51
+ - voicerender/engines/chatterboxsynth.py
52
+ - voicerender/engines/registry.py
53
+ stats:
54
+ files_changed: 6
55
+ insertions: 1672
56
+ deletions: 7
57
+ inspected: true
58
+ inspected_paths:
59
+ - README.md
60
+ - pyproject.toml
61
+ - tests/test_chatterboxsynth_engine.py
62
+ - tests/test_engine_registry.py
63
+ - voicerender/engines/chatterboxsynth.py
64
+ - voicerender/engines/registry.py
65
+ observed_behavior:
66
+ Adds optional English-only ChatterboxSynth rendering with installed-model
67
+ discovery, pinned local or managed reference voices, exact preflight measurement,
68
+ and lazy voice preparation.
69
+ public_impact: public
70
+ decision: accepted
71
+ stale: false
72
+ evidence_subject: "feat: add chatterbox"
73
+ target_entry_id: entry-0002
74
+ notes: ""
@@ -0,0 +1,32 @@
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: 0.2.3
9
+ kind: changed
10
+ summary:
11
+ Changed preflight handling so unavailable managed KittenSynth dependencies
12
+ reject without scheduling a replan
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:67e4d8ec44e04f96d7041afa8c87c762bec87b6f
18
+ paths:
19
+ - pyproject.toml
20
+ - tests/test_kittensynth_engine.py
21
+ - tests/test_preflight.py
22
+ - voicerender/engines/kittensynth.py
23
+ issues: []
24
+ prs: []
25
+ sources:
26
+ - git:67e4d8ec44e04f96d7041afa8c87c762bec87b6f
27
+ contributors:
28
+ - "@holgern"
29
+ breaking: false
30
+ internal: false
31
+ order: 1
32
+ ---
@@ -0,0 +1,34 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0002
8
+ release_version: 0.2.3
9
+ kind: added
10
+ summary:
11
+ Added optional ChatterboxSynth rendering with pinned reference voices and
12
+ installed-model discovery
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:b17f1a9010849b0e6aec846f222e12a86f04ad79
18
+ paths:
19
+ - README.md
20
+ - pyproject.toml
21
+ - tests/test_chatterboxsynth_engine.py
22
+ - tests/test_engine_registry.py
23
+ - voicerender/engines/chatterboxsynth.py
24
+ - voicerender/engines/registry.py
25
+ issues: []
26
+ prs: []
27
+ sources:
28
+ - git:b17f1a9010849b0e6aec846f222e12a86f04ad79
29
+ contributors:
30
+ - "@holgern"
31
+ breaking: false
32
+ internal: false
33
+ order: 2
34
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 4
7
+ version: 0.2.3
8
+ status: released
9
+ history_state: curated
10
+ title: null
11
+ released_at: "2026-10-18"
12
+ previous_version: 0.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: 2
20
+ artifact_count: 0
21
+ git_base_ref: v0.2.2
22
+ git_base_sha: aecc0461fdecf55f60f20991e796efd1c240679a
23
+ git_head_ref: HEAD
24
+ git_head_sha: b17f1a9010849b0e6aec846f222e12a86f04ad79
25
+ git_range: aecc0461fdecf55f60f20991e796efd1c240679a..b17f1a9010849b0e6aec846f222e12a86f04ad79
26
+ git_commit_count: 2
27
+ ---
@@ -0,0 +1,183 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 3
6
+ release_version: 0.2.4
7
+ git_base_ref: v0.2.3
8
+ git_base_sha: 817587bef3fafffbe39f6b8b715720263dec50dd
9
+ git_head_ref: HEAD
10
+ git_head_sha: ccd30d20fcc85c71d35c850accaf41ffdc5fc960
11
+ git_range: 817587bef3fafffbe39f6b8b715720263dec50dd..ccd30d20fcc85c71d35c850accaf41ffdc5fc960
12
+ commit_count: 5
13
+ rows:
14
+ - sha: 5ffdff4e822f5ea3bff212cf708a6d797029915d
15
+ source_ref: git:5ffdff4e822f5ea3bff212cf708a6d797029915d
16
+ short_sha: 5ffdff4
17
+ changed_paths:
18
+ - README.md
19
+ - tests/test_document_contract.py
20
+ - voicerender/__init__.py
21
+ - voicerender/cli.py
22
+ - voicerender/document.py
23
+ - voicerender/document_contract.py
24
+ - voicerender/errors.py
25
+ - voicerender/estimates.py
26
+ stats:
27
+ files_changed: 8
28
+ insertions: 970
29
+ deletions: 2
30
+ inspected: true
31
+ inspected_paths:
32
+ - README.md
33
+ - tests/test_document_contract.py
34
+ - voicerender/__init__.py
35
+ - voicerender/cli.py
36
+ - voicerender/document.py
37
+ - voicerender/document_contract.py
38
+ - voicerender/errors.py
39
+ - voicerender/estimates.py
40
+ observed_behavior:
41
+ Added SSMDDoc v1 workspace validation plus document-level render
42
+ and estimate operations that resolve a checked RenderPlan variant and keep outputs
43
+ and caches in variant-scoped workspace directories.
44
+ public_impact: public
45
+ decision: accepted
46
+ stale: false
47
+ evidence_subject: "feat: add support for document dir"
48
+ target_entry_key: document-workspace
49
+ target_entry_id: entry-0001
50
+ notes: Reviewed implementation and focused contract tests.
51
+ - sha: efe4f37393479c1143e37f5288b8b586d3fbcc8c
52
+ source_ref: git:efe4f37393479c1143e37f5288b8b586d3fbcc8c
53
+ short_sha: efe4f37
54
+ changed_paths:
55
+ - README.md
56
+ - docs/index.md
57
+ - docs/renderprofile.md
58
+ - tests/test_document_contract.py
59
+ - tests/test_profile_roles_cli.py
60
+ - voicerender/cli.py
61
+ - voicerender/document.py
62
+ stats:
63
+ files_changed: 7
64
+ insertions: 416
65
+ deletions: 86
66
+ inspected: true
67
+ inspected_paths:
68
+ - README.md
69
+ - docs/index.md
70
+ - docs/renderprofile.md
71
+ - tests/test_document_contract.py
72
+ - tests/test_profile_roles_cli.py
73
+ - voicerender/cli.py
74
+ - voicerender/document.py
75
+ observed_behavior:
76
+ Expanded RenderProfile role workflows so one profile can describe
77
+ a complete cast with mixed engine bindings, including first-class role binding
78
+ and descriptive human and JSON profile inspection.
79
+ public_impact: public
80
+ decision: accepted
81
+ stale: false
82
+ evidence_subject: "feat: better voice role binding"
83
+ target_entry_key: mixed-engine-casts
84
+ target_entry_id: entry-0002
85
+ notes: Reviewed CLI, documentation, and role presentation tests.
86
+ - sha: 304b84d7fca0509a1524e2d3131858740124ed1a
87
+ source_ref: git:304b84d7fca0509a1524e2d3131858740124ed1a
88
+ short_sha: 304b84d
89
+ changed_paths:
90
+ - .github/workflows/tests.yml
91
+ - pyproject.toml
92
+ stats:
93
+ files_changed: 2
94
+ insertions: 2
95
+ deletions: 0
96
+ inspected: true
97
+ inspected_paths:
98
+ - .github/workflows/tests.yml
99
+ - pyproject.toml
100
+ observed_behavior:
101
+ Added the tomlkit runtime dependency required by the release's
102
+ TOML report writing path and kept the dependency available in the test workflow.
103
+ public_impact: internal
104
+ decision: internal
105
+ stale: false
106
+ evidence_subject: "chore: fix tomli"
107
+ target_entry_key: tomlkit-dependency
108
+ target_entry_id: entry-0003
109
+ notes: Packaging and workflow support only; intentionally excluded from public notes.
110
+ - sha: 3d486d5fddcc8612430c321760e9ebd3d84607fc
111
+ source_ref: git:3d486d5fddcc8612430c321760e9ebd3d84607fc
112
+ short_sha: 3d486d5
113
+ changed_paths:
114
+ - README.md
115
+ - docs/renderprofile.md
116
+ - tests/test_engine_options.py
117
+ - tests/test_kittensynth_engine.py
118
+ - tests/test_kokoro_reference.py
119
+ - tests/test_renderplan_render.py
120
+ - tests/test_voice_clone.py
121
+ - voicerender/book.py
122
+ - voicerender/cli.py
123
+ - voicerender/document.py
124
+ - voicerender/engines/base.py
125
+ - voicerender/engines/kittensynth.py
126
+ - voicerender/engines/kokoro.py
127
+ - voicerender/renderplan_render.py
128
+ - voicerender/voice_clone.py
129
+ stats:
130
+ files_changed: 15
131
+ insertions: 1028
132
+ deletions: 73
133
+ inspected: true
134
+ inspected_paths:
135
+ - README.md
136
+ - docs/renderprofile.md
137
+ - tests/test_engine_options.py
138
+ - tests/test_kittensynth_engine.py
139
+ - tests/test_kokoro_reference.py
140
+ - tests/test_renderplan_render.py
141
+ - tests/test_voice_clone.py
142
+ - voicerender/book.py
143
+ - voicerender/cli.py
144
+ - voicerender/document.py
145
+ - voicerender/engines/base.py
146
+ - voicerender/engines/kittensynth.py
147
+ - voicerender/engines/kokoro.py
148
+ - voicerender/renderplan_render.py
149
+ - voicerender/voice_clone.py
150
+ observed_behavior:
151
+ Added configurable Kokoro short-sentence and voice-level controls,
152
+ normalized and clamped finite PCM overshoots with diagnostics, enforced AkinVox
153
+ transcript and speed constraints, delegated engine-specific clone binding, and
154
+ recorded segment and engine identity in render failures.
155
+ public_impact: public
156
+ decision: accepted
157
+ stale: false
158
+ evidence_subject: "feat: pykokoro improvements"
159
+ target_entry_key: kokoro-rendering
160
+ target_entry_id: entry-0004
161
+ notes: Reviewed adapter, cloning, diagnostics, and regression tests.
162
+ - sha: ccd30d20fcc85c71d35c850accaf41ffdc5fc960
163
+ source_ref: git:ccd30d20fcc85c71d35c850accaf41ffdc5fc960
164
+ short_sha: ccd30d2
165
+ changed_paths:
166
+ - voicerender/renderplan_render.py
167
+ stats:
168
+ files_changed: 1
169
+ insertions: 1
170
+ deletions: 1
171
+ inspected: true
172
+ inspected_paths:
173
+ - voicerender/renderplan_render.py
174
+ observed_behavior:
175
+ Refined render result typing for the existing failure-diagnostics
176
+ fields without changing runtime behavior.
177
+ public_impact: internal
178
+ decision: internal
179
+ stale: false
180
+ evidence_subject: "chore: mypy"
181
+ target_entry_key: typing-maintenance
182
+ target_entry_id: entry-0005
183
+ notes: Static typing maintenance only; intentionally excluded from public notes.
@@ -0,0 +1,36 @@
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: 0.2.4
9
+ kind: added
10
+ summary:
11
+ Added document workspace rendering and estimation with safe SSMDDoc validation
12
+ and variant-scoped outputs
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:5ffdff4e822f5ea3bff212cf708a6d797029915d
18
+ paths:
19
+ - README.md
20
+ - tests/test_document_contract.py
21
+ - voicerender/__init__.py
22
+ - voicerender/cli.py
23
+ - voicerender/document.py
24
+ - voicerender/document_contract.py
25
+ - voicerender/errors.py
26
+ - voicerender/estimates.py
27
+ issues: []
28
+ prs: []
29
+ sources:
30
+ - git:5ffdff4e822f5ea3bff212cf708a6d797029915d
31
+ contributors:
32
+ - "@holgern"
33
+ breaking: false
34
+ internal: false
35
+ order: 1
36
+ ---
@@ -0,0 +1,35 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0002
8
+ release_version: 0.2.4
9
+ kind: added
10
+ summary:
11
+ Added mixed-engine RenderProfile casts with role binding and descriptive
12
+ cast inspection
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:efe4f37393479c1143e37f5288b8b586d3fbcc8c
18
+ paths:
19
+ - README.md
20
+ - docs/index.md
21
+ - docs/renderprofile.md
22
+ - tests/test_document_contract.py
23
+ - tests/test_profile_roles_cli.py
24
+ - voicerender/cli.py
25
+ - voicerender/document.py
26
+ issues: []
27
+ prs: []
28
+ sources:
29
+ - git:efe4f37393479c1143e37f5288b8b586d3fbcc8c
30
+ contributors:
31
+ - "@holgern"
32
+ breaking: false
33
+ internal: false
34
+ order: 2
35
+ ---
@@ -0,0 +1,28 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0003
8
+ release_version: 0.2.4
9
+ kind: internal
10
+ summary: Added the tomlkit runtime dependency for TOML report writing
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:304b84d7fca0509a1524e2d3131858740124ed1a
16
+ paths:
17
+ - .github/workflows/tests.yml
18
+ - pyproject.toml
19
+ issues: []
20
+ prs: []
21
+ sources:
22
+ - git:304b84d7fca0509a1524e2d3131858740124ed1a
23
+ contributors:
24
+ - "@holgern"
25
+ breaking: false
26
+ internal: true
27
+ order: 3
28
+ ---
@@ -0,0 +1,43 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0004
8
+ release_version: 0.2.4
9
+ kind: changed
10
+ summary:
11
+ Improved Kokoro controls, reference cloning, PCM safety, and render failure
12
+ diagnostics
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:3d486d5fddcc8612430c321760e9ebd3d84607fc
18
+ paths:
19
+ - README.md
20
+ - docs/renderprofile.md
21
+ - tests/test_engine_options.py
22
+ - tests/test_kittensynth_engine.py
23
+ - tests/test_kokoro_reference.py
24
+ - tests/test_renderplan_render.py
25
+ - tests/test_voice_clone.py
26
+ - voicerender/book.py
27
+ - voicerender/cli.py
28
+ - voicerender/document.py
29
+ - voicerender/engines/base.py
30
+ - voicerender/engines/kittensynth.py
31
+ - voicerender/engines/kokoro.py
32
+ - voicerender/renderplan_render.py
33
+ - voicerender/voice_clone.py
34
+ issues: []
35
+ prs: []
36
+ sources:
37
+ - git:3d486d5fddcc8612430c321760e9ebd3d84607fc
38
+ contributors:
39
+ - "@holgern"
40
+ breaking: false
41
+ internal: false
42
+ order: 4
43
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0005
8
+ release_version: 0.2.4
9
+ kind: internal
10
+ summary: Changed static typing for render failure diagnostics
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:ccd30d20fcc85c71d35c850accaf41ffdc5fc960
16
+ paths:
17
+ - voicerender/renderplan_render.py
18
+ issues: []
19
+ prs: []
20
+ sources:
21
+ - git:ccd30d20fcc85c71d35c850accaf41ffdc5fc960
22
+ contributors:
23
+ - "@holgern"
24
+ breaking: false
25
+ internal: true
26
+ order: 5
27
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 4
7
+ version: 0.2.4
8
+ status: released
9
+ history_state: curated
10
+ title: null
11
+ released_at: "2026-10-20"
12
+ previous_version: 0.2.3
13
+ cancel_reason: null
14
+ superseded_by: null
15
+ changelog_file: docs/changelog.md
16
+ boundary_ref: null
17
+ source_refs: []
18
+ source_count: null
19
+ entry_count: 5
20
+ artifact_count: 0
21
+ git_base_ref: v0.2.3
22
+ git_base_sha: 817587bef3fafffbe39f6b8b715720263dec50dd
23
+ git_head_ref: HEAD
24
+ git_head_sha: ccd30d20fcc85c71d35c850accaf41ffdc5fc960
25
+ git_range: 817587bef3fafffbe39f6b8b715720263dec50dd..ccd30d20fcc85c71d35c850accaf41ffdc5fc960
26
+ git_commit_count: 5
27
+ ---
@@ -0,0 +1,31 @@
1
+ rows:
2
+ - sha: 67e4d8ec44e04f96d7041afa8c87c762bec87b6f
3
+ inspected: true
4
+ inspected_paths:
5
+ - pyproject.toml
6
+ - tests/test_kittensynth_engine.py
7
+ - tests/test_preflight.py
8
+ - voicerender/engines/kittensynth.py
9
+ observed_behavior: Preflight now classifies managed model dependency failures as non-replanable runtime rejects, preserving native error context instead of treating the failure as a text-capacity issue; the KittenSynth optional dependency floor is raised to 0.1.6.
10
+ public_impact: public
11
+ decision: accepted
12
+ target_entry_key: null
13
+ target_entry_id: null
14
+ notes: ""
15
+ stale: false
16
+ - sha: b17f1a9010849b0e6aec846f222e12a86f04ad79
17
+ inspected: true
18
+ inspected_paths:
19
+ - README.md
20
+ - pyproject.toml
21
+ - tests/test_chatterboxsynth_engine.py
22
+ - tests/test_engine_registry.py
23
+ - voicerender/engines/chatterboxsynth.py
24
+ - voicerender/engines/registry.py
25
+ observed_behavior: Adds optional English-only ChatterboxSynth rendering with installed-model discovery, pinned local or managed reference voices, exact preflight measurement, and lazy voice preparation.
26
+ public_impact: public
27
+ decision: accepted
28
+ target_entry_key: null
29
+ target_entry_id: null
30
+ notes: ""
31
+ stale: false