Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
💤 Files with no reviewable changes (1)
📝 WalkthroughWalkthroughRefactors Voice.ai branding to generic TTS ( ChangesTTS Refactoring and Proxy Support
Possibly Related PRs
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
src/renderer/src/i18n/ko-KR/settings.json (1)
655-676:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFinish the TTS copy migration to avoid mixed branding.
provider.ttsis now generic, but this locale still includes Voice.ai-branded strings in the same block.Suggested copy update
"model": { "label": "TTS 모델", - "placeholder": "voiceai-tts-v1-latest", - "helper": "지원되는 모델은 Voice.ai 문서를 참고하세요." + "placeholder": "tts-model-v1-latest", + "helper": "지원되는 모델은 TTS 제공자 문서를 참고하세요." }, "agentId": { "label": "음성 에이전트 ID", - "placeholder": "voice agent id 붙여넣기", + "placeholder": "음성 에이전트 ID 붙여넣기", "helper": "실시간 음성 통화에 필요합니다." },🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/ko-KR/settings.json` around lines 655 - 676, The TTS locale block still contains Voice.ai-branded text; update the "tts" object (keys: "model" helper and "agentId" placeholder/helper and any other Voice.ai mentions) to use generic provider.tts wording instead of "Voice.ai" or "voice agent" branding—e.g., change "지원되는 모델은 Voice.ai 문서를 참고하세요." to a neutral instruction like "지원되는 모델은 제공자 문서를 참고하세요." and replace "voice agent id 붙여넣기" / "실시간 음성 통화에 필요합니다." with generic references to a provider agent ID and its use for real-time voice calls. Ensure all occurrences in the "tts" block are updated to remove Voice.ai-specific branding.src/renderer/src/i18n/pt-BR/settings.json (1)
661-682:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAlign
provider.ttstext with the new generic namespace.The key/title are now generic TTS, but this block still contains Voice.ai-specific terms, which makes the localization inconsistent.
Suggested copy update
"model": { "label": "Modelo TTS", - "placeholder": "voiceai-tts-v1-latest", - "helper": "Consulte a documentação da Voice.ai para modelos compatíveis." + "placeholder": "tts-model-v1-latest", + "helper": "Consulte a documentação do provedor TTS para modelos compatíveis." }, "agentId": { "label": "ID do agente de voz", - "placeholder": "Cole o ID do voice agent", + "placeholder": "Cole o ID do agente de voz", "helper": "Necessário para chamadas de voz em tempo real." },🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/pt-BR/settings.json` around lines 661 - 682, The tts localization block ("tts" object) mixes generic TTS labels with Voice.ai-specific terms; update the "model" helper and the "agentId" label/placeholder/helper to use neutral, generic wording (e.g., replace "Voice.ai" and "voice agent" references with "for supported TTS providers" or "agent ID" and explain usage generically like "required for real-time voice calls" or "paste provider agent ID"); ensure "model" helper points to provider documentation generically and "agentId" entries do not mention Voice.ai specifically so the keys model, agentId, audioFormat, and language remain provider-agnostic and consistent with the new namespace.src/renderer/src/i18n/ja-JP/settings.json (1)
661-682:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winRemove leftover Voice.ai wording inside the new
provider.ttsblock.The namespace/title moved to
tts, but this block still has Voice.ai-specific copy (voiceai-tts-v1-latest, Voice.ai docs, andvoice agent id), which leaves mixed branding in one UI section.Suggested copy update
"model": { "label": "TTS モデル", - "placeholder": "voiceai-tts-v1-latest", - "helper": "対応モデルは Voice.ai のドキュメントを参照してください。" + "placeholder": "tts-model-v1-latest", + "helper": "対応モデルは TTS プロバイダーのドキュメントを参照してください。" }, "agentId": { "label": "音声エージェントID", - "placeholder": "voice agent id を貼り付け", + "placeholder": "音声エージェント ID を貼り付け", "helper": "リアルタイム通話に必要です。" },🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/ja-JP/settings.json` around lines 661 - 682, The tts block contains leftover Voice.ai-specific wording; update the keys under "tts" (notably "model.placeholder", "model.helper", and "agentId.placeholder") to neutral, product-agnostic copy: replace "voiceai-tts-v1-latest" with a generic example like "例: tts-model-v1", change "対応モデルは Voice.ai のドキュメントを参照してください。" to a neutral guidance such as "対応モデルはドキュメントを参照してください。", and change "voice agent id を貼り付け" to a neutral label like "音声エージェントIDを貼り付け"; keep the "agentId.helper" meaning ("リアルタイム通話に必要です。") but ensure phrasing is generic. Ensure no remaining "Voice.ai" strings remain in the "tts" block.
🧹 Nitpick comments (8)
src/renderer/src/i18n/fr-FR/settings.json (1)
661-692: ⚡ Quick winRemove remaining Voice.ai branding from the migrated
ttssection.After moving to
settings.provider.tts.*, Line 676-677 still carries Voice.ai-specific wording, which makes the localization inconsistent.Suggested text adjustments
- "title": "Synthese vocale (TTS)", + "title": "Synthèse vocale (TTS)", "model": { "label": "Modèle TTS", - "placeholder": "voiceai-tts-v1-latest", - "helper": "Voir la documentation Voice.ai pour les modèles pris en charge." + "placeholder": "tts-model-id", + "helper": "Voir la documentation TTS pour les modèles pris en charge." },🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/fr-FR/settings.json` around lines 661 - 692, The tts localization still contains Voice.ai-specific branding in the tts.model.placeholder and tts.model.helper strings; update the "model" entries under the "tts" object to remove "voiceai" references by using a neutral placeholder (e.g., a generic model id) and a generic helper like "Voir la documentation pour les modèles pris en charge" or similar so the wording matches the migrated settings.provider.tts.* naming; locate and edit the keys "tts.model.placeholder" and "tts.model.helper" (and any other "Voice.ai" mentions within the "tts" block) to use non-branded, generic text.src/renderer/src/i18n/fa-IR/settings.json (1)
661-692: ⚡ Quick winComplete the branding migration inside the new
ttsblock.Line 676-677 still references
voiceainaming/docs, which conflicts with the new genericsettings.provider.tts.*namespace introduced at Line 661.Suggested localized update
"model": { "label": "مدل TTS", - "placeholder": "voiceai-tts-v1-latest", - "helper": "برای مدلهای پشتیبانیشده به مستندات Voice.ai مراجعه کنید." + "placeholder": "tts-model-id", + "helper": "برای مدلهای پشتیبانیشده به مستندات TTS مراجعه کنید." },🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/fa-IR/settings.json` around lines 661 - 692, The tts block still uses "voiceai" branding in the model.helper and agentId.helper strings; update these to the new generic provider wording under the settings.provider.tts.* namespace—replace "Voice.ai" / "voice agent" mentions with neutral text like "برای مدلهای پشتیبانیشده به مستندات ارائهدهنده TTS مراجعه کنید" and "شناسه عامل صوتی ارائهدهنده را جایگذاری کنید؛ برای تماسهای بلادرنگ لازم است" so the keys model.helper and agentId.helper align with settings.provider.tts.* and remove any vendor-specific branding.src/renderer/src/i18n/he-IL/settings.json (1)
661-692: ⚡ Quick winAlign model placeholder/helper text with the new
ttsnamespace.Line 676-677 still references
voiceaibranding after the section was migrated totts, which is inconsistent for users.Suggested copy update
"model": { "label": "מודל TTS", - "placeholder": "voiceai-tts-v1-latest", - "helper": "ראו את מסמכי Voice.ai למודלים הנתמכים." + "placeholder": "tts-model-id", + "helper": "ראו את מסמכי TTS עבור המודלים הנתמכים." },🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/he-IL/settings.json` around lines 661 - 692, The tts section still uses Voice.ai branding in tts.model.placeholder and tts.model.helper; update those entries to use the new tts namespace wording (e.g., change "voiceai-tts-v1-latest" placeholder to a generic TTS model identifier like "tts-model-v1" and change the helper from "ראו את מסמכי Voice.ai למודלים הנתמכים." to a neutral reference such as "ראו את מסמכי TTS למודלים הנתמכים."), ensuring the keys tts.model.placeholder and tts.model.helper are edited accordingly to remove brand-specific text.src/renderer/src/i18n/zh-HK/settings.json (1)
656-673: ⚡ Quick winFinish the branding migration inside the
provider.ttscontent.Line [672] still references Voice.ai docs and Line [671] uses a
voiceai-*placeholder, which conflicts with the newttsnaming used by this section.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/zh-HK/settings.json` around lines 656 - 673, The provider branding in the TTS section hasn't been fully migrated: update the "tts.model.placeholder" value (currently "voiceai-tts-v1-latest") to use the new generic tts naming (e.g., "tts-v1-latest" or similar consistent with the new provider naming) and change the "tts.model.helper" text (currently referencing "Voice.ai 文件") to a generic "TTS provider documentation" reference; ensure any other strings under the "tts" object that mention "Voice.ai" are replaced with neutral "TTS" or "provider" wording so the keys "tts.model.placeholder" and "tts.model.helper" (and any other "tts" helper strings) reflect the new branding.src/renderer/src/i18n/zh-CN/settings.json (1)
797-814: ⚡ Quick winKeep
provider.ttswording fully TTS-generic in this locale block.Line [813] still points to Voice.ai docs and Line [812] keeps a
voiceai-*model placeholder, so the renamedttsnamespace still shows mixed legacy branding.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/zh-CN/settings.json` around lines 797 - 814, The "tts" locale block still contains Voice.ai-specific branding: update the "model.placeholder" and "model.helper" values under the "tts" object (keys: "model.placeholder" currently "voiceai-tts-v1-latest" and "model.helper" referencing Voice.ai docs) to neutral, TTS-generic text; replace the placeholder with a generic example like "tts-model-latest" and change the helper to a generic pointer such as "查看 TTS 提供商文档以获取可用模型" (or equivalent neutral wording) so the provider.tts namespace contains no legacy Voice.ai branding.src/renderer/src/i18n/zh-TW/settings.json (1)
661-678: ⚡ Quick winUpdate leftover Voice.ai wording under the new
provider.ttskey.Line [677] still points to Voice.ai docs and Line [676] keeps a
voiceai-*placeholder, so this locale continues to expose mixed branding after the namespace rename.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/zh-TW/settings.json` around lines 661 - 678, The locale file still contains Voice.ai-specific branding under the tts model keys—update the "model.placeholder" value ("voiceai-tts-v1-latest") and the "model.helper" text that references "Voice.ai 文件" to neutral, provider-agnostic wording matching the new provider.tts namespace; locate the "tts" object (keys: "model.label", "model.placeholder", "model.helper") and replace the placeholder and helper sentence with a generic example placeholder and a helper that directs users to the provider.tts documentation or settings without mentioning "Voice.ai".src/renderer/src/i18n/ru-RU/settings.json (1)
655-672: ⚡ Quick winAlign the
provider.ttscopy with the new namespace branding.After the key rename, the same block still carries old brand wording (e.g., Line [671] references Voice.ai docs and Line [670] uses a
voiceai-*placeholder), which leaves mixed TTS branding in UI text.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/renderer/src/i18n/ru-RU/settings.json` around lines 655 - 672, The TTS copy still uses old Voice.ai branding; update the strings under the "tts" block (e.g., tts.title, tts.model.placeholder, tts.model.helper and any mention in tts.language.helper) to the new namespace/brand and remove or replace the "voiceai-tts-v1-latest" placeholder and "Voice.ai" documentation mention with the new brand name and correct example model identifier and docs reference so all UI text consistently reflects the renamed provider.src/main/presenter/llmProviderPresenter/aiSdk/runtime.ts (1)
233-234: ⚡ Quick winAdd error handling for ProxyAgent construction.
The
ProxyAgentconstructor may throw an exception if the proxy URL is malformed. Currently, this would cause the entire TTS request to fail with an unclear error. Consider adding error handling to gracefully degrade to direct connection if proxy configuration is invalid.🛡️ Suggested error handling approach
-const proxyUrl = proxyConfig.getProxyUrl() -const dispatcher = proxyUrl ? new ProxyAgent(proxyUrl) : undefined +let dispatcher: ProxyAgent | undefined +try { + const proxyUrl = proxyConfig.getProxyUrl() + dispatcher = proxyUrl ? new ProxyAgent(proxyUrl) : undefined +} catch (error) { + console.warn('[TTS] Failed to create proxy agent, using direct connection:', error) + dispatcher = undefined +}Apply this pattern to both
executeTtsPatternA(line 233) andexecuteTtsPatternB(line 292).Also applies to: 292-293
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/main/presenter/llmProviderPresenter/aiSdk/runtime.ts` around lines 233 - 234, The ProxyAgent constructor can throw on malformed proxy URLs; wrap the creation of dispatcher in a try/catch in both executeTtsPatternA and executeTtsPatternB: call proxyConfig.getProxyUrl(), then attempt to construct new ProxyAgent(proxyUrl) inside a try block, on error catch and log a warning (including the proxyUrl and exception) and set dispatcher = undefined to gracefully fall back to a direct connection; ensure you reference the ProxyAgent symbol and preserve existing dispatcher usage downstream.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/renderer/src/i18n/fr-FR/settings.json`:
- Line 662: Fix the French diacritic in the i18n string by updating the "title"
value currently set to "Synthese vocale (TTS)" to "Synthèse vocale (TTS)";
locate the JSON entry with the "title" key (the TTS title) and replace the plain
"e" with "è" so the translated label reads correctly.
---
Outside diff comments:
In `@src/renderer/src/i18n/ja-JP/settings.json`:
- Around line 661-682: The tts block contains leftover Voice.ai-specific
wording; update the keys under "tts" (notably "model.placeholder",
"model.helper", and "agentId.placeholder") to neutral, product-agnostic copy:
replace "voiceai-tts-v1-latest" with a generic example like "例: tts-model-v1",
change "対応モデルは Voice.ai のドキュメントを参照してください。" to a neutral guidance such as
"対応モデルはドキュメントを参照してください。", and change "voice agent id を貼り付け" to a neutral label
like "音声エージェントIDを貼り付け"; keep the "agentId.helper" meaning ("リアルタイム通話に必要です。") but
ensure phrasing is generic. Ensure no remaining "Voice.ai" strings remain in the
"tts" block.
In `@src/renderer/src/i18n/ko-KR/settings.json`:
- Around line 655-676: The TTS locale block still contains Voice.ai-branded
text; update the "tts" object (keys: "model" helper and "agentId"
placeholder/helper and any other Voice.ai mentions) to use generic provider.tts
wording instead of "Voice.ai" or "voice agent" branding—e.g., change "지원되는 모델은
Voice.ai 문서를 참고하세요." to a neutral instruction like "지원되는 모델은 제공자 문서를 참고하세요." and
replace "voice agent id 붙여넣기" / "실시간 음성 통화에 필요합니다." with generic references to a
provider agent ID and its use for real-time voice calls. Ensure all occurrences
in the "tts" block are updated to remove Voice.ai-specific branding.
In `@src/renderer/src/i18n/pt-BR/settings.json`:
- Around line 661-682: The tts localization block ("tts" object) mixes generic
TTS labels with Voice.ai-specific terms; update the "model" helper and the
"agentId" label/placeholder/helper to use neutral, generic wording (e.g.,
replace "Voice.ai" and "voice agent" references with "for supported TTS
providers" or "agent ID" and explain usage generically like "required for
real-time voice calls" or "paste provider agent ID"); ensure "model" helper
points to provider documentation generically and "agentId" entries do not
mention Voice.ai specifically so the keys model, agentId, audioFormat, and
language remain provider-agnostic and consistent with the new namespace.
---
Nitpick comments:
In `@src/main/presenter/llmProviderPresenter/aiSdk/runtime.ts`:
- Around line 233-234: The ProxyAgent constructor can throw on malformed proxy
URLs; wrap the creation of dispatcher in a try/catch in both executeTtsPatternA
and executeTtsPatternB: call proxyConfig.getProxyUrl(), then attempt to
construct new ProxyAgent(proxyUrl) inside a try block, on error catch and log a
warning (including the proxyUrl and exception) and set dispatcher = undefined to
gracefully fall back to a direct connection; ensure you reference the ProxyAgent
symbol and preserve existing dispatcher usage downstream.
In `@src/renderer/src/i18n/fa-IR/settings.json`:
- Around line 661-692: The tts block still uses "voiceai" branding in the
model.helper and agentId.helper strings; update these to the new generic
provider wording under the settings.provider.tts.* namespace—replace "Voice.ai"
/ "voice agent" mentions with neutral text like "برای مدلهای پشتیبانیشده به
مستندات ارائهدهنده TTS مراجعه کنید" and "شناسه عامل صوتی ارائهدهنده را
جایگذاری کنید؛ برای تماسهای بلادرنگ لازم است" so the keys model.helper and
agentId.helper align with settings.provider.tts.* and remove any vendor-specific
branding.
In `@src/renderer/src/i18n/fr-FR/settings.json`:
- Around line 661-692: The tts localization still contains Voice.ai-specific
branding in the tts.model.placeholder and tts.model.helper strings; update the
"model" entries under the "tts" object to remove "voiceai" references by using a
neutral placeholder (e.g., a generic model id) and a generic helper like "Voir
la documentation pour les modèles pris en charge" or similar so the wording
matches the migrated settings.provider.tts.* naming; locate and edit the keys
"tts.model.placeholder" and "tts.model.helper" (and any other "Voice.ai"
mentions within the "tts" block) to use non-branded, generic text.
In `@src/renderer/src/i18n/he-IL/settings.json`:
- Around line 661-692: The tts section still uses Voice.ai branding in
tts.model.placeholder and tts.model.helper; update those entries to use the new
tts namespace wording (e.g., change "voiceai-tts-v1-latest" placeholder to a
generic TTS model identifier like "tts-model-v1" and change the helper from "ראו
את מסמכי Voice.ai למודלים הנתמכים." to a neutral reference such as "ראו את מסמכי
TTS למודלים הנתמכים."), ensuring the keys tts.model.placeholder and
tts.model.helper are edited accordingly to remove brand-specific text.
In `@src/renderer/src/i18n/ru-RU/settings.json`:
- Around line 655-672: The TTS copy still uses old Voice.ai branding; update the
strings under the "tts" block (e.g., tts.title, tts.model.placeholder,
tts.model.helper and any mention in tts.language.helper) to the new
namespace/brand and remove or replace the "voiceai-tts-v1-latest" placeholder
and "Voice.ai" documentation mention with the new brand name and correct example
model identifier and docs reference so all UI text consistently reflects the
renamed provider.
In `@src/renderer/src/i18n/zh-CN/settings.json`:
- Around line 797-814: The "tts" locale block still contains Voice.ai-specific
branding: update the "model.placeholder" and "model.helper" values under the
"tts" object (keys: "model.placeholder" currently "voiceai-tts-v1-latest" and
"model.helper" referencing Voice.ai docs) to neutral, TTS-generic text; replace
the placeholder with a generic example like "tts-model-latest" and change the
helper to a generic pointer such as "查看 TTS 提供商文档以获取可用模型" (or equivalent neutral
wording) so the provider.tts namespace contains no legacy Voice.ai branding.
In `@src/renderer/src/i18n/zh-HK/settings.json`:
- Around line 656-673: The provider branding in the TTS section hasn't been
fully migrated: update the "tts.model.placeholder" value (currently
"voiceai-tts-v1-latest") to use the new generic tts naming (e.g.,
"tts-v1-latest" or similar consistent with the new provider naming) and change
the "tts.model.helper" text (currently referencing "Voice.ai 文件") to a generic
"TTS provider documentation" reference; ensure any other strings under the "tts"
object that mention "Voice.ai" are replaced with neutral "TTS" or "provider"
wording so the keys "tts.model.placeholder" and "tts.model.helper" (and any
other "tts" helper strings) reflect the new branding.
In `@src/renderer/src/i18n/zh-TW/settings.json`:
- Around line 661-678: The locale file still contains Voice.ai-specific branding
under the tts model keys—update the "model.placeholder" value
("voiceai-tts-v1-latest") and the "model.helper" text that references "Voice.ai
文件" to neutral, provider-agnostic wording matching the new provider.tts
namespace; locate the "tts" object (keys: "model.label", "model.placeholder",
"model.helper") and replace the placeholder and helper sentence with a generic
example placeholder and a helper that directs users to the provider.tts
documentation or settings without mentioning "Voice.ai".
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: bf2b1448-14d0-406f-94df-53285255fb10
📒 Files selected for processing (18)
src/main/presenter/agentRuntimePresenter/index.tssrc/main/presenter/llmProviderPresenter/aiSdk/runtime.tssrc/renderer/settings/components/ProviderModelList.vuesrc/renderer/settings/components/VoiceAIProviderConfig.vuesrc/renderer/src/components/settings/ModelConfigDialog.vuesrc/renderer/src/components/settings/TtsSettingsFields.vuesrc/renderer/src/i18n/da-DK/settings.jsonsrc/renderer/src/i18n/en-US/settings.jsonsrc/renderer/src/i18n/fa-IR/settings.jsonsrc/renderer/src/i18n/fr-FR/settings.jsonsrc/renderer/src/i18n/he-IL/settings.jsonsrc/renderer/src/i18n/ja-JP/settings.jsonsrc/renderer/src/i18n/ko-KR/settings.jsonsrc/renderer/src/i18n/pt-BR/settings.jsonsrc/renderer/src/i18n/ru-RU/settings.jsonsrc/renderer/src/i18n/zh-CN/settings.jsonsrc/renderer/src/i18n/zh-HK/settings.jsonsrc/renderer/src/i18n/zh-TW/settings.json
20260518_102430.mp4
Summary by CodeRabbit
New Features
Improvements
Localization