Releases: AACTools/VoiceGarden-SAPI
Releases · AACTools/VoiceGarden-SAPI
Release list
v0.5.3
What's New in v0.5.2
Grid3 & System.Speech Compatibility
- Cloud voices only via registry promotion — Azure/Edge voices are no longer enumerated dynamically. Only voices promoted via "Install Selected" (HKLM registry tokens) appear in SAPI. This fixes Grid3 and other
System.Speechapps that can't activate in-memory tokens - Voice promotion fixed —
PromoteElevatedwas silently failing because EngineConfig.exe was removed. Now usesreg.exe importwith UAC elevation, creating tokens in both legacy SAPI and Speech_OneCore paths - Voice enumerator deadlock fixed — double mutex lock in
VoiceTokenEnumerator::EnumTokenscaused "resource deadlock would occur" crash on first enumeration or after 10s cache expiry - No more voice flood — previously 500+ Azure voices flooded SAPI voice lists; now only promoted voices appear
SSML & Speech Markdown via Web Speech API
- PUA sentinel — web apps using Chrome/Firefox Web Speech API can embed SSML or Speech Markdown via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- SSML normalization — adapter automatically injects required
<speak version="1.0" xmlns="..." xml:lang="...">attributes when missing - Speech Markdown syntax — use
(text)[rate:"slow"]format (standard Speech Markdown spec)
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted
RustTtsWrapper 0.3.14
- SSML pass-through fixed —
tts_speak_ssml()correctly detects and processes<speak>documents - Speech Markdown converter fixed — produces valid SSML with required Azure attributes
- Voice selection fixed —
tts_set_voice()correctly selects the requested Azure voice - GetVoices crash fixed — cloud engine voice listing no longer crashes with access violation
Voice Engine Fixes
- Azure voice activation — Azure voice tokens now include
EngineTypeinVoiceGardenConfig - Cloud engines off by default — paid cloud engines disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names. Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly
Localization (36 Languages)
- Full UI translation — all user-facing strings in
Strings.resx - 36 language packs — Arabic, Bengali, Chinese, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale
- RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
Credential Management
- Auto-save credentials — API keys saved to registry immediately
- Dual-screen sync — credentials shared between Configure Credentials and Configure Voices
Installer Fixes
- Error 1721/1722 —
Return="ignore"onregsvr32prevents install/uninstall failure - Upgrade ghost fix —
IgnoreRemoveFailure+Schedule="afterInstallFinalize"allows clean installs over broken previous versions
Onboarding
- 3-page wizard — Welcome, Getting Started, Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.5.2
What's New in v0.5.2
Grid3 & System.Speech Compatibility
- Cloud voices only via registry promotion — Azure/Edge voices are no longer enumerated dynamically. Only voices promoted via "Install Selected" (HKLM registry tokens) appear in SAPI. This fixes Grid3 and other
System.Speechapps that can't activate in-memory tokens - Voice promotion fixed —
PromoteElevatedwas silently failing because EngineConfig.exe was removed. Now usesreg.exe importwith UAC elevation, creating tokens in both legacy SAPI and Speech_OneCore paths - Voice enumerator deadlock fixed — double mutex lock in
VoiceTokenEnumerator::EnumTokenscaused "resource deadlock would occur" crash on first enumeration or after 10s cache expiry - No more voice flood — previously 500+ Azure voices flooded SAPI voice lists; now only promoted voices appear
SSML & Speech Markdown via Web Speech API
- PUA sentinel — web apps using Chrome/Firefox Web Speech API can embed SSML or Speech Markdown via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- SSML normalization — adapter automatically injects required
<speak version="1.0" xmlns="..." xml:lang="...">attributes when missing - Speech Markdown syntax — use
(text)[rate:"slow"]format (standard Speech Markdown spec)
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted
RustTtsWrapper 0.3.14
- SSML pass-through fixed —
tts_speak_ssml()correctly detects and processes<speak>documents - Speech Markdown converter fixed — produces valid SSML with required Azure attributes
- Voice selection fixed —
tts_set_voice()correctly selects the requested Azure voice - GetVoices crash fixed — cloud engine voice listing no longer crashes with access violation
Voice Engine Fixes
- Azure voice activation — Azure voice tokens now include
EngineTypeinVoiceGardenConfig - Cloud engines off by default — paid cloud engines disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names. Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly
Localization (36 Languages)
- Full UI translation — all user-facing strings in
Strings.resx - 36 language packs — Arabic, Bengali, Chinese, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale
- RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
Credential Management
- Auto-save credentials — API keys saved to registry immediately
- Dual-screen sync — credentials shared between Configure Credentials and Configure Voices
Installer Fixes
- Error 1721/1722 —
Return="ignore"onregsvr32prevents install/uninstall failure - Upgrade ghost fix —
IgnoreRemoveFailure+Schedule="afterInstallFinalize"allows clean installs over broken previous versions
Onboarding
- 3-page wizard — Welcome, Getting Started, Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.9
What's New in v0.4.9
SSML & Speech Markdown via Web Speech API
- PUA sentinel — web apps using Chrome/Firefox Web Speech API can embed SSML or Speech Markdown via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- SSML normalization — adapter automatically injects required
<speak version="1.0" xmlns="..." xml:lang="...">attributes when missing, so web apps can send simple<speak><prosody rate="slow">...</prosody></speak> - Speech Markdown syntax — use
(text)[rate:"slow"]format (standard Speech Markdown spec)
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted
RustTtsWrapper 0.3.14
- SSML pass-through fixed —
tts_speak_ssml()correctly detects and processes<speak>documents - Speech Markdown converter fixed — produces valid SSML with required Azure attributes (was returning 400 Bad Request)
- Voice selection fixed —
tts_set_voice()correctly selects the requested Azure voice - GetVoices crash fixed — cloud engine voice listing no longer crashes with access violation
Voice Engine Fixes
- Azure voice activation — Azure voice tokens now include
EngineTypeinVoiceGardenConfig, fixing "Invalid VoiceGardenConfig configuration" errors - Cloud engines off by default — paid cloud engines disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names (
"Iso Code"vs"lang_code"). Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly in the model browser
Localization (36 Languages)
- Full UI translation — all user-facing strings in
Strings.resx - 36 language packs — Arabic, Bengali, Chinese, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahili, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale
- RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
Credential Management
- Auto-save credentials — API keys entered in Configure Credentials or Configure Voices are saved to registry immediately
- Dual-screen sync — credentials shared between Configure Credentials and Configure Voices
- Phantom back button fixed — About View was nested inside Engine Config template
Installer Fixes
- Error 1721/1722 —
Return="ignore"onregsvr32prevents install/uninstall failure - Upgrade ghost fix —
IgnoreRemoveFailure+Schedule="afterInstallFinalize"allows clean installs over broken previous versions
Onboarding
- 3-page wizard — Welcome (logo + intro), Getting Started (install, models, language tip), Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
Stability & Performance Fixes
- Thread safety, memory management, performance, and MSI reliability improvements
Platform Support
- Full x86 (32-bit) and x64 architectures in single MSI installer
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.6
What's New in v0.4.6
Chrome & Edge Support
- Speech_OneCore registration — VoiceGarden voices now appear in Chrome and Edge, not just legacy SAPI applications
- Voices are registered in both
SOFTWARE\Microsoft\Speech\Voices\Tokens(Firefox, Grid3, Balabolka) andSOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens(Chrome, Edge) when promoted - Unpromoting and uninstall cleanup removes from both paths
What's New in v0.4.5
Localization (36 Languages)
- Full UI translation — all user-facing strings extracted into
Strings.resx - 36 language packs — Arabic, Bengali, Chinese (Simplified), Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Marathi, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahedi, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale (
CurrentUICulture) - RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
{lang:Localize}markup extension for XAML +Loc.GetString()for ViewModels
Voice Engine Fixes
- RustTtsWrapper 0.3.12 — fixes
tts_set_voice()selecting wrong Azure voice,tts_speak_ssml()for Azure, andGetVoices()crash for cloud engines - Azure voice activation fix — Azure voice tokens now include
EngineTypeinVoiceGardenConfig, fixing "Invalid VoiceGardenConfig configuration" errors - PUA sentinel for inline SSML — web apps using Web Speech API can embed SSML via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- Cloud engines off by default — paid cloud engines (Azure, OpenAI, Google, etc.) disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names (
"Iso Code"vs"lang_code"). Now all MMS models have proper language names, codes, and countries - Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly in the model browser
Credential Management
- Auto-save credentials — API keys entered in Configure Credentials or Configure Voices are saved to registry immediately
- Dual-screen sync — credentials entered in either screen are shared via the same registry keys
- Azure legacy compatibility — reads from both new (
{Engine}VoiceKey) and legacy (AzureVoiceKey) registry paths
Installer Fixes
- Error 1721/1722 fix —
Return="ignore"onregsvr32custom actions prevents install/uninstall failure when DLL dependencies are missing - Upgrade ghost fix —
IgnoreRemoveFailure="yes"+Schedule="afterInstallFinalize"allows clean installs even when previous broken versions left stuck MSI registrations
Onboarding
- 3-page wizard — Welcome (logo + intro), Getting Started (install adapter, download models, language compatibility tip), Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content - Analytics consent preserved — PostHog analytics ID persists across reinstalls
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes
- Thread Safety — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance — reduced TTS pipeline logging overhead with conditional level checks
- MSI Reliability — proper COM registration with rollback and error handling
- Async Patterns — replaced async void methods with proper async Task patterns
User Experience
- Onboarding Wizard — 3-page welcome flow with analytics opt-in
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — 32-bit architecture with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 in single MSI
Build System & CI/CD
- Enhanced CI Pipeline — all jobs green
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.5
What's New in v0.4.5
Localization (36 Languages)
- Full UI translation — all user-facing strings extracted into
Strings.resx - 36 language packs — Arabic, Bengali, Chinese (Simplified), Czech, Danish, Dutch, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Malay, Marathi, Persian, Polish, Portuguese, Punjabi, Russian, Spanish, Swahedi, Swedish, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more
- Automatic language detection — app language follows OS locale (
CurrentUICulture) - RTL support — Arabic, Hebrew, Urdu, and Persian layouts mirror automatically
{lang:Localize}markup extension for XAML +Loc.GetString()for ViewModels
Voice Engine Fixes
- RustTtsWrapper 0.3.12 — fixes
tts_set_voice()selecting wrong Azure voice,tts_speak_ssml()for Azure, andGetVoices()crash for cloud engines - Azure voice activation fix — Azure voice tokens now include
EngineTypeinVoiceGardenConfig, fixing "Invalid VoiceGardenConfig configuration" errors - PUA sentinel for inline SSML — web apps using Web Speech API can embed SSML via Unicode Private Use Area characters:
\uE000\uE001\uE002prefix = SSML mode\uE000\uE001\uE003prefix = Speech Markdown mode- Other SAPI voices ignore the PUA characters harmlessly
- Cloud engines off by default — paid cloud engines (Azure, OpenAI, Google, etc.) disabled on fresh install; SherpaOnnx (offline) and Edge (free) remain on
MMS Model Data Fix
- 1143 MMS models now searchable — language metadata was blank due to mismatched JSON field names (
"Iso Code"vs"lang_code"). Now all MMS models have proper language names, codes, and countries - Kurdish, Aceh, Abidji, and 1100+ other languages now appear correctly in the model browser
Credential Management
- Auto-save credentials — API keys entered in Configure Credentials or Configure Voices are saved to registry immediately
- Dual-screen sync — credentials entered in either screen are shared via the same registry keys
- Azure legacy compatibility — reads from both new (
{Engine}VoiceKey) and legacy (AzureVoiceKey) registry paths
Installer Fixes
- Error 1721/1722 fix —
Return="ignore"onregsvr32custom actions prevents install/uninstall failure when DLL dependencies are missing - Upgrade ghost fix —
IgnoreRemoveFailure="yes"+Schedule="afterInstallFinalize"allows clean installs even when previous broken versions left stuck MSI registrations
Onboarding
- 3-page wizard — Welcome (logo + intro), Getting Started (install adapter, download models, language compatibility tip), Privacy (analytics opt-in)
- Version-gated — bump
CurrentOnboardingVersionto force all users to see updated content - Analytics consent preserved — PostHog analytics ID persists across reinstalls
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes
- Thread Safety — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance — reduced TTS pipeline logging overhead with conditional level checks
- MSI Reliability — proper COM registration with rollback and error handling
- Async Patterns — replaced async void methods with proper async Task patterns
User Experience
- Onboarding Wizard — 3-page welcome flow with analytics opt-in
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — 32-bit architecture with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 in single MSI
Build System & CI/CD
- Enhanced CI Pipeline — all jobs green
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+
v0.4.3
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper (RustTtsWrapper.Bindings 0.3.8)
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes (Comprehensive Codebase Review)
- Thread Safety Improvements — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance Optimization — reduced TTS pipeline logging overhead with conditional level checks
- MSI Installation Reliability — deferred COM registration for proper rollback and error handling
- Async Pattern Fixes — replaced async void methods with proper async Task patterns
User Experience Improvements
- Onboarding Wizard — new 3-page welcome/onboarding flow (welcome, how-to, privacy)
- Shows on fresh install and version bumps
- Clear explanations of VoiceGarden's purpose and privacy practices
- Analytics opt-in with proper consent
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — complete 32-bit architecture support with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 versions in single MSI
- Improved Platform Detection — better handling of WOW6432Node registry hive
Build System & CI/CD
- Simplified Dependencies — removed 7-Zip dependency, using built-in SharpCompress
- Enhanced CI Pipeline — all 12 jobs green, including C++ DLL, UI, CLI tools, and MSI
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org instead of source builds
Voice Engine Enhancements
- Model Download Improvements — streaming downloads with progress indication
- SherpaOnnx Integration — better model type detection and Kokoro model support
- Azure Voice Preview — fixed format conversion (MP3 to WAV) for audio playback
- Voice Promotion — improved registry token management and cleanup
Technical Debt Cleanup
- Code Quality — addressed memory leaks, thread safety issues, and COM interface violations
- Error Handling — improved exception handling in async operations and COM calls
- Resource Management — proper IDisposable implementation in ViewModels
- Logging Optimization — conditional compilation to reduce performance overhead
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+ required (removed XP compatibility code paths)
Migration Notes
- Existing Installations — seamless upgrade path with proper COM registration/unregistration
- Configuration Migration — existing registry settings preserved during upgrade
- Model Downloads — SherpaOnnx models automatically downloaded on first use
v0.4.2
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper (RustTtsWrapper.Bindings 0.3.8)
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes (Comprehensive Codebase Review)
- Thread Safety Improvements — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance Optimization — reduced TTS pipeline logging overhead with conditional level checks
- MSI Installation Reliability — deferred COM registration for proper rollback and error handling
- Async Pattern Fixes — replaced async void methods with proper async Task patterns
User Experience Improvements
- Onboarding Wizard — new 3-page welcome/onboarding flow (welcome, how-to, privacy)
- Shows on fresh install and version bumps
- Clear explanations of VoiceGarden's purpose and privacy practices
- Analytics opt-in with proper consent
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — complete 32-bit architecture support with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 versions in single MSI
- Improved Platform Detection — better handling of WOW6432Node registry hive
Build System & CI/CD
- Simplified Dependencies — removed 7-Zip dependency, using built-in SharpCompress
- Enhanced CI Pipeline — all 12 jobs green, including C++ DLL, UI, CLI tools, and MSI
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org instead of source builds
Voice Engine Enhancements
- Model Download Improvements — streaming downloads with progress indication
- SherpaOnnx Integration — better model type detection and Kokoro model support
- Azure Voice Preview — fixed format conversion (MP3 to WAV) for audio playback
- Voice Promotion — improved registry token management and cleanup
Technical Debt Cleanup
- Code Quality — addressed memory leaks, thread safety issues, and COM interface violations
- Error Handling — improved exception handling in async operations and COM calls
- Resource Management — proper IDisposable implementation in ViewModels
- Logging Optimization — conditional compilation to reduce performance overhead
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+ required (removed XP compatibility code paths)
Migration Notes
- Existing Installations — seamless upgrade path with proper COM registration/unregistration
- Configuration Migration — existing registry settings preserved during upgrade
- Model Downloads — SherpaOnnx models automatically downloaded on first use
v0.4.1
What's New in v0.4.0
Major Architecture Changes
- RustTtsWrapper Integration — complete transition to Rust-based TTS wrapper (RustTtsWrapper.Bindings 0.3.8)
- Removed legacy DotNetTtsWrapper and EngineConfig components
- Full x86 and x64 support with native rust_tts_wrapper.dll
- Improved FFI safety and thread safety in callbacks
- Better memory management and COM reference counting
Stability & Performance Fixes (Comprehensive Codebase Review)
- Thread Safety Improvements — fixed race conditions in cache enumeration and FFI callbacks
- Memory Management — fixed COM reference counting violations and event handler memory leaks
- Performance Optimization — reduced TTS pipeline logging overhead with conditional level checks
- MSI Installation Reliability — deferred COM registration for proper rollback and error handling
- Async Pattern Fixes — replaced async void methods with proper async Task patterns
User Experience Improvements
- Onboarding Wizard — new 3-page welcome/onboarding flow (welcome, how-to, privacy)
- Shows on fresh install and version bumps
- Clear explanations of VoiceGarden's purpose and privacy practices
- Analytics opt-in with proper consent
- Application Icon — professional icon for taskbar, title bar, and Start Menu
- Version-Gated Onboarding — onboarding re-appears on major version updates
Platform Support
- Full x86 Support — complete 32-bit architecture support with rust_tts_wrapper.dll
- Dual Architecture Installer — both x86 and x64 versions in single MSI
- Improved Platform Detection — better handling of WOW6432Node registry hive
Build System & CI/CD
- Simplified Dependencies — removed 7-Zip dependency, using built-in SharpCompress
- Enhanced CI Pipeline — all 12 jobs green, including C++ DLL, UI, CLI tools, and MSI
- Release Automation — MSI, setup.exe, per-platform ZIPs, and debug symbols
- NuGet Package Management — RustTtsWrapper.Bindings from NuGet.org instead of source builds
Voice Engine Enhancements
- Model Download Improvements — streaming downloads with progress indication
- SherpaOnnx Integration — better model type detection and Kokoro model support
- Azure Voice Preview — fixed format conversion (MP3 to WAV) for audio playback
- Voice Promotion — improved registry token management and cleanup
Technical Debt Cleanup
- Code Quality — addressed memory leaks, thread safety issues, and COM interface violations
- Error Handling — improved exception handling in async operations and COM calls
- Resource Management — proper IDisposable implementation in ViewModels
- Logging Optimization — conditional compilation to reduce performance overhead
Breaking Changes
- Removed Components — DotNetTtsWrapper and EngineConfig no longer supported
- Minimum Requirements — Windows 10+ required (removed XP compatibility code paths)
Migration Notes
- Existing Installations — seamless upgrade path with proper COM registration/unregistration
- Configuration Migration — existing registry settings preserved during upgrade
- Model Downloads — SherpaOnnx models automatically downloaded on first use
v0.3.5
What's New in v0.3.4
Installation Fixes
- setup.exe now requests elevation via UAC — fixes error 1625 ("installation forbidden by system policy") on devices where Windows Installer requires admin
- No more 7-Zip dependency — model extraction now uses built-in SharpCompress library. Works on locked-down devices (Grid Pads) without needing 7-Zip installed
- merged_models.json search paths fixed — resolves "No Download URL" error when running from an MSI install
Voice Engine Fixes
- Azure voice preview — fixed silent preview (Azure returns MP3, SoundPlayer needs WAV; now uses SynthToFileAsync with WAV format)
- Kokoro model type detection — voices.bin presence now correctly sets SherpaOnnxModelType=2 (Kokoro) in registry tokens
- MMS models — download individual files from HuggingFace directories instead of trying to fetch a directory URL (was 404)
- Download progress — streaming download with percentage, file size (MB), and throttled UI updates
- SherpaOnnx model promotion — uses .reg file import for fast, reliable elevation instead of relaunching the 116MB exe
SAPI Compatibility
- 32-bit registration — correctly checks WOW6432Node registry hive and uses SysWOW64\regsvr32.exe
- Grid 3 / System.Speech — model type-aware HKLM token promotion with SherpaOnnxVoices for Kokoro models
- HKCU voice cleanup — cleanup-voices.ps1 now covers HKLM, WOW6432Node, AND HKCU voice tokens
CI / Build
- Full CI pipeline — all 12 jobs green (C++ DLL, VoiceGarden.UI, CLI tools, .NET adapter, MSI)
- Release assets — MSI, setup.exe, per-platform ZIPs (x86/x64), debug symbols, full release layout
- DotNetTtsWrapper from NuGet.org — no longer clones from source during CI
v0.3.4
What's New in v0.3.4
Installation Fixes
- setup.exe now requests elevation via UAC — fixes error 1625 ("installation forbidden by system policy") on devices where Windows Installer requires admin
- No more 7-Zip dependency — model extraction now uses built-in SharpCompress library. Works on locked-down devices (Grid Pads) without needing 7-Zip installed
- merged_models.json search paths fixed — resolves "No Download URL" error when running from an MSI install
Voice Engine Fixes
- Azure voice preview — fixed silent preview (Azure returns MP3, SoundPlayer needs WAV; now uses SynthToFileAsync with WAV format)
- Kokoro model type detection — voices.bin presence now correctly sets SherpaOnnxModelType=2 (Kokoro) in registry tokens
- MMS models — download individual files from HuggingFace directories instead of trying to fetch a directory URL (was 404)
- Download progress — streaming download with percentage, file size (MB), and throttled UI updates
- SherpaOnnx model promotion — uses .reg file import for fast, reliable elevation instead of relaunching the 116MB exe
SAPI Compatibility
- 32-bit registration — correctly checks WOW6432Node registry hive and uses SysWOW64\regsvr32.exe
- Grid 3 / System.Speech — model type-aware HKLM token promotion with SherpaOnnxVoices for Kokoro models
- HKCU voice cleanup — cleanup-voices.ps1 now covers HKLM, WOW6432Node, AND HKCU voice tokens
CI / Build
- Full CI pipeline — all 12 jobs green (C++ DLL, VoiceGarden.UI, CLI tools, .NET adapter, MSI)
- Release assets — MSI, setup.exe, per-platform ZIPs (x86/x64), debug symbols, full release layout
- DotNetTtsWrapper from NuGet.org — no longer clones from source during CI