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

### Required

[[1](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.js)]:Please remove the `main.js` file from the repo and add it to your .gitignore. Compiled release files shouldn't get mixed with source code in your commits and should go to the releases files instead.

[[1](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/utils/form-utils.ts#L82)][[2](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/utils/form-utils.ts#L92)][[3](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/utils/form-utils.ts#L99)][[4](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/utils/form-utils.ts#L125)][[5](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2170)][[6](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2215)][[7](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2387)][[8](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2388)][[9](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2389)][[10](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2390)][[11](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2391)][[12](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2392)][[13](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2393)][[14](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2402)][[15](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2403)][[16](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2410)][[17](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2411)][[18](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2414)][[19](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2415)][[20](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2418)][[21](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2419)][[22](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2422)][[23](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2423)][[24](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2425)][[25](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2426)][[26](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2427)][[27](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2440)][[28](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2441)][[29](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2442)][[30](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2557)] and more :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/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4351)][[2](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4541)][[3](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4549)]: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/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4467)][[2](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4468)][[3](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4469)][[4](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4744)][[5](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4745)][[6](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L5176)][[7](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L5177)]: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/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/proxy/anthropic-proxy.ts#L71)][[2](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/proxy/anthropic-proxy.ts#L76)][[3](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/proxy/anthropic-proxy.ts#L407)]:This is only available on desktop, use the [Platform](https://docs.obsidian.md/Reference/TypeScript+API/Platform) interface from the Obsidian API instead.

[[1](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L40)][[2](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L64)][[3](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L136)][[4](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L151)][[5](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L159)][[6](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L203)][[7](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L365)][[8](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L386)][[9](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L423)][[10](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L496)][[11](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L561)][[12](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/utils/logger.ts#L118)][[13](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/utils/logger.ts#L121)][[14](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L573)][[15](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L878)][[16](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L885)][[17](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L961)][[18](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L985)][[19](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4065)][[20](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4076)][[21](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4092)][[22](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4100)][[23](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4150)][[24](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4210)][[25](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4246)][[26](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4259)][[27](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4324)][[28](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4430)][[29](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4431)][[30](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4482)] 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/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/youtube-transcript.ts#L55)][[2](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/utils/fetch-shim.ts#L151)][[3](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/llm/langchain-client.ts#L51)][[4](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/llm/langchain-client.ts#L52)][[5](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/llm/langchain-client.ts#L65)][[6](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/llm/langchain-client.ts#L179)][[7](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/src/llm/langchain-client.ts#L193)][[8](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L1683)][[9](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L1729)][[10](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L1779)][[11](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2031)][[12](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2107)][[13](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2112)][[14](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2556)][[15](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2821)][[16](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2965)][[17](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4447)][[18](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4608)][[19](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L4724)][[20](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L5153)]:Casting to `any` should be avoided as much as possible.

[[1](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L1178-L1180)][[2](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L1266-L1268)][[3](https://github.com/rmccorkl/TubeSage/blob/467e6802bfe8e02f347ebc2a7f2a535ea1c12f68/main.ts#L2590-L2592)]:Obsidian provides the [`requestUrl`](https://docs.obsidian.md/Reference/TypeScript+API/requestUrl) method, it will make sure that network requests work on every plattform.



---



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.