diff --git a/docs/obsidian-review-8004-issuecomment-3839142330.md b/docs/obsidian-review-8004-issuecomment-3839142330.md
new file mode 100644
index 0000000..335da19
--- /dev/null
+++ b/docs/obsidian-review-8004-issuecomment-3839142330.md
@@ -0,0 +1,139 @@
+# Obsidian Review Bot Comment (PR #8004) — main 브랜치 기준
+
+- Source: https://github.com/obsidianmd/obsidian-releases/pull/8004#issuecomment-3839142330
+- GitHub main SHA: e544a0fb1f370c7a06bafc750c39452f5aca3b5f
+- Updated (UTC): 2026-02-03T05:29:19Z
+
+---
+
+## Required Findings (main 브랜치 기준)
+
+> [!IMPORTANT]
+> 아래 링크는 **GitHub main 브랜치 커밋** 기준입니다.
+
+---
+
+### 'audio.sampleRate' may use Object's default stringification format ('[object Object]') when stringified.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/infrastructure/api/SettingsValidator.ts#L299-L299](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/infrastructure/api/SettingsValidator.ts#L299-L299)
+ 수정 주석: 객체가 될 수 있는 값은 String(...) 또는 JSON.stringify(...)로 명시 변환하고 타입을 좁힙니다.
+
+### 'value' may use Object's default stringification format ('[object Object]') when stringified.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/progress/StatusMessage.ts#L273-L273](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/progress/StatusMessage.ts#L273-L273)
+ 수정 주석: 객체가 될 수 있는 값은 String(...) 또는 JSON.stringify(...)로 명시 변환하고 타입을 좁힙니다.
+
+### Use sentence case for UI text.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L395-L395](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L395-L395)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L396-L396](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L396-L396)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L512-L512](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L512-L512)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L586-L586](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L586-L586)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L623-L623](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L623-L623)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L710-L710](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L710-L710)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L759-L759](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L759-L759)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L155-L155](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L155-L155)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L319-L319](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L319-L319)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L357-L357](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L357-L357)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L368-L368](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L368-L368)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L369-L369](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L369-L369)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L380-L380](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L380-L380)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L403-L403](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L403-L403)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L405-L405](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L405-L405)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L527-L527](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L527-L527)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabOptimized.ts#L473-L473](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabOptimized.ts#L473-L473)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabOptimized.ts#L482-L482](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabOptimized.ts#L482-L482)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabRefactored.ts#L156-L156](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabRefactored.ts#L156-L156)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L42-L42](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L42-L42)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L64-L64](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L64-L64)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L65-L65](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L65-L65)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L81-L81](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L81-L81)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L84-L84](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L84-L84)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L96-L96](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L96-L96)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/DeepgramSettings.ts#L581-L581](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/DeepgramSettings.ts#L581-L581)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L83-L83](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L83-L83)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L84-L84](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L84-L84)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L85-L85](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L85-L85)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L309-L309](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L309-L309)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+- [e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일하되, 고유명사 표기는 유지합니다.
+
+---
+
+## Optional Findings (main 브랜치 기준)
+
+- (없음)
+
+---
+
+## Original Review Comment
+
+```markdown
+Thank you for your submission, an automated scan of your plugin code's revealed the following issues:
+
+### Required
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/infrastructure/api/SettingsValidator.ts#L299-L299)
+'audio.sampleRate' may use Object's default stringification format ('[object Object]') when stringified.
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/progress/StatusMessage.ts#L273-L273)
+'value' may use Object's default stringification format ('[object Object]') when stringified.
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L395-L395)[\[2\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L396-L396)[\[3\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L512-L512)[\[4\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L586-L586)[\[5\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L623-L623)[\[6\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L710-L710)[\[7\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/EnhancedSettingsTab.ts#L759-L759)[\[8\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L155-L155)[\[9\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L319-L319)[\[10\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L357-L357)[\[11\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L368-L368)[\[12\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L369-L369)[\[13\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L380-L380)[\[14\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L403-L403)[\[15\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L405-L405)[\[16\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTab.ts#L527-L527)[\[17\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabOptimized.ts#L473-L473)[\[18\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabOptimized.ts#L482-L482)[\[19\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SettingsTabRefactored.ts#L156-L156)[\[20\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L42-L42)[\[21\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L64-L64)[\[22\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L65-L65)[\[23\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L81-L81)[\[24\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L84-L84)[\[25\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/SimpleSettingsTab.ts#L96-L96)[\[26\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/DeepgramSettings.ts#L581-L581)[\[27\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L83-L83)[\[28\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L84-L84)[\[29\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L85-L85)[\[30\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/components/ProviderSettings.ts#L309-L309)[\[31\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197)[\[32\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198)[\[33\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199)[\[34\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289)[\[35\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290)[\[36\]](https://github.com/asyouplz/SpeechNote/blob/e544a0fb1f370c7a06bafc750c39452f5aca3b5f/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291)
+Use sentence case for UI text.
+
+
+
+---
+
+### Optional
+
+
+
+---
+
+
+
+Do NOT open a new PR for re-validation.
+Once you have pushed some changes to your repository the bot will rescan within 6 hours
+If you think some of the required changes are incorrect, please comment with `/skip` and the reason why you think the results are incorrect.
+To run these checks locally, install the [eslint plugin](https://github.com/obsidianmd/eslint-plugin) in your project.
+Do NOT rebase this PR, this will be handled by the reviewer once the plugin has been approved.
+```
\ No newline at end of file
diff --git a/docs/obsidian-review-8004.md b/docs/obsidian-review-8004.md
new file mode 100644
index 0000000..4cda2ac
--- /dev/null
+++ b/docs/obsidian-review-8004.md
@@ -0,0 +1,255 @@
+# Obsidian Review Bot Comment (PR #8004) — main 브랜치 기준
+
+- Source: https://github.com/obsidianmd/obsidian-releases/pull/8004#issuecomment-3835510894
+- GitHub main SHA: e7e0e6b2ccb201005ce892843a88bccedd6c7318
+- Updated (UTC): 2026-02-03 01:53:45Z
+
+---
+
+## Required Findings (main 브랜치 기준)
+
+> [!IMPORTANT]
+> 아래 링크는 **GitHub main 브랜치 커밋** 기준입니다.
+
+---
+
+### 'audio.sampleRate' may use Object's default stringification format ('[object Object]') when stringified.
+- [src/infrastructure/api/SettingsValidator.ts#L288-L288](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/infrastructure/api/SettingsValidator.ts#L288-L288)
+ 수정 주석: 객체가 될 수 있는 값은 String(...) 또는 JSON.stringify(...)로 명시 변환하고 타입을 좁힙니다.
+
+### Expected an error object to be thrown.
+- [src/infrastructure/api/providers/deepgram/DeepgramService.ts#L665-L665](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/infrastructure/api/providers/deepgram/DeepgramService.ts#L665-L665)
+ 수정 주석: 문자열 대신 Error 인스턴스(예: new Error(...))를 throw하거나 기존 error를 그대로 재throw합니다.
+- [src/infrastructure/api/providers/deepgram/DeepgramServiceRefactored.ts#L229-L229](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/infrastructure/api/providers/deepgram/DeepgramServiceRefactored.ts#L229-L229)
+ 수정 주석: 문자열 대신 Error 인스턴스(예: new Error(...))를 throw하거나 기존 error를 그대로 재throw합니다.
+
+### Disabling '@typescript-eslint/no-explicit-any' is not allowed.
+- [src/patterns/Singleton.ts#L69-L69](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/patterns/Singleton.ts#L69-L69)
+ 수정 주석: eslint-disable를 제거하고 any 대신 명시적 타입/제네릭(예: unknown[])으로 대체합니다.
+- [src/patterns/Singleton.ts#L75-L75](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/patterns/Singleton.ts#L75-L75)
+ 수정 주석: eslint-disable를 제거하고 any 대신 명시적 타입/제네릭(예: unknown[])으로 대체합니다.
+
+### Unused eslint-disable directive (no problems were reported from '@typescript-eslint/no-unsafe-argument').
+- [src/patterns/Singleton.ts#L80](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/patterns/Singleton.ts#L80)
+ 수정 주석: 사용되지 않는 eslint-disable 주석을 삭제합니다.
+
+### Use sentence case for UI text.
+- [src/ui/formatting/FormatOptions.ts#L271-L271](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/formatting/FormatOptions.ts#L271-L271)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L395-L395](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L395-L395)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L396-L396](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L396-L396)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L498-L498](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L498-L498)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L586-L586](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L586-L586)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L589-L589](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L589-L589)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L623-L623](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L623-L623)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L710-L710](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L710-L710)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L724-L724](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L724-L724)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L759-L759](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L759-L759)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L922-L922](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L922-L922)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/EnhancedSettingsTab.ts#L930-L930](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L930-L930)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L155-L155](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L155-L155)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L265-L265](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L265-L265)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L319-L319](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L319-L319)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L357-L357](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L357-L357)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L368-L368](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L368-L368)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L369-L369](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L369-L369)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L371-L371](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L371-L371)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L380-L380](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L380-L380)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L403-L403](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L403-L403)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L405-L405](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L405-L405)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTab.ts#L527-L527](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L527-L527)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTabOptimized.ts#L473-L473](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTabOptimized.ts#L473-L473)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTabOptimized.ts#L482-L482](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTabOptimized.ts#L482-L482)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SettingsTabRefactored.ts#L156-L156](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTabRefactored.ts#L156-L156)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SimpleSettingsTab.ts#L42-L42](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L42-L42)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SimpleSettingsTab.ts#L64-L64](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L64-L64)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SimpleSettingsTab.ts#L65-L65](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L65-L65)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SimpleSettingsTab.ts#L68-L68](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L68-L68)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SimpleSettingsTab.ts#L81-L81](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L81-L81)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SimpleSettingsTab.ts#L84-L84](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L84-L84)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/SimpleSettingsTab.ts#L96-L96](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L96-L96)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ApiKeyValidator.ts#L73-L73](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ApiKeyValidator.ts#L73-L73)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/AudioSettings.ts#L41-L41](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L41-L41)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/AudioSettings.ts#L64-L64](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L64-L64)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/AudioSettings.ts#L65-L65](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L65-L65)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/AudioSettings.ts#L114-L114](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L114-L114)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/DeepgramSettings.ts#L581-L581](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/DeepgramSettings.ts#L581-L581)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/DeepgramSettings.ts#L617-L617](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/DeepgramSettings.ts#L617-L617)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L83-L83](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L83-L83)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L84-L84](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L84-L84)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L85-L85](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L85-L85)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L222-L222](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L222-L222)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L223-L223](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L223-L223)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L224-L224](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L224-L224)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L225-L225](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L225-L225)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L226-L226](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L226-L226)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L309-L309](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L309-L309)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L352-L352](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L352-L352)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L408-L408](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L408-L408)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L435-L435](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L435-L435)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ProviderSettings.ts#L438-L438](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L438-L438)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/components/ShortcutSettings.ts#L488-L488](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ShortcutSettings.ts#L488-L488)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L98-L98](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L98-L98)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L236-L236](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L236-L236)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L237-L237](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L237-L237)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L238-L238](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L238-L238)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L239-L239](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L239-L239)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L582-L582](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L582-L582)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L585-L585](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L585-L585)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L844-L844](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L844-L844)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L847-L847](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L847-L847)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainer.ts#L859-L859](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L859-L859)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L303-L303](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L303-L303)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L304-L304](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L304-L304)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L305-L305](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L305-L305)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/APIKeyManager.ts#L822-L822](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/APIKeyManager.ts#L822-L822)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L66-L66](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L66-L66)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L99-L99](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L99-L99)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L100-L100](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L100-L100)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L101-L101](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L101-L101)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L102-L102](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L102-L102)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L103-L103](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L103-L103)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+- [src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L883-L883](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L883-L883)
+ 수정 주석: UI 문구를 sentence case(첫 단어만 대문자)로 통일합니다.
+
+### 'value' may use Object's default stringification format ('[object Object]') when stringified.
+- [src/ui/progress/StatusMessage.ts#L275-L275](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/progress/StatusMessage.ts#L275-L275)
+ 수정 주석: 객체가 될 수 있는 값은 String(...) 또는 JSON.stringify(...)로 명시 변환하고 타입을 좁힙니다.
+
+---
+
+## Optional Findings (main 브랜치 기준)
+
+- (없음)
+
+---
+
+## Original Review Comment
+
+```markdown
+Thank you for your submission, an automated scan of your plugin code's revealed the following issues:
+
+### Required
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/infrastructure/api/SettingsValidator.ts#L288-L288)
+'audio.sampleRate' may use Object's default stringification format ('[object Object]') when stringified.
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/infrastructure/api/providers/deepgram/DeepgramService.ts#L665-L665)[\[2\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/infrastructure/api/providers/deepgram/DeepgramServiceRefactored.ts#L229-L229)
+Expected an error object to be thrown.
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/patterns/Singleton.ts#L69-L69)[\[2\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/patterns/Singleton.ts#L75-L75)
+Disabling '@typescript-eslint/no-explicit-any' is not allowed.
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/patterns/Singleton.ts#L80)
+Unused eslint-disable directive (no problems were reported from '@typescript-eslint/no-unsafe-argument').
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/formatting/FormatOptions.ts#L271-L271)[\[2\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L395-L395)[\[3\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L396-L396)[\[4\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L498-L498)[\[5\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L586-L586)[\[6\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L589-L589)[\[7\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L623-L623)[\[8\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L710-L710)[\[9\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L724-L724)[\[10\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L759-L759)[\[11\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L922-L922)[\[12\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/EnhancedSettingsTab.ts#L930-L930)[\[13\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L155-L155)[\[14\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L265-L265)[\[15\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L319-L319)[\[16\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L357-L357)[\[17\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L368-L368)[\[18\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L369-L369)[\[19\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L371-L371)[\[20\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L380-L380)[\[21\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L403-L403)[\[22\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L405-L405)[\[23\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTab.ts#L527-L527)[\[24\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTabOptimized.ts#L473-L473)[\[25\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTabOptimized.ts#L482-L482)[\[26\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SettingsTabRefactored.ts#L156-L156)[\[27\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L42-L42)[\[28\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L64-L64)[\[29\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L65-L65)[\[30\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L68-L68)[\[31\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L81-L81)[\[32\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L84-L84)[\[33\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/SimpleSettingsTab.ts#L96-L96)[\[34\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ApiKeyValidator.ts#L73-L73)[\[35\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L41-L41)[\[36\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L64-L64)[\[37\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L65-L65)[\[38\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/AudioSettings.ts#L114-L114)[\[39\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/DeepgramSettings.ts#L581-L581)[\[40\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/DeepgramSettings.ts#L617-L617)[\[41\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L83-L83)[\[42\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L84-L84)[\[43\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L85-L85)[\[44\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L222-L222)[\[45\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L223-L223)[\[46\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L224-L224)[\[47\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L225-L225)[\[48\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L226-L226)[\[49\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L309-L309)[\[50\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L352-L352)[\[51\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L408-L408)[\[52\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L435-L435)[\[53\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ProviderSettings.ts#L438-L438)[\[54\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/components/ShortcutSettings.ts#L488-L488)[\[55\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L98-L98)[\[56\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L197-L197)[\[57\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L198-L198)[\[58\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L199-L199)[\[59\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L236-L236)[\[60\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L237-L237)[\[61\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L238-L238)[\[62\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L239-L239)[\[63\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L582-L582)[\[64\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L585-L585)[\[65\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L844-L844)[\[66\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L847-L847)[\[67\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainer.ts#L859-L859)[\[68\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L289-L289)[\[69\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L290-L290)[\[70\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L291-L291)[\[71\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L303-L303)[\[72\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L304-L304)[\[73\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts#L305-L305)[\[74\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/APIKeyManager.ts#L822-L822)[\[75\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L66-L66)[\[76\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L99-L99)[\[77\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L100-L100)[\[78\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L101-L101)[\[79\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L102-L102)[\[80\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L103-L103)[\[81\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/settings/provider/components/AdvancedSettingsPanel.ts#L883-L883)
+Use sentence case for UI text.
+
+[\[1\]](https://github.com/asyouplz/SpeechNote/blob/e7e0e6b2ccb201005ce892843a88bccedd6c7318/src/ui/progress/StatusMessage.ts#L275-L275)
+'value' may use Object's default stringification format ('[object Object]') when stringified.
+
+
+
+---
+
+### Optional
+
+
+
+---
+
+
+
+Do NOT open a new PR for re-validation.
+Once you have pushed some changes to your repository the bot will rescan within 6 hours
+If you think some of the required changes are incorrect, please comment with `/skip` and the reason why you think the results are incorrect.
+To run these checks locally, install the [eslint plugin](https://github.com/obsidianmd/eslint-plugin) in your project.
+Do NOT rebase this PR, this will be handled by the reviewer once the plugin has been approved.
+
+```
diff --git a/src/ui/settings/EnhancedSettingsTab.ts b/src/ui/settings/EnhancedSettingsTab.ts
index db3ef2e..02f1d2b 100644
--- a/src/ui/settings/EnhancedSettingsTab.ts
+++ b/src/ui/settings/EnhancedSettingsTab.ts
@@ -392,8 +392,8 @@ export class EnhancedSettingsTab extends PluginSettingTab {
.setDesc('Select the transcription service provider')
.addDropdown((dropdown) => {
dropdown
- .addOption('openai', 'OpenAI Whisper')
- .addOption('azure', 'Azure Speech Services')
+ .addOption('openai', 'OpenAI whisper')
+ .addOption('azure', 'Azure speech services')
.addOption('custom', 'Custom endpoint');
void this.settingsAPI.get('api').then((api) => {
diff --git a/src/ui/settings/SettingsTab.ts b/src/ui/settings/SettingsTab.ts
index 064a670..3f3f2c3 100644
--- a/src/ui/settings/SettingsTab.ts
+++ b/src/ui/settings/SettingsTab.ts
@@ -152,7 +152,7 @@ export class SettingsTab extends PluginSettingTab {
dropdown
.addOption('auto', 'Auto (intelligent selection)')
- .addOption('whisper', 'OpenAI Whisper')
+ .addOption('whisper', 'OpenAI whisper')
.addOption('deepgram', 'Deepgram')
.setValue(this.plugin.settings.provider || 'auto')
.onChange(async (value) => {
@@ -366,7 +366,7 @@ export class SettingsTab extends PluginSettingTab {
private renderWhisperApiKey(containerEl: HTMLElement): void {
new Setting(containerEl)
.setName('OpenAI API key')
- .setDesc('Enter your OpenAI API key for Whisper transcription')
+ .setDesc('Enter your OpenAI API key for whisper transcription')
.addText((text) => {
text.setPlaceholder('Sk-...')
.setValue(this.maskApiKey(this.plugin.settings.apiKey || ''))
@@ -439,7 +439,7 @@ export class SettingsTab extends PluginSettingTab {
const descriptions = {
auto: '🤖 Intelligent selection between providers based on your configured strategy. Automatically chooses the best provider for each request.',
whisper:
- '🎯 OpenAI Whisper - high-quality transcription with support for multiple languages. Best for general-purpose transcription.',
+ '🎯 OpenAI whisper - high-quality transcription with support for multiple languages. Best for general-purpose transcription.',
deepgram:
'⚡ Deepgram - fast, accurate transcription with advanced AI features. Best for real-time processing and speaker diarization.',
};
@@ -524,7 +524,7 @@ export class SettingsTab extends PluginSettingTab {
if (provider === 'whisper' || provider === 'auto') {
new Setting(containerEl)
.setName('Whisper model')
- .setDesc('Select the Whisper model to use')
+ .setDesc('Select the whisper model to use')
.addDropdown((dropdown) =>
dropdown
.addOption('whisper-1', 'Whisper v1 (default)')
diff --git a/src/ui/settings/SimpleSettingsTab.ts b/src/ui/settings/SimpleSettingsTab.ts
index 03c4205..51ba62a 100644
--- a/src/ui/settings/SimpleSettingsTab.ts
+++ b/src/ui/settings/SimpleSettingsTab.ts
@@ -39,7 +39,7 @@ export class SimpleSettingsTab extends PluginSettingTab {
this.debug('Adding options to dropdown...');
dropdown
.addOption('auto', 'Auto (intelligent selection)')
- .addOption('whisper', 'OpenAI Whisper')
+ .addOption('whisper', 'OpenAI whisper')
.addOption('deepgram', 'Deepgram')
.setValue(this.plugin.settings.provider || 'auto')
.onChange(async (value) => {
@@ -62,7 +62,7 @@ export class SimpleSettingsTab extends PluginSettingTab {
if (provider === 'auto' || provider === 'whisper') {
new Setting(containerEl)
.setName('OpenAI API key')
- .setDesc('Enter your OpenAI API key for Whisper')
+ .setDesc('Enter your OpenAI API key for whisper')
.addText((text) =>
text
.setPlaceholder('Sk-...')
diff --git a/src/ui/settings/components/ProviderSettings.ts b/src/ui/settings/components/ProviderSettings.ts
index 1999809..124b014 100644
--- a/src/ui/settings/components/ProviderSettings.ts
+++ b/src/ui/settings/components/ProviderSettings.ts
@@ -81,7 +81,7 @@ export class ProviderSettings {
.addDropdown((dropdown) => {
dropdown
.addOption('auto', '🤖 Automatic (recommended)')
- .addOption('whisper', '🎯 OpenAI Whisper')
+ .addOption('whisper', '🎯 OpenAI whisper')
.addOption('deepgram', '🚀 Deepgram')
.setValue(this.currentProvider)
.onChange(async (value) => {
@@ -306,7 +306,7 @@ export class ProviderSettings {
private renderABTestDetails(containerEl: HTMLElement): void {
new Setting(containerEl)
.setName('Traffic split')
- .setDesc('Percentage of requests to send to Whisper vs Deepgram')
+ .setDesc('Percentage of requests to send to whisper vs Deepgram')
.addSlider((slider) => {
const currentSplit = this.plugin.settings.abTestSplit || 50;
@@ -574,7 +574,7 @@ export class ProviderSettings {
private showProviderInfo(provider: string): void {
const info: Record = {
auto: '🤖 System will automatically select the best provider based on performance and availability',
- whisper: '🎯 OpenAI Whisper - high accuracy, supports 50+ languages',
+ whisper: '🎯 OpenAI whisper - high accuracy, supports 50+ languages',
deepgram: '🚀 Deepgram - fast real-time transcription with excellent accuracy',
};
@@ -601,7 +601,7 @@ export class ProviderSettings {
*/
private getProviderDisplayName(provider: TranscriptionProvider): string {
const names: Record = {
- whisper: 'OpenAI Whisper',
+ whisper: 'OpenAI whisper',
deepgram: 'Deepgram',
};
return names[provider] || provider;
diff --git a/src/ui/settings/provider/ProviderSettingsContainer.ts b/src/ui/settings/provider/ProviderSettingsContainer.ts
index bf64c88..f4e20e0 100644
--- a/src/ui/settings/provider/ProviderSettingsContainer.ts
+++ b/src/ui/settings/provider/ProviderSettingsContainer.ts
@@ -195,7 +195,7 @@ export class ProviderSettingsContainer {
.addDropdown((dropdown) => {
dropdown
.addOption('auto', '🤖 Automatic (recommended)')
- .addOption('whisper', '🎯 OpenAI Whisper only')
+ .addOption('whisper', '🎯 OpenAI whisper only')
.addOption('deepgram', '🚀 Deepgram only')
.setValue(this.currentProvider)
.onChange(async (value) => {
@@ -358,7 +358,7 @@ export class ProviderSettingsContainer {
*/
private getProviderDisplayName(provider: string): string {
const names: Record = {
- whisper: 'OpenAI Whisper',
+ whisper: 'OpenAI whisper',
deepgram: 'Deepgram',
auto: 'Automatic',
};
@@ -400,7 +400,7 @@ export class ProviderSettingsContainer {
private showProviderNotice(provider: string): void {
const messages: Record = {
auto: '🤖 System will automatically select the best provider',
- whisper: '🎯 Using OpenAI Whisper exclusively',
+ whisper: '🎯 Using OpenAI whisper exclusively',
deepgram: '🚀 Using Deepgram exclusively',
};
new Notice(messages[provider] || 'Provider updated');
@@ -427,7 +427,7 @@ export class ProviderSettingsContainer {
],
},
{
- title: '🎯 OpenAI Whisper',
+ title: '🎯 OpenAI whisper',
bullets: [
'Excellent accuracy for 50+ languages',
'Best for long-form content',
@@ -438,7 +438,7 @@ export class ProviderSettingsContainer {
title: '🚀 Deepgram',
bullets: [
'Ultra-fast real-time transcription',
- 'Lower latency than Whisper',
+ 'Lower latency than whisper',
'Cost-effective for high volume',
],
},
@@ -776,7 +776,7 @@ class ProviderDetailsModal extends Modal {
}
private getProviderName(): string {
- return this.provider === 'whisper' ? 'OpenAI Whisper' : 'Deepgram';
+ return this.provider === 'whisper' ? 'OpenAI whisper' : 'Deepgram';
}
private renderStatus(containerEl: HTMLElement): void {
diff --git a/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts b/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts
index 3137e80..a5a005b 100644
--- a/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts
+++ b/src/ui/settings/provider/ProviderSettingsContainerRefactored.ts
@@ -287,7 +287,7 @@ export class ProviderSettingsContainerRefactored extends BaseSettingsComponent {
).addDropdown((dropdown) => {
dropdown
.addOption('auto', '🤖 Automatic')
- .addOption('whisper', '🎯 OpenAI Whisper')
+ .addOption('whisper', '🎯 OpenAI whisper')
.addOption('deepgram', '🚀 Deepgram')
.setValue(this.state.get().currentProvider)
.onChange((value) => {
@@ -567,7 +567,7 @@ export class ProviderSettingsContainerRefactored extends BaseSettingsComponent {
*/
private getProviderDisplayName(provider: string): string {
const names: Record = {
- whisper: 'OpenAI Whisper',
+ whisper: 'OpenAI whisper',
deepgram: 'Deepgram',
auto: '자동',
};
@@ -828,7 +828,7 @@ class ProviderDetailsModal extends Modal {
}
private getProviderName(): string {
- return this.provider === 'whisper' ? 'OpenAI Whisper' : 'Deepgram';
+ return this.provider === 'whisper' ? 'OpenAI whisper' : 'Deepgram';
}
private createStatusContent(): HTMLElement {
diff --git a/src/ui/settings/provider/components/APIKeyManager.ts b/src/ui/settings/provider/components/APIKeyManager.ts
index b3e4610..a54fa43 100644
--- a/src/ui/settings/provider/components/APIKeyManager.ts
+++ b/src/ui/settings/provider/components/APIKeyManager.ts
@@ -81,7 +81,7 @@ export class APIKeyManager {
inputsEl,
'whisper',
'OpenAI API key',
- 'Your OpenAI API key for Whisper',
+ 'Your OpenAI API key for whisper',
'sk-...',
/^sk-[A-Za-z0-9]{48,}$/
);
@@ -684,7 +684,7 @@ export class APIKeyManager {
* Provider 이름 가져오기
*/
private getProviderName(provider: TranscriptionProvider): string {
- return provider === 'whisper' ? 'OpenAI Whisper' : 'Deepgram';
+ return provider === 'whisper' ? 'OpenAI whisper' : 'Deepgram';
}
/**
@@ -806,7 +806,7 @@ export class APIKeyManager {
const whisperItem = envList.createEl('li');
whisperItem.createEl('code', { text: 'OPENAI_API_KEY' });
- whisperItem.appendText(' for Whisper');
+ whisperItem.appendText(' for whisper');
const deepgramItem = envList.createEl('li');
deepgramItem.createEl('code', { text: 'DEEPGRAM_API_KEY' });
diff --git a/src/ui/settings/provider/components/APIKeyManagerRefactored.ts b/src/ui/settings/provider/components/APIKeyManagerRefactored.ts
index 9e0a726..87e783d 100644
--- a/src/ui/settings/provider/components/APIKeyManagerRefactored.ts
+++ b/src/ui/settings/provider/components/APIKeyManagerRefactored.ts
@@ -66,7 +66,7 @@ export class APIKeyManagerRefactored extends BaseSettingsComponent {
[
'whisper',
{
- name: 'OpenAI Whisper',
+ name: 'OpenAI whisper',
placeholder: 'sk-...',
pattern: /^sk-[A-Za-z0-9]{48,}$/,
validateEndpoint: 'https://api.openai.com/v1/models',