{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T15:18:13.992668Z","repo":{"ref":{"host":"github.com","owner":"ChatGPTNextWeb","name":"NextChat"},"default_branch":"main","clone_url":"https://github.com/ChatGPTNextWeb/NextChat.git","html_url":"https://github.com/ChatGPTNextWeb/NextChat","description":"✨ Zero-config AI chat assistant. No API key needed — sign up and instantly chat with GPT-5, Claude 4, Gemini 2.5, DeepSeek & 100+ top models. Pay-as-you-go saves you more. Available on Web, iOS, macOS, Android, Linux, Windows.","stars":88960,"forks":58527,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":23969,"primary_language":"TypeScript","license_spdx":"MIT","created_at":"2023-03-10T18:27:54Z","pushed_at":"2026-10-20T10:19:31Z","security_policy_url":null,"distribution":{"owner_created_at":"2023-12-08T12:31:25Z","owner_type":"Organization","release_assets":[{"name":"latest.json","size":2489,"download_count":249434,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/latest.json"},{"name":"next-chat_2.15.8_amd64.AppImage","size":91440320,"download_count":5488,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/next-chat_2.15.8_amd64.AppImage"},{"name":"next-chat_2.15.8_amd64.AppImage.tar.gz","size":90522355,"download_count":1906,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/next-chat_2.15.8_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.8_amd64.AppImage.tar.gz.sig","size":432,"download_count":239,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/next-chat_2.15.8_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.8_amd64.deb","size":8279310,"download_count":3799,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/next-chat_2.15.8_amd64.deb"},{"name":"NextChat_2.15.8_universal.dmg","size":14161513,"download_count":10118,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_universal.dmg"},{"name":"NextChat_2.15.8_x64-setup.exe","size":6391083,"download_count":39954,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_x64-setup.exe"},{"name":"NextChat_2.15.8_x64-setup.nsis.zip","size":6391239,"download_count":2348,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_x64-setup.nsis.zip"},{"name":"NextChat_2.15.8_x64-setup.nsis.zip.sig","size":428,"download_count":209,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.8_x64_en-US.msi","size":6893568,"download_count":4950,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_x64_en-US.msi"},{"name":"NextChat_2.15.8_x64_en-US.msi.zip","size":6893724,"download_count":4554,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_x64_en-US.msi.zip"},{"name":"NextChat_2.15.8_x64_en-US.msi.zip.sig","size":424,"download_count":105,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13801748,"download_count":2295,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":133,"release_tag":"v2.15.8","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_universal.app.tar.gz.sig"},{"name":"latest.json","size":2489,"download_count":7931,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/latest.json"},{"name":"next-chat_2.15.7_amd64.AppImage","size":91423936,"download_count":255,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/next-chat_2.15.7_amd64.AppImage"},{"name":"next-chat_2.15.7_amd64.AppImage.tar.gz","size":90509408,"download_count":104,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/next-chat_2.15.7_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.7_amd64.AppImage.tar.gz.sig","size":432,"download_count":35,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/next-chat_2.15.7_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.7_amd64.deb","size":8270492,"download_count":161,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/next-chat_2.15.7_amd64.deb"},{"name":"NextChat_2.15.7_universal.dmg","size":14129668,"download_count":997,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_2.15.7_universal.dmg"},{"name":"NextChat_2.15.7_x64-setup.exe","size":6379477,"download_count":3315,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_2.15.7_x64-setup.exe"},{"name":"NextChat_2.15.7_x64-setup.nsis.zip","size":6379633,"download_count":157,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_2.15.7_x64-setup.nsis.zip"},{"name":"NextChat_2.15.7_x64-setup.nsis.zip.sig","size":428,"download_count":25,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_2.15.7_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.7_x64_en-US.msi","size":6881280,"download_count":1401,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_2.15.7_x64_en-US.msi"},{"name":"NextChat_2.15.7_x64_en-US.msi.zip","size":6881436,"download_count":1093,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_2.15.7_x64_en-US.msi.zip"},{"name":"NextChat_2.15.7_x64_en-US.msi.zip.sig","size":424,"download_count":19,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_2.15.7_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13772352,"download_count":475,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":25,"release_tag":"v2.15.7","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.7/NextChat_universal.app.tar.gz.sig"},{"name":"latest.json","size":2489,"download_count":13581,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/latest.json"},{"name":"next-chat_2.15.6_amd64.AppImage","size":91419840,"download_count":358,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/next-chat_2.15.6_amd64.AppImage"},{"name":"next-chat_2.15.6_amd64.AppImage.tar.gz","size":90504839,"download_count":127,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/next-chat_2.15.6_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.6_amd64.AppImage.tar.gz.sig","size":432,"download_count":64,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/next-chat_2.15.6_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.6_amd64.deb","size":8262970,"download_count":179,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/next-chat_2.15.6_amd64.deb"},{"name":"NextChat_2.15.6_universal.dmg","size":14095749,"download_count":864,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_2.15.6_universal.dmg"},{"name":"NextChat_2.15.6_x64-setup.exe","size":6385431,"download_count":3178,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_2.15.6_x64-setup.exe"},{"name":"NextChat_2.15.6_x64-setup.nsis.zip","size":6385587,"download_count":147,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_2.15.6_x64-setup.nsis.zip"},{"name":"NextChat_2.15.6_x64-setup.nsis.zip.sig","size":428,"download_count":52,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_2.15.6_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.6_x64_en-US.msi","size":6889472,"download_count":400,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_2.15.6_x64_en-US.msi"},{"name":"NextChat_2.15.6_x64_en-US.msi.zip","size":6889628,"download_count":949,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_2.15.6_x64_en-US.msi.zip"},{"name":"NextChat_2.15.6_x64_en-US.msi.zip.sig","size":424,"download_count":46,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_2.15.6_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13760686,"download_count":401,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":49,"release_tag":"v2.15.6","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.6/NextChat_universal.app.tar.gz.sig"},{"name":"latest.json","size":3111,"download_count":6622,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/latest.json"},{"name":"next-chat_2.15.5_aarch64.AppImage","size":212349312,"download_count":277,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_aarch64.AppImage"},{"name":"next-chat_2.15.5_aarch64.AppImage.tar.gz","size":210860722,"download_count":111,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_aarch64.AppImage.tar.gz"},{"name":"next-chat_2.15.5_aarch64.AppImage.tar.gz.sig","size":436,"download_count":31,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_aarch64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.5_amd64.AppImage","size":88708288,"download_count":175,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_amd64.AppImage"},{"name":"next-chat_2.15.5_amd64.AppImage.tar.gz","size":87782971,"download_count":114,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.5_amd64.AppImage.tar.gz.sig","size":432,"download_count":21,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.5_amd64.deb","size":8272640,"download_count":637,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_amd64.deb"},{"name":"next-chat_2.15.5_arm64.deb","size":8352314,"download_count":108,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/next-chat_2.15.5_arm64.deb"},{"name":"NextChat_2.15.5_universal.dmg","size":14069183,"download_count":781,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_2.15.5_universal.dmg"},{"name":"NextChat_2.15.5_x64-setup.exe","size":6382127,"download_count":2039,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_2.15.5_x64-setup.exe"},{"name":"NextChat_2.15.5_x64-setup.nsis.zip","size":6382283,"download_count":114,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_2.15.5_x64-setup.nsis.zip"},{"name":"NextChat_2.15.5_x64-setup.nsis.zip.sig","size":428,"download_count":19,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_2.15.5_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.5_x64_en-US.msi","size":6889472,"download_count":262,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_2.15.5_x64_en-US.msi"},{"name":"NextChat_2.15.5_x64_en-US.msi.zip","size":6889628,"download_count":88,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_2.15.5_x64_en-US.msi.zip"},{"name":"NextChat_2.15.5_x64_en-US.msi.zip.sig","size":424,"download_count":17,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_2.15.5_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13742031,"download_count":97,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":18,"release_tag":"v2.15.5","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.5/NextChat_universal.app.tar.gz.sig"},{"name":"latest.json","size":3111,"download_count":153,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/latest.json"},{"name":"next-chat_2.15.4_aarch64.AppImage","size":212353408,"download_count":230,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_aarch64.AppImage"},{"name":"next-chat_2.15.4_aarch64.AppImage.tar.gz","size":210865866,"download_count":333,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_aarch64.AppImage.tar.gz"},{"name":"next-chat_2.15.4_aarch64.AppImage.tar.gz.sig","size":436,"download_count":16,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_aarch64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.4_amd64.AppImage","size":88708288,"download_count":160,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_amd64.AppImage"},{"name":"next-chat_2.15.4_amd64.AppImage.tar.gz","size":87782275,"download_count":321,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.4_amd64.AppImage.tar.gz.sig","size":432,"download_count":17,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.4_amd64.deb","size":8272854,"download_count":403,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_amd64.deb"},{"name":"next-chat_2.15.4_arm64.deb","size":8362246,"download_count":321,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/next-chat_2.15.4_arm64.deb"},{"name":"NextChat_2.15.4_universal.dmg","size":14068579,"download_count":792,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_2.15.4_universal.dmg"},{"name":"NextChat_2.15.4_x64-setup.exe","size":6382978,"download_count":2722,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_2.15.4_x64-setup.exe"},{"name":"NextChat_2.15.4_x64-setup.nsis.zip","size":6383134,"download_count":109,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_2.15.4_x64-setup.nsis.zip"},{"name":"NextChat_2.15.4_x64-setup.nsis.zip.sig","size":428,"download_count":13,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_2.15.4_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.4_x64_en-US.msi","size":6889472,"download_count":1429,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_2.15.4_x64_en-US.msi"},{"name":"NextChat_2.15.4_x64_en-US.msi.zip","size":6889628,"download_count":119,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_2.15.4_x64_en-US.msi.zip"},{"name":"NextChat_2.15.4_x64_en-US.msi.zip.sig","size":424,"download_count":13,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_2.15.4_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13741286,"download_count":127,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":18,"release_tag":"v2.15.4","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.4/NextChat_universal.app.tar.gz.sig"},{"name":"latest.json","size":3111,"download_count":199,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/latest.json"},{"name":"next-chat_2.15.3_aarch64.AppImage","size":212263296,"download_count":228,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_aarch64.AppImage"},{"name":"next-chat_2.15.3_aarch64.AppImage.tar.gz","size":210775514,"download_count":342,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_aarch64.AppImage.tar.gz"},{"name":"next-chat_2.15.3_aarch64.AppImage.tar.gz.sig","size":436,"download_count":22,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_aarch64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.3_amd64.AppImage","size":88663232,"download_count":208,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_amd64.AppImage"},{"name":"next-chat_2.15.3_amd64.AppImage.tar.gz","size":87739765,"download_count":347,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.3_amd64.AppImage.tar.gz.sig","size":432,"download_count":17,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.3_amd64.deb","size":8236690,"download_count":392,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_amd64.deb"},{"name":"next-chat_2.15.3_arm64.deb","size":8307428,"download_count":331,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/next-chat_2.15.3_arm64.deb"},{"name":"NextChat_2.15.3_universal.dmg","size":14050635,"download_count":1155,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_2.15.3_universal.dmg"},{"name":"NextChat_2.15.3_x64-setup.exe","size":6359705,"download_count":4268,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_2.15.3_x64-setup.exe"},{"name":"NextChat_2.15.3_x64-setup.nsis.zip","size":6359861,"download_count":326,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_2.15.3_x64-setup.nsis.zip"},{"name":"NextChat_2.15.3_x64-setup.nsis.zip.sig","size":428,"download_count":16,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_2.15.3_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.3_x64_en-US.msi","size":6856704,"download_count":1824,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_2.15.3_x64_en-US.msi"},{"name":"NextChat_2.15.3_x64_en-US.msi.zip","size":6856860,"download_count":301,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_2.15.3_x64_en-US.msi.zip"},{"name":"NextChat_2.15.3_x64_en-US.msi.zip.sig","size":424,"download_count":13,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_2.15.3_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13716221,"download_count":317,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":20,"release_tag":"v2.15.3","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.3/NextChat_universal.app.tar.gz.sig"},{"name":"latest.json","size":3111,"download_count":53,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/latest.json"},{"name":"next-chat_2.15.2_aarch64.AppImage","size":212099456,"download_count":68,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_aarch64.AppImage"},{"name":"next-chat_2.15.2_aarch64.AppImage.tar.gz","size":210615560,"download_count":44,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_aarch64.AppImage.tar.gz"},{"name":"next-chat_2.15.2_aarch64.AppImage.tar.gz.sig","size":436,"download_count":15,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_aarch64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.2_amd64.AppImage","size":88511680,"download_count":228,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_amd64.AppImage"},{"name":"next-chat_2.15.2_amd64.AppImage.tar.gz","size":87588523,"download_count":137,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.2_amd64.AppImage.tar.gz.sig","size":432,"download_count":27,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.2_amd64.deb","size":8083220,"download_count":323,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_amd64.deb"},{"name":"next-chat_2.15.2_arm64.deb","size":8146184,"download_count":35,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/next-chat_2.15.2_arm64.deb"},{"name":"NextChat_2.15.2_universal.dmg","size":13729982,"download_count":1079,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_2.15.2_universal.dmg"},{"name":"NextChat_2.15.2_x64-setup.exe","size":6199971,"download_count":4159,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_2.15.2_x64-setup.exe"},{"name":"NextChat_2.15.2_x64-setup.nsis.zip","size":6200127,"download_count":120,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_2.15.2_x64-setup.nsis.zip"},{"name":"NextChat_2.15.2_x64-setup.nsis.zip.sig","size":428,"download_count":21,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_2.15.2_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.2_x64_en-US.msi","size":6696960,"download_count":1558,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_2.15.2_x64_en-US.msi"},{"name":"NextChat_2.15.2_x64_en-US.msi.zip","size":6697116,"download_count":79,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_2.15.2_x64_en-US.msi.zip"},{"name":"NextChat_2.15.2_x64_en-US.msi.zip.sig","size":424,"download_count":17,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_2.15.2_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13399418,"download_count":121,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":19,"release_tag":"v2.15.2","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.2/NextChat_universal.app.tar.gz.sig"},{"name":"latest.json","size":3111,"download_count":68,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/latest.json"},{"name":"next-chat_2.15.1_aarch64.AppImage","size":204435840,"download_count":134,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_aarch64.AppImage"},{"name":"next-chat_2.15.1_aarch64.AppImage.tar.gz","size":202946833,"download_count":64,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_aarch64.AppImage.tar.gz"},{"name":"next-chat_2.15.1_aarch64.AppImage.tar.gz.sig","size":436,"download_count":24,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_aarch64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.1_amd64.AppImage","size":88507584,"download_count":96,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_amd64.AppImage"},{"name":"next-chat_2.15.1_amd64.AppImage.tar.gz","size":87587599,"download_count":56,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_amd64.AppImage.tar.gz"},{"name":"next-chat_2.15.1_amd64.AppImage.tar.gz.sig","size":432,"download_count":17,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_amd64.AppImage.tar.gz.sig"},{"name":"next-chat_2.15.1_amd64.deb","size":8080306,"download_count":84,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_amd64.deb"},{"name":"next-chat_2.15.1_arm64.deb","size":8148568,"download_count":64,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/next-chat_2.15.1_arm64.deb"},{"name":"NextChat_2.15.1_universal.dmg","size":13725705,"download_count":323,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_2.15.1_universal.dmg"},{"name":"NextChat_2.15.1_x64-setup.exe","size":6195258,"download_count":1354,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_2.15.1_x64-setup.exe"},{"name":"NextChat_2.15.1_x64-setup.nsis.zip","size":6195414,"download_count":76,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_2.15.1_x64-setup.nsis.zip"},{"name":"NextChat_2.15.1_x64-setup.nsis.zip.sig","size":428,"download_count":16,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_2.15.1_x64-setup.nsis.zip.sig"},{"name":"NextChat_2.15.1_x64_en-US.msi","size":6696960,"download_count":1291,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_2.15.1_x64_en-US.msi"},{"name":"NextChat_2.15.1_x64_en-US.msi.zip","size":6697116,"download_count":52,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_2.15.1_x64_en-US.msi.zip"},{"name":"NextChat_2.15.1_x64_en-US.msi.zip.sig","size":424,"download_count":14,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_2.15.1_x64_en-US.msi.zip.sig"},{"name":"NextChat_universal.app.tar.gz","size":13391883,"download_count":54,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_universal.app.tar.gz"},{"name":"NextChat_universal.app.tar.gz.sig","size":408,"download_count":15,"release_tag":"v2.15.1","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.1/NextChat_universal.app.tar.gz.sig"}]}},"commit_sha":"1d3dc331512929a4b1d3e82354e72acce33b5c7a","profile":{"lines_by_language":{"TypeScript":42858,"JavaScript":356,"Rust":160,"Shell":108},"files_by_category":{"source":161,"other":114,"binary":47,"test":36,"config":31,"docs":30,"oversized":2,"generated":2},"source_lines":42009,"test_lines":1473},"pillars":{"ai_provenance":{"score":1.7,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0175,"suspected_share":0.0992,"estimated_share":0.0175,"ai_artifacts":0.0,"flagged_work_units":2.0,"flagged_releases":0.0,"style_index":1.44},"summary":"Explicit AI attribution on 2% of first-party code added; an estimated 2% including velocity signals."},"quality":{"score":62.0,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":61.9,"duplication":49.6,"lint":79.9,"testing":58.0,"docs":65.0,"type_safety":60.0,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.04, CI runs tests; 16% of function code in complex or long functions; 12% duplicated lines. Weakest area: duplication."},"security":{"score":50.9,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":93.6,"sast":91.9,"dependencies":0.0,"ci_actions":0.1,"posture":40.0,"scorecard":null},"summary":"Security posture is weak: 260 known vulnerabilities in 82 dependencies; 6 high-severity SAST findings; 36 high-severity workflow issues. Weakest area: dependencies."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":73.0,"checked":73.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":2106.0,"attributed_commits":38.0,"attributed_commit_share":0.018043684710351376,"effective_loc":71967.0,"attributed_loc":1256.0,"attributed_loc_share":0.01745244348103992,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 38 attributed commits, 1,256 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f6af97404f9a9b5ff0fc82f607cde8e26d7a0347","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/f6af97404f9a9b5ff0fc82f607cde8e26d7a0347","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"dcc781c93ad0e47efbf23736781c186bab83d963","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/dcc781c93ad0e47efbf23736781c186bab83d963","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f3a9213835f7bf546078dc4b1a973b4afe1bcf69","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/f3a9213835f7bf546078dc4b1a973b4afe1bcf69","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"706a18b95b714ab29b2a4842d3b9ff4f887935d5","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/706a18b95b714ab29b2a4842d3b9ff4f887935d5","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"79aeddd679448092179a33a4bf1c004b60567bd4","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/79aeddd679448092179a33a4bf1c004b60567bd4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"22c2e62a3ef52a918378caa1f4e9f9b7ee375729","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/22c2e62a3ef52a918378caa1f4e9f9b7ee375729","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"e42b74afc1eddb1385117a96daaef34fc93e895d","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/e42b74afc1eddb1385117a96daaef34fc93e895d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"67f9023e2ca9e0a3ccafa20ea9c0a89231575791","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/67f9023e2ca9e0a3ccafa20ea9c0a89231575791","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"f76f1446e0161fc9efc854ccd17972147bbb1361","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/f76f1446e0161fc9efc854ccd17972147bbb1361","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"f4c706a9dbe6e80feee7cda547263fa896b1f537","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/f4c706a9dbe6e80feee7cda547263fa896b1f537","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"aa2f07809f71eb6624180ed07454fd9c4f92e445","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/aa2f07809f71eb6624180ed07454fd9c4f92e445","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"2ecd6e67275e1dc6fdf00a86e59ee573ed7e901f","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/2ecd6e67275e1dc6fdf00a86e59ee573ed7e901f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"af9c14be4541d8ac601f4c4617466bcf13749a08","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/af9c14be4541d8ac601f4c4617466bcf13749a08","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"4f1f66763630df183455f1ce3113f80364d95f7e","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/4f1f66763630df183455f1ce3113f80364d95f7e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"247edfeceaaf2ffc3b22dfc75bcdf9a3bfaf215b","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/247edfeceaaf2ffc3b22dfc75bcdf9a3bfaf215b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"80f25d31223c756fb1124d89a76c10fcb7d51aa4","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/80f25d31223c756fb1124d89a76c10fcb7d51aa4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"abb4982514eb6d9f41752e057fc649b40f73e801","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/abb4982514eb6d9f41752e057fc649b40f73e801","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"955a35e54593eee5fe3ca6cdad574c203cd9179a","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/955a35e54593eee5fe3ca6cdad574c203cd9179a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"82c5229542bfd8ad16aefc2478467f1a33a39716","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/82c5229542bfd8ad16aefc2478467f1a33a39716","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"f2e38a398e0bffcf8bd5c5a4958da526c076b24a","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/f2e38a398e0bffcf8bd5c5a4958da526c076b24a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"4bb4d4e043a9581db09c2f0d63eee8ac18226b49","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/4bb4d4e043a9581db09c2f0d63eee8ac18226b49","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"7a8d9f0a38954d8794f0f9af78e154f62f99de1d","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/7a8d9f0a38954d8794f0f9af78e154f62f99de1d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"79483600c61c9637fa8476388c69fb79517dfe60","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/79483600c61c9637fa8476388c69fb79517dfe60","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"5de27668434309e1bcb5993c1637b9dbaaab544b","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/5de27668434309e1bcb5993c1637b9dbaaab544b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"334a248d88b91357d2e7ae7443781efa74674ba8","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/334a248d88b91357d2e7ae7443781efa74674ba8","weight":0.9}],"data":{"attributed_loc_by_commit":{"0c13a4278a1ae0f909edc0769562a494b371557d":0,"243a6ea77c80278a76f24eb5e8eb3be7c9e50165":141,"abecca270ef094922025659a54ca5d0404eaa3ce":0,"ed6f2ed8a889dc5c5c17bca2c873d575f8f37a0d":63,"37ef8e7b129b3fdf10065e4f6692708057686a12":0,"423276b277c1e7cde405531c7bbc47a0590bcb70":56,"28d25cdbf56248cd200894b51712179c819003a7":26,"17c9a06171979a129f8ba45345cd8bbc304b0e01":27,"5fc7460c55828c41ae206486ecda722d0e300e93":20,"50063cfbff6cf37a10d7e3eb7aac83e318c6ec39":28,"180d06221490d06c0ef6836aa0f664c22e0ae443":21,"2495851eb2270dfa8efbed5d81892c3a1a644fb4":36,"5c7b52cd20135ac0b7f3a343db62f7ea2cf96cec":47,"334a248d88b91357d2e7ae7443781efa74674ba8":40,"5de27668434309e1bcb5993c1637b9dbaaab544b":61,"79483600c61c9637fa8476388c69fb79517dfe60":47,"7a8d9f0a38954d8794f0f9af78e154f62f99de1d":40,"4bb4d4e043a9581db09c2f0d63eee8ac18226b49":53,"f2e38a398e0bffcf8bd5c5a4958da526c076b24a":51,"82c5229542bfd8ad16aefc2478467f1a33a39716":52,"955a35e54593eee5fe3ca6cdad574c203cd9179a":33,"abb4982514eb6d9f41752e057fc649b40f73e801":34,"80f25d31223c756fb1124d89a76c10fcb7d51aa4":22,"247edfeceaaf2ffc3b22dfc75bcdf9a3bfaf215b":15,"4f1f66763630df183455f1ce3113f80364d95f7e":15,"af9c14be4541d8ac601f4c4617466bcf13749a08":24,"2ecd6e67275e1dc6fdf00a86e59ee573ed7e901f":0,"aa2f07809f71eb6624180ed07454fd9c4f92e445":0,"f4c706a9dbe6e80feee7cda547263fa896b1f537":17,"f76f1446e0161fc9efc854ccd17972147bbb1361":20,"67f9023e2ca9e0a3ccafa20ea9c0a89231575791":32,"e42b74afc1eddb1385117a96daaef34fc93e895d":48,"22c2e62a3ef52a918378caa1f4e9f9b7ee375729":35,"79aeddd679448092179a33a4bf1c004b60567bd4":28,"706a18b95b714ab29b2a4842d3b9ff4f887935d5":27,"f3a9213835f7bf546078dc4b1a973b4afe1bcf69":95,"dcc781c93ad0e47efbf23736781c186bab83d963":0,"f6af97404f9a9b5ff0fc82f607cde8e26d7a0347":2},"tools":{"claude-code":{"name":"Claude Code","commits":38,"loc":1256,"first_seen":1778767883,"last_seen":1791457273}},"monthly":{"2023-03":{"loc":5296,"attributed_loc":0},"2023-04":{"loc":7765,"attributed_loc":0},"2023-05":{"loc":5312,"attributed_loc":0},"2023-06":{"loc":2384,"attributed_loc":0},"2023-07":{"loc":2250,"attributed_loc":0},"2023-08":{"loc":822,"attributed_loc":0},"2023-09":{"loc":3469,"attributed_loc":0},"2023-10":{"loc":223,"attributed_loc":0},"2023-11":{"loc":1886,"attributed_loc":0},"2023-12":{"loc":1119,"attributed_loc":0},"2024-01":{"loc":655,"attributed_loc":0},"2024-02":{"loc":974,"attributed_loc":0},"2024-03":{"loc":372,"attributed_loc":0},"2024-04":{"loc":1054,"attributed_loc":0},"2024-05":{"loc":1757,"attributed_loc":0},"2024-06":{"loc":187,"attributed_loc":0},"2024-07":{"loc":13677,"attributed_loc":0},"2024-08":{"loc":5988,"attributed_loc":0},"2024-09":{"loc":3118,"attributed_loc":0},"2024-10":{"loc":1389,"attributed_loc":0},"2024-11":{"loc":2928,"attributed_loc":0},"2024-12":{"loc":1539,"attributed_loc":0},"2025-01":{"loc":3072,"attributed_loc":0},"2025-02":{"loc":2029,"attributed_loc":0},"2025-03":{"loc":8,"attributed_loc":0},"2025-04":{"loc":51,"attributed_loc":0},"2025-06":{"loc":756,"attributed_loc":0},"2025-07":{"loc":323,"attributed_loc":0},"2025-08":{"loc":22,"attributed_loc":0},"2025-09":{"loc":5,"attributed_loc":0},"2026-05":{"loc":0,"attributed_loc":0},"2026-07":{"loc":1159,"attributed_loc":1159},"2026-08":{"loc":0,"attributed_loc":0},"2026-09":{"loc":101,"attributed_loc":0},"2026-10":{"loc":277,"attributed_loc":97}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"work_units":975.0,"flagged_units":2.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":71967.0,"flagged_loc":7139.0,"flagged_loc_share":0.09919824363944586,"max_loc_per_hour":2878.0,"median_loc_per_hour":62.625,"pr_timed_units":58.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"1,439 lines of first-party code in ~0.5h (2,878 lines/hour, 1 commit session)","ref":"5610f423d06a735737f833cbba7b182687f37ef8","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/5610f423d06a735737f833cbba7b182687f37ef8","weight":0.6},{"kind":"velocity-burst","description":"5,700 lines of first-party code in ~4.0h (1,425 lines/hour, 1 commit session)","ref":"86b8bfcb1f478214fbcfe76e9de09680b68f1034","url":"https://github.com/ChatGPTNextWeb/NextChat/commit/86b8bfcb1f478214fbcfe76e9de09680b68f1034","weight":0.4275}],"data":{"flagged_loc_by_commit":{"5610f423d06a735737f833cbba7b182687f37ef8":1439,"86b8bfcb1f478214fbcfe76e9de09680b68f1034":5700},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"releases":78.0,"flagged_releases":0.0,"max_loc_per_day":1694.8},"findings":[],"evidence":[],"data":{"releases":[{"from":"v1.0","to":"v1.1","loc":258,"days":1.59,"loc_per_day":162.1,"flagged":false},{"from":"v1.1","to":"v1.2","loc":202,"days":2.56,"loc_per_day":78.8,"flagged":false},{"from":"v1.2","to":"v1.3","loc":113,"days":0.17,"loc_per_day":668.9,"flagged":false},{"from":"v1.3","to":"v1.4","loc":95,"days":0.06,"loc_per_day":1694.8,"flagged":false},{"from":"v1.4","to":"v1.5","loc":107,"days":1.09,"loc_per_day":98.2,"flagged":false},{"from":"v1.5","to":"v1.6","loc":94,"days":0.84,"loc_per_day":112.2,"flagged":false},{"from":"v1.6","to":"v1.7","loc":961,"days":1.32,"loc_per_day":729.2,"flagged":false},{"from":"v1.7","to":"v1.7.1","loc":25,"days":0.57,"loc_per_day":44.1,"flagged":false},{"from":"v1.7.1","to":"v1.7.2","loc":3,"days":0.12,"loc_per_day":24.7,"flagged":false},{"from":"v1.7.2","to":"v1.8","loc":75,"days":0.29,"loc_per_day":259.8,"flagged":false},{"from":"v1.8","to":"v1.9","loc":222,"days":2.69,"loc_per_day":82.4,"flagged":false},{"from":"v1.9","to":"v1.9.1","loc":588,"days":0.37,"loc_per_day":1598.6,"flagged":false},{"from":"v1.9.1","to":"v1.9.2","loc":418,"days":0.9,"loc_per_day":463.2,"flagged":false},{"from":"v1.9.2","to":"v1.9.3","loc":299,"days":2.12,"loc_per_day":140.9,"flagged":false},{"from":"v1.9.3","to":"v1.9.4","loc":251,"days":1.31,"loc_per_day":191.9,"flagged":false},{"from":"v1.9.4","to":"v1.9.5","loc":439,"days":0.66,"loc_per_day":667.8,"flagged":false},{"from":"v1.9.5","to":"v1.9.6","loc":224,"days":1.92,"loc_per_day":116.9,"flagged":false},{"from":"v1.9.6","to":"v1.9.7","loc":575,"days":1.07,"loc_per_day":535.5,"flagged":false},{"from":"v1.9.7","to":"v1.9.8","loc":440,"days":4.0,"loc_per_day":110.1,"flagged":false},{"from":"v1.9.8","to":"v1.9.9","loc":621,"days":2.95,"loc_per_day":210.5,"flagged":false},{"from":"v1.9.9","to":"v2.0.1","loc":3502,"days":10.01,"loc_per_day":349.9,"flagged":false},{"from":"v2.0.1","to":"v2.1","loc":428,"days":4.77,"loc_per_day":89.8,"flagged":false},{"from":"v2.1","to":"v2.2","loc":462,"days":3.14,"loc_per_day":147.1,"flagged":false},{"from":"v2.2","to":"v2.3","loc":396,"days":3.04,"loc_per_day":130.1,"flagged":false},{"from":"v2.3","to":"v2.4","loc":872,"days":5.95,"loc_per_day":146.6,"flagged":false},{"from":"v2.4","to":"v2.5","loc":1819,"days":4.07,"loc_per_day":447.3,"flagged":false},{"from":"v2.5","to":"v2.6","loc":1156,"days":3.01,"loc_per_day":383.5,"flagged":false},{"from":"v2.6","to":"v2.7","loc":377,"days":11.41,"loc_per_day":33.0,"flagged":false},{"from":"v2.7","to":"v2.8","loc":466,"days":11.96,"loc_per_day":39.0,"flagged":false},{"from":"v2.8","to":"app-vundefined","loc":119,"days":0.68,"loc_per_day":174.0,"flagged":false},{"from":"app-vundefined","to":"v2.8.1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v2.8.1","to":"v2.8.2","loc":30,"days":0.85,"loc_per_day":35.1,"flagged":false},{"from":"v2.8.2","to":"v2.8.3","loc":564,"days":5.1,"loc_per_day":110.5,"flagged":false},{"from":"v2.8.3","to":"v2.8.4","loc":713,"days":4.92,"loc_per_day":144.8,"flagged":false},{"from":"v2.8.4","to":"v2.8.5","loc":584,"days":3.04,"loc_per_day":192.3,"flagged":false},{"from":"v2.8.5","to":"v2.8.6","loc":104,"days":0.99,"loc_per_day":105.1,"flagged":false},{"from":"v2.8.6","to":"v2.8.7","loc":67,"days":3.98,"loc_per_day":16.9,"flagged":false},{"from":"v2.8.7","to":"v2.8.8","loc":1068,"days":2.06,"loc_per_day":517.8,"flagged":false},{"from":"v2.8.8","to":"v2.8.9","loc":470,"days":4.54,"loc_per_day":103.6,"flagged":false},{"from":"v2.8.9","to":"v2.9.0","loc":369,"days":7.82,"loc_per_day":47.2,"flagged":false},{"from":"v2.9.0","to":"v2.9.1","loc":243,"days":2.57,"loc_per_day":94.4,"flagged":false},{"from":"v2.9.1","to":"v2.9.2","loc":58,"days":13.42,"loc_per_day":4.3,"flagged":false},{"from":"v2.9.2","to":"v2.9.3","loc":152,"days":6.21,"loc_per_day":24.5,"flagged":false},{"from":"v2.9.3","to":"v2.9.4","loc":181,"days":9.13,"loc_per_day":19.8,"flagged":false},{"from":"v2.9.4","to":"v2.9.5","loc":466,"days":9.27,"loc_per_day":50.3,"flagged":false},{"from":"v2.9.5","to":"v2.9.6","loc":1540,"days":16.07,"loc_per_day":95.8,"flagged":false},{"from":"v2.9.6","to":"v2.9.7","loc":394,"days":6.34,"loc_per_day":62.2,"flagged":false},{"from":"v2.9.7","to":"v2.9.8","loc":259,"days":18.53,"loc_per_day":14.0,"flagged":false},{"from":"v2.9.8","to":"v2.9.9","loc":31,"days":1.96,"loc_per_day":15.9,"flagged":false},{"from":"v2.9.9","to":"v2.9.10","loc":160,"days":29.1,"loc_per_day":5.5,"flagged":false},{"from":"v2.9.10","to":"v2.9.11","loc":641,"days":2.59,"loc_per_day":247.4,"flagged":false},{"from":"v2.9.11","to":"v2.9.12","loc":191,"days":6.84,"loc_per_day":27.9,"flagged":false},{"from":"v2.9.12","to":"v2.9.13","loc":562,"days":24.19,"loc_per_day":23.2,"flagged":false},{"from":"v2.9.13","to":"v2.10.1","loc":974,"days":16.32,"loc_per_day":59.7,"flagged":false},{"from":"v2.10.1","to":"v2.10.2","loc":780,"days":40.66,"loc_per_day":19.2,"flagged":false},{"from":"v2.10.2","to":"v2.10.3","loc":98,"days":0.94,"loc_per_day":104.0,"flagged":false},{"from":"v2.10.3","to":"v2.11.2","loc":491,"days":19.17,"loc_per_day":25.6,"flagged":false},{"from":"v2.11.2","to":"v2.11.3","loc":637,"days":16.34,"loc_per_day":39.0,"flagged":false},{"from":"v2.11.3","to":"v2.12.1","loc":2993,"days":42.44,"loc_per_day":70.5,"flagged":false},{"from":"v2.12.1","to":"v2.12.2","loc":0,"days":5.02,"loc_per_day":0.0,"flagged":false},{"from":"v2.12.2","to":"v2.12.3","loc":265,"days":14.17,"loc_per_day":18.7,"flagged":false},{"from":"v2.12.3","to":"v2.12.4","loc":1470,"days":40.88,"loc_per_day":36.0,"flagged":false},{"from":"v2.12.4","to":"v2.13.0","loc":2454,"days":19.28,"loc_per_day":127.3,"flagged":false},{"from":"v2.13.0","to":"v2.13.1","loc":365,"days":5.86,"loc_per_day":62.2,"flagged":false},{"from":"v2.13.1","to":"v2.14.0","loc":4696,"days":7.05,"loc_per_day":666.3,"flagged":false},{"from":"v2.14.0","to":"v2.14.1","loc":2821,"days":11.14,"loc_per_day":253.3,"flagged":false},{"from":"v2.14.1","to":"v2.14.2","loc":6062,"days":9.75,"loc_per_day":622.0,"flagged":false},{"from":"v2.14.2","to":"v2.15.0","loc":2848,"days":21.81,"loc_per_day":130.6,"flagged":false},{"from":"v2.15.0","to":"v2.15.1","loc":7,"days":0.43,"loc_per_day":16.3,"flagged":false},{"from":"v2.15.1","to":"v2.15.2","loc":333,"days":5.81,"loc_per_day":57.3,"flagged":false},{"from":"v2.15.2","to":"v2.15.3","loc":2561,"days":11.95,"loc_per_day":214.3,"flagged":false},{"from":"v2.15.3","to":"v2.15.4","loc":938,"days":14.85,"loc_per_day":63.2,"flagged":false},{"from":"v2.15.4","to":"v2.15.5","loc":302,"days":5.14,"loc_per_day":58.8,"flagged":false},{"from":"v2.15.5","to":"v2.15.6","loc":457,"days":8.97,"loc_per_day":50.9,"flagged":false},{"from":"v2.15.6","to":"v2.15.7","loc":667,"days":12.09,"loc_per_day":55.2,"flagged":false},{"from":"v2.15.7","to":"v2.15.8","loc":2610,"days":5.82,"loc_per_day":448.3,"flagged":false},{"from":"v2.15.8","to":"v2.16.0","loc":5887,"days":96.89,"loc_per_day":60.8,"flagged":false},{"from":"v2.16.0","to":"v2.16.1","loc":2080,"days":163.16,"loc_per_day":12.7,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":42009.0,"index":1.44,"count:narrated_steps":1.0,"per_kloc:narrated_steps":0.024,"files:narrated_steps":1.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":119.0,"per_kloc:emoji_in_code":2.833,"files:emoji_in_code":22.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: * First, sorted by provider; if the same, sorted by model","ref":"app/utils/model.ts:28","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/utils/model.ts#L28","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":2.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"app/utils/ms_edge_tts.ts","line":121,"fingerprint":"app/utils/ms_edge_tts.ts:generic-api-key:121"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"src-tauri/tauri.conf.json","line":106,"fingerprint":"src-tauri/tauri.conf.json:generic-api-key:106"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":14.0,"findings_high":6.0,"findings_medium":5.0,"findings_low":3.0,"weighted_findings":10.137,"scanned_lines":42009.0,"parse_errors":3.0},"findings":[{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"Dockerfile","line":49,"fingerprint":"dockerfile.security.missing-user:Dockerfile:49"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"app/components/exporter.tsx","line":500,"fingerprint":"javascript.browser.security.insecure-document-method:app/components/exporter.tsx:500"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `dom.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"app/components/exporter.tsx","line":500,"fingerprint":"javascript.browser.security.insecure-innerhtml:app/components/exporter.tsx:500"},{"rule_id":"opengrep/typescript.react.security.react-insecure-request","severity":"high","message":"Unencrypted request over HTTP detected. [confidence medium]","path":"scripts/fetch-prompts.mjs","line":28,"fingerprint":"typescript.react.security.react-insecure-request:scripts/fetch-prompts.mjs:28"},{"rule_id":"opengrep/typescript.react.security.react-insecure-request","severity":"high","message":"Unencrypted request over HTTP detected. [confidence medium]","path":"scripts/fetch-prompts.mjs","line":47,"fingerprint":"typescript.react.security.react-insecure-request:scripts/fetch-prompts.mjs:47"},{"rule_id":"opengrep/typescript.react.security.react-insecure-request","severity":"high","message":"Unencrypted request over HTTP detected. [confidence medium]","path":"scripts/fetch-prompts.mjs","line":67,"fingerprint":"typescript.react.security.react-insecure-request:scripts/fetch-prompts.mjs:67"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"app/client/platforms/glm.ts","line":116,"fingerprint":"javascript.lang.security.html-in-template-string:app/client/platforms/glm.ts:116"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"app/components/artifacts.tsx","line":82,"fingerprint":"javascript.lang.security.html-in-template-string:app/components/artifacts.tsx:82"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `[name, value]` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-c [confidence low]","path":"app/store/chat.ts","line":198,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:app/store/chat.ts:198"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"app/utils/cloud/index.ts","line":32,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:app/utils/cloud/index.ts:32"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"app/utils/ms_edge_tts.ts","line":238,"fingerprint":"javascript.lang.security.html-in-template-string:app/utils/ms_edge_tts.ts:238"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"app/api/[provider]/[...path]/route.ts","line":25,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:app/api/[provider]/[...path]/route.ts:25"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"app/client/platforms/glm.ts","line":178,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:app/client/platforms/glm.ts:178"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"app/client/platforms/glm.ts","line":201,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:app/client/platforms/glm.ts:201"}],"evidence":[],"data":{"rulesets":["typescript","javascript","rust","bash","dockerfile"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":82.0,"vulnerabilities":260.0,"vulns_critical":10.0,"vulns_high":94.0,"vulns_medium":111.0,"vulns_low":23.0,"vulns_unknown":22.0,"penalty":471.0},"findings":[{"rule_id":"osv/RUSTSEC-2026-0369","severity":"critical","message":"zip@0.6.6 (crates.io) is affected by RUSTSEC-2026-0369","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zip@0.6.6 (crates.io):RUSTSEC-2026-0369"},{"rule_id":"osv/GHSA-m665-v7pm-7grj","severity":"critical","message":"zip@0.6.6 (crates.io) is affected by GHSA-m665-v7pm-7grj","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zip@0.6.6 (crates.io):GHSA-m665-v7pm-7grj"},{"rule_id":"osv/GHSA-gx9m-whjm-85jf","severity":"critical","message":"dompurify@3.0.5 (npm) is affected by GHSA-gx9m-whjm-85jf","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-gx9m-whjm-85jf"},{"rule_id":"osv/GHSA-fjxv-7rqg-78g4","severity":"critical","message":"form-data@4.0.0 (npm) is affected by GHSA-fjxv-7rqg-78g4","path":"yarn.lock","line":null,"fingerprint":"form-data@4.0.0 (npm):GHSA-fjxv-7rqg-78g4"},{"rule_id":"osv/GHSA-wf6x-7x77-mvgw","severity":"critical","message":"immutable@4.3.0 (npm) is affected by GHSA-wf6x-7x77-mvgw","path":"yarn.lock","line":null,"fingerprint":"immutable@4.3.0 (npm):GHSA-wf6x-7x77-mvgw"},{"rule_id":"osv/GHSA-2464-fhr4-w9xw","severity":"critical","message":"next@14.1.1 (npm) is affected by GHSA-2464-fhr4-w9xw","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-2464-fhr4-w9xw"},{"rule_id":"osv/GHSA-2xp9-vwfh-vxw4","severity":"critical","message":"next@14.1.1 (npm) is affected by GHSA-2xp9-vwfh-vxw4","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-2xp9-vwfh-vxw4"},{"rule_id":"osv/GHSA-f82v-jwr5-mffw","severity":"critical","message":"next@14.1.1 (npm) is affected by GHSA-f82v-jwr5-mffw","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-f82v-jwr5-mffw"},{"rule_id":"osv/GHSA-p293-qw3h-jr36","severity":"critical","message":"next@14.1.1 (npm) is affected by GHSA-p293-qw3h-jr36","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-p293-qw3h-jr36"},{"rule_id":"osv/GHSA-w7jw-789q-3m8p","severity":"critical","message":"shell-quote@1.8.1 (npm) is affected by GHSA-w7jw-789q-3m8p","path":"yarn.lock","line":null,"fingerprint":"shell-quote@1.8.1 (npm):GHSA-w7jw-789q-3m8p"},{"rule_id":"osv/GHSA-r8w9-5wcg-vfj7","severity":"high","message":"mio@0.8.8 (crates.io) is affected by RUSTSEC-2024-0019, GHSA-r8w9-5wcg-vfj7","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"mio@0.8.8 (crates.io):GHSA-r8w9-5wcg-vfj7"},{"rule_id":"osv/GHSA-8c75-8mhr-p7r9","severity":"high","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0463, GHSA-8c75-8mhr-p7r9","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-8c75-8mhr-p7r9"},{"rule_id":"osv/GHSA-pqf5-4pqq-29f5","severity":"high","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0473, GHSA-pqf5-4pqq-29f5","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-pqf5-4pqq-29f5"},{"rule_id":"osv/GHSA-xp3w-r5p5-63rr","severity":"high","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0474, GHSA-xp3w-r5p5-63rr","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-xp3w-r5p5-63rr"},{"rule_id":"osv/GHSA-ghm9-cr32-g9qj","severity":"high","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0475, GHSA-ghm9-cr32-g9qj","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-ghm9-cr32-g9qj"},{"rule_id":"osv/GHSA-hppc-g8h3-xhp3","severity":"high","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0478, GHSA-hppc-g8h3-xhp3","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-hppc-g8h3-xhp3"},{"rule_id":"osv/RUSTSEC-2026-0194","severity":"high","message":"quick-xml@0.23.1 (crates.io) is affected by RUSTSEC-2026-0194","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"quick-xml@0.23.1 (crates.io):RUSTSEC-2026-0194"},{"rule_id":"osv/RUSTSEC-2026-0195","severity":"high","message":"quick-xml@0.23.1 (crates.io) is affected by RUSTSEC-2026-0195","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"quick-xml@0.23.1 (crates.io):RUSTSEC-2026-0195"},{"rule_id":"osv/RUSTSEC-2026-0194","severity":"high","message":"quick-xml@0.28.2 (crates.io) is affected by RUSTSEC-2026-0194","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"quick-xml@0.28.2 (crates.io):RUSTSEC-2026-0194"},{"rule_id":"osv/RUSTSEC-2026-0195","severity":"high","message":"quick-xml@0.28.2 (crates.io) is affected by RUSTSEC-2026-0195","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"quick-xml@0.28.2 (crates.io):RUSTSEC-2026-0195"},{"rule_id":"osv/GHSA-gchp-q4r4-x4ff","severity":"high","message":"tar@0.4.38 (crates.io) is affected by RUSTSEC-2026-0068, GHSA-gchp-q4r4-x4ff","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"tar@0.4.38 (crates.io):GHSA-gchp-q4r4-x4ff"},{"rule_id":"osv/RUSTSEC-2026-0367","severity":"high","message":"zip@0.6.6 (crates.io) is affected by RUSTSEC-2026-0367","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zip@0.6.6 (crates.io):RUSTSEC-2026-0367"},{"rule_id":"osv/RUSTSEC-2026-0429","severity":"high","message":"zip@0.6.6 (crates.io) is affected by RUSTSEC-2026-0429","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zip@0.6.6 (crates.io):RUSTSEC-2026-0429"},{"rule_id":"osv/GHSA-fv7c-fp4j-7gwp","severity":"high","message":"@babel/plugin-transform-modules-systemjs@7.20.11 (npm) is affected by GHSA-fv7c-fp4j-7gwp","path":"yarn.lock","line":null,"fingerprint":"@babel/plugin-transform-modules-systemjs@7.20.11 (npm):GHSA-fv7c-fp4j-7gwp"},{"rule_id":"osv/GHSA-w48q-cv73-mx4w","severity":"high","message":"@modelcontextprotocol/sdk@1.0.4 (npm) is affected by GHSA-w48q-cv73-mx4w","path":"yarn.lock","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.0.4 (npm):GHSA-w48q-cv73-mx4w"},{"rule_id":"osv/GHSA-2w69-qvjg-hvjx","severity":"high","message":"@remix-run/router@1.8.0 (npm) is affected by GHSA-2w69-qvjg-hvjx","path":"yarn.lock","line":null,"fingerprint":"@remix-run/router@1.8.0 (npm):GHSA-2w69-qvjg-hvjx"},{"rule_id":"osv/GHSA-35jp-ww65-95wh","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-35jp-ww65-95wh","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-35jp-ww65-95wh"},{"rule_id":"osv/GHSA-3g43-6gmg-66jw","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-3g43-6gmg-66jw","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-3g43-6gmg-66jw"},{"rule_id":"osv/GHSA-43fc-jf86-j433","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-43fc-jf86-j433","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-43fc-jf86-j433"},{"rule_id":"osv/GHSA-4hjh-wcwx-xvwj","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-4hjh-wcwx-xvwj","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-4hjh-wcwx-xvwj"},{"rule_id":"osv/GHSA-62hf-57xw-28j9","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-62hf-57xw-28j9","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-62hf-57xw-28j9"},{"rule_id":"osv/GHSA-6chq-wfr3-2hj9","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-6chq-wfr3-2hj9","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-6chq-wfr3-2hj9"},{"rule_id":"osv/GHSA-777c-7fjr-54vf","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-777c-7fjr-54vf","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-777c-7fjr-54vf"},{"rule_id":"osv/GHSA-hfxv-24rg-xrqf","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-hfxv-24rg-xrqf","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-hfxv-24rg-xrqf"},{"rule_id":"osv/GHSA-j5f8-grm9-p9fc","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-j5f8-grm9-p9fc","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-j5f8-grm9-p9fc"},{"rule_id":"osv/GHSA-jr5f-v2jv-69x6","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-jr5f-v2jv-69x6","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-jr5f-v2jv-69x6"},{"rule_id":"osv/GHSA-p92q-9vqr-4j8v","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-p92q-9vqr-4j8v","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-p92q-9vqr-4j8v"},{"rule_id":"osv/GHSA-pf86-5x62-jrwf","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-pf86-5x62-jrwf","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-pf86-5x62-jrwf"},{"rule_id":"osv/GHSA-pmwg-cvhr-8vh7","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-pmwg-cvhr-8vh7","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-pmwg-cvhr-8vh7"},{"rule_id":"osv/GHSA-q8qp-cvcw-x6jj","severity":"high","message":"axios@1.7.5 (npm) is affected by GHSA-q8qp-cvcw-x6jj","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-q8qp-cvcw-x6jj"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-grv7-fg5c-xmjg","severity":"high","message":"braces@3.0.2 (npm) is affected by GHSA-grv7-fg5c-xmjg","path":"yarn.lock","line":null,"fingerprint":"braces@3.0.2 (npm):GHSA-grv7-fg5c-xmjg"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.21.5 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"yarn.lock","line":null,"fingerprint":"browserslist@4.21.5 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.21.5 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"yarn.lock","line":null,"fingerprint":"browserslist@4.21.5 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.21.9 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"yarn.lock","line":null,"fingerprint":"browserslist@4.21.9 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.21.9 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"yarn.lock","line":null,"fingerprint":"browserslist@4.21.9 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.23.3 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"yarn.lock","line":null,"fingerprint":"browserslist@4.23.3 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.23.3 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"yarn.lock","line":null,"fingerprint":"browserslist@4.23.3 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-3xgq-45jj-v275","severity":"high","message":"cross-spawn@7.0.3 (npm) is affected by GHSA-3xgq-45jj-v275","path":"yarn.lock","line":null,"fingerprint":"cross-spawn@7.0.3 (npm):GHSA-3xgq-45jj-v275"},{"rule_id":"osv/GHSA-mmhx-hmjr-r674","severity":"high","message":"dompurify@3.0.5 (npm) is affected by GHSA-mmhx-hmjr-r674","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-mmhx-hmjr-r674"},{"rule_id":"osv/GHSA-mrv2-3pqr-j5jr","severity":"high","message":"dompurify@3.0.5 (npm) is affected by GHSA-mrv2-3pqr-j5jr","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-mrv2-3pqr-j5jr"},{"rule_id":"osv/GHSA-25h7-pfq9-p65f","severity":"high","message":"flatted@3.2.7 (npm) is affected by GHSA-25h7-pfq9-p65f","path":"yarn.lock","line":null,"fingerprint":"flatted@3.2.7 (npm):GHSA-25h7-pfq9-p65f"},{"rule_id":"osv/GHSA-rf6f-7fwh-wjgh","severity":"high","message":"flatted@3.2.7 (npm) is affected by GHSA-rf6f-7fwh-wjgh","path":"yarn.lock","line":null,"fingerprint":"flatted@3.2.7 (npm):GHSA-rf6f-7fwh-wjgh"},{"rule_id":"osv/GHSA-hmw2-7cc7-3qxx","severity":"high","message":"form-data@4.0.0 (npm) is affected by GHSA-hmw2-7cc7-3qxx","path":"yarn.lock","line":null,"fingerprint":"form-data@4.0.0 (npm):GHSA-hmw2-7cc7-3qxx"},{"rule_id":"osv/GHSA-v56q-mh7h-f735","severity":"high","message":"immutable@4.3.0 (npm) is affected by GHSA-v56q-mh7h-f735","path":"yarn.lock","line":null,"fingerprint":"immutable@4.3.0 (npm):GHSA-v56q-mh7h-f735"},{"rule_id":"osv/GHSA-xvcm-6775-5m9r","severity":"high","message":"immutable@4.3.0 (npm) is affected by GHSA-xvcm-6775-5m9r","path":"yarn.lock","line":null,"fingerprint":"immutable@4.3.0 (npm):GHSA-xvcm-6775-5m9r"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@3.14.1 (npm) is affected by GHSA-2883-xcg3-v3hh","path":"yarn.lock","line":null,"fingerprint":"js-yaml@3.14.1 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-52cp-r559-cp3m","severity":"high","message":"js-yaml@3.14.1 (npm) is affected by GHSA-52cp-r559-cp3m","path":"yarn.lock","line":null,"fingerprint":"js-yaml@3.14.1 (npm):GHSA-52cp-r559-cp3m"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@3.14.1 (npm) is affected by GHSA-5p4m-2wfm-xmqj","path":"yarn.lock","line":null,"fingerprint":"js-yaml@3.14.1 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@4.1.0 (npm) is affected by GHSA-2883-xcg3-v3hh","path":"yarn.lock","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-52cp-r559-cp3m","severity":"high","message":"js-yaml@4.1.0 (npm) is affected by GHSA-52cp-r559-cp3m","path":"yarn.lock","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-52cp-r559-cp3m"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@4.1.0 (npm) is affected by GHSA-5p4m-2wfm-xmqj","path":"yarn.lock","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-r5fr-rjxr-66jc","severity":"high","message":"lodash@4.17.21 (npm) is affected by GHSA-r5fr-rjxr-66jc","path":"yarn.lock","line":null,"fingerprint":"lodash@4.17.21 (npm):GHSA-r5fr-rjxr-66jc"},{"rule_id":"osv/GHSA-r5fr-rjxr-66jc","severity":"high","message":"lodash-es@4.17.21 (npm) is affected by GHSA-r5fr-rjxr-66jc","path":"yarn.lock","line":null,"fingerprint":"lodash-es@4.17.21 (npm):GHSA-r5fr-rjxr-66jc"},{"rule_id":"osv/GHSA-7wpw-2hjm-89gp","severity":"high","message":"merge@1.2.1 (npm) is affected by GHSA-7wpw-2hjm-89gp","path":"yarn.lock","line":null,"fingerprint":"merge@1.2.1 (npm):GHSA-7wpw-2hjm-89gp"},{"rule_id":"osv/GHSA-m4gq-x24j-jpmf","severity":"high","message":"mermaid@10.6.1 (npm) is affected by GHSA-m4gq-x24j-jpmf","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-m4gq-x24j-jpmf"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"yarn.lock","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-3ppc-4f35-3m26","path":"yarn.lock","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-7r86-cg39-jmmj","path":"yarn.lock","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@3.3.7 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"yarn.lock","line":null,"fingerprint":"nanoid@3.3.7 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.7 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"yarn.lock","line":null,"fingerprint":"nanoid@3.3.7 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@3.3.7 (npm) is affected by GHSA-xwg4-73v4-xw9w","path":"yarn.lock","line":null,"fingerprint":"nanoid@3.3.7 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@5.0.3 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"yarn.lock","line":null,"fingerprint":"nanoid@5.0.3 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@5.0.3 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"yarn.lock","line":null,"fingerprint":"nanoid@5.0.3 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@5.0.3 (npm) is affected by GHSA-xwg4-73v4-xw9w","path":"yarn.lock","line":null,"fingerprint":"nanoid@5.0.3 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-36qx-fr4f-26g5","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-36qx-fr4f-26g5","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-36qx-fr4f-26g5"},{"rule_id":"osv/GHSA-5j59-xgg2-r9c4","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-5j59-xgg2-r9c4","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-5j59-xgg2-r9c4"},{"rule_id":"osv/GHSA-7gfc-8cq8-jh5f","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-7gfc-8cq8-jh5f","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-7gfc-8cq8-jh5f"},{"rule_id":"osv/GHSA-89xv-2m56-2m9x","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-89xv-2m56-2m9x","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-89xv-2m56-2m9x"},{"rule_id":"osv/GHSA-8h8q-6873-q5fj","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-8h8q-6873-q5fj","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-8h8q-6873-q5fj"},{"rule_id":"osv/GHSA-c4j6-fc7j-m34r","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-c4j6-fc7j-m34r","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-c4j6-fc7j-m34r"},{"rule_id":"osv/GHSA-gp8f-8m3g-qvj9","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-gp8f-8m3g-qvj9","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-gp8f-8m3g-qvj9"},{"rule_id":"osv/GHSA-h25m-26qc-wcjf","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-h25m-26qc-wcjf","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-h25m-26qc-wcjf"},{"rule_id":"osv/GHSA-m99w-x7hq-7vfj","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-m99w-x7hq-7vfj","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-m99w-x7hq-7vfj"},{"rule_id":"osv/GHSA-mwv6-3258-q52c","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-mwv6-3258-q52c","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-mwv6-3258-q52c"},{"rule_id":"osv/GHSA-p3m5-59mp-jv5r","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-p3m5-59mp-jv5r","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-p3m5-59mp-jv5r"},{"rule_id":"osv/GHSA-p9j2-gv94-2wf4","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-p9j2-gv94-2wf4","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-p9j2-gv94-2wf4"},{"rule_id":"osv/GHSA-q4gf-8mx6-v5v3","severity":"high","message":"next@14.1.1 (npm) is affected by GHSA-q4gf-8mx6-v5v3","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-q4gf-8mx6-v5v3"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@2.3.1 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"yarn.lock","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-6g55-p6wh-862q","path":"yarn.lock","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-r28c-9q8g-f849","path":"yarn.lock","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-5c6j-r48x-rmvq","severity":"high","message":"serialize-javascript@6.0.1 (npm) is affected by GHSA-5c6j-r48x-rmvq","path":"yarn.lock","line":null,"fingerprint":"serialize-javascript@6.0.1 (npm):GHSA-5c6j-r48x-rmvq"},{"rule_id":"osv/GHSA-395f-4hp3-45gv","severity":"high","message":"shell-quote@1.8.1 (npm) is affected by GHSA-395f-4hp3-45gv","path":"yarn.lock","line":null,"fingerprint":"shell-quote@1.8.1 (npm):GHSA-395f-4hp3-45gv"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.0.2 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"yarn.lock","line":null,"fingerprint":"source-map-js@1.0.2 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-2p49-hgcm-8545","severity":"high","message":"svgo@2.8.0 (npm) is affected by GHSA-2p49-hgcm-8545","path":"yarn.lock","line":null,"fingerprint":"svgo@2.8.0 (npm):GHSA-2p49-hgcm-8545"},{"rule_id":"osv/GHSA-w27v-7q3p-w38r","severity":"high","message":"svgo@2.8.0 (npm) is affected by GHSA-w27v-7q3p-w38r","path":"yarn.lock","line":null,"fingerprint":"svgo@2.8.0 (npm):GHSA-w27v-7q3p-w38r"},{"rule_id":"osv/GHSA-xpqw-6gx7-v673","severity":"high","message":"svgo@2.8.0 (npm) is affected by GHSA-xpqw-6gx7-v673","path":"yarn.lock","line":null,"fingerprint":"svgo@2.8.0 (npm):GHSA-xpqw-6gx7-v673"},{"rule_id":"osv/GHSA-w5hq-g745-h8pq","severity":"high","message":"uuid@9.0.0 (npm) is affected by GHSA-w5hq-g745-h8pq","path":"yarn.lock","line":null,"fingerprint":"uuid@9.0.0 (npm):GHSA-w5hq-g745-h8pq"},{"rule_id":"osv/GHSA-96hv-2xvq-fx4p","severity":"high","message":"ws@8.18.0 (npm) is affected by GHSA-96hv-2xvq-fx4p","path":"yarn.lock","line":null,"fingerprint":"ws@8.18.0 (npm):GHSA-96hv-2xvq-fx4p"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@3.24.1 (npm) is affected by GHSA-mrhx-c7xc-m3w5","path":"yarn.lock","line":null,"fingerprint":"zod@3.24.1 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/RUSTSEC-2025-0056","severity":"medium","message":"adler@1.0.2 (crates.io) is affected by RUSTSEC-2025-0056","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"adler@1.0.2 (crates.io):RUSTSEC-2025-0056"},{"rule_id":"osv/RUSTSEC-2026-0190","severity":"medium","message":"anyhow@1.0.71 (crates.io) is affected by RUSTSEC-2026-0190","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"anyhow@1.0.71 (crates.io):RUSTSEC-2026-0190"},{"rule_id":"osv/RUSTSEC-2025-0141","severity":"medium","message":"bincode@1.3.3 (crates.io) is affected by RUSTSEC-2025-0141","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"bincode@1.3.3 (crates.io):RUSTSEC-2025-0141"},{"rule_id":"osv/GHSA-434x-w66g-qw3r","severity":"medium","message":"bytes@1.7.2 (crates.io) is affected by RUSTSEC-2026-0007, GHSA-434x-w66g-qw3r","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"bytes@1.7.2 (crates.io):GHSA-434x-w66g-qw3r"},{"rule_id":"osv/RUSTSEC-2024-0388","severity":"medium","message":"derivative@2.2.0 (crates.io) is affected by RUSTSEC-2024-0388","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"derivative@2.2.0 (crates.io):RUSTSEC-2024-0388"},{"rule_id":"osv/RUSTSEC-2025-0057","severity":"medium","message":"fxhash@0.2.1 (crates.io) is affected by RUSTSEC-2025-0057","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"fxhash@0.2.1 (crates.io):RUSTSEC-2025-0057"},{"rule_id":"osv/GHSA-wrw7-89jp-8q8g","severity":"medium","message":"glib@0.15.12 (crates.io) is affected by RUSTSEC-2024-0429, GHSA-wrw7-89jp-8q8g","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"glib@0.15.12 (crates.io):GHSA-wrw7-89jp-8q8g"},{"rule_id":"osv/GHSA-q6cp-qfwq-4gcv","severity":"medium","message":"h2@0.3.24 (crates.io) is affected by RUSTSEC-2024-0332, GHSA-q6cp-qfwq-4gcv","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"h2@0.3.24 (crates.io):GHSA-q6cp-qfwq-4gcv"},{"rule_id":"osv/RUSTSEC-2026-0258","severity":"medium","message":"h2@0.3.24 (crates.io) is affected by RUSTSEC-2026-0258","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"h2@0.3.24 (crates.io):RUSTSEC-2026-0258"},{"rule_id":"osv/GHSA-h97m-ww89-6jmq","severity":"medium","message":"idna@0.5.0 (crates.io) is affected by RUSTSEC-2024-0421, GHSA-h97m-ww89-6jmq","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"idna@0.5.0 (crates.io):GHSA-h97m-ww89-6jmq"},{"rule_id":"osv/RUSTSEC-2024-0384","severity":"medium","message":"instant@0.1.12 (crates.io) is affected by RUSTSEC-2024-0384","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"instant@0.1.12 (crates.io):RUSTSEC-2024-0384"},{"rule_id":"osv/GHSA-xphf-cx8h-7q9g","severity":"medium","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2023-0072, GHSA-xphf-cx8h-7q9g","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-xphf-cx8h-7q9g"},{"rule_id":"osv/GHSA-q445-7m23-qrmw","severity":"medium","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2024-0357, GHSA-q445-7m23-qrmw","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-q445-7m23-qrmw"},{"rule_id":"osv/GHSA-rpmj-rpgj-qmpm","severity":"medium","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2025-0004, GHSA-rpmj-rpgj-qmpm","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-rpmj-rpgj-qmpm"},{"rule_id":"osv/GHSA-4fcv-w3qc-ppgg","severity":"medium","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2025-0022, GHSA-4fcv-w3qc-ppgg","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-4fcv-w3qc-ppgg"},{"rule_id":"osv/GHSA-xv59-967r-8726","severity":"medium","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0476, GHSA-xv59-967r-8726","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-xv59-967r-8726"},{"rule_id":"osv/GHSA-phqj-4mhp-q6mq","severity":"medium","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0477, GHSA-phqj-4mhp-q6mq","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-phqj-4mhp-q6mq"},{"rule_id":"osv/RUSTSEC-2026-0441","severity":"medium","message":"pin-utils@0.1.0 (crates.io) is affected by RUSTSEC-2026-0441","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"pin-utils@0.1.0 (crates.io):RUSTSEC-2026-0441"},{"rule_id":"osv/RUSTSEC-2024-0370","severity":"medium","message":"proc-macro-error@1.0.4 (crates.io) is affected by RUSTSEC-2024-0370","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"proc-macro-error@1.0.4 (crates.io):RUSTSEC-2024-0370"},{"rule_id":"osv/GHSA-cq8v-f236-94qc","severity":"medium","message":"rand@0.7.3 (crates.io) is affected by RUSTSEC-2026-0097, GHSA-cq8v-f236-94qc","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"rand@0.7.3 (crates.io):GHSA-cq8v-f236-94qc"},{"rule_id":"osv/GHSA-cq8v-f236-94qc","severity":"medium","message":"rand@0.8.5 (crates.io) is affected by RUSTSEC-2026-0097, GHSA-cq8v-f236-94qc","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"rand@0.8.5 (crates.io):GHSA-cq8v-f236-94qc"},{"rule_id":"osv/GHSA-c827-hfw6-qwvm","severity":"medium","message":"rustix@0.37.19 (crates.io) is affected by GHSA-c827-hfw6-qwvm","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"rustix@0.37.19 (crates.io):GHSA-c827-hfw6-qwvm"},{"rule_id":"osv/RUSTSEC-2023-0081","severity":"medium","message":"safemem@0.3.3 (crates.io) is affected by RUSTSEC-2023-0081","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"safemem@0.3.3 (crates.io):RUSTSEC-2023-0081"},{"rule_id":"osv/GHSA-7gcf-g7xr-8hxj","severity":"medium","message":"serde_with@3.6.0 (crates.io) is affected by GHSA-7gcf-g7xr-8hxj","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"serde_with@3.6.0 (crates.io):GHSA-7gcf-g7xr-8hxj"},{"rule_id":"osv/GHSA-j4xf-2g29-59ph","severity":"medium","message":"tar@0.4.38 (crates.io) is affected by RUSTSEC-2026-0067, GHSA-j4xf-2g29-59ph","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"tar@0.4.38 (crates.io):GHSA-j4xf-2g29-59ph"},{"rule_id":"osv/GHSA-3pv8-6f4r-ffg2","severity":"medium","message":"tar@0.4.38 (crates.io) is affected by GHSA-3pv8-6f4r-ffg2","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"tar@0.4.38 (crates.io):GHSA-3pv8-6f4r-ffg2"},{"rule_id":"osv/GHSA-57fm-592m-34r7","severity":"medium","message":"tauri@1.5.4 (crates.io) is affected by GHSA-57fm-592m-34r7","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"tauri@1.5.4 (crates.io):GHSA-57fm-592m-34r7"},{"rule_id":"osv/GHSA-r6v5-fh4h-64xc","severity":"medium","message":"time@0.3.15 (crates.io) is affected by RUSTSEC-2026-0009, GHSA-r6v5-fh4h-64xc","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"time@0.3.15 (crates.io):GHSA-r6v5-fh4h-64xc"},{"rule_id":"osv/RUSTSEC-2026-0386","severity":"medium","message":"tokio@1.28.1 (crates.io) is affected by RUSTSEC-2026-0386","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"tokio@1.28.1 (crates.io):RUSTSEC-2026-0386"},{"rule_id":"osv/RUSTSEC-2026-0371","severity":"medium","message":"zbus_names@2.6.0 (crates.io) is affected by RUSTSEC-2026-0371","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zbus_names@2.6.0 (crates.io):RUSTSEC-2026-0371"},{"rule_id":"osv/RUSTSEC-2026-0368","severity":"medium","message":"zip@0.6.6 (crates.io) is affected by RUSTSEC-2026-0368","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zip@0.6.6 (crates.io):RUSTSEC-2026-0368"},{"rule_id":"osv/GHSA-8hxf-qr8p-62x4","severity":"medium","message":"zip@0.6.6 (crates.io) is affected by GHSA-8hxf-qr8p-62x4","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zip@0.6.6 (crates.io):GHSA-8hxf-qr8p-62x4"},{"rule_id":"osv/RUSTSEC-2026-0370","severity":"medium","message":"zvariant@3.15.0 (crates.io) is affected by RUSTSEC-2026-0370","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zvariant@3.15.0 (crates.io):RUSTSEC-2026-0370"},{"rule_id":"osv/RUSTSEC-2026-0372","severity":"medium","message":"zvariant_derive@3.15.0 (crates.io) is affected by RUSTSEC-2026-0372","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"zvariant_derive@3.15.0 (crates.io):RUSTSEC-2026-0372"},{"rule_id":"osv/GHSA-968p-4wvh-cqc8","severity":"medium","message":"@babel/helpers@7.21.0 (npm) is affected by GHSA-968p-4wvh-cqc8","path":"yarn.lock","line":null,"fingerprint":"@babel/helpers@7.21.0 (npm):GHSA-968p-4wvh-cqc8"},{"rule_id":"osv/GHSA-968p-4wvh-cqc8","severity":"medium","message":"@babel/helpers@7.25.0 (npm) is affected by GHSA-968p-4wvh-cqc8","path":"yarn.lock","line":null,"fingerprint":"@babel/helpers@7.25.0 (npm):GHSA-968p-4wvh-cqc8"},{"rule_id":"osv/GHSA-968p-4wvh-cqc8","severity":"medium","message":"@babel/runtime@7.25.0 (npm) is affected by GHSA-968p-4wvh-cqc8","path":"yarn.lock","line":null,"fingerprint":"@babel/runtime@7.25.0 (npm):GHSA-968p-4wvh-cqc8"},{"rule_id":"osv/GHSA-6prh-2h8m-c8cw","severity":"medium","message":"@modelcontextprotocol/sdk@1.0.4 (npm) is affected by GHSA-6prh-2h8m-c8cw","path":"yarn.lock","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.0.4 (npm):GHSA-6prh-2h8m-c8cw"},{"rule_id":"osv/GHSA-2j2x-hqr9-3h42","severity":"medium","message":"@remix-run/router@1.8.0 (npm) is affected by GHSA-2j2x-hqr9-3h42","path":"yarn.lock","line":null,"fingerprint":"@remix-run/router@1.8.0 (npm):GHSA-2j2x-hqr9-3h42"},{"rule_id":"osv/GHSA-2g4f-4pwh-qvx6","severity":"medium","message":"ajv@6.12.6 (npm) is affected by GHSA-2g4f-4pwh-qvx6","path":"yarn.lock","line":null,"fingerprint":"ajv@6.12.6 (npm):GHSA-2g4f-4pwh-qvx6"},{"rule_id":"osv/GHSA-3p68-rc4w-qgx5","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-3p68-rc4w-qgx5","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-3p68-rc4w-qgx5"},{"rule_id":"osv/GHSA-3w6x-2g7m-8v23","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-3w6x-2g7m-8v23","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-3w6x-2g7m-8v23"},{"rule_id":"osv/GHSA-42h9-826w-cgv3","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-42h9-826w-cgv3","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-42h9-826w-cgv3"},{"rule_id":"osv/GHSA-445q-vr5w-6q77","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-445q-vr5w-6q77","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-445q-vr5w-6q77"},{"rule_id":"osv/GHSA-5c9x-8gcm-mpgx","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-5c9x-8gcm-mpgx","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-5c9x-8gcm-mpgx"},{"rule_id":"osv/GHSA-7q8q-rj6j-mhjq","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-7q8q-rj6j-mhjq","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-7q8q-rj6j-mhjq"},{"rule_id":"osv/GHSA-898c-q2cr-xwhg","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-898c-q2cr-xwhg","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-898c-q2cr-xwhg"},{"rule_id":"osv/GHSA-9fr6-4gfg-395g","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-9fr6-4gfg-395g","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-9fr6-4gfg-395g"},{"rule_id":"osv/GHSA-fvcv-3m26-pcqx","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-fvcv-3m26-pcqx","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-fvcv-3m26-pcqx"},{"rule_id":"osv/GHSA-j8rh-479h-cp32","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-j8rh-479h-cp32","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-j8rh-479h-cp32"},{"rule_id":"osv/GHSA-jqh4-m9w3-8hp9","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-jqh4-m9w3-8hp9","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-jqh4-m9w3-8hp9"},{"rule_id":"osv/GHSA-m7pr-hjqh-92cm","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-m7pr-hjqh-92cm","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-m7pr-hjqh-92cm"},{"rule_id":"osv/GHSA-mmx7-hfxf-jppx","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-mmx7-hfxf-jppx","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-mmx7-hfxf-jppx"},{"rule_id":"osv/GHSA-pmv8-rq9r-6j72","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-pmv8-rq9r-6j72","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-pmv8-rq9r-6j72"},{"rule_id":"osv/GHSA-vf2m-468p-8v99","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-vf2m-468p-8v99","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-vf2m-468p-8v99"},{"rule_id":"osv/GHSA-vh66-26gq-q6x8","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-vh66-26gq-q6x8","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-vh66-26gq-q6x8"},{"rule_id":"osv/GHSA-w9j2-pvgh-6h63","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-w9j2-pvgh-6h63","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-w9j2-pvgh-6h63"},{"rule_id":"osv/GHSA-xx6v-rp6x-q39c","severity":"medium","message":"axios@1.7.5 (npm) is affected by GHSA-xx6v-rp6x-q39c","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-xx6v-rp6x-q39c"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-gcqx-w48m-w2h4","severity":"medium","message":"deepmerge@4.3.1 (npm) is affected by GHSA-gcqx-w48m-w2h4","path":"yarn.lock","line":null,"fingerprint":"deepmerge@4.3.1 (npm):GHSA-gcqx-w48m-w2h4"},{"rule_id":"osv/GHSA-39q2-94rc-95cp","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-39q2-94rc-95cp","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-39q2-94rc-95cp"},{"rule_id":"osv/GHSA-55q2-fjhq-7xh7","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-55q2-fjhq-7xh7","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-55q2-fjhq-7xh7"},{"rule_id":"osv/GHSA-6688-9rhm-gjv2","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-6688-9rhm-gjv2","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-6688-9rhm-gjv2"},{"rule_id":"osv/GHSA-76mc-f452-cxcm","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-76mc-f452-cxcm","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-76mc-f452-cxcm"},{"rule_id":"osv/GHSA-c6gr-qvv4-5v3f","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-c6gr-qvv4-5v3f","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-c6gr-qvv4-5v3f"},{"rule_id":"osv/GHSA-cj63-jhhr-wcxv","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-cj63-jhhr-wcxv","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-cj63-jhhr-wcxv"},{"rule_id":"osv/GHSA-cjmm-f4jc-qw8r","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-cjmm-f4jc-qw8r","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-cjmm-f4jc-qw8r"},{"rule_id":"osv/GHSA-cmwh-pvxp-8882","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-cmwh-pvxp-8882","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-cmwh-pvxp-8882"},{"rule_id":"osv/GHSA-crv5-9vww-q3g8","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-crv5-9vww-q3g8","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-crv5-9vww-q3g8"},{"rule_id":"osv/GHSA-h7mw-gpvr-xq4m","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-h7mw-gpvr-xq4m","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-h7mw-gpvr-xq4m"},{"rule_id":"osv/GHSA-h8r8-wccr-v5f2","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-h8r8-wccr-v5f2","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-h8r8-wccr-v5f2"},{"rule_id":"osv/GHSA-hpcv-96wg-7vj8","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-hpcv-96wg-7vj8","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-hpcv-96wg-7vj8"},{"rule_id":"osv/GHSA-r47g-fvhr-h676","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-r47g-fvhr-h676","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-r47g-fvhr-h676"},{"rule_id":"osv/GHSA-rp9w-3fw7-7cwq","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-rp9w-3fw7-7cwq","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-rp9w-3fw7-7cwq"},{"rule_id":"osv/GHSA-v9jr-rg53-9pgp","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-v9jr-rg53-9pgp","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-v9jr-rg53-9pgp"},{"rule_id":"osv/GHSA-vhxf-7vqr-mrjg","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-vhxf-7vqr-mrjg","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-vhxf-7vqr-mrjg"},{"rule_id":"osv/GHSA-x4vx-rjvf-j5p4","severity":"medium","message":"dompurify@3.0.5 (npm) is affected by GHSA-x4vx-rjvf-j5p4","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-x4vx-rjvf-j5p4"},{"rule_id":"osv/GHSA-67mh-4wv8-2f99","severity":"medium","message":"esbuild@0.21.5 (npm) is affected by GHSA-67mh-4wv8-2f99","path":"yarn.lock","line":null,"fingerprint":"esbuild@0.21.5 (npm):GHSA-67mh-4wv8-2f99"},{"rule_id":"osv/GHSA-r4q5-vmmm-2653","severity":"medium","message":"follow-redirects@1.15.6 (npm) is affected by GHSA-r4q5-vmmm-2653","path":"yarn.lock","line":null,"fingerprint":"follow-redirects@1.15.6 (npm):GHSA-r4q5-vmmm-2653"},{"rule_id":"osv/GHSA-h67p-54hq-rp68","severity":"medium","message":"js-yaml@3.14.1 (npm) is affected by GHSA-h67p-54hq-rp68","path":"yarn.lock","line":null,"fingerprint":"js-yaml@3.14.1 (npm):GHSA-h67p-54hq-rp68"},{"rule_id":"osv/GHSA-mh29-5h37-fv8m","severity":"medium","message":"js-yaml@3.14.1 (npm) is affected by GHSA-mh29-5h37-fv8m","path":"yarn.lock","line":null,"fingerprint":"js-yaml@3.14.1 (npm):GHSA-mh29-5h37-fv8m"},{"rule_id":"osv/GHSA-h67p-54hq-rp68","severity":"medium","message":"js-yaml@4.1.0 (npm) is affected by GHSA-h67p-54hq-rp68","path":"yarn.lock","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-h67p-54hq-rp68"},{"rule_id":"osv/GHSA-mh29-5h37-fv8m","severity":"medium","message":"js-yaml@4.1.0 (npm) is affected by GHSA-mh29-5h37-fv8m","path":"yarn.lock","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-mh29-5h37-fv8m"},{"rule_id":"osv/GHSA-3wc5-fcw2-2329","severity":"medium","message":"katex@0.13.24 (npm) is affected by GHSA-3wc5-fcw2-2329","path":"yarn.lock","line":null,"fingerprint":"katex@0.13.24 (npm):GHSA-3wc5-fcw2-2329"},{"rule_id":"osv/GHSA-64fm-8hw2-v72w","severity":"medium","message":"katex@0.13.24 (npm) is affected by GHSA-64fm-8hw2-v72w","path":"yarn.lock","line":null,"fingerprint":"katex@0.13.24 (npm):GHSA-64fm-8hw2-v72w"},{"rule_id":"osv/GHSA-cg87-wmx4-v546","severity":"medium","message":"katex@0.13.24 (npm) is affected by GHSA-cg87-wmx4-v546","path":"yarn.lock","line":null,"fingerprint":"katex@0.13.24 (npm):GHSA-cg87-wmx4-v546"},{"rule_id":"osv/GHSA-f98w-7cxr-ff2h","severity":"medium","message":"katex@0.13.24 (npm) is affected by GHSA-f98w-7cxr-ff2h","path":"yarn.lock","line":null,"fingerprint":"katex@0.13.24 (npm):GHSA-f98w-7cxr-ff2h"},{"rule_id":"osv/GHSA-3wc5-fcw2-2329","severity":"medium","message":"katex@0.16.8 (npm) is affected by GHSA-3wc5-fcw2-2329","path":"yarn.lock","line":null,"fingerprint":"katex@0.16.8 (npm):GHSA-3wc5-fcw2-2329"},{"rule_id":"osv/GHSA-64fm-8hw2-v72w","severity":"medium","message":"katex@0.16.8 (npm) is affected by GHSA-64fm-8hw2-v72w","path":"yarn.lock","line":null,"fingerprint":"katex@0.16.8 (npm):GHSA-64fm-8hw2-v72w"},{"rule_id":"osv/GHSA-cg87-wmx4-v546","severity":"medium","message":"katex@0.16.8 (npm) is affected by GHSA-cg87-wmx4-v546","path":"yarn.lock","line":null,"fingerprint":"katex@0.16.8 (npm):GHSA-cg87-wmx4-v546"},{"rule_id":"osv/GHSA-cvr6-37gx-v8wc","severity":"medium","message":"katex@0.16.8 (npm) is affected by GHSA-cvr6-37gx-v8wc","path":"yarn.lock","line":null,"fingerprint":"katex@0.16.8 (npm):GHSA-cvr6-37gx-v8wc"},{"rule_id":"osv/GHSA-f98w-7cxr-ff2h","severity":"medium","message":"katex@0.16.8 (npm) is affected by GHSA-f98w-7cxr-ff2h","path":"yarn.lock","line":null,"fingerprint":"katex@0.16.8 (npm):GHSA-f98w-7cxr-ff2h"},{"rule_id":"osv/GHSA-xxjr-mmjv-4gpg","severity":"medium","message":"lodash@4.17.21 (npm) is affected by GHSA-xxjr-mmjv-4gpg","path":"yarn.lock","line":null,"fingerprint":"lodash@4.17.21 (npm):GHSA-xxjr-mmjv-4gpg"},{"rule_id":"osv/GHSA-xxjr-mmjv-4gpg","severity":"medium","message":"lodash-es@4.17.21 (npm) is affected by GHSA-xxjr-mmjv-4gpg","path":"yarn.lock","line":null,"fingerprint":"lodash-es@4.17.21 (npm):GHSA-xxjr-mmjv-4gpg"},{"rule_id":"osv/GHSA-2v8p-3f2j-5mp7","severity":"medium","message":"mermaid@10.6.1 (npm) is affected by GHSA-2v8p-3f2j-5mp7","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-2v8p-3f2j-5mp7"},{"rule_id":"osv/GHSA-6m6c-36f7-fhxh","severity":"medium","message":"mermaid@10.6.1 (npm) is affected by GHSA-6m6c-36f7-fhxh","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-6m6c-36f7-fhxh"},{"rule_id":"osv/GHSA-6x64-9x62-f2gx","severity":"medium","message":"mermaid@10.6.1 (npm) is affected by GHSA-6x64-9x62-f2gx","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-6x64-9x62-f2gx"},{"rule_id":"osv/GHSA-87f9-hvmw-gh4p","severity":"medium","message":"mermaid@10.6.1 (npm) is affected by GHSA-87f9-hvmw-gh4p","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-87f9-hvmw-gh4p"},{"rule_id":"osv/GHSA-ghcm-xqfw-q4vr","severity":"medium","message":"mermaid@10.6.1 (npm) is affected by GHSA-ghcm-xqfw-q4vr","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-ghcm-xqfw-q4vr"},{"rule_id":"osv/GHSA-xcj9-5m2h-648r","severity":"medium","message":"mermaid@10.6.1 (npm) is affected by GHSA-xcj9-5m2h-648r","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-xcj9-5m2h-648r"},{"rule_id":"osv/GHSA-952p-6rrq-rcjv","severity":"medium","message":"micromatch@4.0.5 (npm) is affected by GHSA-952p-6rrq-rcjv","path":"yarn.lock","line":null,"fingerprint":"micromatch@4.0.5 (npm):GHSA-952p-6rrq-rcjv"},{"rule_id":"osv/GHSA-mwcw-c2x4-8c55","severity":"medium","message":"nanoid@3.3.7 (npm) is affected by GHSA-mwcw-c2x4-8c55","path":"yarn.lock","line":null,"fingerprint":"nanoid@3.3.7 (npm):GHSA-mwcw-c2x4-8c55"},{"rule_id":"osv/GHSA-mwcw-c2x4-8c55","severity":"medium","message":"nanoid@5.0.3 (npm) is affected by GHSA-mwcw-c2x4-8c55","path":"yarn.lock","line":null,"fingerprint":"nanoid@5.0.3 (npm):GHSA-mwcw-c2x4-8c55"},{"rule_id":"osv/GHSA-3x4c-7xq6-9pq8","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-3x4c-7xq6-9pq8","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-3x4c-7xq6-9pq8"},{"rule_id":"osv/GHSA-4342-x723-ch2f","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-4342-x723-ch2f","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-4342-x723-ch2f"},{"rule_id":"osv/GHSA-4633-3j49-mh5q","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-4633-3j49-mh5q","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-4633-3j49-mh5q"},{"rule_id":"osv/GHSA-4c39-4ccg-62r3","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-4c39-4ccg-62r3","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-4c39-4ccg-62r3"},{"rule_id":"osv/GHSA-68g3-v927-f742","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-68g3-v927-f742","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-68g3-v927-f742"},{"rule_id":"osv/GHSA-7m27-7ghc-44w9","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-7m27-7ghc-44w9","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-7m27-7ghc-44w9"},{"rule_id":"osv/GHSA-955p-x3mx-jcvp","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-955p-x3mx-jcvp","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-955p-x3mx-jcvp"},{"rule_id":"osv/GHSA-9g9p-9gw9-jx7f","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-9g9p-9gw9-jx7f","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-9g9p-9gw9-jx7f"},{"rule_id":"osv/GHSA-ffhc-5mcf-pf4q","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-ffhc-5mcf-pf4q","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-ffhc-5mcf-pf4q"},{"rule_id":"osv/GHSA-g5qg-72qw-gw5v","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-g5qg-72qw-gw5v","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-g5qg-72qw-gw5v"},{"rule_id":"osv/GHSA-g77x-44xx-532m","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-g77x-44xx-532m","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-g77x-44xx-532m"},{"rule_id":"osv/GHSA-ggv3-7p47-pfv8","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-ggv3-7p47-pfv8","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-ggv3-7p47-pfv8"},{"rule_id":"osv/GHSA-gx5p-jg67-6x7h","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-gx5p-jg67-6x7h","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-gx5p-jg67-6x7h"},{"rule_id":"osv/GHSA-h64f-5h5j-jqjh","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-h64f-5h5j-jqjh","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-h64f-5h5j-jqjh"},{"rule_id":"osv/GHSA-xv57-4mr9-wg8v","severity":"medium","message":"next@14.1.1 (npm) is affected by GHSA-xv57-4mr9-wg8v","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-xv57-4mr9-wg8v"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@2.3.1 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"yarn.lock","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"yarn.lock","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"yarn.lock","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-2j2x-hqr9-3h42","severity":"medium","message":"react-router@6.15.0 (npm) is affected by GHSA-2j2x-hqr9-3h42","path":"yarn.lock","line":null,"fingerprint":"react-router@6.15.0 (npm):GHSA-2j2x-hqr9-3h42"},{"rule_id":"osv/GHSA-337j-9hxr-rhxg","severity":"medium","message":"react-router@6.15.0 (npm) is affected by GHSA-337j-9hxr-rhxg","path":"yarn.lock","line":null,"fingerprint":"react-router@6.15.0 (npm):GHSA-337j-9hxr-rhxg"},{"rule_id":"osv/GHSA-9jcx-v3wj-wh4m","severity":"medium","message":"react-router@6.15.0 (npm) is affected by GHSA-9jcx-v3wj-wh4m","path":"yarn.lock","line":null,"fingerprint":"react-router@6.15.0 (npm):GHSA-9jcx-v3wj-wh4m"},{"rule_id":"osv/GHSA-wrjc-x8rr-h8h6","severity":"medium","message":"react-router@6.15.0 (npm) is affected by GHSA-wrjc-x8rr-h8h6","path":"yarn.lock","line":null,"fingerprint":"react-router@6.15.0 (npm):GHSA-wrjc-x8rr-h8h6"},{"rule_id":"osv/GHSA-76p7-773f-r4q5","severity":"medium","message":"serialize-javascript@6.0.1 (npm) is affected by GHSA-76p7-773f-r4q5","path":"yarn.lock","line":null,"fingerprint":"serialize-javascript@6.0.1 (npm):GHSA-76p7-773f-r4q5"},{"rule_id":"osv/GHSA-qj8w-gfj5-8c6v","severity":"medium","message":"serialize-javascript@6.0.1 (npm) is affected by GHSA-qj8w-gfj5-8c6v","path":"yarn.lock","line":null,"fingerprint":"serialize-javascript@6.0.1 (npm):GHSA-qj8w-gfj5-8c6v"},{"rule_id":"osv/GHSA-4vpr-x523-8j87","severity":"medium","message":"svgo@2.8.0 (npm) is affected by GHSA-4vpr-x523-8j87","path":"yarn.lock","line":null,"fingerprint":"svgo@2.8.0 (npm):GHSA-4vpr-x523-8j87"},{"rule_id":"osv/GHSA-4vvj-4cpr-p986","severity":"medium","message":"webpack@5.88.1 (npm) is affected by GHSA-4vvj-4cpr-p986","path":"yarn.lock","line":null,"fingerprint":"webpack@5.88.1 (npm):GHSA-4vvj-4cpr-p986"},{"rule_id":"osv/GHSA-58qx-3vcg-4xpx","severity":"medium","message":"ws@8.18.0 (npm) is affected by GHSA-58qx-3vcg-4xpx","path":"yarn.lock","line":null,"fingerprint":"ws@8.18.0 (npm):GHSA-58qx-3vcg-4xpx"},{"rule_id":"osv/GHSA-48c2-rrv3-qjmp","severity":"medium","message":"yaml@1.10.2 (npm) is affected by GHSA-48c2-rrv3-qjmp","path":"yarn.lock","line":null,"fingerprint":"yaml@1.10.2 (npm):GHSA-48c2-rrv3-qjmp"},{"rule_id":"osv/GHSA-48c2-rrv3-qjmp","severity":"medium","message":"yaml@2.3.1 (npm) is affected by GHSA-48c2-rrv3-qjmp","path":"yarn.lock","line":null,"fingerprint":"yaml@2.3.1 (npm):GHSA-48c2-rrv3-qjmp"},{"rule_id":"osv/GHSA-xmgf-hq76-4vx2","severity":"low","message":"openssl@0.10.55 (crates.io) is affected by RUSTSEC-2026-0479, GHSA-xmgf-hq76-4vx2","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"openssl@0.10.55 (crates.io):GHSA-xmgf-hq76-4vx2"},{"rule_id":"osv/GHSA-rr8g-9fpq-6wmg","severity":"low","message":"tokio@1.28.1 (crates.io) is affected by RUSTSEC-2025-0023, GHSA-rr8g-9fpq-6wmg","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"tokio@1.28.1 (crates.io):GHSA-rr8g-9fpq-6wmg"},{"rule_id":"osv/GHSA-xwfj-jgwm-7wp5","severity":"low","message":"tracing-subscriber@0.3.17 (crates.io) is affected by RUSTSEC-2025-0055, GHSA-xwfj-jgwm-7wp5","path":"src-tauri/Cargo.lock","line":null,"fingerprint":"tracing-subscriber@0.3.17 (crates.io):GHSA-xwfj-jgwm-7wp5"},{"rule_id":"osv/GHSA-4x5r-pxfx-6jf8","severity":"low","message":"@babel/core@7.21.3 (npm) is affected by GHSA-4x5r-pxfx-6jf8","path":"yarn.lock","line":null,"fingerprint":"@babel/core@7.21.3 (npm):GHSA-4x5r-pxfx-6jf8"},{"rule_id":"osv/GHSA-4x5r-pxfx-6jf8","severity":"low","message":"@babel/core@7.25.2 (npm) is affected by GHSA-4x5r-pxfx-6jf8","path":"yarn.lock","line":null,"fingerprint":"@babel/core@7.25.2 (npm):GHSA-4x5r-pxfx-6jf8"},{"rule_id":"osv/GHSA-vpq2-c234-7xj6","severity":"low","message":"@tootallnate/once@2.0.0 (npm) is affected by GHSA-vpq2-c234-7xj6","path":"yarn.lock","line":null,"fingerprint":"@tootallnate/once@2.0.0 (npm):GHSA-vpq2-c234-7xj6"},{"rule_id":"osv/GHSA-xhjh-pmcv-23jw","severity":"low","message":"axios@1.7.5 (npm) is affected by GHSA-xhjh-pmcv-23jw","path":"yarn.lock","line":null,"fingerprint":"axios@1.7.5 (npm):GHSA-xhjh-pmcv-23jw"},{"rule_id":"osv/GHSA-v6h2-p8h4-qcjw","severity":"low","message":"brace-expansion@1.1.11 (npm) is affected by GHSA-v6h2-p8h4-qcjw","path":"yarn.lock","line":null,"fingerprint":"brace-expansion@1.1.11 (npm):GHSA-v6h2-p8h4-qcjw"},{"rule_id":"osv/GHSA-73rr-hh4g-fpgx","severity":"low","message":"diff@4.0.2 (npm) is affected by GHSA-73rr-hh4g-fpgx","path":"yarn.lock","line":null,"fingerprint":"diff@4.0.2 (npm):GHSA-73rr-hh4g-fpgx"},{"rule_id":"osv/GHSA-73rr-hh4g-fpgx","severity":"low","message":"diff@5.1.0 (npm) is affected by GHSA-73rr-hh4g-fpgx","path":"yarn.lock","line":null,"fingerprint":"diff@5.1.0 (npm):GHSA-73rr-hh4g-fpgx"},{"rule_id":"osv/GHSA-c2j3-45gr-mqc4","severity":"low","message":"dompurify@3.0.5 (npm) is affected by GHSA-c2j3-45gr-mqc4","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-c2j3-45gr-mqc4"},{"rule_id":"osv/GHSA-gvmj-g25r-r7wr","severity":"low","message":"dompurify@3.0.5 (npm) is affected by GHSA-gvmj-g25r-r7wr","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-gvmj-g25r-r7wr"},{"rule_id":"osv/GHSA-vxr8-fq34-vvx9","severity":"low","message":"dompurify@3.0.5 (npm) is affected by GHSA-vxr8-fq34-vvx9","path":"yarn.lock","line":null,"fingerprint":"dompurify@3.0.5 (npm):GHSA-vxr8-fq34-vvx9"},{"rule_id":"osv/GHSA-238p-pmpm-9mq7","severity":"low","message":"katex@0.13.24 (npm) is affected by GHSA-238p-pmpm-9mq7","path":"yarn.lock","line":null,"fingerprint":"katex@0.13.24 (npm):GHSA-238p-pmpm-9mq7"},{"rule_id":"osv/GHSA-238p-pmpm-9mq7","severity":"low","message":"katex@0.16.8 (npm) is affected by GHSA-238p-pmpm-9mq7","path":"yarn.lock","line":null,"fingerprint":"katex@0.16.8 (npm):GHSA-238p-pmpm-9mq7"},{"rule_id":"osv/GHSA-c4c3-pg64-4m4v","severity":"low","message":"mermaid@10.6.1 (npm) is affected by GHSA-c4c3-pg64-4m4v","path":"yarn.lock","line":null,"fingerprint":"mermaid@10.6.1 (npm):GHSA-c4c3-pg64-4m4v"},{"rule_id":"osv/GHSA-3g8h-86w9-wvmq","severity":"low","message":"next@14.1.1 (npm) is affected by GHSA-3g8h-86w9-wvmq","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-3g8h-86w9-wvmq"},{"rule_id":"osv/GHSA-3h52-269p-cp9r","severity":"low","message":"next@14.1.1 (npm) is affected by GHSA-3h52-269p-cp9r","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-3h52-269p-cp9r"},{"rule_id":"osv/GHSA-qpjv-v59x-3qc4","severity":"low","message":"next@14.1.1 (npm) is affected by GHSA-qpjv-v59x-3qc4","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-qpjv-v59x-3qc4"},{"rule_id":"osv/GHSA-vfv6-92ff-j949","severity":"low","message":"next@14.1.1 (npm) is affected by GHSA-vfv6-92ff-j949","path":"yarn.lock","line":null,"fingerprint":"next@14.1.1 (npm):GHSA-vfv6-92ff-j949"},{"rule_id":"osv/GHSA-m5mm-p8h7-m29v","severity":"low","message":"serialize-javascript@6.0.1 (npm) is affected by GHSA-m5mm-p8h7-m29v","path":"yarn.lock","line":null,"fingerprint":"serialize-javascript@6.0.1 (npm):GHSA-m5mm-p8h7-m29v"},{"rule_id":"osv/GHSA-38r7-794h-5758","severity":"low","message":"webpack@5.88.1 (npm) is affected by GHSA-38r7-794h-5758","path":"yarn.lock","line":null,"fingerprint":"webpack@5.88.1 (npm):GHSA-38r7-794h-5758"},{"rule_id":"osv/GHSA-8fgc-7cc6-rx7x","severity":"low","message":"webpack@5.88.1 (npm) is affected by GHSA-8fgc-7cc6-rx7x","path":"yarn.lock","line":null,"fingerprint":"webpack@5.88.1 (npm):GHSA-8fgc-7cc6-rx7x"}],"evidence":[],"data":{"ecosystems":["crates.io","npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":7.0,"findings":51.0,"findings_high":36.0,"findings_medium":11.0,"findings_low":4.0,"penalty":398.2},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":17,"fingerprint":"unpinned-uses:.github/workflows/app.yml:17"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":19,"fingerprint":"unpinned-uses:.github/workflows/app.yml:19"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":26,"fingerprint":"unpinned-uses:.github/workflows/app.yml:26"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":55,"fingerprint":"unpinned-uses:.github/workflows/app.yml:55"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":57,"fingerprint":"unpinned-uses:.github/workflows/app.yml:57"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":62,"fingerprint":"unpinned-uses:.github/workflows/app.yml:62"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":65,"fingerprint":"unpinned-uses:.github/workflows/app.yml:65"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":75,"fingerprint":"unpinned-uses:.github/workflows/app.yml:75"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/app.yml","line":99,"fingerprint":"unpinned-uses:.github/workflows/app.yml:99"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/app.yml","line":19,"fingerprint":"cache-poisoning:.github/workflows/app.yml:19"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/app.yml","line":57,"fingerprint":"cache-poisoning:.github/workflows/app.yml:57"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/app.yml","line":65,"fingerprint":"cache-poisoning:.github/workflows/app.yml:65"},{"rule_id":"zizmor/dangerous-triggers","severity":"high","message":"use of fundamentally insecure workflow trigger [confidence medium]","path":".github/workflows/deploy_preview.yml","line":4,"fingerprint":"dangerous-triggers:.github/workflows/deploy_preview.yml:4"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/deploy_preview.yml","line":44,"fingerprint":"template-injection:.github/workflows/deploy_preview.yml:44"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy_preview.yml","line":24,"fingerprint":"unpinned-uses:.github/workflows/deploy_preview.yml:24"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy_preview.yml","line":34,"fingerprint":"unpinned-uses:.github/workflows/deploy_preview.yml:34"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy_preview.yml","line":50,"fingerprint":"unpinned-uses:.github/workflows/deploy_preview.yml:50"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy_preview.yml","line":77,"fingerprint":"unpinned-uses:.github/workflows/deploy_preview.yml:77"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker.yml","line":15,"fingerprint":"unpinned-uses:.github/workflows/docker.yml:15"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker.yml","line":18,"fingerprint":"unpinned-uses:.github/workflows/docker.yml:18"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker.yml","line":26,"fingerprint":"unpinned-uses:.github/workflows/docker.yml:26"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker.yml","line":35,"fingerprint":"unpinned-uses:.github/workflows/docker.yml:35"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker.yml","line":39,"fingerprint":"unpinned-uses:.github/workflows/docker.yml:39"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker.yml","line":43,"fingerprint":"unpinned-uses:.github/workflows/docker.yml:43"},{"rule_id":"zizmor/dangerous-triggers","severity":"high","message":"use of fundamentally insecure workflow trigger [confidence medium]","path":".github/workflows/issue-translator.yml","line":3,"fingerprint":"dangerous-triggers:.github/workflows/issue-translator.yml:3"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/issue-translator.yml","line":12,"fingerprint":"unpinned-uses:.github/workflows/issue-translator.yml:12"},{"rule_id":"zizmor/dangerous-triggers","severity":"high","message":"use of fundamentally insecure workflow trigger [confidence medium]","path":".github/workflows/remove_deploy_preview.yml","line":14,"fingerprint":"dangerous-triggers:.github/workflows/remove_deploy_preview.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/remove_deploy_preview.yml","line":22,"fingerprint":"unpinned-uses:.github/workflows/remove_deploy_preview.yml:22"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/remove_deploy_preview.yml","line":30,"fingerprint":"unpinned-uses:.github/workflows/remove_deploy_preview.yml:30"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/sync.yml","line":20,"fingerprint":"unpinned-uses:.github/workflows/sync.yml:20"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/sync.yml","line":25,"fingerprint":"unpinned-uses:.github/workflows/sync.yml:25"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/test.yml","line":19,"fingerprint":"unpinned-uses:.github/workflows/test.yml:19"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/test.yml","line":22,"fingerprint":"unpinned-uses:.github/workflows/test.yml:22"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/test.yml","line":28,"fingerprint":"unpinned-uses:.github/workflows/test.yml:28"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/test.yml","line":22,"fingerprint":"cache-poisoning:.github/workflows/test.yml:22"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/test.yml","line":28,"fingerprint":"cache-poisoning:.github/workflows/test.yml:28"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":8,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:8"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/app.yml","line":17,"fingerprint":"artipacked:.github/workflows/app.yml:17"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/app.yml","line":55,"fingerprint":"artipacked:.github/workflows/app.yml:55"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/deploy_preview.yml","line":24,"fingerprint":"artipacked:.github/workflows/deploy_preview.yml:24"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/docker.yml","line":14,"fingerprint":"artipacked:.github/workflows/docker.yml:14"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/docker.yml","line":9,"fingerprint":"excessive-permissions:.github/workflows/docker.yml:9"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/issue-translator.yml","line":9,"fingerprint":"excessive-permissions:.github/workflows/issue-translator.yml:9"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/remove_deploy_preview.yml","line":22,"fingerprint":"artipacked:.github/workflows/remove_deploy_preview.yml:22"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/sync.yml","line":19,"fingerprint":"artipacked:.github/workflows/sync.yml:19"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/test.yml","line":18,"fingerprint":"artipacked:.github/workflows/test.yml:18"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/test.yml","line":14,"fingerprint":"excessive-permissions:.github/workflows/test.yml:14"},{"rule_id":"zizmor/template-injection","severity":"low","message":"code injection via template expansion [confidence high]","path":".github/workflows/deploy_preview.yml","line":68,"fingerprint":"template-injection:.github/workflows/deploy_preview.yml:68"},{"rule_id":"zizmor/template-injection","severity":"low","message":"code injection via template expansion [confidence high]","path":".github/workflows/deploy_preview.yml","line":70,"fingerprint":"template-injection:.github/workflows/deploy_preview.yml:70"},{"rule_id":"zizmor/adhoc-packages","severity":"low","message":"ad-hoc installation of packages [confidence high]","path":".github/workflows/deploy_preview.yml","line":47,"fingerprint":"adhoc-packages:.github/workflows/deploy_preview.yml:47"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/deploy_preview.yml","line":71,"fingerprint":"template-injection:.github/workflows/deploy_preview.yml:71"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":1.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.305,"unpinned_manifests":0.0},"findings":[],"evidence":[{"kind":"posture","description":"Dependency updates: .github/dependabot.yml","ref":".github/dependabot.yml","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":87.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v2.15.8 ships next-chat_2.15.8_amd64.AppImage (5488 downloads)","ref":"next-chat_2.15.8_amd64.AppImage","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/next-chat_2.15.8_amd64.AppImage","weight":0.0},{"kind":"binary-release-asset","description":"release v2.15.8 ships next-chat_2.15.8_amd64.AppImage.tar.gz (1906 downloads)","ref":"next-chat_2.15.8_amd64.AppImage.tar.gz","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/next-chat_2.15.8_amd64.AppImage.tar.gz","weight":0.0},{"kind":"binary-release-asset","description":"release v2.15.8 ships next-chat_2.15.8_amd64.deb (3799 downloads)","ref":"next-chat_2.15.8_amd64.deb","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/next-chat_2.15.8_amd64.deb","weight":0.0},{"kind":"binary-release-asset","description":"release v2.15.8 ships NextChat_2.15.8_universal.dmg (10118 downloads)","ref":"NextChat_2.15.8_universal.dmg","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_universal.dmg","weight":0.0},{"kind":"binary-release-asset","description":"release v2.15.8 ships NextChat_2.15.8_x64-setup.exe (39954 downloads)","ref":"NextChat_2.15.8_x64-setup.exe","url":"https://github.com/ChatGPTNextWeb/NextChat/releases/download/v2.15.8/NextChat_2.15.8_x64-setup.exe","weight":0.0}],"data":{"signals":["binary-release-assets"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":2167.0,"function_nloc":20145.0,"mean_ccn":1.98,"p90_ccn":4.0,"complex_functions":16.0,"long_functions":14.0,"many_param_functions":2.0,"risky_nloc_share":0.16},"findings":[],"evidence":[{"kind":"complex-function","description":"Settings in app/components/settings.tsx: complexity 40, 831 lines","ref":"app/components/settings.tsx","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/components/settings.tsx#L584","weight":0.6666666666666666},{"kind":"complex-function","description":"(anonymous) in app/components/chat.tsx: complexity 29, 169 lines","ref":"app/components/chat.tsx","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/components/chat.tsx#L1787","weight":0.48333333333333334},{"kind":"complex-function","description":"auth in app/api/auth.ts: complexity 25, 84 lines","ref":"app/api/auth.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/auth.ts#L27","weight":0.4166666666666667},{"kind":"complex-function","description":"ChatActions in app/components/chat.tsx: complexity 25, 177 lines","ref":"app/components/chat.tsx","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/components/chat.tsx#L495","weight":0.4166666666666667},{"kind":"complex-function","description":"handleKeyDown in app/components/chat.tsx: complexity 24, 52 lines","ref":"app/components/chat.tsx","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/components/chat.tsx#L1605","weight":0.4},{"kind":"complex-function","description":"requestOpenai in app/api/common.ts: complexity 22, 125 lines","ref":"app/api/common.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/common.ts#L9","weight":0.36666666666666664},{"kind":"complex-function","description":"_Chat in app/components/chat.tsx: complexity 20, 271 lines","ref":"app/components/chat.tsx","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/components/chat.tsx#L990","weight":0.3333333333333333},{"kind":"complex-function","description":"Avatar in app/components/emoji.tsx: complexity 20, 48 lines","ref":"app/components/emoji.tsx","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/components/emoji.tsx#L47","weight":0.3333333333333333},{"kind":"complex-function","description":"getMessagesWithMemory in app/store/chat.ts: complexity 20, 78 lines","ref":"app/store/chat.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/store/chat.ts#L542","weight":0.3333333333333333},{"kind":"complex-function","description":"handle in app/api/webdav/[...path]/route.ts: complexity 19, 111 lines","ref":"app/api/webdav/[...path]/route.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/webdav/[...path]/route.ts#L20","weight":0.31666666666666665}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":30136.0,"duplicated_lines":3526.0,"duplicated_share":0.117,"files":161.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/302ai.ts:4 and app/api/alibaba.ts:4","ref":"app/api/302ai.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/302ai.ts#L4","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/302ai.ts:67 and app/api/bytedance.ts:66","ref":"app/api/302ai.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/302ai.ts#L67","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/[provider]/[...path]/route.ts:63 and app/api/tencent/route.ts:36","ref":"app/api/[provider]/[...path]/route.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/[provider]/[...path]/route.ts#L63","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/common.ts:102 and app/api/google.ts:108","ref":"app/api/common.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/common.ts#L102","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/common.ts:172 and app/api/proxy.ts:75","ref":"app/api/common.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/common.ts#L172","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/google.ts:110 and app/api/stability.ts:77","ref":"app/api/google.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/google.ts#L110","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/api/upstash/[action]/[...key]/route.ts:44 and app/api/webdav/[...path]/route.ts:127","ref":"app/api/upstash/[action]/[...key]/route.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/api/upstash/[action]/[...key]/route.ts#L44","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/client/api.ts:302 and app/client/api.ts:331","ref":"app/client/api.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/client/api.ts#L302","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/client/platforms/ai302.ts:8 and app/client/platforms/moonshot.ts:8","ref":"app/client/platforms/ai302.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/client/platforms/ai302.ts#L8","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: app/client/platforms/ai302.ts:10 and app/client/platforms/alibaba.ts:4","ref":"app/client/platforms/ai302.ts","url":"https://github.com/ChatGPTNextWeb/NextChat/blob/1d3dc331512929a4b1d3e82354e72acce33b5c7a/app/client/platforms/ai302.ts#L10","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":47.0,"weighted_findings":37.75,"scanned_lines":42009.0,"category:best-practice":21.0,"category:correctness":26.0},"findings":[{"rule_id":"opengrep/javascript.react.correctness.hooks.calling-set-state-on-current-state","severity":"high","message":"Calling setState on the current state is always a no-op. Did you mean to change the state like setTitle(!title) instead?","path":"app/components/artifacts.tsx","line":53,"fingerprint":"javascript.react.correctness.hooks.calling-set-state-on-current-state:app/components/artifacts.tsx:53"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/anthropic.ts","line":66,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/anthropic.ts:66"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/auth.ts","line":18,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/auth.ts:18"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/common.ts","line":18,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/common.ts:18"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/common.ts","line":30,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/common.ts:30"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/common.ts","line":58,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/common.ts:58"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/google.ts","line":28,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/google.ts:28"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/stability.ts","line":30,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/stability.ts:30"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/api/stability.ts","line":51,"fingerprint":"javascript.lang.correctness.no-replaceall:app/api/stability.ts:51"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/chat-list.tsx","line":59,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/chat-list.tsx:59"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/chat-list.tsx","line":60,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/chat-list.tsx:60"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/chat-list.tsx","line":141,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/chat-list.tsx:141"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"app/components/chat.tsx","line":1302,"fingerprint":"javascript.lang.best-practice.lazy-load-module:app/components/chat.tsx:1302"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/markdown.tsx","line":291,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/markdown.tsx:291"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/markdown.tsx","line":310,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/markdown.tsx:310"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/mask.tsx","line":373,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/mask.tsx:373"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/mask.tsx","line":383,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/mask.tsx:383"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/mask.tsx","line":384,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/mask.tsx:384"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/sd/sd-sidebar.tsx","line":74,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/sd/sd-sidebar.tsx:74"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/sidebar.tsx","line":250,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/sidebar.tsx:250"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-in-state","severity":"medium","message":"Copying a prop into state in React -- this is bad practice as all updates to it are ignored. Instead, read props directly in your component and avoid copying props into state.","path":"app/components/ui-lib.tsx","line":138,"fingerprint":"typescript.react.best-practice.react-props-in-state:app/components/ui-lib.tsx:138"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/ui-lib.tsx","line":199,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/ui-lib.tsx:199"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/ui-lib.tsx","line":266,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/ui-lib.tsx:266"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/ui-lib.tsx","line":289,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/ui-lib.tsx:289"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/ui-lib.tsx","line":316,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/ui-lib.tsx:316"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-in-state","severity":"medium","message":"Copying a prop into state in React -- this is bad practice as all updates to it are ignored. Instead, read props directly in your component and avoid copying props into state.","path":"app/components/ui-lib.tsx","line":380,"fingerprint":"typescript.react.best-practice.react-props-in-state:app/components/ui-lib.tsx:380"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-in-state","severity":"medium","message":"Copying a prop into state in React -- this is bad practice as all updates to it are ignored. Instead, read props directly in your component and avoid copying props into state.","path":"app/components/ui-lib.tsx","line":489,"fingerprint":"typescript.react.best-practice.react-props-in-state:app/components/ui-lib.tsx:489"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"app/components/ui-lib.tsx","line":578,"fingerprint":"typescript.react.best-practice.react-props-spreading:app/components/ui-lib.tsx:578"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"app/config/build.ts","line":17,"fingerprint":"javascript.lang.best-practice.lazy-load-module:app/config/build.ts:17"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"app/utils.ts","line":445,"fingerprint":"javascript.lang.correctness.no-replaceall:app/utils.ts:445"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"app/utils/chat.ts","line":56,"fingerprint":"javascript.lang.best-practice.lazy-load-module:app/utils/chat.ts:56"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"scripts/fetch-prompts.mjs","line":75,"fingerprint":"javascript.lang.correctness.no-replaceall:scripts/fetch-prompts.mjs:75"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":281,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:281"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":281,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:281"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":290,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:290"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":290,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:290"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":299,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:299"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":299,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:299"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":306,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:306"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/constant.ts","line":306,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/constant.ts:306"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/utils/ms_edge_tts.ts","line":173,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/utils/ms_edge_tts.ts:173"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"app/utils/ms_edge_tts.ts","line":173,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:app/utils/ms_edge_tts.ts:173"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"scripts/delete-deployment-preview.sh","line":14,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:scripts/delete-deployment-preview.sh:14"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"scripts/delete-deployment-preview.sh","line":28,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:scripts/delete-deployment-preview.sh:28"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"scripts/delete-deployment-preview.sh","line":31,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:scripts/delete-deployment-preview.sh:31"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"scripts/init-proxy.sh","line":5,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:scripts/init-proxy.sh:5"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"scripts/init-proxy.sh","line":6,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:scripts/init-proxy.sh:6"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.0701,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.1231,"test_lines":1473.0,"source_lines":42009.0,"test_ratio":0.0351,"ci_files":7.0,"cochange_share":0.0308,"cochange_commits":195.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/app.yml","ref":".github/workflows/app.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/deploy_preview.yml","ref":".github/workflows/deploy_preview.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/docker.yml","ref":".github/workflows/docker.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/issue-translator.yml","ref":".github/workflows/issue-translator.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/remove_deploy_preview.yml","ref":".github/workflows/remove_deploy_preview.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/sync.yml","ref":".github/workflows/sync.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/test.yml","ref":".github/workflows/test.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (yarn test, jest)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["yarn test","jest"],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":291.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":1.0,"check:low_escape_density":0.0,"escapes":346.0,"escapes_per_kloc":8.361},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: tsconfig.json","ref":"tsconfig.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":97.0,"other_lines":41912.0,"files_blamed":161.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":47.0,"quality:other_per_kloc":1.121,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":14.0,"security:other_per_kloc":0.334},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":[]}