### Required

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L30-L30)[\[2\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L157-L157)[\[3\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L202-L202)[\[4\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L212-L212)[\[5\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L230-L230)[\[6\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L36-L36)[\[7\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L38-L38)[\[8\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L80-L80)[\[9\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L83-L83)[\[10\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L98-L98)[\[11\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L101-L101)[\[12\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L200-L200)[\[13\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L214-L214)[\[14\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L216-L216)[\[15\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L230-L230)[\[16\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L233-L233)[\[17\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L264-L264)[\[18\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L291-L291)
Use sentence case for UI text.

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L32-L32)[\[2\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L49-L49)[\[3\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L122-L122)[\[4\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L134-L134)[\[5\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L215-L215)[\[6\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L345-L345)
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/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L46-L46)
The command ID should not include the plugin ID.

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L209-L209)
Async method 'renderLifeGrid' has no 'await' expression.

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/main.ts#L382-L382)
Async method 'onClose' has no 'await' expression.

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L174-L174)
Use `new Setting(containerEl).setName(...).setHeading()` instead of creating HTML heading elements directly.

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/utils/renderUtils.ts#L1062-L1062)[\[2\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/utils/renderUtils.ts#L1064-L1064)[\[3\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/utils/renderUtils.ts#L1432-L1432)[\[4\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/utils/renderUtils.ts#L1434-L1434)
Promise returned in function argument where a void return was expected.



---

### Optional

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/LifeGridSettingTab.ts#L348-L348)
'e' is defined but never used.

[\[1\]](https://github.com/mrdonado/obsidian-life-grid/blob/8bbb02d9a25c5f9d97a2c477671c4fcc42de62d3/src/utils/dailyNotesUtils.ts#L27-L27)
'error' is defined but never used.

