# Changelog ## 0.1.12-rc.5 — 2026-10-24 - Keep universal HTTP/JSONL integration and add a model-folder entry with Host folder browsing, bounded metadata recognition, preset voice discovery, saved reference voices and explicit load/unload controls. - Reuse installed SDK environments for Kokoro, Qwen3 CustomVoice, F5 v1 Base, VoxCPM and CosyVoice 3 through one packaged JSONL worker. Model assets and SDK environments remain external. - Complete bilingual folder settings and Chinese provider/player labels; remove the duplicate universal trial control. Reap the owned Windows Python process tree when a blocked SDK call prevents graceful shutdown. - Verify all five folder SDK recipes with real synthesis and formal DSH load/trial/pause/resume/stop/unload controls. Fix cached release comparison for installed SemVer prereleases so candidate settings render correctly. ## 0.1.12-rc.1 — 2026-10-23 - Add one protocol-based local HTTP/JSONL entry: OpenAI-compatible speech, custom JSON/form/multipart templates, explicit PCM and base64 responses, model/voice settings and connection/trial controls. Preserve existing official engine launchers. - Add optional readiness/voice queries, Host-environment Bearer authentication and local/LAN transport checks. No new plugin runtime dependencies or bundled models. - Verify native Piper and GPT-SoVITS HTTP synthesis; verify Kokoro, F5-TTS, VoxCPM1.5, Qwen3-TTS 0.6B and CosyVoice3 through a developer-local SDK gateway and the formal DSH settings/player. These gateway tests do not certify every upstream native API/WebUI. The test gateway and model environments are not included in the plugin. - This is a release candidate for protocol-based integration, not an all-model inference distribution. See the universal configuration guide and model validation records. ## 0.1.11 — 2026-10-05 - Add daily, opt-out GitHub release checks, candidate labels, manual refresh and a confirmed market update/restore action. Offline, unsupported source and failed update states are visible; successful replacement requires restart. - Keep package replacement in the independent DSH Market, preserving its activity guard, host compatibility checks and rollback. Provide a CLI source migration command for pinned archives, unavailable markets and pending catalog entries. - Detect public Chat and Session message projections by capability and show an unsupported-interface warning instead of crashing the controls. Verify durable reply reading when transient frames are absent. - Add official-host contract CI for 0.1.1-rc.2, 0.2.0-rc.2 and the current alpha channel. Keep the future 0.3 version boundary closed. ## 0.1.10 — 2026-10-05 - Keep Local AI TTS paused when the user pauses while synthesis is still pending. Select the Web Audio control path by provider, before the first decoded buffer exists. - Add a regression for pausing before the first buffer, retaining unacknowledged audio, resuming and completing playback. - Validate the package in actual official Harness `0.2.0-rc.2` Web UI with real IndexTTS synthesis; exercise streaming Auto Read and message controls using a local simulated LLM. ## 0.1.9 — 2026-10-05 - Declare the actual Host web-server contract for Harness 0.1 and 0.2, including `0.2.0-rc.2`; remove the unrelated search/fetch `dsh-web` peer. - Load through public Conversation and Plugins Settings modules instead of the removed `dsh-client-runtime` package. Export `inject: ['slots']` so client activation waits for its required service. - Read assistant text through the old Session selector or the new public Chat selector, and keep the same settings, controls and synthesis pipeline. - Consume Harness 0.2 `agent/assistant-stream` frames alongside the 0.1 Session event feed. Keep transient revisions separate from durable sequence numbers, ignore duplicate/ended frames, and avoid replaying finalized messages. - Cover both message selectors, streaming/final settlement, failed attempts, Agent replacement, session isolation and manual/automatic reading ownership with regression tests. ## 0.1.8 — 2026-08-29 - Shorten only an unusually long opening segment of manual/history reads so the first audio can play while later text is synthesized. - Keep streamed Auto Read sentence boundaries unchanged. - Begin loading a valid owned process backend in the background when Auto Read is enabled, instead of waiting for the first history click or reply. ## 0.1.7 — 2026-08-29 - Remember separate IndexTTS and GPT-SoVITS project/model/voice settings and restore them when switching engines. - Persist both engine profiles across browser refreshes without carrying one engine's paths into the other. ## 0.1.6 — 2026-08-29 - Keep an owned official WebUI model warm while its browser client remains active; stale clients and DSH shutdown still release the worker. - Raise the effective automatic GPT-SoVITS WebUI cold-start allowance to five minutes for older saved settings. - Detect implausibly long GPT-SoVITS single-sentence WAVs and retry once through the official sampling controls, while rejecting near-empty retries. ## 0.1.5 — 2026-08-29 - Make the plugin's automatic UI language follow the active DSH locale before the browser locale, while keeping explicit Chinese/English overrides. - Remove Chinese em dashes, box-drawing separators and Markdown horizontal rules from speech input in both browser and Host Runtime paths. ## 0.1.4 — 2026-08-29 - Bootstrap bundled adapter imports explicitly for Windows embedded Python / isolated module paths; do not edit the engine's `pythonXY._pth`. - Support the existing Gradio client 0.14.x file/constructor/cleanup interfaces, with loopback-only requests, disabled proxies, redirects and telemetry, and no automatic output downloads. - Handle Python 3.9's separate socket timeout exception when probing an unused WebUI port. - Verify both installed Gradio 4.24 and Gradio 5 protocol fixtures without loading model weights; actual model readiness remains a separate check. ## 0.1.3 — 2026-08-29 - Discover GPT-SoVITS references under `runtime_voices` and validated local `voice.json` v1 character configurations; do not load tensor caches or guess checkpoint pairs. - Select a saved GPT character to apply its model pair, version, reference audio, transcript and language together. Preserve manual overrides on rescan and reject stale selections after changing projects. - Explain incomplete `weight.json` selections separately from missing reference files. Character metadata support is a local-runtime compatibility feature, not an official universal preset format. ## 0.1.2 — 2026-08-28 - Added model-native output language selection and synthesis speed controls. IndexTTS uses `duration_factor`; GPT-SoVITS uses the matching `speed` / `speed_factor` field exposed by the detected official API. - Added an explicit first-connection loading message and completed the control wiring through WebUI and built-in workers. ## 0.1.1 — 2026-08-28 - Added a dedicated IndexTTS character preset selector. Saved roles such as `雷米埃尔` and `甘雨` are shown by name, while the official prompt path remains an internal WebUI input. - Clearly separated saved character voices from ordinary example/reference audio in the settings panel. ## 0.1.0 — 2026-08-28 Initial Local AI TTS release candidate, derived from dsh-plugin-tts 0.3.0 (not an upstream version rollback). - Added process providers for IndexTTS 2.5 and GPT-SoVITS. The plugin starts a configured worker without changing model code or opening WebUI. - Added verified IndexTTS 2.5 voice-cache reuse before official WebUI/worker reference decoding, including Gradio temporary-file copies. - Added a shell-free JSONL worker protocol with configurable executable, working directory, arguments, engine, voice and startup/request timeouts. - Added worker lifecycle health checks, optional voice discovery, cancellation, cleanup and safe error reporting. - Simplified local setup to engine, project folder and reference audio, with optional paths/parameters under collapsed Advanced settings. - Added bounded, read-only directory discovery for IndexTTS 2.5 and GPT-SoVITS, explicit candidate selection, manual-override preservation, and stale-response protection. Python/model files are detected, not installed. - Fixed engine/provider persistence and reference-audio selection; incomplete new settings disable the previous Host Auto Read snapshot. - Updated bilingual setup instructions and documented official launch sources and discovery boundaries; legacy HTTP configuration remains a compatibility path. - Documented Edge Read Aloud's hosted-service caveat, Azure Speech character billing and the separate Limited Access/consent requirements for custom voices. - Added strict sentence buffering, asynchronous synthesis/playback, three-segment prefetch, per-browser queues, cancellation and event sequence deduplication. - Reused upstream Edge/RVC controls and settings; added streaming playback controls while a message is still being generated. - Added original-plugin coexistence: independent routes/storage/styles/UI identifiers, public-inventory detection, Local companion mode and original Auto Read guard. Original code/settings are not modified. - Added unmodified upstream fixtures to test both load orders, independent disposal, late detection and migration/reset isolation. Real Harness coexistence still needs acceptance. - Added optional HTTP facade for existing Python Runtime objects; no model imports, loaders or inference overrides. - Added GPU-free mock tests, bilingual documentation, attribution and release file checks. - Real Harness + IndexTTS and Harness + GPT-SoVITS smoke acceptance remains a release gate; see docs/VALIDATION.md.