公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-27 22:26 UTC

dwainscheeren / dwains-lovelace-dashboard

An fully auto generating Home Assistant UI dashboard for desktop, tablet and mobile by Dwains for desktop, tablet, mobile

JavaScript · Python自定义许可证★ 2,055 星标⑂ 203 复刻始于 2019年11月在 GitHub 上查看 ↗

dwainscheeren/dwains-lovelace-dashboard 的健康指数为 100 分中的 56 分,处于「中等」区间。 其得分最高的类别是Vitality(73/100),最低的是AI Readiness(20/100)。 最近一次更新在 9 天前。 近期的大部分工作由 1 位贡献者完成。

56
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

56
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

Dwain Scheeren个人账户
204 关注者33 个公开仓库始于 2013年3月Dwain.nl

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

73良好 · 占总体的 22%
评分方式
28.8/36推送新近度 — 最近一次推送于 9 天前
6.2/36提交节奏 — 52 周中有 9 周有提交
15.3/18提交量 — 最近一年 50 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year50
human_commit_share1
days_since_last_push9
active_weeks_last_year9

发布纪律

92优秀
评分方式
27/27有发布版本 — 已发布 41 个发布版本
36/36发布时效 — 最近一次发布版本于 9 天前
19.8/27发布节奏 — 约每 115.2 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count41
latest_release_tagv3.9.4
releases_from_tags
days_since_latest_release9
mean_days_between_releases115.2
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

64中等 · 占总体的 18%
评分方式
53.7/60星标 — 2,055 个星标
19.2/25复刻 — 203 个复刻
9.6/15关注者 — 54 位关注者
所用输入
forks203
stars2,055
watchers54
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

44存在风险
评分方式
22.5/22.5README
16.9/22.5许可证 — 存在许可证文件,但不是可识别的许可证
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

59中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
7.6/22.5提交分布 — 头号贡献者编写了 66% 的提交
13.5/13.5贡献者广度 — 29 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 6 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled29
top_contributor_share0.66
评分方式
46.7/46.8议题解决 — 100% 的议题已关闭
24.5/38.3PR 接受 — 已裁定的 PR 中 87/136 已合并
7.5/15OpenSSF Scorecard:Code-Review — Found 5/10 approved changesets -- score normalized to 5
所用输入
merged_prs87
open_issues1
closed_issues718
issue_closed_ratio0.999
closed_unmerged_prs49
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
16.6/25所有者影响力 — dwainscheeren 有 204 位关注者
23.2/25既往记录 — 33 个公开仓库,账户约 13 年
所用输入
followers204
owner_typeUser
is_verified
owner_logindwainscheeren
public_repos33
account_age_days4,883
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

基础的工程与文档实践是否到位?

25危急 · 占总体的 20%
评分方式
0/24CI 工作流
0/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 0 out of 5 merged PRs checked by a CI test -- score normalized to 0
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

60中等
评分方式
30/30README
0/25文档目录
0/15文档 / 主页站点
10/10仓库描述
10/10主题标签 — 4 个主题标签
10/10Wiki
所用输入
topicshome-assistant, dwains-lovelace-dashboard, dashboard, home-assistant-dashboard
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

55中等 · 占总体的 16%

安全态势

44存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 0 out of 5 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
3.8/7.5Code-Review — Found 5/10 approved changesets -- score normalized to 5
2.5/2.5Contributors — project has 6 contributing companies or organizations
0/10Dangerous-Workflow — 无数据
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
0/5Pinned-Dependencies — 无数据
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — 无数据
0/7.5Vulnerabilities — 70 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate4.4
已排除计分(无数据或不适用):dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
0/25间接依赖不含已知公告 — 在此范围内,传递依赖集合无法与开发和测试依赖区分
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories73
affected_packages34
assessed_packages491
unassessed_packages0
affected_by_severitycritical 2, high 18, moderate 11, low 3
direct_affected_packages0
已排除计分(无数据或不适用):间接依赖不含已知公告, 没有长期未处理的公告。 其余权重已重新归一化。 已将 491 个已解析依赖与 OSV 比对。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

20危急 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
19.2/40可读的提交历史 — 100 次人类提交中有 36 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.36
agent_instruction_files
agent_instruction_max_bytes
评分方式
0/18一条命令的引导启动
0/22自动化测试
0/11Lint / 格式化配置
0/11静态类型检查
10/10可复现环境 — lockfile
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — 无数据
所用输入
has_nix
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
已排除计分(无数据或不适用):OpenSSF Scorecard:Pinned-Dependencies。 其余权重已重新归一化。
评分方式
0/45可类型检查的代码 — JavaScript,未配置类型检查
47.7/55可控的文件大小 — 采样的 45 个源文件中有 6 个超过 60KB
所用输入
primary_languageJavaScript
largest_source_bytes533,329
source_files_sampled45
oversized_source_files6

关键数据

2,055GitHub 星标
29贡献者
50最近 12 个月提交数
9距最近推送天数
41发布版本数
1巴士系数(bus factor)
1开放议题
软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

更多细节

Star 与 Fork 历史 0 ★ / 203 ⇿
0Star
203Fork
36发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

0408012016020020042020-022023-042026-06
主版本 3次版本 11修订 22

每个点涵盖 6 天。

OpenSSF Scorecard 4.4 / 10
4.4综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-27 22:26 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 5 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
5Code-ReviewFound 5/10 approved changesets -- score normalized to 5
10Contributorsproject has 6 contributing companies or organizations
不适用Dangerous-Workflowno workflows found
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
不适用Pinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
不适用Token-PermissionsNo tokens found
0Vulnerabilities70 existing vulnerabilities detected
全部依赖 491

来自 GitHub 依赖图的完整解析依赖集合:0 个直接依赖与 491 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

