{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:07.687531Z","repo":{"ref":{"host":"github.com","owner":"sinedied","name":"freevibes"},"default_branch":"main","clone_url":"https://github.com/sinedied/freevibes.git","html_url":"https://github.com/sinedied/freevibes","description":"A modern web dashboard for RSS feeds and notes, inspired by the old NetVibes interface","stars":2,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":224,"primary_language":"TypeScript","license_spdx":"MIT","created_at":"2025-06-05T14:19:12Z","pushed_at":"2026-07-23T14:31:04Z","security_policy_url":null,"distribution":{"owner_created_at":"2011-01-31T17:21:19Z","owner_type":"User","release_assets":[]}},"commit_sha":"9f2a4698b1609bf547cf2be7a1d8ee06ca121210","profile":{"lines_by_language":{"TypeScript":4864,"JavaScript":16},"files_by_category":{"source":15,"config":9,"other":5,"docs":4,"generated":1},"source_lines":4880,"test_lines":0},"pillars":{"ai_provenance":{"score":21.2,"confidence":0.84,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.2121,"suspected_share":0.5712,"estimated_share":0.2121,"ai_artifacts":1.0,"flagged_work_units":2.0,"flagged_releases":null,"style_index":0.0},"summary":"Explicit AI attribution on 21% of first-party code added; an estimated 21% including velocity signals."},"quality":{"score":53.7,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":68.3,"duplication":29.6,"lint":100.0,"testing":15.0,"docs":65.0,"type_safety":100.0,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.00, no CI test run detected; 13% of function code in complex or long functions; 20% duplicated lines. Weakest area: testing."},"security":{"score":40.6,"confidence":0.85,"coverage":1.0,"label":"poor","breakdown":{"secrets":100.0,"sast":40.1,"dependencies":6.0,"ci_actions":15.7,"posture":0.0,"scorecard":null},"summary":"Security posture is poor: 96 known vulnerabilities in 23 dependencies; 9 high-severity workflow issues. Weakest area: posture."}},"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":8.0,"checked":8.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":56.0,"attributed_commits":11.0,"attributed_commit_share":0.19642857142857142,"effective_loc":10554.0,"attributed_loc":2239.0,"attributed_loc_share":0.21214705324995262,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 11 attributed commits, 2,239 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"9f2a4698b1609bf547cf2be7a1d8ee06ca121210","url":"https://github.com/sinedied/freevibes/commit/9f2a4698b1609bf547cf2be7a1d8ee06ca121210","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"858c2ecd8c61731e0e348ca3eda85dcd75775736","url":"https://github.com/sinedied/freevibes/commit/858c2ecd8c61731e0e348ca3eda85dcd75775736","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"84edf4f5dc9b48e1aab65e13322f49d5416ffb70","url":"https://github.com/sinedied/freevibes/commit/84edf4f5dc9b48e1aab65e13322f49d5416ffb70","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"050b06d4df45c8ebfe3b5936679328b3393245d2","url":"https://github.com/sinedied/freevibes/commit/050b06d4df45c8ebfe3b5936679328b3393245d2","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"1f44f2a8f9925a912fcdcb7379b14d601424afa4","url":"https://github.com/sinedied/freevibes/commit/1f44f2a8f9925a912fcdcb7379b14d601424afa4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"9ddda218849546f8cb8f0b7b1efaf294ac508ed4","url":"https://github.com/sinedied/freevibes/commit/9ddda218849546f8cb8f0b7b1efaf294ac508ed4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"1ea32d49cc1a28bda85b3fd479d96c05ee7e38f2","url":"https://github.com/sinedied/freevibes/commit/1ea32d49cc1a28bda85b3fd479d96c05ee7e38f2","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"5fc9429f71b975f58f6695eafe11418bec723294","url":"https://github.com/sinedied/freevibes/commit/5fc9429f71b975f58f6695eafe11418bec723294","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"3df75970710215cdb9fd5c2e441265454dfb3f09","url":"https://github.com/sinedied/freevibes/commit/3df75970710215cdb9fd5c2e441265454dfb3f09","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"63dbb9b64bbbe73c8dcae787213cd3bada67e7ed","url":"https://github.com/sinedied/freevibes/commit/63dbb9b64bbbe73c8dcae787213cd3bada67e7ed","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: author Copilot","ref":"06a4b0b99cd5df5a7040bd9d15a3563a7f65afad","url":"https://github.com/sinedied/freevibes/commit/06a4b0b99cd5df5a7040bd9d15a3563a7f65afad","weight":0.9}],"data":{"attributed_loc_by_commit":{"06a4b0b99cd5df5a7040bd9d15a3563a7f65afad":273,"63dbb9b64bbbe73c8dcae787213cd3bada67e7ed":0,"3df75970710215cdb9fd5c2e441265454dfb3f09":345,"5fc9429f71b975f58f6695eafe11418bec723294":386,"1ea32d49cc1a28bda85b3fd479d96c05ee7e38f2":0,"9ddda218849546f8cb8f0b7b1efaf294ac508ed4":522,"1f44f2a8f9925a912fcdcb7379b14d601424afa4":324,"050b06d4df45c8ebfe3b5936679328b3393245d2":90,"84edf4f5dc9b48e1aab65e13322f49d5416ffb70":201,"858c2ecd8c61731e0e348ca3eda85dcd75775736":73,"9f2a4698b1609bf547cf2be7a1d8ee06ca121210":25},"tools":{"github-copilot":{"name":"GitHub Copilot coding agent","commits":11,"loc":2239,"first_seen":1749138620,"last_seen":1784817062}},"monthly":{"2025-06":{"loc":3476,"attributed_loc":1004},"2026-01":{"loc":2359,"attributed_loc":1210},"2026-02":{"loc":4694,"attributed_loc":0},"2026-07":{"loc":25,"attributed_loc":25}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1769507346.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/AGENTS.md","weight":0.5}],"data":{"artifacts":[{"tool":"generic-agent","path":"AGENTS.md","added_at":1769507346}],"workflows":[],"tools":["generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":24.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":10554.0,"flagged_loc":6028.0,"flagged_loc_share":0.5711578548417662,"max_loc_per_hour":1169.75,"median_loc_per_hour":62.03228782287823,"pr_timed_units":9.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"4,679 lines of first-party code in ~4.0h (1,170 lines/hour, 1 commit session)","ref":"6e8262e063187169cfb96199c57a126117f8d3bf","url":"https://github.com/sinedied/freevibes/commit/6e8262e063187169cfb96199c57a126117f8d3bf","weight":0.350925},{"kind":"velocity-burst","description":"1,349 lines of first-party code in ~1.6h (837 lines/hour, 3 commit session)","ref":"e419b5a025f256ae8ae2c40370b6f9f395e030be","url":"https://github.com/sinedied/freevibes/commit/e419b5a025f256ae8ae2c40370b6f9f395e030be","weight":0.2510199862164025}],"data":{"flagged_loc_by_commit":{"a9549bf843aecfde4c2786dc646ee4d0d9ca80a0":1324,"e9999e0b71007ebe6be4e5464b94c1ac6290b7e3":1,"e419b5a025f256ae8ae2c40370b6f9f395e030be":24,"6e8262e063187169cfb96199c57a126117f8d3bf":4679},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":4880.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"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":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":51.0,"findings_high":0.0,"findings_medium":51.0,"findings_low":0.0,"weighted_findings":12.75,"scanned_lines":4880.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":716,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:716"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":733,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:733"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":750,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:750"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":761,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:761"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":765,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:765"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":780,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:780"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":799,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:799"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":821,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:821"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":832,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:832"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/app.ts","line":847,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/app.ts:847"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/dashboard.ts","line":366,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/dashboard.ts:366"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/dashboard.ts","line":446,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/dashboard.ts:446"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/dashboard.ts","line":454,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/dashboard.ts:454"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/dashboard.ts","line":456,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/dashboard.ts:456"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/dashboard.ts","line":510,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/dashboard.ts:510"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/dashboard.ts","line":513,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/dashboard.ts:513"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/dashboard.ts","line":531,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/dashboard.ts:531"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-tab-dialog.ts","line":320,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-tab-dialog.ts:320"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-tab-dialog.ts","line":343,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-tab-dialog.ts:343"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-tab-dialog.ts","line":360,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-tab-dialog.ts:360"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":503,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:503"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":532,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:532"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":547,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:547"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":561,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:561"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":575,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:575"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":587,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:587"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":595,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:595"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":606,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:606"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":608,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:608"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":624,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:624"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":639,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:639"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/edit-widget-dialog.ts","line":651,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/edit-widget-dialog.ts:651"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":316,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:316"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":318,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:318"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":328,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:328"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":376,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:376"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":380,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:380"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":393,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:393"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":412,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:412"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/notes.ts","line":427,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/notes.ts:427"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/rss.ts","line":422,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/rss.ts:422"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/rss.ts","line":426,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/rss.ts:426"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/rss.ts","line":439,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/rss.ts:439"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/rss.ts","line":464,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/rss.ts:464"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/rss.ts","line":467,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/rss.ts:467"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/rss.ts","line":470,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/rss.ts:470"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/rss.ts","line":481,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/rss.ts:481"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/settings.ts","line":425,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/settings.ts:425"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/settings.ts","line":547,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/settings.ts:547"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/tab-bar.ts","line":204,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/tab-bar.ts:204"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"packages/web/src/components/tab-bar.ts","line":212,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:packages/web/src/components/tab-bar.ts:212"}],"evidence":[],"data":{"rulesets":["typescript","javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":23.0,"vulnerabilities":96.0,"vulns_critical":1.0,"vulns_high":50.0,"vulns_medium":38.0,"vulns_low":7.0,"vulns_unknown":0.0,"penalty":169.0},"findings":[{"rule_id":"osv/GHSA-w7jw-789q-3m8p","severity":"critical","message":"shell-quote@1.8.3 (npm) is affected by GHSA-w7jw-789q-3m8p","path":"package-lock.json","line":null,"fingerprint":"shell-quote@1.8.3 (npm):GHSA-w7jw-789q-3m8p"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"package-lock.json","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"package-lock.json","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-25h7-pfq9-p65f","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-25h7-pfq9-p65f","path":"package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-25h7-pfq9-p65f"},{"rule_id":"osv/GHSA-rf6f-7fwh-wjgh","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-rf6f-7fwh-wjgh","path":"package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-rf6f-7fwh-wjgh"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-2883-xcg3-v3hh","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-52cp-r559-cp3m","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-52cp-r559-cp3m","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-52cp-r559-cp3m"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-5p4m-2wfm-xmqj","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-r5fr-rjxr-66jc","severity":"high","message":"lodash@4.17.23 (npm) is affected by GHSA-r5fr-rjxr-66jc","path":"package-lock.json","line":null,"fingerprint":"lodash@4.17.23 (npm):GHSA-r5fr-rjxr-66jc"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"package-lock.json","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":"package-lock.json","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":"package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-3ppc-4f35-3m26","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-7r86-cg39-jmmj","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-xwg4-73v4-xw9w","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@2.3.1 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"package-lock.json","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@4.0.3 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"package-lock.json","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-6g55-p6wh-862q","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-r28c-9q8g-f849","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-mw96-cpmx-2vgc","severity":"high","message":"rollup@4.57.1 (npm) is affected by GHSA-mw96-cpmx-2vgc","path":"package-lock.json","line":null,"fingerprint":"rollup@4.57.1 (npm):GHSA-mw96-cpmx-2vgc"},{"rule_id":"osv/GHSA-f88m-g3jw-g9cj","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-f88m-g3jw-g9cj","path":"package-lock.json","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-f88m-g3jw-g9cj"},{"rule_id":"osv/GHSA-rgj7-g3m4-5g8c","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-rgj7-g3m4-5g8c","path":"package-lock.json","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-rgj7-g3m4-5g8c"},{"rule_id":"osv/GHSA-wq5f-xc86-pv6w","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-wq5f-xc86-pv6w","path":"package-lock.json","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-wq5f-xc86-pv6w"},{"rule_id":"osv/GHSA-395f-4hp3-45gv","severity":"high","message":"shell-quote@1.8.3 (npm) is affected by GHSA-395f-4hp3-45gv","path":"package-lock.json","line":null,"fingerprint":"shell-quote@1.8.3 (npm):GHSA-395f-4hp3-45gv"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"package-lock.json","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-2m5v-pch6-74hx","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-2m5v-pch6-74hx","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-2m5v-pch6-74hx"},{"rule_id":"osv/GHSA-4cwx-7wf7-3272","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-4cwx-7wf7-3272","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-4cwx-7wf7-3272"},{"rule_id":"osv/GHSA-4w7w-5xrc-9h26","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-4w7w-5xrc-9h26","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-4w7w-5xrc-9h26"},{"rule_id":"osv/GHSA-f269-vfmq-vjvj","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-f269-vfmq-vjvj","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-f269-vfmq-vjvj"},{"rule_id":"osv/GHSA-qrxm-fqhp-jwvm","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-qrxm-fqhp-jwvm","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-qrxm-fqhp-jwvm"},{"rule_id":"osv/GHSA-rfgv-xxqx-mfg5","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-rfgv-xxqx-mfg5","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-rfgv-xxqx-mfg5"},{"rule_id":"osv/GHSA-v9p9-hfj2-hcw8","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-v9p9-hfj2-hcw8","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-v9p9-hfj2-hcw8"},{"rule_id":"osv/GHSA-vrm6-8vpv-qv8q","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-vrm6-8vpv-qv8q","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-vrm6-8vpv-qv8q"},{"rule_id":"osv/GHSA-vxpw-j846-p89q","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-vxpw-j846-p89q","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-vxpw-j846-p89q"},{"rule_id":"osv/GHSA-xjj6-f33q-929c","severity":"high","message":"undici@7.18.2 (npm) is affected by GHSA-xjj6-f33q-929c","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-xjj6-f33q-929c"},{"rule_id":"osv/GHSA-587h-7wmj-h5pm","severity":"high","message":"vite@6.4.1 (npm) is affected by GHSA-587h-7wmj-h5pm","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-587h-7wmj-h5pm"},{"rule_id":"osv/GHSA-p9ff-h696-f583","severity":"high","message":"vite@6.4.1 (npm) is affected by GHSA-p9ff-h696-f583","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-p9ff-h696-f583"},{"rule_id":"osv/GHSA-96hv-2xvq-fx4p","severity":"high","message":"ws@8.18.0 (npm) is affected by GHSA-96hv-2xvq-fx4p","path":"package-lock.json","line":null,"fingerprint":"ws@8.18.0 (npm):GHSA-96hv-2xvq-fx4p"},{"rule_id":"osv/GHSA-p498-v437-472g","severity":"medium","message":"@humanfs/node@0.16.7 (npm) is affected by GHSA-p498-v437-472g","path":"package-lock.json","line":null,"fingerprint":"@humanfs/node@0.16.7 (npm):GHSA-p498-v437-472g"},{"rule_id":"osv/GHSA-2g4f-4pwh-qvx6","severity":"medium","message":"ajv@6.12.6 (npm) is affected by GHSA-2g4f-4pwh-qvx6","path":"package-lock.json","line":null,"fingerprint":"ajv@6.12.6 (npm):GHSA-2g4f-4pwh-qvx6"},{"rule_id":"osv/GHSA-w5vr-8v7q-w6rv","severity":"medium","message":"baseline-browser-mapping@2.9.19 (npm) is affected by GHSA-w5vr-8v7q-w6rv","path":"package-lock.json","line":null,"fingerprint":"baseline-browser-mapping@2.9.19 (npm):GHSA-w5vr-8v7q-w6rv"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-h67p-54hq-rp68","severity":"medium","message":"js-yaml@4.1.1 (npm) is affected by GHSA-h67p-54hq-rp68","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-h67p-54hq-rp68"},{"rule_id":"osv/GHSA-f23m-r3pf-42rh","severity":"medium","message":"lodash@4.17.23 (npm) is affected by GHSA-f23m-r3pf-42rh","path":"package-lock.json","line":null,"fingerprint":"lodash@4.17.23 (npm):GHSA-f23m-r3pf-42rh"},{"rule_id":"osv/GHSA-g3hv-75wg-m249","severity":"medium","message":"minimatch@9.0.5 (npm) is affected by GHSA-g3hv-75wg-m249","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-g3hv-75wg-m249"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@2.3.1 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"package-lock.json","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@4.0.3 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"package-lock.json","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-2jfj-6hjv-fm6j","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-2jfj-6hjv-fm6j","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-2jfj-6hjv-fm6j"},{"rule_id":"osv/GHSA-2mjp-6q6p-2qxm","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-2mjp-6q6p-2qxm","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-2mjp-6q6p-2qxm"},{"rule_id":"osv/GHSA-3xpg-4rpp-hhhm","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-3xpg-4rpp-hhhm","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-3xpg-4rpp-hhhm"},{"rule_id":"osv/GHSA-4992-7rv2-5pvq","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-4992-7rv2-5pvq","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-4992-7rv2-5pvq"},{"rule_id":"osv/GHSA-4qv8-2p9j-2685","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-4qv8-2p9j-2685","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-4qv8-2p9j-2685"},{"rule_id":"osv/GHSA-55wc-3pg8-jfw6","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-55wc-3pg8-jfw6","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-55wc-3pg8-jfw6"},{"rule_id":"osv/GHSA-8xcm-r25x-g524","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-8xcm-r25x-g524","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-8xcm-r25x-g524"},{"rule_id":"osv/GHSA-9fm3-97px-rjf6","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-9fm3-97px-rjf6","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-9fm3-97px-rjf6"},{"rule_id":"osv/GHSA-f72v-6w45-q472","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-f72v-6w45-q472","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-f72v-6w45-q472"},{"rule_id":"osv/GHSA-jr45-8vmc-qm54","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-jr45-8vmc-qm54","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-jr45-8vmc-qm54"},{"rule_id":"osv/GHSA-m8rv-5g2x-5cg5","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-m8rv-5g2x-5cg5","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-m8rv-5g2x-5cg5"},{"rule_id":"osv/GHSA-p88m-4jfj-68fv","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-p88m-4jfj-68fv","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-p88m-4jfj-68fv"},{"rule_id":"osv/GHSA-phc3-fgpg-7m6h","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-phc3-fgpg-7m6h","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-phc3-fgpg-7m6h"},{"rule_id":"osv/GHSA-pmjh-fq2x-6v4x","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-pmjh-fq2x-6v4x","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-pmjh-fq2x-6v4x"},{"rule_id":"osv/GHSA-pr7r-676h-xcf6","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-pr7r-676h-xcf6","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-pr7r-676h-xcf6"},{"rule_id":"osv/GHSA-rx4f-c7p8-82vq","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-rx4f-c7p8-82vq","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-rx4f-c7p8-82vq"},{"rule_id":"osv/GHSA-v3r7-h72x-cjcm","severity":"medium","message":"undici@7.18.2 (npm) is affected by GHSA-v3r7-h72x-cjcm","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-v3r7-h72x-cjcm"},{"rule_id":"osv/GHSA-4w7w-66w2-5vf9","severity":"medium","message":"vite@6.4.1 (npm) is affected by GHSA-4w7w-66w2-5vf9","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-4w7w-66w2-5vf9"},{"rule_id":"osv/GHSA-698v-4r3x-3vcv","severity":"medium","message":"vite@6.4.1 (npm) is affected by GHSA-698v-4r3x-3vcv","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-698v-4r3x-3vcv"},{"rule_id":"osv/GHSA-fx2h-pf6j-xcff","severity":"medium","message":"vite@6.4.1 (npm) is affected by GHSA-fx2h-pf6j-xcff","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-fx2h-pf6j-xcff"},{"rule_id":"osv/GHSA-r825-w8mm-5pxw","severity":"medium","message":"vite@6.4.1 (npm) is affected by GHSA-r825-w8mm-5pxw","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-r825-w8mm-5pxw"},{"rule_id":"osv/GHSA-rq7h-c2jc-7f22","severity":"medium","message":"vite@6.4.1 (npm) is affected by GHSA-rq7h-c2jc-7f22","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-rq7h-c2jc-7f22"},{"rule_id":"osv/GHSA-v6wh-96g9-6wx3","severity":"medium","message":"vite@6.4.1 (npm) is affected by GHSA-v6wh-96g9-6wx3","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-v6wh-96g9-6wx3"},{"rule_id":"osv/GHSA-58qx-3vcg-4xpx","severity":"medium","message":"ws@8.18.0 (npm) is affected by GHSA-58qx-3vcg-4xpx","path":"package-lock.json","line":null,"fingerprint":"ws@8.18.0 (npm):GHSA-58qx-3vcg-4xpx"},{"rule_id":"osv/GHSA-xffm-g5w8-qvg7","severity":"low","message":"@eslint/plugin-kit@0.2.8 (npm) is affected by GHSA-xffm-g5w8-qvg7","path":"package-lock.json","line":null,"fingerprint":"@eslint/plugin-kit@0.2.8 (npm):GHSA-xffm-g5w8-qvg7"},{"rule_id":"osv/GHSA-2gqq-gqf2-x968","severity":"low","message":"undici@7.18.2 (npm) is affected by GHSA-2gqq-gqf2-x968","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-2gqq-gqf2-x968"},{"rule_id":"osv/GHSA-35p6-xmwp-9g52","severity":"low","message":"undici@7.18.2 (npm) is affected by GHSA-35p6-xmwp-9g52","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-35p6-xmwp-9g52"},{"rule_id":"osv/GHSA-8436-99hf-9mmv","severity":"low","message":"undici@7.18.2 (npm) is affected by GHSA-8436-99hf-9mmv","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-8436-99hf-9mmv"},{"rule_id":"osv/GHSA-g8m3-5g58-fq7m","severity":"low","message":"undici@7.18.2 (npm) is affected by GHSA-g8m3-5g58-fq7m","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-g8m3-5g58-fq7m"},{"rule_id":"osv/GHSA-r53p-7pc4-xj5r","severity":"low","message":"undici@7.18.2 (npm) is affected by GHSA-r53p-7pc4-xj5r","path":"package-lock.json","line":null,"fingerprint":"undici@7.18.2 (npm):GHSA-r53p-7pc4-xj5r"},{"rule_id":"osv/GHSA-9jrq-w75r-8gcw","severity":"low","message":"vite@6.4.1 (npm) is affected by GHSA-9jrq-w75r-8gcw","path":"package-lock.json","line":null,"fingerprint":"vite@6.4.1 (npm):GHSA-9jrq-w75r-8gcw"}],"evidence":[],"data":{"ecosystems":["npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":12.0,"findings_high":9.0,"findings_medium":1.0,"findings_low":2.0,"penalty":111.0},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":13,"fingerprint":"unpinned-uses:.github/workflows/build.yml:13"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/build.yml:14"},{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/deploy.yml","line":12,"fingerprint":"excessive-permissions:.github/workflows/deploy.yml:12"},{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/deploy.yml","line":13,"fingerprint":"excessive-permissions:.github/workflows/deploy.yml:13"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":31,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:31"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":34,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:34"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":46,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:46"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":49,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:49"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":64,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:64"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/build.yml","line":10,"fingerprint":"excessive-permissions:.github/workflows/build.yml:10"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/build.yml","line":13,"fingerprint":"artipacked:.github/workflows/build.yml:13"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/deploy.yml","line":30,"fingerprint":"artipacked:.github/workflows/deploy.yml:30"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":0.0,"signed_commit_share":0.1964,"unpinned_manifests":2.0},"findings":[],"evidence":[{"kind":"posture","description":"packages/cors-proxy/package.json has no lockfile alongside it (unpinned dependencies)","ref":"packages/cors-proxy/package.json","url":null,"weight":0.3},{"kind":"posture","description":"packages/web/package.json has no lockfile alongside it (unpinned dependencies)","ref":"packages/web/package.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":195.0,"function_nloc":2398.0,"mean_ccn":2.77,"p90_ccn":7.0,"complex_functions":0.0,"long_functions":2.0,"many_param_functions":0.0,"risky_nloc_share":0.1272},"findings":[],"evidence":[{"kind":"complex-function","description":"render in packages/web/src/app.ts: complexity 12, 154 lines","ref":"packages/web/src/app.ts","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/packages/web/src/app.ts#L705","weight":0.2},{"kind":"complex-function","description":"render in packages/web/src/components/settings.ts: complexity 3, 151 lines","ref":"packages/web/src/components/settings.ts","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/packages/web/src/components/settings.ts#L424","weight":0.05}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":3399.0,"duplicated_lines":690.0,"duplicated_share":0.203,"files":15.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: packages/web/src/components/edit-tab-dialog.ts:13 and packages/web/src/components/edit-widget-dialog.ts:35","ref":"packages/web/src/components/edit-tab-dialog.ts","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/packages/web/src/components/edit-tab-dialog.ts#L13","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: packages/web/src/components/edit-widget-dialog.ts:60 and packages/web/src/components/settings.ts:44","ref":"packages/web/src/components/edit-widget-dialog.ts","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/packages/web/src/components/edit-widget-dialog.ts#L60","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: packages/web/src/components/notes.ts:19 and packages/web/src/components/rss.ts:24","ref":"packages/web/src/components/notes.ts","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/packages/web/src/components/notes.ts#L19","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: packages/web/src/components/settings.ts:358 and packages/web/src/components/settings.ts:386","ref":"packages/web/src/components/settings.ts","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/packages/web/src/components/settings.ts#L358","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: packages/web/src/services/data.ts:137 and packages/web/src/services/data.ts:159","ref":"packages/web/src/services/data.ts","url":"https://github.com/sinedied/freevibes/blob/9f2a4698b1609bf547cf2be7a1d8ee06ca121210/packages/web/src/services/data.ts#L137","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":0.0,"weighted_findings":0.0,"scanned_lines":4880.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":4880.0,"test_ratio":0.0,"ci_files":2.0,"cochange_share":0.0,"cochange_commits":42.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/build.yml","ref":".github/workflows/build.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/deploy.yml","ref":".github/workflows/deploy.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"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":100.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":1.0,"escapes":11.0,"escapes_per_kloc":2.262},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: packages/web/tsconfig.json","ref":"packages/web/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":1804.0,"other_lines":3076.0,"files_blamed":15.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":0.0,"quality:other_per_kloc":0.0,"security:ai_findings":9.0,"security:ai_per_kloc":4.989,"security:other_findings":42.0,"security:other_per_kloc":13.654,"security:ratio":0.37},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}