### Required

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L21-L21)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L50-L50)[\[3\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L54-L54)
Unexpected console statement. Only these console methods are allowed: warn, error, debug.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L46-L46)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L69-L69)[\[3\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L83-L83)[\[4\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L92-L92)[\[5\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L106-L106)[\[6\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L116-L116)[\[7\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L142-L142)[\[8\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L162-L162)[\[9\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L209-L209)[\[10\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/GroqFlashcardService.ts#L40-L40)[\[11\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/PreGenerationModal.ts#L27-L27)[\[12\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/PreGenerationModal.ts#L35-L35)[\[13\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/PreGenerationModal.ts#L36-L36)[\[14\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/PreGenerationModal.ts#L40-L40)[\[15\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L34-L34)[\[16\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L43-L43)[\[17\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L48-L48)[\[18\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L51-L51)[\[19\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L60-L60)[\[20\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L98-L98)[\[21\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L363-L363)[\[22\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L19-L19)[\[23\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L22-L22)[\[24\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L25-L25)[\[25\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L26-L26)[\[26\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L40-L40)[\[27\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L58-L58)[\[28\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L64-L64)[\[29\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L68-L68)[\[30\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L87-L87)[\[31\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L90-L90)[\[32\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L104-L104)[\[33\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L122-L122)[\[34\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L128-L128)[\[35\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L132-L132)[\[36\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L141-L141)[\[37\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L165-L165)[\[38\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L168-L168)[\[39\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L185-L185)[\[40\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L202-L202)[\[41\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L214-L214)[\[42\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L231-L231)[\[43\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L235-L235)[\[44\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L248-L248)[\[45\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L253-L253)[\[46\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L257-L257)[\[47\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L272-L272)[\[48\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L278-L278)[\[49\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L290-L290)[\[50\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L298-L298)[\[51\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L309-L309)[\[52\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L313-L313)[\[53\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L322-L322)[\[54\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L328-L328)
Use sentence case for UI text.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L47-L47)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L73-L73)[\[3\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L85-L85)[\[4\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L147-L147)[\[5\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L149-L149)[\[6\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L166-L166)[\[7\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/AnkiSyncService.ts#L349-L349)
Promises must be awaited, end with a call to .catch, end with a call to .then with a rejection handler or be explicitly marked as ignored with the `void` operator.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L206-L206)
Async method 'generateFlashcards' has no 'await' expression.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L217-L219)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L260-L262)
Promise returned in function argument where a void return was expected.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/AnkiSyncService.ts#L213-L213)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/GroqFlashcardService.ts#L212-L212)[\[3\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/GroqFlashcardService.ts#L324-L324)
Unexpected use of 'fetch'. Use the built-in `requestUrl` function instead of `fetch` for network requests in Obsidian.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/AnkiSyncService.ts#L321-L321)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/AnkiSyncService.ts#L332-L332)
Unexpected use of 'localStorage'. Prefer `App#saveLocalStorage` / `App#loadLocalStorage` functions to write / read localStorage data that's unique to a vault.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/GroqFlashcardService.ts#L306-L306)
Unexpected any. Specify a different type.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L308-L308)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L316-L316)[\[3\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L318-L318)
Avoid setting styles directly via `element.style.display`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L19-L19)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L22-L22)[\[3\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L87-L87)[\[4\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L165-L165)[\[5\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L248-L248)[\[6\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L290-L290)
Use `new Setting(containerEl).setName(...).setHeading()` instead of creating HTML heading elements directly.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L36-L36)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L74-L74)[\[3\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L100-L100)[\[4\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L244-L244)
Avoid setting styles directly via `element.style.width`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L281-L281)
Unexpected confirm.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L293-L293)
Avoid setting styles directly via `element.style.padding`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L294-L294)
Avoid setting styles directly via `element.style.background`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L295-L295)
Avoid setting styles directly via `element.style.borderRadius`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L302-L302)
Avoid setting styles directly via `element.style.marginLeft`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L317-L317)
Avoid setting styles directly via `element.style.marginTop`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L319-L319)
Avoid setting styles directly via `element.style.gap`. Use CSS classes for better theming and maintainability.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L325-L325)[\[2\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/SettingsTab.ts#L331-L331)
Avoid setting styles directly via `element.style.textDecoration`. Use CSS classes for better theming and maintainability.



---

### Optional

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L300-L300)
'ankiSyncCount' is assigned a value but never used.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/main.ts#L301-L301)
'ankiQueuedCount' is assigned a value but never used.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/services/GroqFlashcardService.ts#L2-L2)
'GroqResponse' is defined but never used.

[\[1\]](https://github.com/aerkn1/ObsiCard/blob/9dec2bdb4fa04b8f3e3c94c9342df159c7e63714/src/ui/ReviewModal.ts#L59-L59)
'deckNameLabel' is assigned a value but never used.

