### Required

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L148-L148)[\[2\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/renderer.ts#L45-L45)[\[3\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/renderer.ts#L50-L50)[\[4\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/renderer.ts#L219-L219)[\[5\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/shader-compiler.ts#L71-L71)[\[6\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/shader-compiler.ts#L72-L72)[\[7\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/shader-compiler.ts#L84-L84)[\[8\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/shader-compiler.ts#L85-L85)[\[9\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L199-L199)[\[10\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L525-L525)[\[11\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L526-L526)
This assertion is unnecessary since it does not change the type of the expression.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L377-L377)[\[2\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L392-L392)[\[3\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L705-L714)[\[4\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/texture-manager.ts#L15-L68)[\[5\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/ui/controls.ts#L54-L58)
Promise returned in function argument where a void return was expected.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L500-L500)[\[2\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L531-L531)[\[3\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L47-L47)[\[4\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L270-L270)[\[5\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L323-L323)[\[6\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L376-L376)[\[7\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L429-L429)[\[8\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L471-L471)[\[9\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L490-L490)[\[10\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L492-L492)[\[11\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/ui/file-suggest-modal.ts#L70-L70)
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/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L648-L648)
Unexpected any. Specify a different type.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/shader-compiler.ts#L78-L78)[\[2\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/shader-compiler.ts#L102-L102)[\[3\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/shader-compiler.ts#L112-L112)[\[4\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/ui/error-display.ts#L47-L47)
Unexpected control character(s) in regular expression: \x00, \x08, \x0b, \x0c, \x0e, \x1f.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/texture-manager.ts#L15-L15)
Promise executor functions should not be async.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/texture-manager.ts#L15-L15)
Async arrow function has no 'await' expression.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L67-L67)
Avoid casting to 'TFile'. Use an 'instanceof TFile' check to safely narrow the type.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L171-L171)[\[2\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L174-L174)[\[3\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L238-L238)[\[4\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L407-L407)
Use `new Setting(containerEl).setName(...).setHeading()` instead of creating HTML heading elements directly.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L171-L171)[\[2\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L174-L174)[\[3\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L178-L178)[\[4\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L215-L215)[\[5\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L216-L216)[\[6\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L227-L227)[\[7\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L228-L228)[\[8\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L250-L250)[\[9\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L255-L255)[\[10\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L303-L303)[\[11\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L304-L304)[\[12\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L308-L308)[\[13\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L356-L356)[\[14\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L357-L357)[\[15\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L361-L361)[\[16\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L407-L407)[\[17\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L412-L412)[\[18\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L455-L455)[\[19\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/ui/error-display.ts#L19-L19)
Use sentence case for UI text.



---

### Optional

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L1-L1)
'App' is defined but never used.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L1-L1)
'Notice' is defined but never used.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L58-L58)
'e' is defined but never used.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L99-L99)[\[2\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L114-L114)[\[3\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/main.ts#L753-L753)[\[4\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/renderer.ts#L337-L337)[\[5\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/renderer.ts#L367-L367)[\[6\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/core/texture-manager.ts#L30-L30)[\[7\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/ui/file-suggest-modal.ts#L120-L120)[\[8\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/template-manager.ts#L48-L48)[\[9\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/template-manager.ts#L74-L74)[\[10\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/template-manager.ts#L87-L87)[\[11\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/thumbnail-manager.ts#L84-L84)[\[12\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/thumbnail-manager.ts#L115-L115)[\[13\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/thumbnail-manager.ts#L153-L153)
'error' is defined but never used.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/settings/settings-tab.ts#L448-L448)
'keyComponent' is assigned a value but never used.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/thumbnail-manager.ts#L1-L1)
'TFile' is defined but never used.

[\[1\]](https://github.com/iY0Yi/obsidian_glslviewer/blob/cb12a70aa09bbfe8fa62927494d5d9ac3447c35f/src/utils/thumbnail-manager.ts#L1-L1)
'TFolder' is defined but never used.

