Skip to content

refactor(voice,ui,config): improve voice UI, focus, and config handling - #792

Merged
haiphucnguyen merged 1 commit into
mainfrom
feature/improvements
Oct 31, 2026
Merged

haiphucnguyen merged 1 commit into
mainfrom
feature/improvements

Conversation

@haiphucnguyen

Copy link
Copy Markdown
Collaborator

Summary

  • Add VoiceModelRequiredDialog and hook it into chat and input components
  • Replace focusRequester with focusRequesterAutoFocus across dialogs and main UI
  • Update VoiceSettingsSection to remove NONE provider from lists
  • Introduce TtsChunkMode and chunking logic in TextToSpeechService
  • Refactor VoiceServiceRegistry shutdown hook and caching logic
  • Update AppConfig migration to drop NONE provider entries
  • Adjust TtsTextChunker to handle surrogate pairs and per-sentence packing

BREAKING CHANGE: VoiceProvider.NONE is no longer available; users must enable both STT and TTS or disable voice entirely via VoiceConfig.enabled. Update configuration files accordingly.

Related Issue(s)

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 💥 Breaking change
  • 📝 Documentation
  • ♻️ Refactor (no functional change)
  • 🧪 Tests
  • 🔧 Chore / tooling / CI

What Changed & Why

How to Test

./gradlew test

Screenshots / Recordings (if applicable)

Checklist

  • I have read the CONTRIBUTING guide
  • My branch is up to date with main
  • I ran ./gradlew spotlessApply and ./gradlew detekt locally
  • I ran ./gradlew test and all tests pass
  • I added/updated tests for my changes (if applicable)
  • I added/updated documentation (if applicable)
  • My commits are signed off (DCO) — git commit -s
  • This PR is focused on a single feature/fix

Additional Notes

- Add VoiceModelRequiredDialog and hook it into chat and input components
- Replace focusRequester with focusRequesterAutoFocus across dialogs and main UI
- Update VoiceSettingsSection to remove NONE provider from lists
- Introduce TtsChunkMode and chunking logic in TextToSpeechService
- Refactor VoiceServiceRegistry shutdown hook and caching logic
- Update AppConfig migration to drop NONE provider entries
- Adjust TtsTextChunker to handle surrogate pairs and per-sentence packing
- Update i18n strings for new voice model dialog
- Add comprehensive tests for new chunking behavior
- Clean up imports and remove deprecated focusRequester calls

BREAKING CHANGE: VoiceProvider.NONE is no longer available; users must enable both STT and TTS or disable voice entirely via VoiceConfig.enabled. Update configuration files accordingly.
Copilot AI balanced review requested due to automatic review settings October 31, 2026 22:39

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@haiphucnguyen
haiphucnguyen merged commit ace5c95 into main Oct 31, 2026
13 checks passed
@haiphucnguyen
haiphucnguyen deleted the feature/improvements branch October 31, 2026 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants