### Required

[\[1\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ai-services/base-service.ts#L48-L48)
Unexpected use of 'fetch'. Use the built-in `requestUrl` function instead of `fetch` for network requests in Obsidian.

[\[1\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ai-services/service-factory.ts#L31-L31)
Invalid type "never" of template literal expression.

[\[1\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/main.ts#L42-L42)[\[2\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/main.ts#L51-L51)[\[3\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/main.ts#L60-L60)[\[4\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/main.ts#L163-L163)[\[5\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/main.ts#L172-L172)[\[6\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/main.ts#L181-L181)[\[7\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/main.ts#L190-L190)[\[8\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L19-L19)[\[9\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L41-L41)[\[10\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L45-L45)[\[11\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L46-L46)[\[12\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L47-L47)[\[13\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L61-L61)[\[14\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L69-L69)[\[15\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L73-L73)[\[16\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L84-L84)[\[17\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L92-L92)[\[18\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L96-L96)[\[19\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L107-L107)[\[20\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L115-L115)[\[21\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L119-L119)[\[22\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L130-L130)[\[23\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L140-L140)[\[24\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L198-L198)[\[25\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L206-L206)[\[26\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L232-L232)[\[27\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L258-L258)[\[28\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L284-L284)[\[29\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L312-L312)[\[30\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L315-L315)
Use sentence case for UI text.

[\[1\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L19-L19)[\[2\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L61-L61)[\[3\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L140-L140)[\[4\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L198-L198)[\[5\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/ui/settings-tab.ts#L312-L312)
Use `new Setting(containerEl).setName(...).setHeading()` instead of creating HTML heading elements directly.

[\[1\]](https://github.com/jayarerita/obsidian-ai-text-formatter/blob/bc087e2154efee7b5ed7c2f7598f7a9af5f7a42c/utils/rate-limiter.ts#L29-L29)
Async method 'checkRateLimit' has no 'await' expression.



---

### Optional