注册表软件包版本关系
npm@babel/code-frame7.24.2间接
npm@babel/helper-validator-identifier7.22.20间接
npm@babel/highlight7.24.2间接
npm@discoveryjs/json-ext0.5.7间接
npm@formatjs/ecma402-abstract1.11.4间接
npm@formatjs/fast-memoize1.2.1间接
npm@formatjs/icu-messageformat-parser2.1.0间接
npm@formatjs/icu-skeleton-parser1.3.6间接
npm@formatjs/intl-localematcher0.2.25间接
npm@formatjs/intl-utils3.8.4间接
npm@jridgewell/gen-mapping0.3.5间接
npm@jridgewell/resolve-uri3.1.2间接
npm@jridgewell/set-array1.2.1间接
npm@jridgewell/source-map0.3.6间接
npm@jridgewell/sourcemap-codec1.4.15间接
npm@jridgewell/trace-mapping0.3.25间接
npm@leichtgewicht/ip-codec2.0.4间接
npm@lit-labs/ssr-dom-shim1.2.0间接
npm@lit/reactive-element1.6.3间接
npm@mdi/js6.9.96间接
npm@nodelib/fs.scandir2.1.5间接
npm@nodelib/fs.stat2.0.5间接
npm@nodelib/fs.walk1.2.8间接
npm@types/body-parser1.19.5间接
npm@types/bonjour3.5.13间接
npm@types/connect3.4.38间接
npm@types/connect-history-api-fallback1.5.4间接
npm@types/eslint8.56.6间接
npm@types/eslint-scope3.7.7间接
npm@types/estree1.0.5间接
npm@types/express4.17.21间接
npm@types/express-serve-static-core4.17.43间接
npm@types/html-minifier-terser6.1.0间接
npm@types/http-errors2.0.4间接
npm@types/http-proxy1.17.14间接
npm@types/json-schema7.0.15间接
npm@types/mime1.3.5间接
npm@types/node20.11.30间接
npm@types/node-forge1.3.11间接
npm@types/parse-json4.0.2间接
npm@types/qs6.9.14间接
npm@types/range-parser1.2.7间接
npm@types/retry0.12.0间接
npm@types/send0.17.4间接
npm@types/serve-index1.9.4间接
npm@types/serve-static1.15.5间接
npm@types/sockjs0.3.36间接
npm@types/trusted-types2.0.7间接
npm@types/ws8.5.10间接
npm@webassemblyjs/ast1.12.1间接
npm@webassemblyjs/floating-point-hex-parser1.11.6间接
npm@webassemblyjs/helper-api-error1.11.6间接
npm@webassemblyjs/helper-buffer1.12.1间接
npm@webassemblyjs/helper-numbers1.11.6间接
npm@webassemblyjs/helper-wasm-bytecode1.11.6间接
npm@webassemblyjs/helper-wasm-section1.12.1间接
npm@webassemblyjs/ieee7541.11.6间接
npm@webassemblyjs/leb1281.11.6间接
npm@webassemblyjs/utf81.11.6间接
npm@webassemblyjs/wasm-edit1.12.1间接
npm@webassemblyjs/wasm-gen1.12.1间接
npm@webassemblyjs/wasm-opt1.12.1间接
npm@webassemblyjs/wasm-parser1.12.1间接
npm@webassemblyjs/wast-printer1.12.1间接
npm@webpack-cli/configtest1.2.0间接
npm@webpack-cli/info1.5.0间接
npm@webpack-cli/serve1.7.0间接
npm@xtuc/ieee7541.2.0间接
npm@xtuc/long4.2.2间接
npmaccepts1.3.8间接
npmacorn7.4.1间接
npmacorn8.11.3间接
npmacorn-import-assertions1.9.0间接
npmacorn-node1.8.2间接
npmacorn-walk7.2.0间接
npmajv6.12.6间接
npmajv8.12.0间接
npmajv-formats2.1.1间接
npmajv-keywords3.5.2间接
npmajv-keywords5.1.0间接
npmansi-html-community0.0.8间接
npmansi-regex5.0.1间接
npmansi-styles3.2.1间接
npmansi-styles4.3.0间接
npmanymatch3.1.3间接
npmarg5.0.2间接
npmarray-flatten1.1.1间接
npmarray-union2.1.0间接
npmat-least-node1.0.0间接
npmautoprefixer10.4.19间接
npmbalanced-match1.0.2间接
npmbatch0.6.1间接
npmbig.js5.2.2间接
npmbinary-extensions2.3.0间接
npmbody-parser1.20.2间接
npmbonjour-service1.2.1间接
npmboolbase1.0.0间接
npmbrace-expansion1.1.11间接
npmbraces3.0.2间接
npmbrowserslist4.23.0间接
npmbuffer-from1.1.2间接
npmbytes3.0.0间接
npmbytes3.1.2间接
npmcall-bind1.0.7间接
npmcallsites3.1.0间接
npmcamel-case4.1.2间接
npmcamelcase-css2.0.1间接
npmcaniuse-lite1.0.30001600间接
npmcard-tools2.1.2间接
npmchalk2.4.2间接
npmchalk4.1.2间接
npmchokidar3.6.0间接
npmchrome-trace-event1.0.3间接
npmclean-css5.3.3间接
npmcliui7.0.4间接
npmclone-deep4.0.1间接
npmcolor4.2.3间接
npmcolor-convert1.9.3间接
npmcolor-convert2.0.1间接
npmcolor-name1.1.3间接
npmcolor-name1.1.4间接
npmcolor-string1.9.1间接
npmcolorette2.0.20间接
npmcommander2.20.3间接
npmcommander7.2.0间接
npmcommander8.3.0间接
npmcompressible2.0.18间接
npmcompression1.7.4间接
npmconcat-map0.0.1间接
npmconnect-history-api-fallback2.0.0间接
npmcontent-disposition0.5.4间接
npmcontent-type1.0.5间接
npmcookie0.6.0间接
npmcookie-signature1.0.6间接
npmcore-util-is1.0.3间接
npmcosmiconfig7.1.0间接
npmcross-spawn7.0.3间接
npmcss-color-names0.0.4间接
npmcss-loader5.2.7间接
npmcss-select4.3.0间接
npmcss-unit-converter1.1.2间接
npmcss-what6.1.0间接
npmcssesc3.0.0间接
npmcustom-card-helpers1.9.0间接
npmdebug2.6.9间接
npmdebug4.3.4间接
npmdefault-gateway6.0.3间接
npmdefine-data-property1.1.4间接
npmdefine-lazy-prop2.0.0间接
npmdefined1.0.1间接
npmdepd1.1.2间接
npmdepd2.0.0间接
npmdependency-graph0.9.0间接
npmdestroy1.2.0间接
npmdetect-node2.1.0间接
npmdetective5.2.1间接
npmdidyoumean1.2.2间接
npmdir-glob3.0.1间接
npmdlv1.1.3间接
npmdns-packet5.6.1间接
npmdom-converter0.2.0间接
npmdom-serializer1.4.1间接
npmdomelementtype2.3.0间接
npmdomhandler4.3.1间接
npmdomutils2.8.0间接
npmdot-case3.0.4间接
npmee-first1.1.1间接
npmelectron-to-chromium1.4.715间接
npmemoji-regex8.0.0间接
npmemojis-list3.0.0间接
npmencodeurl1.0.2间接
npmenhanced-resolve5.16.0间接
npmentities2.2.0间接
npmenvinfo7.11.1间接
npmerror-ex1.3.2间接
npmes-define-property1.0.0间接
npmes-errors1.3.0间接
npmes-module-lexer1.4.2间接
npmescalade3.1.2间接
npmescape-html1.0.3间接
npmescape-string-regexp1.0.5间接
npmeslint-scope5.1.1间接
npmesrecurse4.3.0间接
npmestraverse4.3.0间接
npmestraverse5.3.0间接
npmetag1.8.1间接
npmeventemitter34.0.7间接
npmevents3.3.0间接
npmexeca5.1.1间接
npmexpress4.19.1间接
npmfast-deep-equal3.1.3间接
npmfast-glob3.3.2间接
npmfast-json-stable-stringify2.1.0间接
npmfastest-levenshtein1.0.16间接
npmfastq1.17.1间接
npmfaye-websocket0.11.4间接
npmfill-range7.0.1间接
npmfinalhandler1.2.0间接
npmfind-up4.1.0间接
npmflat5.0.2间接
npmfollow-redirects1.15.6间接
npmforwarded0.2.0间接
npmfraction.js4.3.7间接
npmfresh0.5.2间接
npmfs-extra10.1.0间接
npmfs-extra9.1.0间接
npmfs-monkey1.0.5间接
npmfs.realpath1.0.0间接
npmfsevents2.3.3间接
npmfunction-bind1.1.2间接
npmget-caller-file2.0.5间接
npmget-intrinsic1.2.4间接
npmget-stdin8.0.0间接
npmget-stream6.0.1间接
npmglob7.2.3间接
npmglob-parent5.1.2间接
npmglob-parent6.0.2间接
npmglob-to-regexp0.4.1间接
npmglobby11.1.0间接
npmgopd1.0.1间接
npmgraceful-fs4.2.11间接
npmhandle-thing2.0.1间接
npmhas-flag3.0.0间接
npmhas-flag4.0.0间接
npmhas-property-descriptors1.0.2间接
npmhas-proto1.0.3间接
npmhas-symbols1.0.3间接
npmhasown2.0.2间接
npmhe1.2.0间接
npmhex-color-regex1.1.0间接
npmhome-assistant-js-websocket6.1.1间接
npmhpack.js2.1.6间接
npmhsl-regex1.0.0间接
npmhsla-regex1.0.0间接
npmhtml-entities2.5.2间接
npmhtml-minifier-terser6.1.0间接
npmhtml-tags3.3.1间接
npmhtml-webpack-plugin5.6.0间接
npmhtmlparser26.1.0间接
npmhttp-deceiver1.2.7间接
npmhttp-errors1.6.3间接
npmhttp-errors2.0.0间接
npmhttp-parser-js0.5.8间接
npmhttp-proxy1.18.1间接
npmhttp-proxy-middleware2.0.6间接
npmhuman-signals2.1.0间接
npmiconv-lite0.4.24间接
npmicss-utils5.1.0间接
npmignore5.3.1间接
npmimport-fresh3.3.0间接
npmimport-local3.1.0间接
npminflight1.0.6间接
npminherits2.0.3间接
npminherits2.0.4间接
npminterpret2.2.0间接
npmintl-messageformat9.13.0间接
npmipaddr.js1.9.1间接
npmipaddr.js2.1.0间接
npmis-arrayish0.2.1间接
npmis-arrayish0.3.2间接
npmis-binary-path2.1.0间接
npmis-color-stop1.1.0间接
npmis-core-module2.13.1间接
npmis-docker2.2.1间接
npmis-extglob2.1.1间接
npmis-fullwidth-code-point3.0.0间接
npmis-glob4.0.3间接
npmis-number7.0.0间接
npmis-plain-obj3.0.0间接
npmis-plain-object2.0.4间接
npmis-stream2.0.1间接
npmis-wsl2.2.0间接
npmisarray1.0.0间接
npmisexe2.0.0间接
npmisobject3.0.1间接
npmjest-worker27.5.1间接
npmjs-cookie3.0.5间接
npmjs-tokens4.0.0间接
npmjson-parse-even-better-errors2.3.1间接
npmjson-schema-traverse0.4.1间接
npmjson-schema-traverse1.0.0间接
npmjson52.2.3间接
npmjsonfile6.1.0间接
npmkind-of6.0.3间接
npmklona2.0.6间接
npmlaunch-editor2.6.1间接
npmlilconfig2.1.0间接
npmlines-and-columns1.2.4间接
npmlit2.8.0间接
npmlit-element2.5.1间接
npmlit-element3.3.3间接
npmlit-html1.4.1间接
npmlit-html2.8.0间接
npmloader-runner4.3.0间接
npmloader-utils2.0.4间接
npmlocate-path5.0.0间接
npmlodash4.17.21间接
npmlodash.topath4.5.2间接
npmlower-case2.0.2间接
npmlru-cache6.0.0间接
npmmedia-typer0.3.0间接
npmmemfs3.5.3间接
npmmerge-descriptors1.0.1间接
npmmerge-stream2.0.0间接
npmmerge21.4.1间接
npmmethods1.1.2间接
npmmicromatch4.0.5间接
npmmime1.6.0间接
npmmime-db1.52.0间接
npmmime-types2.1.35间接
npmmimic-fn2.1.0间接
npmminimalistic-assert1.0.1间接
npmminimatch3.1.2间接
npmminimist1.2.8间接
npmmodern-normalize1.1.0间接
npmms2.0.0间接
npmms2.1.2间接
npmms2.1.3间接
npmmulticast-dns7.2.5间接
npmnanoid3.3.7间接
npmnegotiator0.6.3间接
npmneo-async2.6.2间接
npmno-case3.0.4间接
npmnode-emoji1.11.0间接
npmnode-forge1.3.1间接
npmnode-releases2.0.14间接
npmnormalize-path3.0.0间接
npmnormalize-range0.1.2间接
npmnpm-run-path4.0.1间接
npmnth-check2.1.1间接
npmobject-hash2.2.0间接
npmobject-inspect1.13.1间接
npmobuf1.1.2间接
npmon-finished2.4.1间接
npmon-headers1.0.2间接
npmonce1.4.0间接
npmonetime5.1.2间接
npmopen8.4.2间接
npmp-limit2.3.0间接
npmp-locate4.1.0间接
npmp-retry4.6.2间接
npmp-try2.2.0间接
npmparam-case3.0.4间接
npmparent-module1.0.1间接
npmparse-json5.2.0间接
npmparseurl1.3.3间接
npmpascal-case3.1.2间接
npmpath-exists4.0.0间接
npmpath-is-absolute1.0.1间接
npmpath-key3.1.1间接
npmpath-parse1.0.7间接
npmpath-to-regexp0.1.7间接
npmpath-type4.0.0间接
npmpicocolors1.0.0间接
npmpicomatch2.3.1间接
npmpify2.3.0间接
npmpkg-dir4.2.0间接
npmpostcss8.4.38间接
npmpostcss-cli8.3.1间接
npmpostcss-js3.0.3间接
npmpostcss-load-config3.1.4间接
npmpostcss-loader5.3.0间接
npmpostcss-modules-extract-imports3.0.0间接
npmpostcss-modules-local-by-default4.0.4间接
npmpostcss-modules-scope3.1.1间接
npmpostcss-modules-values4.0.0间接
npmpostcss-nested5.0.6间接
npmpostcss-reporter7.1.0间接
npmpostcss-selector-parser6.0.16间接
npmpostcss-value-parser3.3.1间接
npmpostcss-value-parser4.2.0间接
npmpretty-error4.0.0间接
npmpretty-hrtime1.0.3间接
npmprocess-nextick-args2.0.1间接
npmproxy-addr2.0.7间接
npmpunycode2.3.1间接
npmpurgecss4.1.3间接
npmqs6.11.0间接
npmqueue-microtask1.2.3间接
npmquick-lru5.1.1间接
npmrandombytes2.1.0间接
npmrange-parser1.2.1间接
npmraw-body2.5.2间接
npmread-cache1.0.0间接
npmreadable-stream2.3.8间接
npmreadable-stream3.6.2间接
npmreaddirp3.6.0间接
npmrechoir0.7.1间接
npmreduce-css-calc2.1.8间接
npmrelateurl0.2.7间接
npmrenderkid3.0.0间接
npmrequire-directory2.1.1间接
npmrequire-from-string2.0.2间接
npmrequires-port1.0.0间接
npmresolve1.22.8间接
npmresolve-cwd3.0.0间接
npmresolve-from4.0.0间接
npmresolve-from5.0.0间接
npmretry0.13.1间接
npmreusify1.0.4间接
npmrgb-regex1.0.1间接
npmrgba-regex1.0.0间接
npmrimraf3.0.2间接
npmrollup2.79.1间接
npmrun-parallel1.2.0间接
npmsafe-buffer5.1.2间接
npmsafe-buffer5.2.1间接
npmsafer-buffer2.1.2间接
npmschema-utils3.3.0间接
npmschema-utils4.2.0间接
npmselect-hose2.0.0间接
npmselfsigned2.4.1间接
npmsemver7.6.0间接
npmsend0.18.0间接
npmserialize-javascript6.0.2间接
npmserve-index1.9.1间接
npmserve-static1.15.0间接
npmset-function-length1.2.2间接
npmsetprototypeof1.1.0间接
npmsetprototypeof1.2.0间接
npmshallow-clone3.0.1间接
npmshebang-command2.0.0间接
npmshebang-regex3.0.0间接
npmshell-quote1.8.1间接
npmside-channel1.0.6间接
npmsignal-exit3.0.7间接
npmsimple-swizzle0.2.2间接
npmslash3.0.0间接
npmsockjs0.3.24间接
npmsortablejs1.15.2间接
npmsource-map0.6.1间接
npmsource-map-js1.2.0间接
npmsource-map-support0.5.21间接
npmspdy4.0.2间接
npmspdy-transport3.0.0间接
npmstatuses1.5.0间接
npmstatuses2.0.1间接
npmstring-width4.2.3间接
npmstring_decoder1.1.1间接
npmstring_decoder1.3.0间接
npmstrip-ansi6.0.1间接
npmstrip-final-newline2.0.0间接
npmstyle-loader2.0.0间接
npmsuperstruct0.15.5间接
npmsupports-color5.5.0间接
npmsupports-color7.2.0间接
npmsupports-color8.1.1间接
npmsupports-preserve-symlinks-flag1.0.0间接
npmtailwindcss2.2.19间接
npmtapable2.2.1间接
npmterser5.29.2间接
npmterser-webpack-plugin5.3.10间接
npmthenby1.3.4间接
npmthunky1.1.0间接
npmtmp0.2.3间接
npmto-regex-range5.0.1间接
npmtoidentifier1.0.1间接
npmtslib2.6.2间接
npmtype-is1.6.18间接
npmtypescript4.9.5间接
npmundici-types5.26.5间接
npmuniversalify2.0.1间接
npmunpipe1.0.0间接
npmupdate-browserslist-db1.0.13间接
npmuri-js4.4.1间接
npmutil-deprecate1.0.2间接
npmutila0.4.0间接
npmutils-merge1.0.1间接
npmuuid8.3.2间接
npmvary1.1.2间接
npmwatchpack2.4.1间接
npmwbuf1.7.3间接
npmwebpack5.91.0间接
npmwebpack-cli4.10.0间接
npmwebpack-dev-middleware5.3.4间接
npmwebpack-dev-server4.15.2间接
npmwebpack-merge5.10.0间接
npmwebpack-sources3.2.3间接
npmwebsocket-driver0.7.4间接
npmwebsocket-extensions0.1.4间接
npmwhich2.0.2间接
npmwildcard2.0.1间接
npmwrap-ansi7.0.0间接
npmwrappy1.0.2间接
npmws8.16.0间接
npmxtend4.0.2间接
npmy18n5.0.8间接
npmyallist4.0.0间接
npmyaml1.10.2间接
npmyargs16.2.0间接
npmyargs-parser20.2.9间接
依赖安全公告 34

