Thank you for your submission, an automated scan of your plugin code's revealed the following issues:

### Required

[[1](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/settings/SettingsTab.ts#L6-L73)][[2](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/main.ts#L213-L420)]:Remember to rename the sample classes to something that makes sense to your plugin. If there are any errors, Obsidian will spit out this class name, so this will be important for users to debug if they need to.

[[1](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/settings/SettingsTab.ts#L32)][[2](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/settings/SettingsTab.ts#L46)][[3](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/settings/SettingsTab.ts#L63)][[4](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/settings/SettingsTab.ts#L70)][[5](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L405)][[6](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L439)][[7](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L444)][[8](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L449)][[9](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/LucideIcon.tsx#L29)]:Using `innerHTML`, `outerHTML` or similar API's is a security risk. Instead, use the DOM API or the Obsidian helper functions: <https://docs.obsidian.md/Plugins/User+interface/HTML+elements>

[[1](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/tools/utils/getDailyNotesSettings.ts#L14)]:Obsidian's configuration directory isn't necessarily `.obsidian`, it can be configured by the user. You can access the configured value from `Vault#configDir`

[[1](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L42)][[2](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L43)][[3](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L44)][[4](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L45)][[5](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L46)][[6](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L47)][[7](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L48)][[8](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L49)][[9](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L52)][[10](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L469)][[11](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L470)][[12](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L495)][[13](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L496)][[14](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L522)][[15](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L523)][[16](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L562)][[17](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L563)][[18](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L617)][[19](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L618)][[20](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L123)][[21](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L124)][[22](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L129)][[23](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L130)][[24](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L150)][[25](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L151)][[26](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L321)][[27](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L351)][[28](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L352)]:You should avoid assigning styles via JavaScript or in HTML and instead move all these styles into CSS so that they are more easily adaptable by themes and snippets.


[[1](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/AICoachApp.tsx#L464)]:You should not cast this, instead use a `instanceof` check to make sure that it's actually a file/folder.

[[1](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/i18n.ts#L9)][[2](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/i18n.ts#L20)][[3](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/i18n.ts#L41)][[4](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L41)][[5](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L44)][[6](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L374)][[7](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L387)][[8](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L392)][[9](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L402)][[10](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L405)][[11](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L422)][[12](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L432)][[13](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L438)][[14](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L439)][[15](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L489)][[16](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L497)][[17](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L513)][[18](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L529)][[19](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L536)][[20](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L540)][[21](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/obsidian-tools.ts#L107)][[22](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/obsidian-tools.ts#L127)][[23](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/obsidian-tools.ts#L159)][[24](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/obsidian-tools.ts#L165)][[25](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/defaults/ln-mode-defaults.ts#L86)][[26](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/main.ts#L218)][[27](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/main.ts#L267)][[28](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/main.ts#L341)][[29](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/main.ts#L358)][[30](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/main.ts#L362)] and more :You should consider limiting the number of `console.log`s in your code, to not pollute the dev console.



---

### Optional

[[1](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context-collector.ts#L522)][[2](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/MessageDisplay.tsx#L57)][[3](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/MessageDisplay.tsx#L223)][[4](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/components/UnifiedInputArea.tsx#L235)][[5](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/context/AIAgentContext.tsx#L146)][[6](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/tools/show-todos.ts#L251)][[7](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/tools/show-todos.ts#L284)][[8](https://github.com/cielecki/life-navigator/blob/c43a0dd7131c099e9daa510002d3443ef77189a8/src/tools/show-todos.ts#L317)]:Casting to `any` should be avoided as much as possible.



---



Do <b>NOT</b> open a new PR for re-validation.
Once you have pushed all of the required changes to your repo, the bot will update the labels on this PR 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.