该仓库未发布可被索引解析的包,因此评估的是其自身的依赖图——共 491 个包,其中也包含从不交付的开发与测试版本固定:34 个存在已知公告,0 个为直接依赖。

软件包版本关系严重程度公告数修复版本
rollup2.79.1间接严重24.59.0
shell-quote1.8.1间接严重21.9.0
body-parser1.20.2间接22.3.0
brace-expansion1.1.11间接45.0.8
braces3.0.2间接13.0.3
cross-spawn7.0.3间接17.0.5
http-proxy-middleware2.0.6间接44.1.0
js-cookie3.0.5间接13.0.7
lodash4.17.21间接34.18.0
minimatch3.1.2间接310.2.3
node-forge1.3.1间接71.4.0
path-to-regexp0.1.7间接38.0.0
picomatch2.3.1间接24.0.4
postcss8.4.38间接38.5.18
serialize-javascript6.0.2间接27.0.5
tmp0.2.3间接20.2.6
uuid8.3.2间接113.0.1
webpack5.91.0间接35.104.1
websocket-driver0.7.4间接20.7.5
ws8.16.0间接38.21.0
ajv6.12.6间接18.18.0
ajv8.12.0间接18.18.0
express4.19.1间接25.0.0-beta.3
follow-redirects1.15.6间接11.16.0
micromatch4.0.5间接14.0.8
nanoid3.3.7间接15.0.9
qs6.11.0间接26.14.2
send0.18.0间接10.19.0
serve-static1.15.0间接12.1.0
webpack-dev-server4.15.2间接65.2.6
yaml1.10.2间接12.8.3
cookie0.6.0间接10.7.0
launch-editor2.6.1间接28.0.16
on-headers1.0.2间接11.1.0

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "home-assistant",
        "dwains-lovelace-dashboard",
        "dashboard",
        "home-assistant-dashboard"
      ],
      "is_fork": false,
      "size_kb": 26179,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Python": 112339,
        "JavaScript": 645394
      },
      "pushed_at": "2026-07-18T09:36:42Z",
      "created_at": "2019-11-19T12:09:32Z",
      "owner_type": "User",
      "updated_at": "2026-07-27T07:32:52Z",
      "description": "An fully auto generating Home Assistant UI dashboard for desktop, tablet and mobile by Dwains for desktop, tablet, mobile",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "3.0",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Python"
      ]
    },
    "owner": {
      "blog": "https://www.dwain.nl",
      "name": "Dwain Scheeren",
      "type": "User",
      "login": "dwainscheeren",
      "company": "Dwain.nl",
      "location": "Netherlands",
      "followers": 204,
      "avatar_url": "https://avatars.githubusercontent.com/u/3868853?v=4",
      "created_at": "2013-03-14T21:30:19Z",
      "is_verified": null,
      "public_repos": 33,
      "account_age_days": 4883
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.9.4",
          "kind": "patch",
          "published_at": "2026-07-18T09:37:14Z"
        },
        {
          "tag": "v3.9.3",
          "kind": "patch",
          "published_at": "2026-06-28T12:21:38Z"
        },
        {
          "tag": "v3.9.2",
          "kind": "patch",
          "published_at": "2026-06-26T17:52:51Z"
        },
        {
          "tag": "v3.9.1",
          "kind": "patch",
          "published_at": "2026-06-24T07:11:39Z"
        },
        {
          "tag": "v3.9.0",
          "kind": "minor",
          "published_at": "2026-06-19T11:16:01Z"
        },
        {
          "tag": "v3.8.0",
          "kind": "minor",
          "published_at": "2025-04-07T19:41:48Z"
        },
        {
          "tag": "v3.7.1",
          "kind": "patch",
          "published_at": "2024-05-02T19:48:53Z"
        },
        {
          "tag": "v3.7.0",
          "kind": "minor",
          "published_at": "2024-04-14T18:25:49Z"
        },
        {
          "tag": "v3.6.0",
          "kind": "minor",
          "published_at": "2023-10-24T14:44:37Z"
        },
        {
          "tag": "v3.5.0",
          "kind": "minor",
          "published_at": "2023-09-15T11:11:58Z"
        },
        {
          "tag": "v3.4.3",
          "kind": "patch",
          "published_at": "2023-03-18T15:05:39Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2022-09-16T19:16:30Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2022-07-19T19:47:04Z"
        },
        {
          "tag": "v3.1.1",
          "kind": "patch",
          "published_at": "2022-05-13T16:23:17Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2022-05-11T09:08:01Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2022-04-24T12:14:03Z"
        },
        {
          "tag": "v2.0.7",
          "kind": "patch",
          "published_at": "2022-02-13T15:42:02Z"
        },
        {
          "tag": "v2.0.5",
          "kind": "patch",
          "published_at": "2021-12-14T20:39:39Z"
        },
        {
          "tag": "v2.0.4",
          "kind": "patch",
          "published_at": "2021-12-05T20:18:00Z"
        },
        {
          "tag": "v2.0.3",
          "kind": "patch",
          "published_at": "2021-05-05T09:56:58Z"
        },
        {
          "tag": "v2.0.2",
          "kind": "patch",
          "published_at": "2021-04-08T10:10:18Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2021-01-16T19:29:50Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2020-11-16T19:09:57Z"
        },
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2020-07-16T08:57:09Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2020-06-14T17:09:03Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2020-04-07T12:57:04Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2020-04-04T18:35:12Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2020-02-29T15:19:52Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2020-02-26T10:51:45Z"
        },
        {
          "tag": "v1.1.5",
          "kind": "patch",
          "published_at": "2020-02-16T17:40:51Z"
        },
        {
          "tag": "v1.1.4",
          "kind": "patch",
          "published_at": "2020-02-16T15:27:32Z"
        },
        {
          "tag": "v1.1.3",
          "kind": "patch",
          "published_at": "2020-02-16T15:19:59Z"
        },
        {
          "tag": "v1.1.2",
          "kind": "patch",
          "published_at": "2020-02-14T14:46:41Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2020-02-11T18:10:08Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2020-02-11T17:55:03Z"
        },
        {
          "tag": "v1.0.5",
          "kind": "patch",
          "published_at": "2020-02-03T17:39:37Z"
        },
        {
          "tag": "v1.0.4",
          "kind": "patch",
          "published_at": "2020-02-03T13:32:46Z"
        },
        {
          "tag": "v1.0.3",
          "kind": "patch",
          "published_at": "2020-02-03T12:54:44Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2020-02-03T11:52:58Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2020-02-02T21:16:25Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2020-02-02T19:01:11Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "2f4046764237cd161e38b0e237e86269061a3f27",
          "body": null,
          "is_bot": false,
          "headline": "Release 3.9.4",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-07-18T09:35:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfc0ece030e8071389968a31d8407131813fedab",
          "body": "Fix sorting order & small feature",
          "is_bot": false,
          "headline": "Merge pull request #913 from tristanXme/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-07-18T09:31:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94022e6194b3a9bb0d271abec80b6a1a5d5d4b15",
          "body": "More page fixes",
          "is_bot": false,
          "headline": "Fixes for more page",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-18T00:21:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eac918a29b18ecf8cf6cdb4aca6d3725b44edd55",
          "body": "This PR improves Dwains Dashboard v3 stability, performance and visual consistency compared to the previous state.\nChanges included:\n- Fixed intermittent redirects to the Home Assistant default dashboard, especially in the iOS app during reloads.\n- Removed the old Home Redirect workaround completely\n[…]\nes detail view by mounting visible device cards immediately instead of lazy-mounting them after the category view is shown.\n- Kept lazy loading where it is still useful, such as larger overview pages.",
          "is_bot": false,
          "headline": "Improve dashboard stability, performance and UI consistency",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-17T22:29:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "573531bf775a29302900136c826a0b21e8aca57a",
          "body": "Fixed some additional errors that could happen when refreshing DD3",
          "is_bot": false,
          "headline": "Redirect Improvements",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-17T13:17:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "458ed4e894311058a7aa4fec8f0235e458dc675f",
          "body": "### Performance improvements\n\n- Added short-lived caching for `dwains_dashboard/configuration/get` on the backend to avoid repeatedly reading the same YAML configuration during dashboard startup.\n- Added frontend deduplication for expensive read-only websocket calls:\n  - `dwains_dashboard/configurat\n[…]\nted YAML configuration parsing on startup.\n- Improves perceived dashboard load time, especially on larger Home Assistant installations with many entities, devices, areas, custom cards, or popup cards.",
          "is_bot": false,
          "headline": "Performance improvements",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-16T07:02:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "de3cc453482906272203ad00e5cd028fda0977fd",
          "body": "## Summary\n\n- Add a route-aware frontend loader for the main Dwains Dashboard bundle\n- Keep the lightweight layout helper loaded globally so the Dwains custom layout is available before dashboard render\n- Stop loading the full `dwains-dashboard.js` bundle on every Home Assistant page\n- Load `dwains-\n[…]\nen Home Assistant’s Home Overview instead of the configured default dashboard.\n\nThe new loader keeps Dwains available when needed, but avoids running the full dashboard bundle on unrelated dashboards.",
          "is_bot": false,
          "headline": "Redirect fixes",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-12T11:50:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6d0f4dbf9cd5ce2ae629574a4a723f35f86bc9e3",
          "body": "Home Assistant 2026.7 reports a blocking call because the options flow loaded translation JSON files with synchronous `open()` while building selector labels.\n\nThis moves translation loading into `hass.async_add_executor_job(...)` and caches the loaded translation data. The config flow now builds the same translated selector labels without doing file I/O inside the event loop.",
          "is_bot": false,
          "headline": "Fix blocking translation file read in config flow",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-11T13:12:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f98a27c0b17382b1e6eae125581080d6402b3e6e",
          "body": "- Fixed Home Redirect setting not being persisted correctly from the integration options.\n- Removed the frontend localStorage fallback for home_redirect_enabled, so stale browser values can no longer trigger redirects.\n- Home Redirect is now controlled only by the server-side Dwains Dashboard setting and remains disabled by default.",
          "is_bot": false,
          "headline": "Redirect fixes",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-11T13:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ec8659927ee8cedf1ee5322e590292bac53dd0f",
          "body": "- Removed unused aiofiles imports from Dwains Dashboard backend files.\n- Fixes startup failure on Home Assistant 2026.7.x when aiofiles is missing, downgraded, or installed inconsistently.\n- Avoids unnecessary dependency on aiofiles, since the imported modules were not used.",
          "is_bot": false,
          "headline": "2026.07 fixes",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-11T12:25:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a7ea4a067149bae9315598979f5ec61e777f9e8",
          "body": "Added configurable binary sensor display for area overview cards.\nAdded support for selecting binary sensor device classes and explicit binary sensor entities in integration settings.\nAdded localized summary texts for common binary sensor classes, including window, door, lock, garage door, moisture,\n[…]\nred instead of being treated as inactive/closed.\nAdded proper lock summaries instead of falling back to generic “active” text.\nEnsured normal area sensor values also ignore unavailable/unknown states.",
          "is_bot": false,
          "headline": "Binary Sensors in Area Overview",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-07T13:51:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2f7a0878c72eed3e21c4c20d8bc246a8791caf1a",
          "body": "- Fix grouped entity sorting so saved `grouped_sort_order` is applied before entities are grouped and rendered.\n- Add global integration settings for:\n  - entity grouping in area view\n  - floor grouping in area overview\n- Keep the current behavior as default with `Per Client`.\n- Add `Enabled` and `D\n[…]\n from `settings.yaml`.\n- Hide the in-dashboard grouping toggle when the corresponding grouping mode is globally enforced.\n- Add German and English translation labels/descriptions for the new settings.",
          "is_bot": false,
          "headline": "Fix sorting order & small feature",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-07-05T09:23:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9614c768c180c81edcc4f669136fd5e27c4c3ae3",
          "body": null,
          "is_bot": false,
          "headline": "Release 3.9.3",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-28T12:21:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81c6c4af47da0cb874f5a9838b103c6bb0b510c4",
          "body": "Fix area view sorting and add siren domain translation.",
          "is_bot": false,
          "headline": "Merge pull request #912 from tristanXme/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-28T12:18:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62378d0555d1460577e03f62e0343bed9a4b4df1",
          "body": "- Fixed sorting in the area view when entity grouping is disabled.\n\n- Added missing translation for the `siren` domain.",
          "is_bot": false,
          "headline": "small fixes for the area view editor",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-28T10:04:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5757d8597c3750867ec8dd2518883c074ddb43fb",
          "body": "…ashboard into 3.0",
          "is_bot": false,
          "headline": "Merge branch '3.0' of https://github.com/tristanXme/dwains-lovelace-d…",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-28T10:03:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dc149f107f7cddcccafada105ea342ee8e2e2ce",
          "body": "- Fixed sorting in the area view when entity grouping is disabled.\n\n- Added missing translation for the `siren` domain.",
          "is_bot": false,
          "headline": "small fixes for the area view editor",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-28T10:02:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4afdeff74da488b883fddb1527f859bd8989e810",
          "body": null,
          "is_bot": false,
          "headline": "Release 3.9.2",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-26T17:52:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4aa1ac75054f39f99ab669504a0aff420e9d5d20",
          "body": "Area overview, custom card, blueprint table and popup card fixes.",
          "is_bot": false,
          "headline": "Merge pull request #911 from tristanXme/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-26T17:48:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e639ecac2e67ee1ecd5dde8b1842839ff3692807",
          "body": "Fixed custom-card size dropdowns in the area editor not applying selected row/column values on current Home Assistant versions.\nReplaced legacy ha-list-item options with ha-dropdown-item, restoring the required selection event handling.\nUpdated the selection handler to prioritize the explicit field \n[…]\nt’s internal type property.\nFixed the incorrect value for “3 rows” in the extra-large breakpoint selector (previously saved as 4).\nUpdated both the source file and compiled dwains-dashboard.js bundle.",
          "is_bot": false,
          "headline": "Custom Card fixes",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-26T07:08:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ced79339814f2781d712197b30e91eb09d137dd5",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch '3.0' into 3.0",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-25T14:57:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdaa4e8bda185756a9cb974ea28f4cdd6c62f048",
          "body": "fixed merge conflict",
          "is_bot": false,
          "headline": "fixed merge conflict",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-25T14:53:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c246c0a0ed704b4cf94c5b5247b8a3e23ebb4c33",
          "body": "…rd 3.9.1.\n\nArea overview cards\nFixed shutter/garage cover counters in area cards.\nCover counters now respect the configured cover logic.\nImproved the right-side area status icon layout:icons wrap earlier when needed,\nthe right column remains aligned to the right,\nsensor text no longer clips the ico\n[…]\n editing\nFixed popup card save behavior.\nSaving popup card settings no longer redirects away from the current area/device view.\nPopup card changes are now applied while preserving the current context.",
          "is_bot": false,
          "headline": "This PR contains several fixes and UI improvements for Dwains Dashboa…",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-25T14:45:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "629a28d5f6f829ef66177a712b2317ce0d1b490c",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-24T07:13:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95ea762c649d2c49c48845584fc404b659a6e5e3",
          "body": null,
          "is_bot": false,
          "headline": "Release 3.9.1",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-24T07:09:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "741d3876df418c44a6a995c8fef77c8b1646226e",
          "body": "More fixes and small features",
          "is_bot": false,
          "headline": "Merge pull request #910 from tristanXme/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-24T05:59:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44c882e111c12d432b355a4921c72cbdb353cfa4",
          "body": "## Included changes\n\n- Filter hidden, disabled, and excluded entities and persons from header information and popups\n- Keep idle climate devices visible in climate popups\n- Use consistent entity names across:\n  - Homepage and favorites\n  - Device pages\n  - Header information popups\n  - Climate and m\n[…]\ntion handling:\n  - Require `areaId`\n  - Resolve `areas.yaml` through the active HA configuration path\n  - Handle an empty `areas.yaml` safely\n- Rebuild the distributed JavaScript bundle and source map",
          "is_bot": false,
          "headline": "More fixes and small features",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-23T20:43:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "011003dcb947e089e6ee9bb0d5084bb8237d3e94",
          "body": "Restore missing  fixes",
          "is_bot": false,
          "headline": "Merge pull request #909 from tristanXme/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-23T18:38:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39d9295147b62fb69289acdc9154a967da53f795",
          "body": "…tibility\n\n## Summary\n\nThis PR restores frontend fixes that were missing from the Dwains Dashboard 3.9 source files while keeping the original dashboard configuration and reload logic unchanged.\n\n## Changes\n\n- Respect existing hidden, disabled, and excluded entity settings in header summaries.\n- Res\n[…]\navailable.\n\n## Validation\n\n- Production Webpack build completed successfully.\n- JavaScript syntax checked.\n- Bundle and source map regenerated.\n- Source-map contents verified against the source files.",
          "is_bot": false,
          "headline": "Restore missing frontend fixes and improve Dwains Dashboard 3.9 compa…",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-23T16:05:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a0a19c8f0b1a1ec2bf53e1d8d88ca71e5263b2cb",
          "body": "…mance\n\n## Summary\n\nThis PR ports missing fixes to the Dwains Dashboard 3.9 source files and adds compatibility, reliability, and performance improvements.\n\n## Changes\n\n- Prevent hidden, disabled, or excluded entities from appearing incorrectly in the header.\n- Restore improved climate-device popup \n[…]\noduction build completed successfully.\n- Generated bundle and source map updated.\n- JavaScript bundle syntax checked.\n- Python source parsed successfully.\n- Copied files verified using SHA-256 hashes.",
          "is_bot": false,
          "headline": "Restore missing custom fixes and improve dashboard reliability/perfor…",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-23T15:51:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7568965bd105b92a840d02709495bafbe29be080",
          "body": null,
          "is_bot": false,
          "headline": "Restore missing fixes",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-23T15:14:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e8638109ade96feb7e9b1ac39ceedeab21c581d",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'dwainscheeren:3.0' into 3.0",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-23T14:55:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bef7d792f3b3f1bd4774b9b7bb4880bcce9b3fb5",
          "body": null,
          "is_bot": false,
          "headline": "Update DD3 maintenance status",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-19T15:21:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "091637a22b528b944645218a7f07a38891672a3a",
          "body": null,
          "is_bot": false,
          "headline": "Update Home Assistant minimum version",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-19T11:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be04cd19984ec204a58e28182fddcc64aa2bf600",
          "body": null,
          "is_bot": false,
          "headline": "Release 3.9.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-19T11:15:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f92dc49da3b5386acfa749330ef17b2420b1ab6c",
          "body": null,
          "is_bot": false,
          "headline": "Publish DD3 frontend source",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-19T10:18:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2be5824566e3c0f437315a0f09fec241eeb38e54",
          "body": "fixes for 2026.06",
          "is_bot": false,
          "headline": "Merge pull request #905 from tristanXme/tristanXme-patch-1",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-17T13:22:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a5b17fda2819084e506f8264a37097dd4907e6b",
          "body": "fixes for 2026.06",
          "is_bot": false,
          "headline": "Merge pull request #1 from tristanXme/tristanXme-patch-1",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-08T15:43:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d15295b56e3ed28e279dd93d49a2fedc99fe4ace",
          "body": null,
          "is_bot": false,
          "headline": "fixes for 2026.06",
          "author_name": "Tristan",
          "author_login": "tristanXme",
          "committed_at": "2026-06-08T15:42:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "379ad12881c8584484a7fb8a1f6ce2b0f5e42cd4",
          "body": "A ton of fixes",
          "is_bot": false,
          "headline": "Merge pull request #904 from Onepamopa/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2026-06-08T06:09:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67ca70ae71df52b0ac5fbe1c51935822385b9e29",
          "body": null,
          "is_bot": false,
          "headline": "Tristan fixes #2",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2026-05-26T08:38:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6750b258520cde2ec62c4f9a55174e082d7fd24e",
          "body": ":)",
          "is_bot": false,
          "headline": "Tristan's improvements",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2026-05-25T17:39:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b0a3e1c250840633148244d8e259ca829914939",
          "body": "- Area buttons fixes\n- Climate empty modal (from the header) fix.",
          "is_bot": false,
          "headline": "A few more UI fixes",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2026-05-25T16:30:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55e08841f7b1590553b669584106bb4f0c34f3e8",
          "body": "I moved the dashboard's Settings into the integration settings. Realistically how often do we need to click the settings to change something? Not very often, and doing it this way should practically eliminate the \"Configuration error\" problem.",
          "is_bot": false,
          "headline": "Configuration error - finally fixed",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2026-05-25T16:12:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73dcd093c080604b39e9e7b44396d211d88d6a14",
          "body": "A ton of fixes",
          "is_bot": false,
          "headline": "A ton of fixes",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2026-05-25T14:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4363fbe3209b6f88a08ec0e0220ad83259ae8f3",
          "body": "Update dwains-dashboard.js to fix 2025.5 breaking changes",
          "is_bot": false,
          "headline": "Merge pull request #879 from mikkelke/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-09-01T07:46:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ce1bf8ff3d60129a6a9f3a61da5e1db9bba20af",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-08-06T06:36:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6555b29769a0bcd6d649233d75757ceda5a9d3a0",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-08-06T06:36:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bbf837a73aa9601aab7ead41d803495e38df0f20",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-08-06T06:34:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82351a735787f9622f45c3a23a85d1a5d072fa9f",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-08-06T06:10:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99ecda39be43c4a623509ddb382263b26d3c2e82",
          "body": "Fixed 2025.5 breaking changes",
          "is_bot": false,
          "headline": "Update dwains-dashboard.js",
          "author_name": "MKE",
          "author_login": null,
          "committed_at": "2025-05-10T17:47:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcea61701e0efcb9041b977a8c1063055b4172d3",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-04-13T16:00:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85164719d9c7f975a0b4dab0225fd00a2aeac5cb",
          "body": "….4.0; add announcement regarding project status in README.",
          "is_bot": false,
          "headline": "Bump version to 3.8.0 and update Home Assistant compatibility to 2025…",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-04-07T19:40:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bcf38f7c31aa7887744562040abc2a69a6d3ae4",
          "body": "Fix installing custom cards",
          "is_bot": false,
          "headline": "Merge pull request #817 from 1333481/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-04-06T16:44:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e0df6f3bc4504915bad315aa8c16f47109e7281",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch '3.0' into 3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-04-06T16:44:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "29847008eebec5d00335972f5532aeb580e86563",
          "body": "Add support for chinese",
          "is_bot": false,
          "headline": "Merge pull request #809 from Tomywang999/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-04-06T16:42:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b805fd42c69ca3e6caf0de0f7f2c4689af51739e",
          "body": "3.0",
          "is_bot": false,
          "headline": "Merge pull request #834 from chateauriantgit/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-04-06T16:42:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "220cfd0beeb90dba02a93347c9d735ce78379fc5",
          "body": "Additional fixes for PR 862",
          "is_bot": false,
          "headline": "Merge pull request #863 from Onepamopa/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2025-04-06T16:42:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d6a2bdf909ae54def86be3ee82dedb8feef0002",
          "body": null,
          "is_bot": false,
          "headline": "Fix for changes not being reflected immediately",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2025-04-05T15:55:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82d353eae21aad2b3f55eee8b026f68c01058ad8",
          "body": null,
          "is_bot": false,
          "headline": "Disable debug logging",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2025-04-03T16:29:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e1d9d2d46f930712f450e2429043d5d493f2a12",
          "body": "I don't know if this minimum version check would work, maybe Dwain would have more info.",
          "is_bot": false,
          "headline": "HA version check",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2025-04-03T13:24:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bfc838bb750fd8e313c1645a2d6c602f2fa5b3b9",
          "body": "Kindly test and let me know if all is good.",
          "is_bot": false,
          "headline": "Fix for the issues caused by the last HASS update.",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2025-04-03T11:00:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7f64f185a20b86fcf482127cb8befe406965b5a",
          "body": null,
          "is_bot": false,
          "headline": "Blueprints fix",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2025-03-26T20:08:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8322e5f8b07d2a757e8533c8a630237129b14e18",
          "body": "I couldn't commit directly to the PR, doing a new one with all (862 + my fixes).",
          "is_bot": false,
          "headline": "Additional fixes for PR 862",
          "author_name": "Onepamopa",
          "author_login": "Onepamopa",
          "committed_at": "2025-03-26T17:43:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "97e4efee818bf0c8b6b0106ffb1ce87a0cdfc448",
          "body": null,
          "is_bot": false,
          "headline": "3.0",
          "author_name": "Chateau Riant",
          "author_login": "chateauriantgit",
          "committed_at": "2024-09-28T08:35:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fc4b4ae03d4762a417050a8ba95e84b7200f32f",
          "body": null,
          "is_bot": false,
          "headline": "remove non-needed import",
          "author_name": "Jesse Stoltz",
          "author_login": "1333481",
          "committed_at": "2024-06-28T23:41:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "640fc473bdc4b91d3a95e37396279b4c470901de",
          "body": null,
          "is_bot": false,
          "headline": "Try again",
          "author_name": "Jesse Stoltz",
          "author_login": "1333481",
          "committed_at": "2024-06-28T23:37:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d690b9e5d9a240fd771e35adc7fc021afec8676",
          "body": "…rint",
          "is_bot": false,
          "headline": "Try fixing an issue with loading yaml when adding a dwains dash bluep…",
          "author_name": "Jesse Stoltz",
          "author_login": "1333481",
          "committed_at": "2024-06-28T23:28:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a00debc39dfefeb01b741ebb09775a32bd3439e4",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'dwainscheeren:3.0' into 3.0",
          "author_name": "Tomy",
          "author_login": "Tomywang999",
          "committed_at": "2024-05-05T11:47:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1dd4aed0d30cf37694869064c87fb4bd7683741b",
          "body": null,
          "is_bot": false,
          "headline": "Add translations for Chinese language",
          "author_name": "Tomy",
          "author_login": "Tomywang999",
          "committed_at": "2024-05-05T11:46:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb9ef1ab51fa70252981c852945e98e6e038689f",
          "body": null,
          "is_bot": false,
          "headline": "3.7.1 work",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-05-02T19:47:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61e4066cca4124bb79b9b59163a11121589b778e",
          "body": null,
          "is_bot": false,
          "headline": "Add translations for Chinese language",
          "author_name": "Tomy",
          "author_login": "Tomywang999",
          "committed_at": "2024-05-02T12:04:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91add83b32287a6c2ceaeff5a66a992840938cb3",
          "body": null,
          "is_bot": false,
          "headline": "3.7.0 work",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-04-14T18:23:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5aeb55ce9d89d72d6ee7f980a36754572b9dd6b",
          "body": null,
          "is_bot": false,
          "headline": "v3.7.0b7",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-03-30T13:20:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11159b23065a868e2314f182ad64741718d29257",
          "body": null,
          "is_bot": false,
          "headline": "v3.7.0b6 work",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-03-29T21:20:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d39d2c6a58a1cdd1e7907ccf55530c007f91b839",
          "body": null,
          "is_bot": false,
          "headline": "v3.7.0b5 work",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-03-29T07:58:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60612995279d6ce7c95b1016d2a92daf2a798628",
          "body": null,
          "is_bot": false,
          "headline": "v3.7.0b4",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-03-27T20:21:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba7cf496af7a87bd0fc262bb832d7b15b37a85a0",
          "body": null,
          "is_bot": false,
          "headline": "v3.7.0b3",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-03-26T20:52:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf3e2f7585e42e384d837b196590dccb80995de2",
          "body": null,
          "is_bot": false,
          "headline": "Work 3.7.0b2",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-03-24T10:58:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f12245e81fa8d164df4eea939e54d03695d0fd0",
          "body": null,
          "is_bot": false,
          "headline": "3.7.0b1 work",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-03-24T10:54:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab5c3f113373a370455065bcd565425d1518fcf3",
          "body": "replace SafeLineLoader to PythonSafeLoader",
          "is_bot": false,
          "headline": "Merge pull request #771 from linuxmaniac/3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2024-02-05T15:08:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d913a80ed2b119024518643bdfb2dba903e9418",
          "body": "fixes #753 and fixes #766",
          "is_bot": false,
          "headline": "replace SafeLineLoader to PythonSafeLoader",
          "author_name": "Victor Seva",
          "author_login": "linuxmaniac",
          "committed_at": "2024-01-09T20:17:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b339131d00e811205f4aee501eec6d00e310e86",
          "body": null,
          "is_bot": false,
          "headline": "3.6.0 beta changes",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2023-10-24T14:43:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ce19013dc25a412eff8d34177349c63b0ab89cc",
          "body": null,
          "is_bot": false,
          "headline": "3.5.0 test",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2023-09-15T11:10:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc0e4a0cf485f45065851b4993b1104dc97e20c9",
          "body": null,
          "is_bot": false,
          "headline": "Version 3.4.3",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2023-03-18T15:00:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a4205753f7622f817a049a2821bdfc706818c43",
          "body": null,
          "is_bot": false,
          "headline": "3.4.2.",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2023-01-25T19:39:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2df28b903b84494f93e65339e1d94f216331580f",
          "body": null,
          "is_bot": false,
          "headline": "Test fix",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2023-01-25T19:36:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b23e99d204f60063701d0d08d0e0d745f48a86c",
          "body": null,
          "is_bot": false,
          "headline": "Fix",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2023-01-25T14:37:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac6d8c4892d8f8dea3f5a483594d4ee6a9291e9e",
          "body": null,
          "is_bot": false,
          "headline": "Fix blueprints bug",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2023-01-25T14:32:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00b3a3c97b15e3c81fd5fcccd20d75817bec6e82",
          "body": null,
          "is_bot": false,
          "headline": "Release v3.3.0",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-09-16T19:14:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de84b5997f93e30bea304ccf116dfe68c617833c",
          "body": null,
          "is_bot": false,
          "headline": "3.3.0b2",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-09-16T13:55:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef2e32ea389c4d718ee67b9c95e98ed5d18d024d",
          "body": null,
          "is_bot": false,
          "headline": "3.3.0b2",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-09-16T13:54:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c29eaa2fe3b24de8c9c2072df3bc342222db629d",
          "body": null,
          "is_bot": false,
          "headline": "3.3.0b1",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-09-15T19:46:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ac12185710288267bc7dfe749f22c99c7f56178",
          "body": null,
          "is_bot": false,
          "headline": "Version 3.2.0 release",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-07-19T19:41:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a3ac2480fe91c05ba323daf697f335e40f08e82",
          "body": null,
          "is_bot": false,
          "headline": "v3.2.0b3",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-07-19T15:57:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e65414133e4f56fee5da19f8f0eba8b01960b6ed",
          "body": null,
          "is_bot": false,
          "headline": "3.2.0b2",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-07-12T19:57:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a11d0e1135137a067371e19882bbd6b6d2742bc8",
          "body": null,
          "is_bot": false,
          "headline": "3.2.0b1",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-07-11T18:52:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b62256fbb493633fcaa79606c26e2a3cbf74cac8",
          "body": "Update HACS URL",
          "is_bot": false,
          "headline": "Merge pull request #559 from wrt54g/hacs-url",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-07-11T08:26:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4baf30dcbbcab6e6b659b86ddc6c22dc19923014",
          "body": "Make theme backgrounds work in all (most) browsers",
          "is_bot": false,
          "headline": "Merge pull request #556 from vandalon/patch-1",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-07-11T08:25:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dc6ae557d179cdd7bfbcb78ad793c3ebd725999",
          "body": "Create pl.json",
          "is_bot": false,
          "headline": "Merge pull request #586 from LukaszP2/patch-1",
          "author_name": "Dwain Scheeren",
          "author_login": "dwainscheeren",
          "committed_at": "2022-07-11T08:25:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 41,
      "commits_last_year": 50,
      "latest_release_at": "2026-07-18T09:37:14Z",
      "latest_release_tag": "v3.9.4",
      "releases_from_tags": false,
      "days_since_last_push": 9,
      "active_weeks_last_year": 9,
      "days_since_latest_release": 9,
      "mean_days_between_releases": 115.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 203,
      "stars": 2055,
      "watchers": 54,
      "fork_history": {
        "days": [
          {
            "date": "2020-02-02",
            "count": 1
          },
          {
            "date": "2020-02-11",
            "count": 1
          },
          {
            "date": "2020-02-22",
            "count": 1
          },
          {
            "date": "2020-02-29",
            "count": 1
          },
          {
            "date": "2020-03-01",
            "count": 1
          },
          {
            "date": "2020-03-16",
            "count": 1
          },
          {
            "date": "2020-03-24",
            "count": 1
          },
          {
            "date": "2020-03-30",
            "count": 1
          },
          {
            "date": "2020-04-11",
            "count": 1
          },
          {
            "date": "2020-05-02",
            "count": 1
          },
          {
            "date": "2020-05-05",
            "count": 1
          },
          {
            "date": "2020-05-28",
            "count": 1
          },
          {
            "date": "2020-06-05",
            "count": 1
          },
          {
            "date": "2020-06-10",
            "count": 1
          },
          {
            "date": "2020-06-12",
            "count": 1
          },
          {
            "date": "2020-06-14",
            "count": 1
          },
          {
            "date": "2020-06-27",
            "count": 1
          },
          {
            "date": "2020-06-28",
            "count": 1
          },
          {
            "date": "2020-07-04",
            "count": 1
          },
          {
            "date": "2020-07-13",
            "count": 1
          },
          {
            "date": "2020-07-18",
            "count": 1
          },
          {
            "date": "2020-07-27",
            "count": 1
          },
          {
            "date": "2020-08-02",
            "count": 1
          },
          {
            "date": "2020-08-03",
            "count": 1
          },
          {
            "date": "2020-08-24",
            "count": 1
          },
          {
            "date": "2020-09-04",
            "count": 1
          },
          {
            "date": "2020-09-09",
            "count": 1
          },
          {
            "date": "2020-09-12",
            "count": 1
          },
          {
            "date": "2020-09-27",
            "count": 1
          },
          {
            "date": "2020-09-29",
            "count": 1
          },
          {
            "date": "2020-10-03",
            "count": 1
          },
          {
            "date": "2020-11-01",
            "count": 1
          },
          {
            "date": "2020-11-30",
            "count": 1
          },
          {
            "date": "2020-12-14",
            "count": 1
          },
          {
            "date": "2021-01-03",
            "count": 1
          },
          {
            "date": "2021-01-25",
            "count": 1
          },
          {
            "date": "2021-01-28",
            "count": 1
          },
          {
            "date": "2021-01-29",
            "count": 1
          },
          {
            "date": "2021-01-31",
            "count": 1
          },
          {
            "date": "2021-02-04",
            "count": 1
          },
          {
            "date": "2021-02-06",
            "count": 1
          },
          {
            "date": "2021-03-28",
            "count": 1
          },
          {
            "date": "2021-03-31",
            "count": 1
          },
          {
            "date": "2021-04-07",
            "count": 1
          },
          {
            "date": "2021-04-09",
            "count": 1
          },
          {
            "date": "2021-04-10",
            "count": 1
          },
          {
            "date": "2021-04-18",
            "count": 1
          },
          {
            "date": "2021-04-19",
            "count": 1
          },
          {
            "date": "2021-04-21",
            "count": 1
          },
          {
            "date": "2021-04-28",
            "count": 1
          },
          {
            "date": "2021-05-05",
            "count": 1
          },
          {
            "date": "2021-05-15",
            "count": 1
          },
          {
            "date": "2021-05-21",
            "count": 1
          },
          {
            "date": "2021-05-26",
            "count": 1
          },
          {
            "date": "2021-08-01",
            "count": 2
          },
          {
            "date": "2021-08-28",
            "count": 1
          },
          {
            "date": "2021-08-29",
            "count": 1
          },
          {
            "date": "2021-09-05",
            "count": 1
          },
          {
            "date": "2021-09-10",
            "count": 1
          },
          {
            "date": "2021-09-28",
            "count": 1
          },
          {
            "date": "2021-10-27",
            "count": 1
          },
          {
            "date": "2021-11-02",
            "count": 1
          },
          {
            "date": "2021-11-17",
            "count": 1
          },
          {
            "date": "2021-12-02",
            "count": 1
          },
          {
            "date": "2021-12-08",
            "count": 1
          },
          {
            "date": "2021-12-13",
            "count": 1
          },
          {
            "date": "2021-12-15",
            "count": 2
          },
          {
            "date": "2021-12-16",
            "count": 1
          },
          {
            "date": "2021-12-17",
            "count": 1
          },
          {
            "date": "2021-12-19",
            "count": 1
          },
          {
            "date": "2021-12-23",
            "count": 1
          },
          {
            "date": "2021-12-24",
            "count": 1
          },
          {
            "date": "2021-12-28",
            "count": 2
          },
          {
            "date": "2022-01-02",
            "count": 1
          },
          {
            "date": "2022-01-09",
            "count": 2
          },
          {
            "date": "2022-01-10",
            "count": 1
          },
          {
            "date": "2022-01-12",
            "count": 1
          },
          {
            "date": "2022-01-13",
            "count": 2
          },
          {
            "date": "2022-01-18",
            "count": 1
          },
          {
            "date": "2022-01-20",
            "count": 1
          },
          {
            "date": "2022-01-24",
            "count": 1
          },
          {
            "date": "2022-01-28",
            "count": 2
          },
          {
            "date": "2022-02-07",
            "count": 2
          },
          {
            "date": "2022-02-08",
            "count": 2
          },
          {
            "date": "2022-02-15",
            "count": 1
          },
          {
            "date": "2022-02-16",
            "count": 1
          },
          {
            "date": "2022-02-21",
            "count": 1
          },
          {
            "date": "2022-02-24",
            "count": 1
          },
          {
            "date": "2022-03-02",
            "count": 1
          },
          {
            "date": "2022-03-07",
            "count": 1
          },
          {
            "date": "2022-03-10",
            "count": 2
          },
          {
            "date": "2022-03-12",
            "count": 1
          },
          {
            "date": "2022-03-13",
            "count": 1
          },
          {
            "date": "2022-03-15",
            "count": 1
          },
          {
            "date": "2022-03-22",
            "count": 1
          },
          {
            "date": "2022-03-28",
            "count": 1
          },
          {
            "date": "2022-04-06",
            "count": 1
          },
          {
            "date": "2022-04-08",
            "count": 1
          },
          {
            "date": "2022-04-12",
            "count": 1
          },
          {
            "date": "2022-04-15",
            "count": 1
          },
          {
            "date": "2022-04-16",
            "count": 1
          },
          {
            "date": "2022-04-19",
            "count": 2
          },
          {
            "date": "2022-04-20",
            "count": 1
          },
          {
            "date": "2022-04-26",
            "count": 4
          },
          {
            "date": "2022-05-11",
            "count": 1
          },
          {
            "date": "2022-05-22",
            "count": 1
          },
          {
            "date": "2022-07-03",
            "count": 1
          },
          {
            "date": "2022-07-11",
            "count": 1
          },
          {
            "date": "2022-07-14",
            "count": 1
          },
          {
            "date": "2022-07-18",
            "count": 1
          },
          {
            "date": "2022-07-20",
            "count": 1
          },
          {
            "date": "2022-07-25",
            "count": 1
          },
          {
            "date": "2022-08-01",
            "count": 1
          },
          {
            "date": "2022-09-13",
            "count": 1
          },
          {
            "date": "2022-11-08",
            "count": 1
          },
          {
            "date": "2022-12-06",
            "count": 1
          },
          {
            "date": "2022-12-07",
            "count": 1
          },
          {
            "date": "2022-12-13",
            "count": 1
          },
          {
            "date": "2022-12-15",
            "count": 1
          },
          {
            "date": "2023-01-06",
            "count": 1
          },
          {
            "date": "2023-01-11",
            "count": 1
          },
          {
            "date": "2023-01-15",
            "count": 1
          },
          {
            "date": "2023-01-18",
            "count": 1
          },
          {
            "date": "2023-01-25",
            "count": 1
          },
          {
            "date": "2023-04-16",
            "count": 1
          },
          {
            "date": "2023-04-22",
            "count": 2
          },
          {
            "date": "2023-04-27",
            "count": 1
          },
          {
            "date": "2023-05-01",
            "count": 1
          },
          {
            "date": "2023-05-05",
            "count": 1
          },
          {
            "date": "2023-06-08",
            "count": 1
          },
          {
            "date": "2023-06-15",
            "count": 1
          },
          {
            "date": "2023-06-20",
            "count": 1
          },
          {
            "date": "2023-07-20",
            "count": 1
          },
          {
            "date": "2023-07-24",
            "count": 1
          },
          {
            "date": "2023-07-30",
            "count": 1
          },
          {
            "date": "2023-08-15",
            "count": 1
          },
          {
            "date": "2023-10-05",
            "count": 1
          },
          {
            "date": "2023-11-02",
            "count": 1
          },
          {
            "date": "2023-11-04",
            "count": 1
          },
          {
            "date": "2023-11-28",
            "count": 1
          },
          {
            "date": "2023-12-20",
            "count": 1
          },
          {
            "date": "2024-01-02",
            "count": 1
          },
          {
            "date": "2024-01-09",
            "count": 1
          },
          {
            "date": "2024-01-19",
            "count": 1
          },
          {
            "date": "2024-02-11",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-04-05",
            "count": 1
          },
          {
            "date": "2024-04-16",
            "count": 1
          },
          {
            "date": "2024-04-30",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 1
          },
          {
            "date": "2024-07-06",
            "count": 1
          },
          {
            "date": "2024-07-15",
            "count": 1
          },
          {
            "date": "2024-08-21",
            "count": 1
          },
          {
            "date": "2024-09-28",
            "count": 1
          },
          {
            "date": "2024-11-16",
            "count": 1
          },
          {
            "date": "2024-11-21",
            "count": 1
          },
          {
            "date": "2024-11-30",
            "count": 1
          },
          {
            "date": "2024-12-06",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-01-09",
            "count": 1
          },
          {
            "date": "2025-02-07",
            "count": 1
          },
          {
            "date": "2025-03-15",
            "count": 1
          },
          {
            "date": "2025-03-21",
            "count": 1
          },
          {
            "date": "2025-03-26",
            "count": 1
          },
          {
            "date": "2025-04-02",
            "count": 1
          },
          {
            "date": "2025-04-07",
            "count": 1
          },
          {
            "date": "2025-05-07",
            "count": 1
          },
          {
            "date": "2025-05-23",
            "count": 1
          },
          {
            "date": "2025-06-18",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-08-06",
            "count": 1
          },
          {
            "date": "2025-08-17",
            "count": 1
          },
          {
            "date": "2025-09-09",
            "count": 1
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-12-09",
            "count": 1
          },
          {
            "date": "2025-12-29",
            "count": 1
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-02-06",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-03-19",
            "count": 1
          },
          {
            "date": "2026-04-30",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-06-08",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-21",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 200,
        "total_forks": 203
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 533329,
      "source_files_sampled": 45,
      "oversized_source_files": 6,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "rollup",
            "direct": false,
            "version": "2.79.1",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-gcx4-mw62-g8wm",
              "GHSA-mw96-cpmx-2vgc"
            ],
            "fixed_version": "4.59.0",
            "advisory_count": 2,
            "oldest_advisory_days": 672
          },
          {
            "name": "shell-quote",
            "direct": false,
            "version": "1.8.1",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-395f-4hp3-45gv",
              "GHSA-w7jw-789q-3m8p"
            ],
            "fixed_version": "1.9.0",
            "advisory_count": 2,
            "oldest_advisory_days": 48
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "1.20.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-qwcr-r2fm-qrc7",
              "GHSA-v422-hmwv-36x6"
            ],
            "fixed_version": "2.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 685
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 4,
            "oldest_advisory_days": 413
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-grv7-fg5c-xmjg"
            ],
            "fixed_version": "3.0.3",
            "advisory_count": 1,
            "oldest_advisory_days": 804
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3xgq-45jj-v275"
            ],
            "fixed_version": "7.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 626
          },
          {
            "name": "http-proxy-middleware",
            "direct": false,
            "version": "2.0.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4www-5p9h-95mh",
              "GHSA-64mm-vxmg-q3vj",
              "GHSA-9gqv-wp59-fq42",
              "GHSA-c7qv-q95q-8v27"
            ],
            "fixed_version": "4.1.0",
            "advisory_count": 4,
            "oldest_advisory_days": 646
          },
          {
            "name": "js-cookie",
            "direct": false,
            "version": "3.0.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-qjx8-664m-686j"
            ],
            "fixed_version": "3.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 67
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-f23m-r3pf-42rh",
              "GHSA-r5fr-rjxr-66jc",
              "GHSA-xxjr-mmjv-4gpg"
            ],
            "fixed_version": "4.18.0",
            "advisory_count": 3,
            "oldest_advisory_days": 186
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "node-forge",
            "direct": false,
            "version": "1.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.6,
            "advisory_ids": [
              "GHSA-2328-f5f3-gj25",
              "GHSA-554w-wpv2-vw27",
              "GHSA-5gfm-wpxj-wjgq",
              "GHSA-5m6q-g25r-mvwx",
              "GHSA-65ch-62r8-g69g",
              "GHSA-ppp5-5v6c-4jwp",
              "GHSA-q67f-28xg-22rw"
            ],
            "fixed_version": "1.4.0",
            "advisory_count": 7,
            "oldest_advisory_days": 243
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "0.1.7",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-37ch-88jc-xwx2",
              "GHSA-9wv6-86v2-598j",
              "GHSA-rhx6-c78j-4q9w"
            ],
            "fixed_version": "8.0.0",
            "advisory_count": 3,
            "oldest_advisory_days": 686
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3v7f-55p6-f55p",
              "GHSA-c2c7-rcm5-vvqj"
            ],
            "fixed_version": "4.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 124
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.4.38",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6g55-p6wh-862q",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 3,
            "oldest_advisory_days": 94
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "6.0.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-5c6j-r48x-rmvq",
              "GHSA-qj8w-gfj5-8c6v"
            ],
            "fixed_version": "7.0.5",
            "advisory_count": 2,
            "oldest_advisory_days": 149
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52f5-9888-hmc6",
              "GHSA-ph9p-34f9-6g65"
            ],
            "fixed_version": "0.2.6",
            "advisory_count": 2,
            "oldest_advisory_days": 355
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-w5hq-g745-h8pq"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 96
          },
          {
            "name": "webpack",
            "direct": false,
            "version": "5.91.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.6,
            "advisory_ids": [
              "GHSA-38r7-794h-5758",
              "GHSA-4vvj-4cpr-p986",
              "GHSA-8fgc-7cc6-rx7x"
            ],
            "fixed_version": "5.104.1",
            "advisory_count": 3,
            "oldest_advisory_days": 699
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.7.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-mp7j-qc5w-4988",
              "GHSA-xv26-6w52-cph6"
            ],
            "fixed_version": "0.7.5",
            "advisory_count": 2,
            "oldest_advisory_days": 12
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.16.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3h5v-q93c-6h6q",
              "GHSA-58qx-3vcg-4xpx",
              "GHSA-96hv-2xvq-fx4p"
            ],
            "fixed_version": "8.21.0",
            "advisory_count": 3,
            "oldest_advisory_days": 770
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 166
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.12.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 166
          },
          {
            "name": "express",
            "direct": false,
            "version": "4.19.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.1,
            "advisory_ids": [
              "GHSA-qw6h-vgh9-j6wx",
              "GHSA-rv95-896h-c2vc"
            ],
            "fixed_version": "5.0.0-beta.3",
            "advisory_count": 2,
            "oldest_advisory_days": 854
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.15.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-r4q5-vmmm-2653"
            ],
            "fixed_version": "1.16.0",
            "advisory_count": 1,
            "oldest_advisory_days": 104
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-952p-6rrq-rcjv"
            ],
            "fixed_version": "4.0.8",
            "advisory_count": 1,
            "oldest_advisory_days": 804
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.7",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-mwcw-c2x4-8c55"
            ],
            "fixed_version": "5.0.9",
            "advisory_count": 1,
            "oldest_advisory_days": 595
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.11.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-6rw7-vpxm-498p",
              "GHSA-w7fw-mjwx-w883"
            ],
            "fixed_version": "6.14.2",
            "advisory_count": 2,
            "oldest_advisory_days": 209
          },
          {
            "name": "send",
            "direct": false,
            "version": "0.18.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5,
            "advisory_ids": [
              "GHSA-m6fv-jmcg-4jfg"
            ],
            "fixed_version": "0.19.0",
            "advisory_count": 1,
            "oldest_advisory_days": 685
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "1.15.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5,
            "advisory_ids": [
              "GHSA-cm22-4g7w-348p"
            ],
            "fixed_version": "2.1.0",
            "advisory_count": 1,
            "oldest_advisory_days": 685
          },
          {
            "name": "webpack-dev-server",
            "direct": false,
            "version": "4.15.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.5,
            "advisory_ids": [
              "GHSA-4v9v-hfq4-rm2v",
              "GHSA-79cf-xcqc-c78w",
              "GHSA-9jgg-88mc-972h",
              "GHSA-f5vj-f2hx-8m93",
              "GHSA-m28w-2pqf-7qgj",
              "GHSA-mx8g-39q3-5c79"
            ],
            "fixed_version": "5.2.6",
            "advisory_count": 6,
            "oldest_advisory_days": 418
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-48c2-rrv3-qjmp"
            ],
            "fixed_version": "2.8.3",
            "advisory_count": 1,
            "oldest_advisory_days": 124
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.6.0",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-pxg6-pf52-xh8x"
            ],
            "fixed_version": "0.7.0",
            "advisory_count": 1,
            "oldest_advisory_days": 661
          },
          {
            "name": "launch-editor",
            "direct": false,
            "version": "2.6.1",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-c27g-q93r-2cwf",
              "GHSA-v6wh-96g9-6wx3"
            ],
            "fixed_version": "8.0.16",
            "advisory_count": 2,
            "oldest_advisory_days": 54
          },
          {
            "name": "on-headers",
            "direct": false,
            "version": "1.0.2",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.4,
            "advisory_ids": [
              "GHSA-76c9-3jph-rj3q"
            ],
            "fixed_version": "1.1.0",
            "advisory_count": 1,
            "oldest_advisory_days": 375
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 3,
          "high": 18,
          "critical": 2,
          "moderate": 11
        },
        "advisory_count": 73,
        "affected_count": 34,
        "assessed_count": 491,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.22.20",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/highlight",
            "direct": false,
            "version": "7.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "@discoveryjs/json-ext",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/ecma402-abstract",
            "direct": false,
            "version": "1.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/fast-memoize",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/icu-messageformat-parser",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/icu-skeleton-parser",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/intl-localematcher",
            "direct": false,
            "version": "0.2.25",
            "ecosystem": "npm"
          },
          {
            "name": "@formatjs/intl-utils",
            "direct": false,
            "version": "3.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/set-array",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/source-map",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.4.15",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.25",
            "ecosystem": "npm"
          },
          {
            "name": "@leichtgewicht/ip-codec",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@lit-labs/ssr-dom-shim",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@lit/reactive-element",
            "direct": false,
            "version": "1.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@mdi/js",
            "direct": false,
            "version": "6.9.96",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/body-parser",
            "direct": false,
            "version": "1.19.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/bonjour",
            "direct": false,
            "version": "3.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/connect",
            "direct": false,
            "version": "3.4.38",
            "ecosystem": "npm"
          },
          {
            "name": "@types/connect-history-api-fallback",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint",
            "direct": false,
            "version": "8.56.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint-scope",
            "direct": false,
            "version": "3.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express-serve-static-core",
            "direct": false,
            "version": "4.17.43",
            "ecosystem": "npm"
          },
          {
            "name": "@types/html-minifier-terser",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-errors",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-proxy",
            "direct": false,
            "version": "1.17.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.11.30",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node-forge",
            "direct": false,
            "version": "1.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/parse-json",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/qs",
            "direct": false,
            "version": "6.9.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/range-parser",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/send",
            "direct": false,
            "version": "0.17.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/serve-index",
            "direct": false,
            "version": "1.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/serve-static",
            "direct": false,
            "version": "1.15.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sockjs",
            "direct": false,
            "version": "0.3.36",
            "ecosystem": "npm"
          },
          {
            "name": "@types/trusted-types",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.5.10",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ast",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/floating-point-hex-parser",
            "direct": false,
            "version": "1.11.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-api-error",
            "direct": false,
            "version": "1.11.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-buffer",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-numbers",
            "direct": false,
            "version": "1.11.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-bytecode",
            "direct": false,
            "version": "1.11.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-section",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ieee754",
            "direct": false,
            "version": "1.11.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/leb128",
            "direct": false,
            "version": "1.11.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/utf8",
            "direct": false,
            "version": "1.11.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-edit",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-gen",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-opt",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-parser",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wast-printer",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webpack-cli/configtest",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@webpack-cli/info",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@webpack-cli/serve",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/ieee754",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/long",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "7.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.11.3",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-import-assertions",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-node",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-walk",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-keywords",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-keywords",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-html-community",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-flatten",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "at-least-node",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.4.19",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "batch",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "big.js",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "1.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "bonjour-service",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camel-case",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase-css",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001600",
            "ecosystem": "npm"
          },
          {
            "name": "card-tools",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "chrome-trace-event",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "clean-css",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "clone-deep",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-string",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "colorette",
            "direct": false,
            "version": "2.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "compressible",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "npm"
          },
          {
            "name": "compression",
            "direct": false,
            "version": "1.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "connect-history-api-fallback",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "0.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "css-color-names",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "css-loader",
            "direct": false,
            "version": "5.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-unit-converter",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "custom-card-helpers",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "default-gateway",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-lazy-prop",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "defined",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dependency-graph",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "destroy",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "detective",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "didyoumean",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dlv",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "dns-packet",
            "direct": false,
            "version": "5.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "dom-converter",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "dot-case",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.4.715",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emojis-list",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "envinfo",
            "direct": false,
            "version": "7.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "4.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "faye-websocket",
            "direct": false,
            "version": "0.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.15.6",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-monkey",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "get-stdin",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-to-regexp",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "handle-thing",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "he",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "hex-color-regex",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "home-assistant-js-websocket",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "hpack.js",
            "direct": false,
            "version": "2.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "hsl-regex",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hsla-regex",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-entities",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "html-minifier-terser",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-tags",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-webpack-plugin",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-deceiver",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "1.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-parser-js",
            "direct": false,
            "version": "0.5.8",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy",
            "direct": false,
            "version": "1.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-middleware",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "icss-utils",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "intl-messageformat",
            "direct": false,
            "version": "9.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-color-stop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-cookie",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "klona",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "launch-editor",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "lit",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "lit-element",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "lit-element",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "lit-html",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lit-html",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "loader-runner",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "loader-utils",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.topath",
            "direct": false,
            "version": "4.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "lower-case",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "memfs",
            "direct": false,
            "version": "3.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "methods",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimalistic-assert",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "modern-normalize",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "multicast-dns",
            "direct": false,
            "version": "7.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "no-case",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "node-emoji",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-forge",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-range",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-hash",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "obuf",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "on-headers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "open",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-retry",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "param-case",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "pascal-case",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.4.38",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-cli",
            "direct": false,
            "version": "8.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-js",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-loader",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-extract-imports",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-local-by-default",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-scope",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-values",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-nested",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reporter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-error",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-hrtime",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "purgecss",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "read-cache",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "reduce-css-calc",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "relateurl",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "renderkid",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "requires-port",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.8",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rgb-regex",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rgba-regex",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "2.79.1",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "select-hose",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "selfsigned",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "serve-index",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "shallow-clone",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shell-quote",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "simple-swizzle",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sockjs",
            "direct": false,
            "version": "0.3.24",
            "ecosystem": "npm"
          },
          {
            "name": "sortablejs",
            "direct": false,
            "version": "1.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "spdy",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "spdy-transport",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "style-loader",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "superstruct",
            "direct": false,
            "version": "0.15.5",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": false,
            "version": "2.2.19",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.29.2",
            "ecosystem": "npm"
          },
          {
            "name": "terser-webpack-plugin",
            "direct": false,
            "version": "5.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "thenby",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "thunky",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "1.6.18",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "4.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "5.26.5",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "utila",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "utils-merge",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "watchpack",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "wbuf",
            "direct": false,
            "version": "1.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "webpack",
            "direct": false,
            "version": "5.91.0",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-cli",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-dev-middleware",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-dev-server",
            "direct": false,
            "version": "4.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-merge",
            "direct": false,
            "version": "5.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-sources",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wildcard",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "16.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.9",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 491,
        "direct_count": 0,
        "indirect_count": 491
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 87,
        "open_issues": 1,
        "closed_ratio": 0.999,
        "closed_issues": 718,
        "closed_unmerged_prs": 49
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "dwainscheeren",
          "commits": 237,
          "avatar_url": "https://avatars.githubusercontent.com/u/3868853?v=4"
        },
        {
          "type": "User",
          "login": "roblandry",
          "commits": 28,
          "avatar_url": "https://avatars.githubusercontent.com/u/1853884?v=4"
        },
        {
          "type": "User",
          "login": "tristanXme",
          "commits": 24,
          "avatar_url": "https://avatars.githubusercontent.com/u/71933706?v=4"
        },
        {
          "type": "User",
          "login": "Onepamopa",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/3053279?v=4"
        },
        {
          "type": "User",
          "login": "jakezp",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/6917873?v=4"
        },
        {
          "type": "User",
          "login": "Xetoxyc",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/7449973?v=4"
        },
        {
          "type": "User",
          "login": "Tosko4",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/1294707?v=4"
        },
        {
          "type": "User",
          "login": "dcmartin",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/427535?v=4"
        },
        {
          "type": "User",
          "login": "1333481",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/45182198?v=4"
        },
        {
          "type": "User",
          "login": "jaburges",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/14154875?v=4"
        }
      ],
      "contributors_sampled": 29,
      "top_contributor_share": 0.66
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": false,
      "ci_workflows": [],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 5 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 5,
            "reason": "Found 5/10 approved changesets -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 6 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "70 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "2f4046764237cd161e38b0e237e86269061a3f27",
        "ran_at": "2026-07-27T22:26:27Z",
        "aggregate_score": 4.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-18T09:36:43Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-18T09:31:15Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 906,
          "created_at": "2026-06-19T15:05:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/dwainscheeren/dwains-lovelace-dashboard",
    "host": "github.com",
    "name": "dwains-lovelace-dashboard",
    "owner": "dwainscheeren"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 56,
      "inputs": {
        "security": 55,
        "vitality": 73,
        "community": 64,
        "governance": 59,
        "engineering": 25
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 73,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "commits_last_year": 50,
              "human_commit_share": 1,
              "days_since_last_push": 9,
              "active_weeks_last_year": 9
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 9 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "9/52 weeks with commits",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "50 commits in the last year",
                "points": 15.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 50
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "releases_count": 41,
              "latest_release_tag": "v3.9.4",
              "releases_from_tags": false,
              "days_since_latest_release": 9,
              "mean_days_between_releases": 115.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "41 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 41
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 9 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~115.2 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 115.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 9,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 9 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 64,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "forks": 203,
              "stars": 2055,
              "watchers": 54,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2,055 stars",
                "points": 53.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2055
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "203 forks",
                "points": 19.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 203
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "54 watchers",
                "points": 9.6,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 54
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 59,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 29,
              "top_contributor_share": 0.66
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 66% of commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 66
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "29 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 29
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "merged_prs": 87,
              "open_issues": 1,
              "closed_issues": 718,
              "issue_closed_ratio": 0.999,
              "closed_unmerged_prs": 49
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.7,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "87/136 decided PRs merged",
                "points": 24.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 87,
                      "decided": 136
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 5/10 approved changesets -- score normalized to 5",
                "points": 7.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "followers": 204,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "dwainscheeren",
              "public_repos": 33,
              "account_age_days": 4883
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "204 followers of dwainscheeren",
                "points": 16.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 204,
                      "login": "dwainscheeren"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "33 public repos, account ~13 yr old",
                "points": 23.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 33
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "critical",
        "name": "Engineering Quality",
        "value": 25,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "has_ci": false,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 5 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "topics": [
                "home-assistant",
                "dwains-lovelace-dashboard",
                "dashboard",
                "home-assistant-dashboard"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 55,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 44,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 4.4
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 5 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 5/10 approved changesets -- score normalized to 5",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "70 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 491 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 491
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 73,
              "affected_packages": 34,
              "assessed_packages": 491,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 2, high 18, moderate 11, low 3",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 491,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 9
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "critical",
        "name": "AI Readiness",
        "value": 20,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 19,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.36,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "36 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 19.2,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 36,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "critical",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 11,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "at_risk",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 533329,
              "source_files_sampled": 45,
              "oversized_source_files": 6
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "6/45 source files over 60KB",
                "points": 47.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 45,
                      "oversized": 6
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T22:26:52.158307Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/dwainscheeren/dwains-lovelace-dashboard.svg",
  "full_name": "dwainscheeren/dwains-lovelace-dashboard",
  "license_state": "custom",
  "license_spdx": null
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计.