公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-28 15:29 UTC

havit / Havit.Blazor

Free Bootstrap 5 components for ASP.NET Blazor + optional enterprise-level stack for Blazor development (gRPC code-first, layered architecture, localization, auth, ...)

C# · HTMLMIT★ 598 星标⑂ 87 复刻始于 2020年11月在 GitHub 上查看 ↗

havit/Havit.Blazor 的健康指数为 100 分中的 70 分,处于「良好」区间。 其得分最高的类别是Vitality(94/100),最低的是Sustainability & Governance(56/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

70
总分 / 100
良好

软件健康指数

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

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

评分画像

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

所有权

HAVIT组织
50 关注者18 个公开仓库始于 2015年6月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

按类别列示的指标

活力

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

94优秀 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
26.3/36提交节奏 — 52 周中有 38 周有提交
18/18提交量 — 最近一年 311 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year311
human_commit_share0.69
days_since_last_push0
active_weeks_last_year38

发布纪律

100优秀
评分方式
27/27有发布版本 — 已发布 100 个发布版本
36/36发布时效 — 最近一次发布版本于 0 天前
27/27发布节奏 — 约每 22.6 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count100
latest_release_tagv4.25.1
releases_from_tags
days_since_latest_release0
mean_days_between_releases22.6
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

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

69中等 · 占总体的 18%
评分方式
45/60星标 — 598 个星标
16.1/25复刻 — 87 个复刻
6.5/15关注者 — 16 位关注者
所用输入
forks87
stars598
watchers16
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

70良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
18/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

可持续性与治理

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

56中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
10.2/22.5提交分布 — 头号贡献者编写了 55% 的提交
13.5/13.5贡献者广度 — 36 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 10 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled36
top_contributor_share0.547
评分方式
33.9/46.8议题解决 — 72% 的议题已关闭
30.6/38.3PR 接受 — 已裁定的 PR 中 481/601 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/12 approved changesets -- score normalized to 0
所用输入
merged_prs481
open_issues280
closed_issues738
issue_closed_ratio0.725
closed_unmerged_prs120
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
12.3/25所有者影响力 — havit 有 50 位关注者
21.3/25既往记录 — 18 个公开仓库,账户约 11 年
所用输入
followers50
owner_typeOrganization
is_verified
owner_loginhavit
public_repos18
account_age_days4,057

工程质量

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

70良好 · 占总体的 20%

工程实践

50中等
评分方式
24/24CI 工作流 — 2 个工作流
0/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
6.4/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 21 out of 21 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://havit.blazor.eu
10/10仓库描述
10/10主题标签 — 6 个主题标签
10/10Wiki
所用输入
topicsblazor, wasm, webassembly, asp-net, bootstrap, bootstrap5
has_wiki
homepagehttps://havit.blazor.eu
has_readme
has_docs_dir
has_description

安全

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

62中等 · 占总体的 16%

安全态势

52中等
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 21 out of 21 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/12 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 10 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/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.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
5/5SAST — SAST tool is run on all commits
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 32 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate5.2
已排除计分(无数据或不适用):packaging, signed_releases。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
0/25间接依赖不含已知公告 — 在此范围内,传递依赖集合无法与开发和测试依赖区分
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories53
affected_packages24
assessed_packages407
unassessed_packages36
affected_by_severitycritical 6, high 13, moderate 5
direct_affected_packages0
已排除计分(无数据或不适用):间接依赖不含已知公告, 没有长期未处理的公告。 其余权重已重新归一化。 已将 407 个已解析依赖与 OSV 比对。 有 36 项无法评估——没有已解析的版本、生态系统不受支持,或超出所报告的软件包清单。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

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

68中等 · 占总体的 0%
评分方式
45/45代理指令 — .claude/CLAUDE.md, AGENTS.md
0/15机器可读文档(llms.txt)
30.9/40可读的提交历史 — 69 次人类提交中有 40 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.58
agent_instruction_files.claude/CLAUDE.md, AGENTS.md
agent_instruction_max_bytes4,884
评分方式
12.6/18一条命令的引导启动 — BlazorAppTest/BlazorAppTest.csproj, Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj, Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj(工具链约定,无任务运行器)
0/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — C#(静态类型)
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 40 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 31 次为自动依赖更新
1/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
所用输入
has_nix
has_tests
lockfilespackage-lock.json, yarn.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.4
toolchain_manifestsBlazorAppTest/BlazorAppTest.csproj, Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj, Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj, Havit.Blazor.ApplicationInsights.TestApp/Havit.Blazor.ApplicationInsights.TestApp.csproj, Havit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj, Havit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj, Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj, Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators/Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators.csproj, Havit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj, Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj, Havit.Blazor.Components.Web.Bootstrap/Havit.Blazor.Components.Web.Bootstrap.csproj, Havit.Blazor.Components.Web.ECharts/Havit.Blazor.Components.Web.ECharts.csproj, Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj, Havit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj, Havit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj, Havit.Blazor.Documentation.RepoDumpGenerator/Havit.Blazor.Documentation.RepoDumpGenerator.csproj, Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj, Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj, Havit.Blazor.Documentation/Havit.Blazor.Documentation.csproj, Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj, Havit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj, Havit.Blazor.Grpc.Client.ServerSideRendering/Havit.Blazor.Grpc.Client.ServerSideRendering.csproj, Havit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj, Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj, Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj, Havit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj, Havit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj, Havit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj, Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj, Havit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj, Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj, Havit.Blazor.Storage/Havit.Blazor.Storage.csproj, Havit.Blazor.TestApp/Havit.Blazor.TestApp.Client/Havit.Blazor.TestApp.Client.csproj, Havit.Blazor.TestApp/Havit.Blazor.TestApp/Havit.Blazor.TestApp.csproj, Havit.Extensions.Localization/Havit.Extensions.Localization.csproj, Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj, Havit.SourceGenerators.StrongApiStringLocalizers/Havit.SourceGenerators.StrongApiStringLocalizers.csproj
dependency_bot_commit_share0.31
评分方式
45/45可类型检查的代码 — C#(静态类型)
55/55可控的文件大小 — 采样的 777 个源文件中有 0 个超过 60KB
所用输入
primary_languageC#
largest_source_bytes51,637
source_files_sampled777
oversized_source_files0
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
40/40可运行示例 — demos
所用输入
example_dirsdemos
has_mcp_signal
api_schema_files

关键数据

598GitHub 星标
36贡献者
311最近 12 个月提交数
0距最近推送天数
100发布版本数
1巴士系数(bus factor)
280开放议题
npm, NuGet软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'havit-bootstrap' from its registry

更多细节

Star 与 Fork 历史 0 ★ / 87 ⇿
0Star
87Fork
99发布

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

0204060801008732021-052023-122026-07
主版本 1次版本 23修订 75

每个点涵盖 5 天。

OpenSSF Scorecard 5.2 / 10
5.2综合

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

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests21 out of 21 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/12 approved changesets -- score normalized to 0
10Contributorsproject has 10 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
10SASTSAST tool is run on all commits
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities32 existing vulnerabilities detected
直接依赖 93
注册表软件包版本约束清单文件
NuGetMicrosoft.Playwright.Xunit.v3Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj
NuGetMicrosoft.AspNetCore.Mvc.TestingHavit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj
NuGetMicrosoft.AspNetCore.Components.WebAssemblyHavit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj
NuGetMicrosoft.AspNetCore.Components.WebAssembly.ServerHavit.Blazor.ApplicationInsights.TestApp/Havit.Blazor.ApplicationInsights.TestApp.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj
NuGetMicrosoft.AspNetCore.Components.WebHavit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj
NuGetMicrosoft.Extensions.Logging.AbstractionsHavit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj
NuGetMicrosoft.Extensions.Logging.ConfigurationHavit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj
NuGetMicrosoft.EntityFrameworkCore.SqlServerHavit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj
NuGetMicrosoft.Extensions.Logging.AbstractionsHavit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj
NuGetMicrosoft.CodeAnalysis.CSharpHavit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators/Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators.csproj
NuGetMicrosoft.AspNetCore.Components.WebHavit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj
NuGetSmartComponents.AspNetCore.ComponentsHavit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj
NuGetbunitHavit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj
NuGetMoqHavit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj
NuGetMicrosoft.Extensions.LocalizationHavit.Blazor.Components.Web.Bootstrap/Havit.Blazor.Components.Web.Bootstrap.csproj
NuGetMicrosoft.AspNetCore.Components.WebHavit.Blazor.Components.Web.ECharts/Havit.Blazor.Components.Web.ECharts.csproj
NuGetbunitHavit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj
NuGetMoqHavit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj
NuGetHavit.CoreHavit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj
NuGetMicrosoft.Extensions.LocalizationHavit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj
NuGetMicrosoft.AspNetCore.Components.WebHavit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj
NuGetAzure.Monitor.OpenTelemetry.AspNetCoreHavit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj
NuGetLoxSmoke.DocXmlHavit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj
NuGetModelContextProtocol.AspNetCoreHavit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj
NuGetMicrosoft.Extensions.HostingHavit.Blazor.Documentation.RepoDumpGenerator/Havit.Blazor.Documentation.RepoDumpGenerator.csproj
NuGetMicrosoft.AspNetCore.Components.WebAssembly.ServerHavit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj
NuGetSmartComponents.AspNetCoreHavit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj
NuGetSmartComponents.Inference.OpenAIHavit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj
NuGetSmartComponents.LocalEmbeddingsHavit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj
NuGetbunitHavit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj
NuGetLoxSmoke.DocXmlHavit.Blazor.Documentation/Havit.Blazor.Documentation.csproj
NuGetMicrosoft.AspNetCore.Components.WebAssemblyHavit.Blazor.Documentation/Havit.Blazor.Documentation.csproj
NuGetMicrosoft.AspNetCore.Mvc.TestingHavit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj
NuGetMicrosoft.Playwright.Xunit.v3Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj
NuGetHavit.CoreHavit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj
NuGetMicrosoft.AspNetCore.Components.WebHavit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj
NuGetHavit.CoreHavit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj
NuGetMicrosoft.AspNetCore.Components.WebAssembly.AuthenticationHavit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj
NuGetprotobuf-netHavit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj
NuGetprotobuf-net.GrpcHavit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj
NuGetGrpc.Net.ClientHavit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj
NuGetGrpc.Net.Client.WebHavit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj
NuGetHavit.CoreHavit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj
NuGetMicrosoft.AspNetCore.Components.WebHavit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj
NuGetprotobuf-netHavit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj
NuGetprotobuf-net.Grpc.ClientFactoryHavit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj
NuGetHavit.CoreHavit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj
NuGetprotobuf-netHavit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj
NuGetprotobuf-net.GrpcHavit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj
NuGetGrpc.AspNetCore.ServerHavit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj
NuGetGrpc.AspNetCore.WebHavit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj
NuGetHavit.AspNetCoreHavit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj
NuGetHavit.CoreHavit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj
NuGetprotobuf-netHavit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj
NuGetprotobuf-net.Grpc.AspNetCoreHavit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj
NuGetHavit.CoreHavit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj
NuGetprotobuf-netHavit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj
NuGetprotobuf-net.GrpcHavit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj
NuGetMicrosoft.AspNetCore.Mvc.TestingHavit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj
NuGetMicrosoft.Playwright.Xunit.v3Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj
NuGetxunit.v3.mtp-v2Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj
NuGetHavit.CoreHavit.Blazor.Storage/Havit.Blazor.Storage.csproj
NuGetMicrosoft.AspNetCore.Components.WebHavit.Blazor.Storage/Havit.Blazor.Storage.csproj
NuGetMicrosoft.Extensions.Localization.AbstractionsHavit.Extensions.Localization/Havit.Extensions.Localization.csproj
NuGetMicrosoft.CodeAnalysisHavit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj
NuGetMicrosoft.CodeAnalysis.CSharpHavit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj
NuGetMicrosoft.CodeAnalysis.CSharp.SourceGenerators.TestingHavit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj
NuGetxunit.v3.mtp-v2Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj
NuGetMicrosoft.Testing.Extensions.TrxReportHavit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj
NuGetMicrosoft.CodeAnalysis.CSharpHavit.SourceGenerators.StrongApiStringLocalizers/Havit.SourceGenerators.StrongApiStringLocalizers.csproj
NuGetMicrosoft.AspNetCore.Components.WebAssemblyHavit.Blazor.TestApp/Havit.Blazor.TestApp.Client/Havit.Blazor.TestApp.Client.csproj
NuGetMicrosoft.AspNetCore.Components.WebAssembly.ServerHavit.Blazor.TestApp/Havit.Blazor.TestApp/Havit.Blazor.TestApp.csproj
全部依赖 443

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

注册表软件包版本关系
NuGetAzure.Monitor.OpenTelemetry.AspNetCore直接
NuGetbunit直接
NuGetGrpc.AspNetCore.Server直接
NuGetGrpc.AspNetCore.Web直接
NuGetGrpc.Net.Client直接
NuGetGrpc.Net.Client.Web直接
NuGetHavit.AspNetCore直接
NuGetHavit.Core直接
NuGetLoxSmoke.DocXml直接
NuGetMicrosoft.AspNetCore.Components.Web直接
NuGetMicrosoft.AspNetCore.Components.WebAssembly直接
NuGetMicrosoft.AspNetCore.Components.WebAssembly.Authentication直接
NuGetMicrosoft.AspNetCore.Components.WebAssembly.Server直接
NuGetMicrosoft.AspNetCore.Mvc.Testing直接
NuGetMicrosoft.CodeAnalysis直接
NuGetMicrosoft.CodeAnalysis.CSharp直接
NuGetMicrosoft.CodeAnalysis.CSharp.SourceGenerators.Testing直接
NuGetMicrosoft.EntityFrameworkCore.SqlServer直接
NuGetMicrosoft.Extensions.Hosting直接
NuGetMicrosoft.Extensions.Localization直接
NuGetMicrosoft.Extensions.Localization.Abstractions直接
NuGetMicrosoft.Extensions.Logging.Abstractions直接
NuGetMicrosoft.Extensions.Logging.Configuration直接
NuGetMicrosoft.Playwright.Xunit.v3直接
NuGetMicrosoft.Testing.Extensions.TrxReport直接
NuGetModelContextProtocol.AspNetCore直接
NuGetMoq直接
NuGetprotobuf-net直接
NuGetprotobuf-net.Grpc直接
NuGetprotobuf-net.Grpc.AspNetCore直接
NuGetprotobuf-net.Grpc.ClientFactory直接
NuGetSmartComponents.AspNetCore直接
NuGetSmartComponents.AspNetCore.Components直接
NuGetSmartComponents.Inference.OpenAI直接
NuGetSmartComponents.LocalEmbeddings直接
NuGetxunit.v3.mtp-v2直接
npm@babel/code-frame7.22.13间接
npm@babel/helper-validator-identifier7.22.20间接
npm@babel/highlight7.22.20间接
npm@cacheable/memory2.0.7间接
npm@cacheable/utils2.3.3间接
npm@csstools/css-parser-algorithms2.3.1间接
npm@csstools/css-parser-algorithms3.0.4间接
npm@csstools/css-parser-algorithms3.0.5间接
npm@csstools/css-syntax-patches-for-csstree1.0.26间接
npm@csstools/css-tokenizer2.2.0间接
npm@csstools/css-tokenizer3.0.3间接
npm@csstools/css-tokenizer3.0.4间接
npm@csstools/media-query-list-parser2.1.4间接
npm@csstools/media-query-list-parser3.0.1间接
npm@csstools/media-query-list-parser4.0.2间接
npm@csstools/media-query-list-parser4.0.3间接
npm@csstools/selector-specificity3.0.0间接
npm@csstools/selector-specificity5.0.0间接
npm@dual-bundle/import-meta-resolve4.1.0间接
npm@dual-bundle/import-meta-resolve4.2.1间接
npm@epic-web/invariant1.0.0间接
npm@keyv/bigmap1.3.1间接
npm@keyv/serialize1.0.3间接
npm@keyv/serialize1.1.1间接
npm@nodelib/fs.scandir2.1.5间接
npm@nodelib/fs.stat2.0.5间接
npm@nodelib/fs.walk1.2.8间接
npm@popperjs/core2.11.8间接
npm@stylistic/stylelint-config2.0.0间接
npm@stylistic/stylelint-plugin3.1.2间接
npm@types/minimist1.2.2间接
npm@types/normalize-package-data2.4.1间接
npmabbrev1.1.1间接
npmajv8.12.0间接
npmansi-regex5.0.1间接
npmansi-styles3.2.1间接
npmansi-styles4.3.0间接
npmansi-styles6.2.1间接
npmanymatch3.1.2间接
npmargparse2.0.1间接
npmarray-union2.1.0间接
npmarrify1.0.1间接
npmastral-regex2.0.0间接
npmautoprefixer10.4.15间接
npmautoprefixer10.4.21间接
npmbalanced-match1.0.2间接
npmbalanced-match2.0.0间接
npmbase64-js1.5.1间接
npmbinary-extensions2.2.0间接
npmbootstrap5.3.2间接
npmbootstrap5.3.8间接
npmbrace-expansion1.1.11间接
npmbrace-expansion2.0.1间接
npmbraces3.0.2间接
npmbraces3.0.3间接
npmbrowserslist4.21.10间接
npmbrowserslist4.24.4间接
npmbuffer6.0.3间接
npmcacheable1.8.10间接
npmcacheable2.3.2间接
npmcallsites3.1.0间接
npmcamelcase6.3.0间接
npmcamelcase-keys7.0.2间接
npmcaniuse-lite1.0.30001538间接
npmcaniuse-lite1.0.30001712间接
npmchalk2.4.2间接
npmchokidar3.5.3间接
npmchokidar3.6.0间接
npmclean-css5.3.2间接
npmclean-css5.3.3间接
npmclean-css-cli5.6.2间接
npmclean-css-cli5.6.3间接
npmcliui7.0.4间接
npmcolor-convert1.9.3间接
npmcolor-convert2.0.1间接
npmcolor-name1.1.3间接
npmcolor-name1.1.4间接
npmcolord2.9.3间接
npmcolorette1.2.2间接
npmcommander10.0.1间接
npmcommander12.1.0间接
npmcommander7.2.0间接
npmconcat-map0.0.1间接
npmcosmiconfig8.3.6间接
npmcosmiconfig9.0.0间接
npmcross-env10.1.0间接
npmcross-env7.0.3间接
npmcross-spawn6.0.6间接
npmcross-spawn7.0.3间接
npmcross-spawn7.0.6间接
npmcss-functions-list3.2.0间接
npmcss-functions-list3.2.3间接
npmcss-tree2.3.1间接
npmcss-tree3.1.0间接
npmcssesc3.0.0间接
npmdebug3.2.7间接
npmdebug4.3.4间接
npmdebug4.4.0间接
npmdebug4.4.3间接
npmdecamelize1.2.0间接
npmdecamelize5.0.1间接
npmdecamelize-keys1.1.1间接
npmdependency-graph0.11.0间接
npmdependency-graph1.0.0间接
npmdir-glob3.0.1间接
npmelectron-to-chromium1.4.525间接
npmelectron-to-chromium1.5.132间接
npmemoji-regex8.0.0间接
npmend-of-stream1.4.4间接
npmenv-paths2.2.1间接
npmerror-ex1.3.2间接
npmescalade3.1.1间接
npmescalade3.2.0间接
npmescape-string-regexp1.0.5间接
npmescape-string-regexp5.0.0间接
npmexeca1.0.0间接
npmfast-deep-equal3.1.3间接
npmfast-glob3.3.1间接
npmfast-glob3.3.3间接
npmfastest-levenshtein1.0.16间接
npmfastq1.13.0间接
npmfdir6.4.3间接
npmfile-entry-cache10.0.8间接
npmfile-entry-cache11.1.2间接
npmfile-entry-cache6.0.1间接
npmfill-range7.0.1间接
npmfill-range7.1.1间接
npmfind-unused-sass-variables5.0.0间接
npmfind-unused-sass-variables6.1.0间接
npmfind-up5.0.0间接
npmflat-cache3.0.4间接
npmflat-cache6.1.20间接
npmflat-cache6.1.8间接
npmflatted3.1.1间接
npmflatted3.3.3间接
npmfraction.js4.2.0间接
npmfraction.js4.3.7间接
npmfs-extra11.1.0间接
npmfs.realpath1.0.0间接
npmfsevents2.3.2间接
npmfunction-bind1.1.1间接
npmget-caller-file2.0.5间接
npmget-stdin9.0.0间接
npmget-stream4.1.0间接
npmglob7.2.3间接
npmglob-parent5.1.2间接
npmglobal-modules2.0.0间接
npmglobal-prefix3.0.0间接
npmglobby11.1.0间接
npmglobby13.1.2间接
npmglobjoin0.1.4间接
npmgraceful-fs4.2.6间接
npmhard-rejection2.1.0间接
npmhas1.0.3间接
npmhas-flag3.0.0间接
npmhas-flag4.0.0间接
npmhashery1.4.0间接
npmhookified1.15.0间接
npmhookified1.8.1间接
npmhosted-git-info4.1.0间接
npmhosted-git-info7.0.1间接
npmhtml-tags3.3.1间接
npmieee7541.2.1间接
npmignore5.2.4间接
npmignore7.0.3间接
npmignore7.0.5间接
npmignore-by-default1.0.1间接
npmimmutable4.1.0间接
npmimmutable4.3.7间接
npmimport-fresh3.3.0间接
npmimport-lazy4.0.0间接
npmimurmurhash0.1.4间接
npmindent-string5.0.0间接
npminflight1.0.6间接
npminherits2.0.4间接
npmini1.3.8间接
npminterpret1.4.0间接
npmis-arrayish0.2.1间接
npmis-binary-path2.1.0间接
npmis-core-module2.13.0间接
npmis-extglob2.1.1间接
npmis-fullwidth-code-point3.0.0间接
npmis-glob4.0.1间接
npmis-number7.0.0间接
npmis-plain-obj1.1.0间接
npmis-plain-object5.0.0间接
npmis-stream1.1.0间接
npmisexe2.0.0间接
npmisexe3.1.1间接
npmjs-tokens4.0.0间接
npmjs-yaml4.1.0间接
npmjson-parse-even-better-errors2.3.1间接
npmjson-parse-even-better-errors3.0.0间接
npmjson-parse-even-better-errors4.0.0间接
npmjson-schema-traverse1.0.0间接
npmjsonfile6.1.0间接
npmkeyv5.3.2间接
npmkeyv5.6.0间接
npmkind-of6.0.3间接
npmknown-css-properties0.28.0间接
npmknown-css-properties0.35.0间接
npmknown-css-properties0.37.0间接
npmlilconfig2.0.6间接
npmlilconfig3.1.3间接
npmlines-and-columns1.2.4间接
npmlines-and-columns2.0.3间接
npmlocate-path6.0.0间接
npmlodash.difference4.5.0间接
npmlodash.forown4.4.0间接
npmlodash.get4.4.2间接
npmlodash.groupby4.6.0间接
npmlodash.sortby4.7.0间接
npmlodash.truncate4.4.2间接
npmlru-cache10.0.1间接
npmlru-cache6.0.0间接
npmmap-obj1.0.1间接
npmmap-obj4.3.0间接
npmmathml-tag-names2.1.3间接
npmmdn-data2.0.30间接
npmmdn-data2.12.2间接
npmmdn-data2.19.0间接
npmmdn-data2.26.0间接
npmmemorystream0.3.1间接
npmmeow10.1.5间接
npmmeow13.2.0间接
npmmerge21.4.1间接
npmmicromatch4.0.5间接
npmmicromatch4.0.8间接
npmmin-indent1.0.1间接
npmminimatch3.1.2间接
npmminimatch9.0.3间接
npmminimist1.2.5间接
npmminimist1.2.8间接
npmminimist-options4.1.0间接
npmms2.1.2间接
npmms2.1.3间接
npmnanoid3.3.11间接
npmnanoid3.3.6间接
npmnice-try1.0.5间接
npmnode-releases2.0.13间接
npmnode-releases2.0.19间接
npmnodemon3.0.1间接
npmnodemon3.1.10间接
npmnopt1.0.10间接
npmnormalize-package-data3.0.3间接
npmnormalize-package-data6.0.0间接
npmnormalize-path3.0.0间接
npmnormalize-range0.1.2间接
npmnpm-normalize-package-bin4.0.0间接
npmnpm-run-all26.0.6间接
npmnpm-run-all28.0.4间接
npmnpm-run-path2.0.2间接
npmonce1.4.0间接
npmp-finally1.0.0间接
npmp-limit3.1.0间接
npmp-locate5.0.0间接
npmparent-module1.0.1间接
npmparse-json5.2.0间接
npmparse-json7.1.0间接
npmpath-exists4.0.0间接
npmpath-is-absolute1.0.1间接
npmpath-key2.0.1间接
npmpath-key3.1.1间接
npmpath-parse1.0.6间接
npmpath-type4.0.0间接
npmpicocolors1.0.0间接
npmpicocolors1.1.1间接
npmpicomatch2.3.1间接
npmpicomatch4.0.2间接
npmpidtree0.6.0间接
npmpify2.3.0间接
npmpostcss8.4.30间接
npmpostcss8.5.3间接
npmpostcss8.5.6间接
npmpostcss-cli10.1.0间接
npmpostcss-cli11.0.1间接
npmpostcss-load-config4.0.1间接
npmpostcss-load-config5.1.0间接
npmpostcss-media-query-parser0.2.3间接
npmpostcss-reporter7.0.2间接
npmpostcss-resolve-nested-selector0.1.1间接
npmpostcss-resolve-nested-selector0.1.6间接
npmpostcss-safe-parser6.0.0间接
npmpostcss-safe-parser7.0.1间接
npmpostcss-scss4.0.6间接
npmpostcss-scss4.0.9间接
npmpostcss-selector-parser6.0.13间接
npmpostcss-selector-parser6.1.2间接
npmpostcss-selector-parser7.1.0间接
npmpostcss-selector-parser7.1.1间接
npmpostcss-sorting8.0.2间接
npmpostcss-value-parser4.2.0间接
npmpretty-hrtime1.0.3间接
npmpstree.remy1.1.8间接
npmpump3.0.2间接
npmpunycode2.2.0间接
npmqified0.6.0间接
npmqueue-microtask1.2.3间接
npmquick-lru5.1.1间接
npmread-cache1.0.0间接
npmread-package-json-fast4.0.0间接
npmread-pkg6.0.0间接
npmread-pkg8.1.0间接
npmread-pkg-up8.0.0间接
npmreaddirp3.6.0间接
npmrechoir0.6.2间接
npmredent4.0.0间接
npmrequire-directory2.1.1间接
npmrequire-from-string2.0.2间接
npmresolve1.20.0间接
npmresolve-from4.0.0间接
npmresolve-from5.0.0间接
npmreusify1.0.4间接
npmrimraf3.0.2间接
npmrtlcss4.1.1间接
npmrtlcss4.3.0间接
npmrun-parallel1.2.0间接
npmsass1.67.0间接
npmsass1.78.0间接
npmsemver5.7.2间接
npmsemver7.5.4间接
npmshebang-command1.2.0间接
npmshebang-command2.0.0间接
npmshebang-regex1.0.0间接
npmshebang-regex3.0.0间接
npmshell-quote1.8.1间接
npmshelljs0.8.5间接
npmshelljs0.9.2间接
npmshx0.3.4间接
npmshx0.4.0间接
npmsignal-exit3.0.7间接
npmsignal-exit4.1.0间接
npmsimple-update-notifier2.0.0间接
npmslash3.0.0间接
npmslash4.0.0间接
npmslash5.0.0间接
npmslash5.1.0间接
npmslice-ansi4.0.0间接
npmsource-map0.6.1间接
npmsource-map-js1.0.2间接
npmsource-map-js1.2.1间接
npmspdx-correct3.1.1间接
npmspdx-exceptions2.3.0间接
npmspdx-expression-parse3.0.1间接
npmspdx-license-ids3.0.7间接
npmstring-width4.2.3间接
npmstrip-ansi6.0.1间接
npmstrip-bom5.0.0间接
npmstrip-eof1.0.0间接
npmstrip-indent4.0.0间接
npmstrip-json-comments3.1.1间接
npmstyle-search0.1.0间接
npmstylelint15.10.3间接
npmstylelint16.18.0间接
npmstylelint16.26.1间接
npmstylelint-config-recess-order4.3.0间接
npmstylelint-config-recess-order5.1.1间接
npmstylelint-config-recommended12.0.0间接
npmstylelint-config-recommended14.0.1间接
npmstylelint-config-recommended-scss12.0.0间接
npmstylelint-config-recommended-scss14.1.0间接
npmstylelint-config-standard33.0.0间接
npmstylelint-config-standard36.0.1间接
npmstylelint-config-standard-scss10.0.0间接
npmstylelint-config-standard-scss14.0.0间接
npmstylelint-config-twbs-bootstrap11.0.1间接
npmstylelint-config-twbs-bootstrap16.1.0间接
npmstylelint-order6.0.3间接
npmstylelint-order6.0.4间接
npmstylelint-scss5.2.1间接
npmstylelint-scss6.11.1间接
npmstylelint-scss6.14.0间接
npmstylelint-stylistic0.4.3间接
npmsupports-color5.5.0间接
npmsupports-color7.2.0间接
npmsupports-hyperlinks3.0.0间接
npmsupports-hyperlinks3.2.0间接
npmsvg-tags1.0.0间接
npmtable6.8.1间接
npmtable6.9.0间接
npmtinyglobby0.2.12间接
npmto-regex-range5.0.1间接
npmtouch3.1.0间接
npmtrim-newlines4.1.1间接
npmtype-fest1.4.0间接
npmtype-fest3.13.1间接
npmtype-fest4.3.1间接
npmundefsafe2.0.5间接
npmuniversalify2.0.0间接
npmupdate-browserslist-db1.0.11间接
npmupdate-browserslist-db1.1.3间接
npmuri-js4.4.1间接
npmutil-deprecate1.0.2间接
npmvalidate-npm-package-license3.0.4间接
npmwhich1.3.1间接
npmwhich2.0.2间接
npmwhich5.0.0间接
npmwrap-ansi7.0.0间接
npmwrappy1.0.2间接
npmwrite-file-atomic5.0.1间接
npmy18n5.0.6间接
npmyallist4.0.0间接
npmyaml2.1.1间接
npmyaml2.7.1间接
npmyargs17.2.1间接
npmyargs-parser20.2.9间接
npmyocto-queue0.1.0间接
依赖安全公告 24

该仓库未发布可被索引解析的包,因此评估的是其自身的依赖图——共 407 个包,其中也包含从不交付的开发与测试版本固定:24 个存在已知公告,0 个为直接依赖。 有 36 个无法评估——没有已解析的版本、生态系统不受支持,或不在所列包清单之内。

软件包版本关系严重程度公告数修复版本
flatted3.1.1间接严重23.4.2
flatted3.3.3间接严重23.4.2
immutable4.1.0间接严重35.1.8
immutable4.3.7间接严重35.1.8
minimist1.2.5间接严重11.2.6
shell-quote1.8.1间接严重21.9.0
brace-expansion1.1.11间接45.0.8
brace-expansion2.0.1间接45.0.8
braces3.0.2间接13.0.3
cross-spawn7.0.3间接17.0.5
js-yaml4.1.0间接34.3.0
minimatch3.1.2间接310.2.3
minimatch9.0.3间接310.2.3
picomatch2.3.1间接24.0.4
picomatch4.0.2间接24.0.4
postcss8.4.30间接48.5.18
postcss8.5.3间接38.5.18
postcss8.5.6间接38.5.18
yaml2.1.1间接22.8.3
ajv8.12.0间接18.18.0
micromatch4.0.5间接14.0.8
nanoid3.3.6间接15.0.9
path-parse1.0.6间接11.0.7
yaml2.7.1间接12.8.3

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "blazor",
        "wasm",
        "webassembly",
        "asp-net",
        "bootstrap",
        "bootstrap5"
      ],
      "is_fork": false,
      "size_kb": 50221,
      "has_wiki": true,
      "homepage": "https://havit.blazor.eu",
      "languages": {
        "C#": 1825010,
        "CSS": 65545,
        "HTML": 933267,
        "SCSS": 3991,
        "JavaScript": 44575
      },
      "pushed_at": "2026-07-28T14:44:58Z",
      "created_at": "2020-11-20T16:14:24Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-28T14:36:25Z",
      "description": "Free Bootstrap 5 components for ASP.NET Blazor + optional enterprise-level stack for Blazor development (gRPC code-first, layered architecture, localization, auth, ...)",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "C#",
      "significant_languages": [
        "C#",
        "HTML"
      ]
    },
    "owner": {
      "blog": "http://www.havit.eu",
      "name": "HAVIT",
      "type": "Organization",
      "login": "havit",
      "company": null,
      "location": "Prague, CZ",
      "followers": 50,
      "avatar_url": "https://avatars.githubusercontent.com/u/12955593?v=4",
      "created_at": "2015-06-18T17:13:09Z",
      "is_verified": null,
      "public_repos": 18,
      "account_age_days": 4057
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v4.25.1",
          "kind": "patch",
          "published_at": "2026-07-28T14:44:58Z"
        },
        {
          "tag": "v4.25.0",
          "kind": "minor",
          "published_at": "2026-06-19T18:32:20Z"
        },
        {
          "tag": "v4.24.3",
          "kind": "patch",
          "published_at": "2026-05-13T08:56:02Z"
        },
        {
          "tag": "v4.24.2",
          "kind": "patch",
          "published_at": "2026-05-04T22:59:06Z"
        },
        {
          "tag": "v4.24.1",
          "kind": "patch",
          "published_at": "2026-05-04T15:11:53Z"
        },
        {
          "tag": "v4.24.0",
          "kind": "minor",
          "published_at": "2026-04-15T20:49:59Z"
        },
        {
          "tag": "v4.23.1",
          "kind": "patch",
          "published_at": "2026-03-17T23:29:31Z"
        },
        {
          "tag": "v4.23.0",
          "kind": "minor",
          "published_at": "2026-02-27T15:38:59Z"
        },
        {
          "tag": "v4.22.0",
          "kind": "minor",
          "published_at": "2026-01-29T20:54:06Z"
        },
        {
          "tag": "v4.21.0",
          "kind": "minor",
          "published_at": "2026-01-06T15:32:55Z"
        },
        {
          "tag": "4.20.1",
          "kind": "patch",
          "published_at": "2025-11-19T16:06:59Z"
        },
        {
          "tag": "v4.20.0",
          "kind": "minor",
          "published_at": "2025-11-12T00:06:46Z"
        },
        {
          "tag": "v4.17.0",
          "kind": "minor",
          "published_at": "2025-11-05T09:44:28Z"
        },
        {
          "tag": "v4.16.0",
          "kind": "minor",
          "published_at": "2025-10-16T14:26:39Z"
        },
        {
          "tag": "v4.15.1",
          "kind": "patch",
          "published_at": "2025-09-19T09:15:22Z"
        },
        {
          "tag": "v4.15.0",
          "kind": "minor",
          "published_at": "2025-09-17T11:18:58Z"
        },
        {
          "tag": "v4.14.1",
          "kind": "patch",
          "published_at": "2025-09-04T20:21:03Z"
        },
        {
          "tag": "v4.14.0",
          "kind": "minor",
          "published_at": "2025-09-01T23:26:02Z"
        },
        {
          "tag": "v4.13.0",
          "kind": "minor",
          "published_at": "2025-08-03T18:57:05Z"
        },
        {
          "tag": "v4.12.3",
          "kind": "patch",
          "published_at": "2025-07-15T14:47:43Z"
        },
        {
          "tag": "v4.12.2",
          "kind": "patch",
          "published_at": "2025-06-10T11:24:40Z"
        },
        {
          "tag": "v4.12.1",
          "kind": "patch",
          "published_at": "2025-06-06T13:27:24Z"
        },
        {
          "tag": "v4.12.0",
          "kind": "minor",
          "published_at": "2025-06-05T23:55:42Z"
        },
        {
          "tag": "v4.11.0",
          "kind": "minor",
          "published_at": "2025-05-28T19:44:57Z"
        },
        {
          "tag": "v4.10.0",
          "kind": "minor",
          "published_at": "2025-05-27T10:07:51Z"
        },
        {
          "tag": "v4.9.0",
          "kind": "minor",
          "published_at": "2025-05-26T11:03:19Z"
        },
        {
          "tag": "v4.8.2",
          "kind": "patch",
          "published_at": "2025-04-30T11:21:25Z"
        },
        {
          "tag": "v4.8.1",
          "kind": "patch",
          "published_at": "2025-04-23T13:35:49Z"
        },
        {
          "tag": "v4.8.0",
          "kind": "minor",
          "published_at": "2025-04-10T15:05:54Z"
        },
        {
          "tag": "v4.7.14",
          "kind": "patch",
          "published_at": "2025-03-18T16:03:57Z"
        },
        {
          "tag": "4.7.13",
          "kind": "patch",
          "published_at": "2025-03-10T15:59:26Z"
        },
        {
          "tag": "v4.7.12",
          "kind": "patch",
          "published_at": "2025-03-03T14:49:47Z"
        },
        {
          "tag": "v4.7.11",
          "kind": "patch",
          "published_at": "2025-02-11T14:42:36Z"
        },
        {
          "tag": "v4.7.10",
          "kind": "patch",
          "published_at": "2025-02-06T16:57:33Z"
        },
        {
          "tag": "v4.7.9",
          "kind": "patch",
          "published_at": "2025-01-30T16:31:34Z"
        },
        {
          "tag": "v4.7.8",
          "kind": "patch",
          "published_at": "2025-01-21T10:03:19Z"
        },
        {
          "tag": "v4.7.7",
          "kind": "patch",
          "published_at": "2025-01-10T12:38:23Z"
        },
        {
          "tag": "v4.7.6",
          "kind": "patch",
          "published_at": "2024-12-20T14:59:17Z"
        },
        {
          "tag": "v4.7.5",
          "kind": "patch",
          "published_at": "2024-12-12T09:24:44Z"
        },
        {
          "tag": "v4.7.4",
          "kind": "patch",
          "published_at": "2024-12-09T16:08:53Z"
        },
        {
          "tag": "v4.7.3",
          "kind": "patch",
          "published_at": "2024-12-03T15:17:32Z"
        },
        {
          "tag": "v4.7.2",
          "kind": "patch",
          "published_at": "2024-11-26T11:20:06Z"
        },
        {
          "tag": "v4.7.1",
          "kind": "patch",
          "published_at": "2024-11-13T16:24:09Z"
        },
        {
          "tag": "v4.7.0",
          "kind": "minor",
          "published_at": "2024-11-12T23:33:15Z"
        },
        {
          "tag": "v4.6.20",
          "kind": "patch",
          "published_at": "2024-11-04T01:05:22Z"
        },
        {
          "tag": "v4.6.19",
          "kind": "patch",
          "published_at": "2024-10-25T12:11:44Z"
        },
        {
          "tag": "v4.6.18",
          "kind": "patch",
          "published_at": "2024-10-23T23:45:26Z"
        },
        {
          "tag": "v4.6.17",
          "kind": "patch",
          "published_at": "2024-10-11T09:58:04Z"
        },
        {
          "tag": "v4.6.16",
          "kind": "patch",
          "published_at": "2024-10-09T13:22:38Z"
        },
        {
          "tag": "v4.6.15",
          "kind": "patch",
          "published_at": "2024-10-02T00:27:48Z"
        },
        {
          "tag": "v4.6.14",
          "kind": "patch",
          "published_at": "2024-09-10T22:10:25Z"
        },
        {
          "tag": "v4.6.13",
          "kind": "patch",
          "published_at": "2024-09-02T13:33:01Z"
        },
        {
          "tag": "v4.6.12",
          "kind": "patch",
          "published_at": "2024-08-05T15:25:31Z"
        },
        {
          "tag": "v4.6.11",
          "kind": "patch",
          "published_at": "2024-08-05T15:22:13Z"
        },
        {
          "tag": "v4.6.10",
          "kind": "patch",
          "published_at": "2024-07-12T22:06:05Z"
        },
        {
          "tag": "v4.6.9",
          "kind": "patch",
          "published_at": "2024-06-26T12:52:04Z"
        },
        {
          "tag": "v4.6.8",
          "kind": "patch",
          "published_at": "2024-06-12T10:20:52Z"
        },
        {
          "tag": "v4.6.7",
          "kind": "patch",
          "published_at": "2024-05-06T14:55:40Z"
        },
        {
          "tag": "v4.6.6",
          "kind": "patch",
          "published_at": "2024-04-29T14:56:52Z"
        },
        {
          "tag": "v4.6.5",
          "kind": "patch",
          "published_at": "2024-04-24T19:40:35Z"
        },
        {
          "tag": "v4.6.4",
          "kind": "patch",
          "published_at": "2024-04-22T16:05:23Z"
        },
        {
          "tag": "v4.6.3",
          "kind": "patch",
          "published_at": "2024-04-17T15:33:01Z"
        },
        {
          "tag": "v4.6.2",
          "kind": "patch",
          "published_at": "2024-04-08T11:04:13Z"
        },
        {
          "tag": "v4.6.1",
          "kind": "patch",
          "published_at": "2024-03-25T10:26:08Z"
        },
        {
          "tag": "v4.6.0",
          "kind": "minor",
          "published_at": "2024-03-13T07:37:49Z"
        },
        {
          "tag": "v4.5.5",
          "kind": "patch",
          "published_at": "2024-02-05T23:14:01Z"
        },
        {
          "tag": "v4.5.4",
          "kind": "patch",
          "published_at": "2024-02-05T09:28:49Z"
        },
        {
          "tag": "v4.5.3",
          "kind": "patch",
          "published_at": "2024-01-29T15:05:32Z"
        },
        {
          "tag": "v4.5.2",
          "kind": "patch",
          "published_at": "2024-01-25T14:41:18Z"
        },
        {
          "tag": "v4.5.1",
          "kind": "patch",
          "published_at": "2024-01-25T11:41:27Z"
        },
        {
          "tag": "v4.5.0",
          "kind": "minor",
          "published_at": "2024-01-23T09:15:03Z"
        },
        {
          "tag": "v4.4.1",
          "kind": "patch",
          "published_at": "2023-12-22T15:33:56Z"
        },
        {
          "tag": "v4.4.0",
          "kind": "minor",
          "published_at": "2023-12-21T15:41:17Z"
        },
        {
          "tag": "v4.3.5",
          "kind": "patch",
          "published_at": "2023-12-13T00:01:49Z"
        },
        {
          "tag": "v4.3.4",
          "kind": "patch",
          "published_at": "2023-11-27T23:38:27Z"
        },
        {
          "tag": "v4.3.3",
          "kind": "patch",
          "published_at": "2023-11-27T11:27:06Z"
        },
        {
          "tag": "v4.3.2",
          "kind": "patch",
          "published_at": "2023-11-24T01:07:23Z"
        },
        {
          "tag": "v4.3.1",
          "kind": "patch",
          "published_at": "2023-11-15T11:01:31Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2023-11-15T01:45:12Z"
        },
        {
          "tag": "v4.2.7",
          "kind": "patch",
          "published_at": "2023-11-11T00:53:14Z"
        },
        {
          "tag": "v4.2.6",
          "kind": "patch",
          "published_at": "2023-11-07T14:44:52Z"
        },
        {
          "tag": "v4.2.5",
          "kind": "patch",
          "published_at": "2023-10-16T08:22:08Z"
        },
        {
          "tag": "v4.2.4",
          "kind": "patch",
          "published_at": "2023-10-13T00:15:56Z"
        },
        {
          "tag": "v4.2.3",
          "kind": "patch",
          "published_at": "2023-10-12T15:38:08Z"
        },
        {
          "tag": "v4.2.2",
          "kind": "patch",
          "published_at": "2023-10-08T14:50:51Z"
        },
        {
          "tag": "v4.2.1",
          "kind": "patch",
          "published_at": "2023-09-24T07:21:04Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2023-09-20T21:54:26Z"
        },
        {
          "tag": "v4.1.3",
          "kind": "patch",
          "published_at": "2023-09-07T10:33:06Z"
        },
        {
          "tag": "v4.1.2",
          "kind": "patch",
          "published_at": "2023-09-07T07:28:54Z"
        },
        {
          "tag": "v4.1.1",
          "kind": "patch",
          "published_at": "2023-08-21T14:07:45Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2023-08-18T13:00:29Z"
        },
        {
          "tag": "v4.0.8",
          "kind": "patch",
          "published_at": "2023-08-02T12:50:35Z"
        },
        {
          "tag": "v4.0.7",
          "kind": "patch",
          "published_at": "2023-08-02T11:23:20Z"
        },
        {
          "tag": "v4.0.6",
          "kind": "patch",
          "published_at": "2023-08-01T15:49:41Z"
        },
        {
          "tag": "v4.0.5",
          "kind": "patch",
          "published_at": "2023-07-30T21:08:36Z"
        },
        {
          "tag": "v4.0.4",
          "kind": "patch",
          "published_at": "2023-07-17T15:19:52Z"
        },
        {
          "tag": "v4.0.3",
          "kind": "patch",
          "published_at": "2023-06-29T12:29:44Z"
        },
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2023-06-14T14:58:40Z"
        },
        {
          "tag": "v4.0.1",
          "kind": "patch",
          "published_at": "2023-06-06T09:21:35Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2023-06-05T23:35:49Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "be209ca3c78ac06645857b8d1371b141d866e7dd",
          "body": null,
          "is_bot": false,
          "headline": "release-notes prompt -> skill",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-28T14:30:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13844cc2f45941e7bdf4edf521df5029296d889b",
          "body": null,
          "is_bot": false,
          "headline": "release-notes prompt -> skill",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-28T14:15:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a87f334bfa30e444a22f02e67c79e55e745d1f15",
          "body": null,
          "is_bot": false,
          "headline": "release 4.25.1",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-28T13:47:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ace4b08e41f54310bd4e8f4c7ae6118268ba1e7",
          "body": null,
          "is_bot": false,
          "headline": "Enable detailed error messages in development environment",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-28T13:46:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "006cf85ba7d5b66f720dc5d87c0c9c9a951c15a2",
          "body": "…oning",
          "is_bot": false,
          "headline": "Add LocalizationPackagesVersion to project files for consistent versi…",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-28T13:36:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21d79bef6e6e220512f3134b1b88e567094f9367",
          "body": "…cation details",
          "is_bot": false,
          "headline": "Update AGENTS.md with testing framework instructions and build verifi…",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-28T13:22:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42d2e0b8ecc956536ed56b180c606070a5e850d9",
          "body": "…unrelated parent render (#1735)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[HxEChart] Avoid re-serializing/retaining full Options JSON on every …",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-28T11:31:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "69339dcb8469deb44a4925ac744c3b36e55549fb",
          "body": "Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump dependencies to latest stable versions (#1738)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-07-27T21:38:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b2455ebde411a6a44c7541c2a7b2143634f5af3d",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump actions/setup-dotnet from 5 to 6 (#1727)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T23:01:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a2b237632968a2f65eb2c2a481454059410bd95",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump ModelContextProtocol.AspNetCore from 1.4.0 to 1.4.1 (#1713)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-14T15:27:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5c2fbaafca2402bb104696f70a137d7193751645",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.Testing.Extensions.TrxReport from 2.2.3 to 2.3.2 (#1721)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-14T14:36:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "550cf38a5a9681710da9ae59fd7dda8cbf3f1963",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions/setup-cli from 0.82.1 to 0.82.2 (#1570)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-02T21:53:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14b8816b955ef095a39a5f22640514eff9206600",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions/setup-cli from 0.82.0 to 0.82.1 (#1568)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-02T08:02:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4679f0ec8fe7b260ab086c0a4edc72aa9fa4b91",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Havit.Core from 2.0.36 to 2.0.38 (#1562)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-01T13:32:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aae5e610a28835bff3f08993f2908d51649cfd8c",
          "body": "…564)\"\n\nThis reverts commit 7cdd6c50942ba98958b10794762483b20c6d94ad.",
          "is_bot": false,
          "headline": "Revert \"Docs search: round ⌘K/Ctrl+K kbd hint corners (rounded-4) (#1…",
          "author_name": "Dominik Crha",
          "author_login": "crdo",
          "committed_at": "2026-07-01T11:15:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7cdd6c50942ba98958b10794762483b20c6d94ad",
          "body": "Co-authored-by: Claude <noreply@anthropic.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: crdo <1410922+crdo@users.noreply.github.com>\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCo-authored-by: Jiří Kanda <kanda@havit.cz>\nCo-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Docs search: round ⌘K/Ctrl+K kbd hint corners (rounded-4) (#1564)",
          "author_name": "Dominik Crha",
          "author_login": "crdo",
          "committed_at": "2026-07-01T07:24:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "325b57ce754de044a16416df831a6927b4efe0ef",
          "body": null,
          "is_bot": false,
          "headline": "BuildPipeline-002.HFW-HavitBlazor-v6.yml",
          "author_name": "Jiří Kanda",
          "author_login": "jirikanda",
          "committed_at": "2026-06-30T10:17:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ae0fee9b10dd3032435c37cc1e45f41e6c04743",
          "body": null,
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions/setup-cli from 0.81.6 to 0.82.0 (#1550)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-30T07:55:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e1cffcb2b629528254fd68bf80d3c81edf62356",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions/setup-cli from 0.81.2 to 0.81.6 (#1543)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T13:12:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f39e86075384625fbb8c6f628994e6105673fc1e",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.Playwright.Xunit.v3 from 1.60.0 to 1.61.0 (#1537)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T12:24:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d9dd90603e9b47efe822ab5cc8cc6044bdb1243",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions from 0.80.6 to 0.81.2 (#1536)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T12:21:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2de1bd6ee13a911a071f52e3162b6383eb15d17d",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump actions/cache from 5 to 6 (#1534)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T12:20:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6be72672a372c93b9815191563ab9bc50cc723a2",
          "body": "….23 (#1528)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.VisualStudio.Threading.Analyzers from 17.14.15 to 18.7…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T10:57:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed3bd04b8108c08eb18ac8983ea485218a79a41d",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions from 0.80.4 to 0.80.6 (#1512)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-19T21:37:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04267f96ca8977cfb9be237a1efbcb2afda13271",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions from 0.80.2 to 0.80.4 (#1511)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T22:08:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47510f120aadda3880f5d720a7c241fded653d99",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump actions/checkout from 6 to 7 (#1510)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T22:08:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "720e20bf237258aabda8e5dc694f425bf038a37f",
          "body": null,
          "is_bot": false,
          "headline": "relese 4.25.0 (+ ApplicationInsights + Storage)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-18T10:28:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eee0a4710bfc5baf761582acc8ec65b069bb49c8",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions from 0.80.0 to 0.80.2 (#1509)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T08:26:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53f5e9d0be864258a4f7b2b6afcfce3c349ab021",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions from 0.79.8 to 0.80.0 (#1508)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T22:30:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b0852254e5233aca39f166e854a11e32aa38f40",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump github/gh-aw-actions from 0.79.6 to 0.79.8 (#1507)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-16T07:58:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d32a93ec1e9adc9f7cfc0e6ab2fec175cb19f8b1",
          "body": null,
          "is_bot": false,
          "headline": "gh aw init",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-15T13:08:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a124be413d7a2c90d80e68a01938d2b571eb83ea",
          "body": "…(#1437)\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bump dependencies; migrate xUnit v3 to Microsoft.Testing.Platform v2 …",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-09T23:01:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a55bdc91265748e0a7bfa37803fa77d7ad8ee156",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Docs: trim Havit.Blazor.Storage browser storage page (#1432)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-09T07:56:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "87e436e73092454427aa59608819ca236b92214d",
          "body": null,
          "is_bot": false,
          "headline": "release 1.0.0-pre02",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-08T15:06:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93b8b0ffc4cdbee9dfac40ecc2f82a7d5afc1bd7",
          "body": "…terTemplate",
          "is_bot": false,
          "headline": "[HxGrid] doc - Update header filtering documentation to use HeaderFil…",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-08T14:14:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04a38797a491fe493e2ba4e7f20ba8540b413250",
          "body": null,
          "is_bot": false,
          "headline": "Update SDK version and configuration in global.json",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-08T14:00:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b493232f1cc2bd2c2a7db85d6486abae59a87c7",
          "body": "Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nCo-authored-by: Dominik Crha <crha@havit.cz>",
          "is_bot": false,
          "headline": "Remove need for consumer-side Accessibility.js patches (#1393)",
          "author_name": "Michael Melena",
          "author_login": "MichaelMelena",
          "committed_at": "2026-06-08T13:56:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4e07ce850473859035aa147687e5e8405d689144",
          "body": "…ccessibilty Feature (#1386)\n\nCo-authored-by: efinder2 <daniel.brenzel@web.de>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Dominik Crha <crha@havit.cz>",
          "is_bot": false,
          "headline": "[HxGrid] [HxGridColumn] Added FilterHeaderTemplate and TabIndex for A…",
          "author_name": "optPrim3",
          "author_login": "optPrim3",
          "committed_at": "2026-06-08T13:39:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9c782b32be6bcab3144e482b9550a29a6f4e0661",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add .claude/launch.json with dev server launch configurations (#1431)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-08T11:20:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "97d5c41858788a5d6200e74a67d277c079e10f5b",
          "body": null,
          "is_bot": false,
          "headline": "Update gitignore",
          "author_name": "Dominik Crha",
          "author_login": "crdo",
          "committed_at": "2026-06-08T10:28:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1605550b57ec6d5a8a757761fff0fa9c88ea25d",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump ModelContextProtocol.AspNetCore from 1.3.0 to 1.4.0 (#1430)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-05T10:06:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c38f7bcfd480bd79fbebc112cd114d93c974ebe",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[ApplicationInsights] Documentation (web) (#1422) (#1428)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-03T21:37:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cd7a8ac5ab3367731221d8f4ab5e692837311cae",
          "body": "…grid is already disposed (#1425)\n\nCo-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[HxGrid] Reject RefreshDataAsync with InvalidOperationException when …",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-03T12:59:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0820328b2082d9eb3db2a0997058f025cf5466ac",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[Storage] Add Browser Web Storage documentation (web) (#1423) (#1426)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-03T12:58:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b8f5234142d29af1f85a75c536cd8a09e453f3e7",
          "body": "Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[ApplicationInsights] Prefix component names with Hx (#1421)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-06-03T12:14:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f34545196cc793691b62c6cc7b94b5ef7384b1ab",
          "body": null,
          "is_bot": false,
          "headline": "[BlazorApplicationInsights] Enable faky test and disable parallelization",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-03T11:01:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86367d38d3319e932f4e5a379856f6984a639f12",
          "body": null,
          "is_bot": false,
          "headline": "ApplicationInsights, Storage pre-releases",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-01T15:50:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f7fbd99f88e628c28c54d18695bfb6cb547a122",
          "body": "Replaced hardcoded package versions in Directory.Packages.props with MSBuild properties for key Microsoft packages. This centralizes version management and ensures alignment with defined AspNetCoreVersion properties.",
          "is_bot": false,
          "headline": "Update package versions to use MSBuild properties",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-01T14:54:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78f79132aaef616f714e5c815aca411fa7d12035",
          "body": "…t9.0 (#1419)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Resolve MSB3277 DI/Logging.Abstractions version conflict on net8.0/ne…",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-06-01T12:34:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5919d8a925005cff099235c8ee26901328a55fcc",
          "body": "…g.Platform) (#1416)\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>",
          "is_bot": false,
          "headline": "Migrate test suite from MSTest to xUnit (xunit.v3 on Microsoft.Testin…",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-06-01T09:45:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1edbdc4dd17fbf9c8040f03feab40a58dd2219b3",
          "body": "…(#1412)\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\nCo-authored-by: Dominik Crha <crha@havit.cz>",
          "is_bot": false,
          "headline": "HxGrid: enlarge multi-select checkbox click target to the whole cell …",
          "author_name": "Jakub Nabelek",
          "author_login": "Allegon",
          "committed_at": "2026-06-01T07:22:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "066d865e594492435637c87715cfcc55c1e39272",
          "body": "Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Havit.Blazor.Storage (#1417)",
          "author_name": "Alexandr Hájek",
          "author_login": "alexandrhajek",
          "committed_at": "2026-05-31T23:03:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f957a9fac0de6db0348dccbfe92f4edd9d3c01a7",
          "body": "Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: jirikanda <5111719+jirikanda@users.noreply.github.com>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>",
          "is_bot": false,
          "headline": "Havit.Blazor.ApplicationInsights (#1246)",
          "author_name": "Jiří Kanda",
          "author_login": "jirikanda",
          "committed_at": "2026-05-31T22:46:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e323438be69c74f047d2191a5d8284a130da375e",
          "body": "…3 to 1.1.4 (#1410)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing from 1.1.…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-26T14:36:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d884c4ff0da8ae924c48fc5121634570e68fb0ec",
          "body": "Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Downgrade protobuf-net.Grpc from delisted 1.2.5 to 1.2.2 (#1409)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-05-25T14:09:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b2e6f56195c21d0de08f05890a4f29cb1bf276f2",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump MSTest from 4.2.2 to 4.2.3 (#1404)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:34:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e970382a957bfffdd6cf78d78aff029df0f687f2",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.Playwright.MSTest.v4 from 1.59.0 to 1.60.0 (#1407)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-21T22:33:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c798f5865962abf5740fe77c344aa2631630830",
          "body": "…auto-selected value (#1406)\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix HxInputNumber losing minus sign when typing negative number into …",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-05-21T22:27:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dc949443852a8221e7cbe815f5ce279e553983b8",
          "body": null,
          "is_bot": false,
          "headline": "release 4.24.3",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-05-13T08:50:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "726861bf7a5fbabe2e8bf4eff265434b8ae92f2f",
          "body": null,
          "is_bot": false,
          "headline": "Update ASP.NET Core and package versions to latest stable releases",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-05-13T08:08:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa21f89e46bb376c758b763659d4848501ae9a60",
          "body": "* Initial plan\n\n* fix: update Azure Pipelines badge URL to new endpoint\n\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/5c527837-e176-4d2e-b923-2f58e07a06c6\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\n\n* fix: update LICENSE links to main branch in badge section\n[…]\n28888+hakenr@users.noreply.github.com>\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Update Azure Pipelines badge URLs to new DEV status endpoint (#1399)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-05-12T18:37:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1d08bd6d2af6c257d264e105c3e43645865821e5",
          "body": null,
          "is_bot": false,
          "headline": "release 4.24.2",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-05-04T22:58:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bdb04ded6f31edae090a9fbd6a5d3f853bdc5a7",
          "body": "* Initial plan\n\n* [HxTabPanel] Restore pointer cursor on tab headers (regression from #1372)\n\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/012edcea-a7b4-48e6-aaa7-4c888f6a7cd7\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\n\n* Remove HxTabPanel_Nav_HasHxTabPanelC\n[…]\nd-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: crdo <1410922+crdo@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[HxTabPanel] Restore pointer cursor on tab headers (#1380)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-05-04T15:17:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3b8cfbec4d05e1a84384c2da136f50307a103d64",
          "body": null,
          "is_bot": false,
          "headline": "Change --hx-toast-container-margin into padding (#1381)",
          "author_name": "Alexandr Hájek",
          "author_login": "alexandrhajek",
          "committed_at": "2026-05-04T15:09:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "434ee086bed9b66003293c185545e53f5b024d46",
          "body": null,
          "is_bot": false,
          "headline": "release 4.24.1",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-05-04T14:44:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5e39658fe8080dffead631cdfdd405084602832",
          "body": null,
          "is_bot": false,
          "headline": "[HxMarkdown] demo update",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-05-04T14:43:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07cdb78bf39f49c67bb7f535a72703ac40010373",
          "body": "* Initial plan\n\n* feat(HxMarkdown): add automatic URL detection (naked links autolinks)\n\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/9292ddf8-0a7c-415c-8ea0-b360c93ed3e0\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\n\n* test(HxMarkdown): add tests verifying nak\n[…]\n-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[HxMarkdown] Automatic URL detection (naked links) (#1395)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-05-04T14:32:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e00aa11d86b155d14957cc9dd5480b5e02f91296",
          "body": "Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Dependencies - bump versions",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-05-04T09:20:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d3d204a3701d0ea3fd9af99a2797e1359ef8d0a",
          "body": "[skip ci]",
          "is_bot": false,
          "headline": "Set up CI with Azure Pipelines",
          "author_name": "Jiří Kanda",
          "author_login": "jirikanda",
          "committed_at": "2026-04-29T14:23:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a829b331a498338caefa92bc5d352e94abbeec4",
          "body": "Updates Microsoft.EntityFrameworkCore.SqlServer (net10.0), Microsoft.Extensions.Localization, System.Text.Json, and System.Formats.Asn1 from 10.0.6 to 10.0.7 to match the April 2026 servicing release.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump Microsoft .NET 10 dependencies to 10.0.7",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-22T07:30:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c18d596ed6a7a4d9528f3013cd6fbca5a3cc1cc8",
          "body": "…o 10.0.7 (#1382)\n\n---\nupdated-dependencies:\n- dependency-name: Microsoft.AspNetCore.Components.WebAssembly.Server\n  dependency-version: 10.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.AspNetCore.Components.WebAssembly.Server from 10.0.6 t…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T22:56:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d0a00954aef8cd3c78b2c5533f4741c9439355b",
          "body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.Extensions.Hosting\n  dependency-version: 10.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.Extensions.Hosting from 10.0.6 to 10.0.7 (#1384)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T22:56:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2618c2767b2e10137690ff4c84a88f4256e3eda4",
          "body": "….0.7 (#1385)\n\n---\nupdated-dependencies:\n- dependency-name: Microsoft.Extensions.Localization.Abstractions\n  dependency-version: 10.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.Extensions.Localization.Abstractions from 10.0.6 to 10…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T22:56:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7dea425564a9d92c7795f27d8babaae8a143188f",
          "body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.AspNetCore.Mvc.Testing\n  dependency-version: 10.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.AspNetCore.Mvc.Testing from 10.0.6 to 10.0.7 (#1383)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-21T22:55:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c21d8dd7f78b4928a5dbf9123c0f4c2ab9f8b30a",
          "body": null,
          "is_bot": false,
          "headline": "release 4.24.0",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-15T20:43:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26b2caf35b56be575af02ff1be90406449ab8198",
          "body": "…demo for dark mode compatibility\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: use bg-body-secondary instead of bg-light in HxMarkdown Wrapper …",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-15T20:11:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0905380cdb6f876ff00ba973ad2488bc97ac0bec",
          "body": "- ASP.NET Core 8.x: 8.0.25 → 8.0.26\n- ASP.NET Core 9.x: 9.0.14 → 9.0.15\n- Microsoft.CodeAnalysis / CSharp: 5.0.0 → 5.3.0\n- Microsoft.EntityFrameworkCore.SqlServer: 10.0.5/9.0.14 → 10.0.6/9.0.15\n- Microsoft.Extensions.Localization: 10.0.5 → 10.0.6\n- Microsoft.NET.Test.Sdk: 18.3.0 → 18.4.0\n- System.Text.Json: 10.0.5 → 10.0.6\n- System.Formats.Asn1: 10.0.5 → 10.0.6\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump dependencies",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-15T19:48:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "44d5bf5f61d0bc31284b215ca928893b7d86ba48",
          "body": "Wait for each tag to render before adding the next, and use\natomic ToHaveTextAsync(string[]) assertion to avoid DOM race\nconditions during Blazor re-renders.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: stabilize flaky HxInputTags_AddMultiple_AllDisplayed E2E test",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-15T19:17:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dea43c45f7ba6a09aab2d70f71e1c41dc0fe1f42",
          "body": "…bproject",
          "is_bot": false,
          "headline": "Update .gitignore to exclude local PR worktrees and remove pr-1374 su…",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-15T19:00:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0746ab8ba56133ac29bac6913651be0ca9e568ec",
          "body": "* feat: Add HxMarkdown component for rendering Markdown as HTML\n\nStandalone markdown-to-HTML parser with Bootstrap typography classes.\nNo external dependencies - custom block-level and inline parser.\n\nComponent features:\n- Content parameter for markdown input\n- SanitizeHtml (default true) - escapes \n[…]\n198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "HxMarkdown: New standalone Markdown-to-HTML component (#1374)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-15T16:53:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2f6d8be4bca71246ed8949723cb697bdeefc8033",
          "body": "….0.6 (#1378)\n\n---\nupdated-dependencies:\n- dependency-name: Microsoft.Extensions.Localization.Abstractions\n  dependency-version: 10.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.Extensions.Localization.Abstractions from 10.0.5 to 10…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-15T15:31:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4438b6d24dd93730cb8c17821a331a82fff6b066",
          "body": "…o 10.0.6 (#1375)\n\n---\nupdated-dependencies:\n- dependency-name: Microsoft.AspNetCore.Components.WebAssembly.Server\n  dependency-version: 10.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Microsoft.AspNetCore.Components.WebAssembly.Server from 10.0.5 t…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-15T15:30:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f3af80027a26889e7afc8d6322420ef3777cc9c",
          "body": null,
          "is_bot": false,
          "headline": "coding agents cleanup",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-14T22:57:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6571bb113f28c49dc46afb5f79dfa7f76a4f1476",
          "body": null,
          "is_bot": false,
          "headline": "Replay havit/AddRolesToTab changes onto PR #1372 branch",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-14T14:18:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2efc080b2c9a9554bcdbf80d1b700d4648ea5d77",
          "body": "* Added parameters for accessibility features that screenrader reads on tab change\n\n* Added aria-contros and added 0 and -1 for active and no active tabindex\n\n* Added PR Suggestions for Tab/Header ID and tabindex\n\n* CssClassHelper usage removed\n\n* Apply suggestion from @Copilot\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[HxTabPanel] Added Accessibility Features for HxTabPanel (#1372)",
          "author_name": "optPrim3",
          "author_login": "optPrim3",
          "committed_at": "2026-04-14T14:16:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "db4ac4d436008ea145cb014b4027c8d00e5e0f48",
          "body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.Playwright.MSTest.v4\n  dependency-version: 1.59.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>",
          "is_bot": true,
          "headline": "Bump Microsoft.Playwright.MSTest.v4 from 1.58.0 to 1.59.0 (#1369)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-10T08:20:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e249a16b0439bf8095001000fa4ed38292e26609",
          "body": "Bootstrap is vendored (custom build) — we follow upstream Bootstrap directly and do not want Dependabot to raise version or security PRs for its npm dependencies. Point the npm ecosystem entry to the correct directory (/Havit.Bootstrap) and add ignore: '*' which blocks security updates as well as regular version updates.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Dependabot: suppress all npm updates for vendored Bootstrap (#1370)",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-04-10T08:18:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ae797b1b11e46bc1497f99da6d2e2269554e5d5a",
          "body": "* Bump MSTest from 4.1.0 to 4.2.1\n\n---\nupdated-dependencies:\n- dependency-name: MSTest\n  dependency-version: 4.2.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\n* Fix MSTEST0037: Use Assert.IsNotEmpty instead\n[…]\n49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump MSTest from 4.1.0 to 4.2.1 (#1368)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-10T08:13:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8987e07b45d7259e75a71868f79178c542dc74b8",
          "body": "---\nupdated-dependencies:\n- dependency-name: ModelContextProtocol.AspNetCore\n  dependency-version: 1.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump ModelContextProtocol.AspNetCore from 1.1.0 to 1.2.0 (#1367)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-10T07:54:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41a3efa5e1ccc6e978632abd48d463fe90f12a4e",
          "body": null,
          "is_bot": false,
          "headline": ".claude/worktrees removal",
          "author_name": "Jiří Kanda",
          "author_login": "jirikanda",
          "committed_at": "2026-04-07T10:55:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb46380cc4ed02896375d3e169d3fa0f3454990a",
          "body": null,
          "is_bot": false,
          "headline": "additional tests",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-03-26T21:24:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c37ecf569d44831254c405ad0a5fc36669cc92e0",
          "body": "…pp Template description",
          "is_bot": false,
          "headline": "Update GettingStarted.razor to reflect .NET 10 in Simple Blazor Web A…",
          "author_name": "Robert Haken",
          "author_login": "hakenr",
          "committed_at": "2026-03-26T16:27:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa5b4a6038aee7efb7255b200c5b2bb619e2225f",
          "body": "* Initial plan\n\n* Add Playwright E2E tests for HxSidebar\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/49e27630-8d15-4e21-9651-c1cb19b4d374\n\n* Apply review feedback: rename files to convention, add mobile toggler tes\n[…]\nnoreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "E2E: HxSidebar — Playwright browser tests (#1356)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T07:04:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ddaabb067428a48799c3c028c7c9fa80569eea9",
          "body": "…ion (#1299)\n\n* Initial plan\n\n* Add bUnit tests for HxCalendar rendering, navigation, and date selection\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/4dbce7f9-d53a-4118-9b42-6be281b2729c\n\n* Add CultureScope helper a\n[…]\nnoreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add bUnit tests for HxCalendar rendering, navigation, and date select…",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T05:19:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9d85b9e685d2efd63b52a24fb42047cce72b25a9",
          "body": "* Initial plan\n\n* Add bUnit tests for HxListLayout component\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/db761461-d1f1-43b8-a7da-7a9ff5395797\n\n* Update Havit.Blazor.Components.Web.Bootstrap.Tests/HxListLayoutTests.\n[…]\nnoreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "bUnit: HxListLayout — basic rendering & behavior tests (#1321)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T04:57:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a1ccd121997daf2e0a5c56cbd7a26d27d5416846",
          "body": "* Initial plan\n\n* Add Playwright E2E tests for HxDropdown\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/d9c407d0-efbb-4eb4-a2bd-664dd7db3cb6\n\n* Apply review feedback: rename files/class and fix divider assertion\n\nCo-\n[…]\ns/4dbff5ae-d9b5-4cdf-85cb-6e7369566b25\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>",
          "is_bot": false,
          "headline": "E2E: HxDropdown — Playwright browser tests (#1347)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T04:42:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "274d376a889ae1ed45dc923e5015d3b850b91cb3",
          "body": "* Initial plan\n\n* Add HxPopover E2E Playwright tests\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/5955f5bc-2bdd-4d6e-b990-5040c16e62d4\n\n* Update Havit.Blazor.TestApp/Havit.Blazor.TestApp.Client/HxPopoverTests/HxPopo\n[…]\nnoreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "E2E: HxPopover — Playwright browser tests (#1358)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T04:40:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "324c7f65ffeb801416c12e94b2a1dcb40d75e999",
          "body": "* Initial plan\n\n* Add Playwright E2E tests for HxMessageBox\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/1d590722-183a-458c-8f78-5c6f4df0116f\n\n* Update Havit.Blazor.E2ETests/HxMessageBoxTests/HxMessageBox_Tests.cs\n\n\n[…]\nnoreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add Playwright E2E tests for HxMessageBox (#1351)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T04:35:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e66e652c5096cd2c33fd1243bc938d083d9268b5",
          "body": "* Initial plan\n\n* Add Playwright E2E tests for HxSearchBox\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/5c12a1b0-fbbb-4c45-82e5-62984c6b8191\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add Playwright E2E tests for HxSearchBox (#1360)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T04:32:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f4bef4107b03cca171a3b9de5001602c1b04eb6d",
          "body": "* Initial plan\n\n* Add bUnit tests for HxButton, HxSubmit, and HxButtonGroup components\n\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nAgent-Logs-Url: https://github.com/havit/Havit.Blazor/sessions/45cdb292-e09b-4a0c-95ff-07acc015e821\n\n* Apply code review feedback: use var for boo\n[…]\nnoreply.github.com>\nCo-authored-by: hakenr <12828888+hakenr@users.noreply.github.com>\nCo-authored-by: Robert Haken <haken@havit.cz>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "bUnit: HxButton — basic rendering & behavior tests (#1293)",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-03-25T04:29:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 311,
      "latest_release_at": "2026-07-28T14:44:58Z",
      "latest_release_tag": "v4.25.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 38,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 22.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 87,
      "stars": 598,
      "watchers": 16,
      "fork_history": {
        "days": [
          {
            "date": "2021-05-29",
            "count": 1
          },
          {
            "date": "2021-07-04",
            "count": 1
          },
          {
            "date": "2021-09-14",
            "count": 1
          },
          {
            "date": "2021-09-15",
            "count": 2
          },
          {
            "date": "2021-10-03",
            "count": 1
          },
          {
            "date": "2021-10-22",
            "count": 2
          },
          {
            "date": "2021-10-25",
            "count": 1
          },
          {
            "date": "2021-11-02",
            "count": 1
          },
          {
            "date": "2021-11-16",
            "count": 1
          },
          {
            "date": "2022-01-28",
            "count": 1
          },
          {
            "date": "2022-03-09",
            "count": 1
          },
          {
            "date": "2022-03-17",
            "count": 1
          },
          {
            "date": "2022-03-22",
            "count": 1
          },
          {
            "date": "2022-05-02",
            "count": 1
          },
          {
            "date": "2022-05-04",
            "count": 1
          },
          {
            "date": "2022-05-15",
            "count": 1
          },
          {
            "date": "2022-05-23",
            "count": 1
          },
          {
            "date": "2022-06-12",
            "count": 1
          },
          {
            "date": "2022-06-17",
            "count": 1
          },
          {
            "date": "2022-06-22",
            "count": 1
          },
          {
            "date": "2022-06-25",
            "count": 1
          },
          {
            "date": "2022-06-28",
            "count": 1
          },
          {
            "date": "2022-08-04",
            "count": 1
          },
          {
            "date": "2022-08-24",
            "count": 1
          },
          {
            "date": "2022-08-25",
            "count": 1
          },
          {
            "date": "2022-09-02",
            "count": 1
          },
          {
            "date": "2022-10-21",
            "count": 1
          },
          {
            "date": "2022-12-10",
            "count": 1
          },
          {
            "date": "2023-01-06",
            "count": 1
          },
          {
            "date": "2023-01-31",
            "count": 1
          },
          {
            "date": "2023-02-03",
            "count": 1
          },
          {
            "date": "2023-02-10",
            "count": 1
          },
          {
            "date": "2023-03-01",
            "count": 1
          },
          {
            "date": "2023-03-15",
            "count": 1
          },
          {
            "date": "2023-03-23",
            "count": 1
          },
          {
            "date": "2023-04-10",
            "count": 1
          },
          {
            "date": "2023-05-17",
            "count": 1
          },
          {
            "date": "2023-06-13",
            "count": 1
          },
          {
            "date": "2023-06-15",
            "count": 1
          },
          {
            "date": "2023-07-15",
            "count": 1
          },
          {
            "date": "2023-08-29",
            "count": 1
          },
          {
            "date": "2023-09-05",
            "count": 1
          },
          {
            "date": "2023-09-14",
            "count": 1
          },
          {
            "date": "2023-10-05",
            "count": 1
          },
          {
            "date": "2023-10-08",
            "count": 1
          },
          {
            "date": "2023-10-16",
            "count": 1
          },
          {
            "date": "2023-11-07",
            "count": 1
          },
          {
            "date": "2023-11-08",
            "count": 1
          },
          {
            "date": "2023-11-09",
            "count": 1
          },
          {
            "date": "2023-11-15",
            "count": 1
          },
          {
            "date": "2023-11-28",
            "count": 1
          },
          {
            "date": "2024-01-04",
            "count": 1
          },
          {
            "date": "2024-01-09",
            "count": 1
          },
          {
            "date": "2024-01-26",
            "count": 1
          },
          {
            "date": "2024-01-30",
            "count": 1
          },
          {
            "date": "2024-03-23",
            "count": 1
          },
          {
            "date": "2024-04-05",
            "count": 1
          },
          {
            "date": "2024-05-08",
            "count": 1
          },
          {
            "date": "2024-07-22",
            "count": 1
          },
          {
            "date": "2024-07-24",
            "count": 1
          },
          {
            "date": "2024-07-29",
            "count": 1
          },
          {
            "date": "2024-08-23",
            "count": 1
          },
          {
            "date": "2024-08-26",
            "count": 1
          },
          {
            "date": "2024-09-05",
            "count": 1
          },
          {
            "date": "2024-09-09",
            "count": 1
          },
          {
            "date": "2024-11-13",
            "count": 1
          },
          {
            "date": "2024-11-30",
            "count": 1
          },
          {
            "date": "2024-12-19",
            "count": 1
          },
          {
            "date": "2025-01-10",
            "count": 1
          },
          {
            "date": "2025-02-20",
            "count": 1
          },
          {
            "date": "2025-03-04",
            "count": 1
          },
          {
            "date": "2025-04-29",
            "count": 1
          },
          {
            "date": "2025-05-04",
            "count": 1
          },
          {
            "date": "2025-05-09",
            "count": 1
          },
          {
            "date": "2025-05-22",
            "count": 1
          },
          {
            "date": "2025-05-28",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-08-17",
            "count": 1
          },
          {
            "date": "2025-10-12",
            "count": 1
          },
          {
            "date": "2025-11-25",
            "count": 1
          },
          {
            "date": "2025-12-11",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-17",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 87,
        "total_forks": 87
      },
      "star_history": null,
      "open_issues_and_prs": 282
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "demos"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "BlazorAppTest/BlazorAppTest.csproj",
        "Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj",
        "Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj",
        "Havit.Blazor.ApplicationInsights.TestApp/Havit.Blazor.ApplicationInsights.TestApp.csproj",
        "Havit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj",
        "Havit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators/Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj",
        "Havit.Blazor.Components.Web.Bootstrap/Havit.Blazor.Components.Web.Bootstrap.csproj",
        "Havit.Blazor.Components.Web.ECharts/Havit.Blazor.Components.Web.ECharts.csproj",
        "Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj",
        "Havit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj",
        "Havit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj",
        "Havit.Blazor.Documentation.RepoDumpGenerator/Havit.Blazor.Documentation.RepoDumpGenerator.csproj",
        "Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj",
        "Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj",
        "Havit.Blazor.Documentation/Havit.Blazor.Documentation.csproj",
        "Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj",
        "Havit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj",
        "Havit.Blazor.Grpc.Client.ServerSideRendering/Havit.Blazor.Grpc.Client.ServerSideRendering.csproj",
        "Havit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj",
        "Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj",
        "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
        "Havit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj",
        "Havit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj",
        "Havit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj",
        "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
        "Havit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj",
        "Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj",
        "Havit.Blazor.Storage/Havit.Blazor.Storage.csproj",
        "Havit.Blazor.TestApp/Havit.Blazor.TestApp.Client/Havit.Blazor.TestApp.Client.csproj",
        "Havit.Blazor.TestApp/Havit.Blazor.TestApp/Havit.Blazor.TestApp.csproj",
        "Havit.Extensions.Localization/Havit.Extensions.Localization.csproj",
        "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
        "Havit.SourceGenerators.StrongApiStringLocalizers/Havit.SourceGenerators.StrongApiStringLocalizers.csproj"
      ],
      "largest_source_bytes": 51637,
      "source_files_sampled": 777,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        ".claude/CLAUDE.md",
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 4884
    },
    "dependencies": {
      "manifests": [
        "BlazorAppTest/BlazorAppTest.csproj",
        "Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj",
        "Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj",
        "Havit.Blazor.ApplicationInsights.TestApp/Havit.Blazor.ApplicationInsights.TestApp.csproj",
        "Havit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj",
        "Havit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators/Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj",
        "Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj",
        "Havit.Blazor.Components.Web.Bootstrap/Havit.Blazor.Components.Web.Bootstrap.csproj",
        "Havit.Blazor.Components.Web.ECharts/Havit.Blazor.Components.Web.ECharts.csproj",
        "Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj",
        "Havit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj",
        "Havit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj",
        "Havit.Blazor.Documentation.RepoDumpGenerator/Havit.Blazor.Documentation.RepoDumpGenerator.csproj",
        "Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj",
        "Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj",
        "Havit.Blazor.Documentation/Havit.Blazor.Documentation.csproj",
        "Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj",
        "Havit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj",
        "Havit.Blazor.Grpc.Client.ServerSideRendering/Havit.Blazor.Grpc.Client.ServerSideRendering.csproj",
        "Havit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj",
        "Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj",
        "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
        "Havit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj",
        "Havit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj",
        "Havit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj",
        "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
        "Havit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj",
        "Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj",
        "Havit.Blazor.Storage/Havit.Blazor.Storage.csproj",
        "Havit.Bootstrap/package.json",
        "Havit.Extensions.Localization/Havit.Extensions.Localization.csproj",
        "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
        "Havit.SourceGenerators.StrongApiStringLocalizers/Havit.SourceGenerators.StrongApiStringLocalizers.csproj"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "flatted",
            "direct": false,
            "version": "3.1.1",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-25h7-pfq9-p65f",
              "GHSA-rf6f-7fwh-wjgh"
            ],
            "fixed_version": "3.4.2",
            "advisory_count": 2,
            "oldest_advisory_days": 136
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.3.3",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-25h7-pfq9-p65f",
              "GHSA-rf6f-7fwh-wjgh"
            ],
            "fixed_version": "3.4.2",
            "advisory_count": 2,
            "oldest_advisory_days": 136
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "4.1.0",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-v56q-mh7h-f735",
              "GHSA-wf6x-7x77-mvgw",
              "GHSA-xvcm-6775-5m9r"
            ],
            "fixed_version": "5.1.8",
            "advisory_count": 3,
            "oldest_advisory_days": 145
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "4.3.7",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-v56q-mh7h-f735",
              "GHSA-wf6x-7x77-mvgw",
              "GHSA-xvcm-6775-5m9r"
            ],
            "fixed_version": "5.1.8",
            "advisory_count": 3,
            "oldest_advisory_days": 145
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.5",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-xvch-5gv4-984h"
            ],
            "fixed_version": "1.2.6",
            "advisory_count": 1,
            "oldest_advisory_days": 1593
          },
          {
            "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": 49
          },
          {
            "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": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "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": 627
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68",
              "GHSA-mh29-5h37-fv8m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 3,
            "oldest_advisory_days": 256
          },
          {
            "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": 159
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.3",
            "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": 159
          },
          {
            "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": "picomatch",
            "direct": false,
            "version": "4.0.2",
            "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.30",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6g55-p6wh-862q",
              "GHSA-7fh5-64p2-3v2j",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 4,
            "oldest_advisory_days": 1032
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.3",
            "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": "postcss",
            "direct": false,
            "version": "8.5.6",
            "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": "yaml",
            "direct": false,
            "version": "2.1.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-48c2-rrv3-qjmp",
              "GHSA-f9xv-q969-pqx4"
            ],
            "fixed_version": "2.8.3",
            "advisory_count": 2,
            "oldest_advisory_days": 1190
          },
          {
            "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": "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.6",
            "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": 596
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-hj48-42vr-x3v9"
            ],
            "fixed_version": "1.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 1812
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.7.1",
            "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
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 13,
          "critical": 6,
          "moderate": 5
        },
        "advisory_count": 53,
        "affected_count": 24,
        "assessed_count": 407,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 36,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "nuget"
      ],
      "dependencies": [
        {
          "name": "Microsoft.Playwright.Xunit.v3",
          "manifest": "Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Mvc.Testing",
          "manifest": "Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.WebAssembly",
          "manifest": "Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.WebAssembly.Server",
          "manifest": "Havit.Blazor.ApplicationInsights.TestApp/Havit.Blazor.ApplicationInsights.TestApp.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.Web",
          "manifest": "Havit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.Logging.Abstractions",
          "manifest": "Havit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.Logging.Configuration",
          "manifest": "Havit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.EntityFrameworkCore.SqlServer",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.Logging.Abstractions",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators/Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.Web",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "SmartComponents.AspNetCore.Components",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "bunit",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Moq",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.Localization",
          "manifest": "Havit.Blazor.Components.Web.Bootstrap/Havit.Blazor.Components.Web.Bootstrap.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.Web",
          "manifest": "Havit.Blazor.Components.Web.ECharts/Havit.Blazor.Components.Web.ECharts.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "bunit",
          "manifest": "Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Moq",
          "manifest": "Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.Localization",
          "manifest": "Havit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.Web",
          "manifest": "Havit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Azure.Monitor.OpenTelemetry.AspNetCore",
          "manifest": "Havit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "LoxSmoke.DocXml",
          "manifest": "Havit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "ModelContextProtocol.AspNetCore",
          "manifest": "Havit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.Hosting",
          "manifest": "Havit.Blazor.Documentation.RepoDumpGenerator/Havit.Blazor.Documentation.RepoDumpGenerator.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.WebAssembly.Server",
          "manifest": "Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "SmartComponents.AspNetCore",
          "manifest": "Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "SmartComponents.Inference.OpenAI",
          "manifest": "Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "SmartComponents.LocalEmbeddings",
          "manifest": "Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "bunit",
          "manifest": "Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "LoxSmoke.DocXml",
          "manifest": "Havit.Blazor.Documentation/Havit.Blazor.Documentation.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.WebAssembly",
          "manifest": "Havit.Blazor.Documentation/Havit.Blazor.Documentation.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Mvc.Testing",
          "manifest": "Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Playwright.Xunit.v3",
          "manifest": "Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.Web",
          "manifest": "Havit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.WebAssembly.Authentication",
          "manifest": "Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net",
          "manifest": "Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net.Grpc",
          "manifest": "Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Grpc.Net.Client",
          "manifest": "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Grpc.Net.Client.Web",
          "manifest": "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.Web",
          "manifest": "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net",
          "manifest": "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net.Grpc.ClientFactory",
          "manifest": "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net",
          "manifest": "Havit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net.Grpc",
          "manifest": "Havit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Grpc.AspNetCore.Server",
          "manifest": "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Grpc.AspNetCore.Web",
          "manifest": "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.AspNetCore",
          "manifest": "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net",
          "manifest": "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net.Grpc.AspNetCore",
          "manifest": "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net",
          "manifest": "Havit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "protobuf-net.Grpc",
          "manifest": "Havit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Mvc.Testing",
          "manifest": "Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Playwright.Xunit.v3",
          "manifest": "Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Havit.Core",
          "manifest": "Havit.Blazor.Storage/Havit.Blazor.Storage.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.Web",
          "manifest": "Havit.Blazor.Storage/Havit.Blazor.Storage.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Extensions.Localization.Abstractions",
          "manifest": "Havit.Extensions.Localization/Havit.Extensions.Localization.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis",
          "manifest": "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp",
          "manifest": "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing",
          "manifest": "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "xunit.v3.mtp-v2",
          "manifest": "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.Testing.Extensions.TrxReport",
          "manifest": "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.CodeAnalysis.CSharp",
          "manifest": "Havit.SourceGenerators.StrongApiStringLocalizers/Havit.SourceGenerators.StrongApiStringLocalizers.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.WebAssembly",
          "manifest": "Havit.Blazor.TestApp/Havit.Blazor.TestApp.Client/Havit.Blazor.TestApp.Client.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        },
        {
          "name": "Microsoft.AspNetCore.Components.WebAssembly.Server",
          "manifest": "Havit.Blazor.TestApp/Havit.Blazor.TestApp/Havit.Blazor.TestApp.csproj",
          "ecosystem": "nuget",
          "version_constraint": null
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "Azure.Monitor.OpenTelemetry.AspNetCore",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "bunit",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Grpc.AspNetCore.Server",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Grpc.AspNetCore.Web",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Grpc.Net.Client",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Grpc.Net.Client.Web",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Havit.AspNetCore",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Havit.Core",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "LoxSmoke.DocXml",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Components.Web",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Components.WebAssembly",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Components.WebAssembly.Authentication",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Components.WebAssembly.Server",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Mvc.Testing",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.EntityFrameworkCore.SqlServer",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Hosting",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Localization",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Localization.Abstractions",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Logging.Abstractions",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Logging.Configuration",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Playwright.Xunit.v3",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Testing.Extensions.TrxReport",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "ModelContextProtocol.AspNetCore",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Moq",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "protobuf-net",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "protobuf-net.Grpc",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "protobuf-net.Grpc.AspNetCore",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "protobuf-net.Grpc.ClientFactory",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "SmartComponents.AspNetCore",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "SmartComponents.AspNetCore.Components",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "SmartComponents.Inference.OpenAI",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "SmartComponents.LocalEmbeddings",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.v3.mtp-v2",
            "direct": true,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.22.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.22.20",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/highlight",
            "direct": false,
            "version": "7.22.20",
            "ecosystem": "npm"
          },
          {
            "name": "@cacheable/memory",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@cacheable/utils",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-syntax-patches-for-csstree",
            "direct": false,
            "version": "1.0.26",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/media-query-list-parser",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/media-query-list-parser",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/media-query-list-parser",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/media-query-list-parser",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/selector-specificity",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/selector-specificity",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dual-bundle/import-meta-resolve",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dual-bundle/import-meta-resolve",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@epic-web/invariant",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@keyv/bigmap",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@keyv/serialize",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@keyv/serialize",
            "direct": false,
            "version": "1.1.1",
            "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": "@popperjs/core",
            "direct": false,
            "version": "2.11.8",
            "ecosystem": "npm"
          },
          {
            "name": "@stylistic/stylelint-config",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@stylistic/stylelint-plugin",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimist",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/normalize-package-data",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.12.0",
            "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": "ansi-styles",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "arrify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astral-regex",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.4.15",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.4.21",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap",
            "direct": false,
            "version": "5.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.21.10",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.24.4",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable",
            "direct": false,
            "version": "1.8.10",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase-keys",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001538",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001712",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "clean-css",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "clean-css",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "clean-css-cli",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "clean-css-cli",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "7.0.4",
            "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": "colord",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "colorette",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "12.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "8.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-env",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-env",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "6.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css-functions-list",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-functions-list",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "dependency-graph",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "dependency-graph",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.4.525",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.132",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "env-paths",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "10.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-unused-sass-variables",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-unused-sass-variables",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "6.1.20",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "6.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-stdin",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "13.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "globjoin",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "hard-rejection",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has",
            "direct": false,
            "version": "1.0.3",
            "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": "hashery",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "hookified",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "hookified",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-tags",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "ignore-by-default",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-lazy",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.13.0",
            "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.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "known-css-properties",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "known-css-properties",
            "direct": false,
            "version": "0.35.0",
            "ecosystem": "npm"
          },
          {
            "name": "known-css-properties",
            "direct": false,
            "version": "0.37.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.difference",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.forown",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.get",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.groupby",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.sortby",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.truncate",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "mathml-tag-names",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.0.30",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "memorystream",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "meow",
            "direct": false,
            "version": "10.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "meow",
            "direct": false,
            "version": "13.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "min-indent",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimist-options",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "nice-try",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.19",
            "ecosystem": "npm"
          },
          {
            "name": "nodemon",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nodemon",
            "direct": false,
            "version": "3.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "6.0.0",
            "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-normalize-package-bin",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-all2",
            "direct": false,
            "version": "6.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-all2",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-finally",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "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": "parse-json",
            "direct": false,
            "version": "7.1.0",
            "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": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "pidtree",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.4.30",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-cli",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-cli",
            "direct": false,
            "version": "11.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-media-query-parser",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reporter",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-resolve-nested-selector",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-resolve-nested-selector",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-safe-parser",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-safe-parser",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-scss",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-scss",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-sorting",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-hrtime",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pstree.remy",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "qified",
            "direct": false,
            "version": "0.6.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": "read-cache",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-json-fast",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg-up",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "redent",
            "direct": false,
            "version": "4.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": "resolve",
            "direct": false,
            "version": "1.20.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": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rtlcss",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "rtlcss",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": false,
            "version": "1.67.0",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": false,
            "version": "1.78.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "1.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": "shelljs",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "shelljs",
            "direct": false,
            "version": "0.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "shx",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "shx",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-update-notifier",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "slice-ansi",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-eof",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-indent",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "style-search",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint",
            "direct": false,
            "version": "15.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint",
            "direct": false,
            "version": "16.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint",
            "direct": false,
            "version": "16.26.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recess-order",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recess-order",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recommended",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recommended",
            "direct": false,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recommended-scss",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recommended-scss",
            "direct": false,
            "version": "14.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-standard",
            "direct": false,
            "version": "33.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-standard",
            "direct": false,
            "version": "36.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-standard-scss",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-standard-scss",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-twbs-bootstrap",
            "direct": false,
            "version": "11.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-twbs-bootstrap",
            "direct": false,
            "version": "16.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-order",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-order",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-scss",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-scss",
            "direct": false,
            "version": "6.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-scss",
            "direct": false,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-stylistic",
            "direct": false,
            "version": "0.4.3",
            "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-hyperlinks",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-hyperlinks",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "svg-tags",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "table",
            "direct": false,
            "version": "6.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "table",
            "direct": false,
            "version": "6.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "touch",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "trim-newlines",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "3.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "undefsafe",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.1.3",
            "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": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 443,
        "direct_count": 36,
        "indirect_count": 407
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 481,
        "open_issues": 280,
        "closed_ratio": 0.725,
        "closed_issues": 738,
        "closed_unmerged_prs": 120
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "hakenr",
          "commits": 2149,
          "avatar_url": "https://avatars.githubusercontent.com/u/12828888?v=4"
        },
        {
          "type": "User",
          "login": "crdo",
          "commits": 714,
          "avatar_url": "https://avatars.githubusercontent.com/u/1410922?v=4"
        },
        {
          "type": "User",
          "login": "jirikanda",
          "commits": 496,
          "avatar_url": "https://avatars.githubusercontent.com/u/5111719?v=4"
        },
        {
          "type": "User",
          "login": "Harvey1214",
          "commits": 403,
          "avatar_url": "https://avatars.githubusercontent.com/u/62853076?v=4"
        },
        {
          "type": "User",
          "login": "MichaelMelena",
          "commits": 30,
          "avatar_url": "https://avatars.githubusercontent.com/u/24386972?v=4"
        },
        {
          "type": "User",
          "login": "alexandrhajek",
          "commits": 25,
          "avatar_url": "https://avatars.githubusercontent.com/u/37944469?v=4"
        },
        {
          "type": "User",
          "login": "Viliammm",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/38937143?v=4"
        },
        {
          "type": "User",
          "login": "TPIvan",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/39948593?v=4"
        },
        {
          "type": "User",
          "login": "blanchg",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/86495?v=4"
        },
        {
          "type": "User",
          "login": "JoseTheChamp",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/100157516?v=4"
        }
      ],
      "contributors_sampled": 36,
      "top_contributor_share": 0.547
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": false,
      "ci_workflows": [
        "copilot-setup-steps.yml",
        "dotnet.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "yarn.lock"
      ],
      "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": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "21 out of 21 merged PRs checked by a CI test -- score normalized to 10",
            "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": 0,
            "reason": "Found 0/12 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 10 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "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": 10,
            "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": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool is run on all commits",
            "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": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "32 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "be209ca3c78ac06645857b8d1371b141d866e7dd",
        "ran_at": "2026-07-28T15:29:11Z",
        "aggregate_score": 5.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-28T14:45:20Z",
      "oldest_open_prs": [
        {
          "number": 1396,
          "created_at": "2026-05-04T20:29:03Z",
          "last_comment_at": "2026-05-30T18:14:41Z",
          "last_comment_author": "efinder2"
        },
        {
          "number": 1722,
          "created_at": "2026-07-14T10:11:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-28T11:31:11Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 26,
          "created_at": "2021-10-25T06:25:20Z",
          "last_comment_at": "2026-05-18T07:36:50Z",
          "last_comment_author": "MeikelLP"
        },
        {
          "number": 39,
          "created_at": "2021-11-10T21:00:29Z",
          "last_comment_at": "2024-11-26T23:13:50Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 57,
          "created_at": "2022-01-10T07:44:33Z",
          "last_comment_at": "2024-10-14T13:50:42Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 63,
          "created_at": "2022-01-13T08:21:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 69,
          "created_at": "2022-01-19T00:28:34Z",
          "last_comment_at": "2023-07-17T15:51:30Z",
          "last_comment_author": "leonardopugliese"
        },
        {
          "number": 73,
          "created_at": "2022-01-24T11:36:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 93,
          "created_at": "2022-03-14T16:22:25Z",
          "last_comment_at": "2022-05-06T19:08:02Z",
          "last_comment_author": "HybridSolutions"
        },
        {
          "number": 109,
          "created_at": "2022-04-06T01:51:13Z",
          "last_comment_at": "2022-06-04T10:43:54Z",
          "last_comment_author": "emad981"
        },
        {
          "number": 110,
          "created_at": "2022-04-07T23:32:35Z",
          "last_comment_at": "2024-01-30T12:22:22Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 111,
          "created_at": "2022-04-08T15:39:19Z",
          "last_comment_at": "2026-06-22T17:56:09Z",
          "last_comment_author": "gdube-nrc"
        },
        {
          "number": 148,
          "created_at": "2022-05-13T13:22:00Z",
          "last_comment_at": "2024-08-08T12:57:25Z",
          "last_comment_author": "bluisanajmr"
        },
        {
          "number": 174,
          "created_at": "2022-05-24T07:38:25Z",
          "last_comment_at": "2023-12-27T21:47:59Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 178,
          "created_at": "2022-05-25T15:46:41Z",
          "last_comment_at": "2023-10-31T19:06:06Z",
          "last_comment_author": "odil-giyasov"
        },
        {
          "number": 183,
          "created_at": "2022-05-30T07:59:31Z",
          "last_comment_at": "2022-06-06T11:28:47Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 204,
          "created_at": "2022-06-07T11:13:41Z",
          "last_comment_at": "2022-06-08T08:40:28Z",
          "last_comment_author": "crdo"
        },
        {
          "number": 208,
          "created_at": "2022-06-08T22:09:35Z",
          "last_comment_at": "2022-08-31T21:44:23Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 279,
          "created_at": "2022-08-01T02:05:18Z",
          "last_comment_at": "2023-10-26T08:18:39Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 302,
          "created_at": "2022-08-16T12:45:20Z",
          "last_comment_at": "2022-08-16T12:46:03Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 316,
          "created_at": "2022-08-24T13:58:36Z",
          "last_comment_at": "2024-01-07T23:07:50Z",
          "last_comment_author": "hakenr"
        },
        {
          "number": 374,
          "created_at": "2022-09-13T16:00:53Z",
          "last_comment_at": "2022-09-15T07:03:22Z",
          "last_comment_author": "crdo"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/havit/Havit.Blazor",
    "host": "github.com",
    "name": "Havit.Blazor",
    "owner": "havit"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 70,
      "inputs": {
        "security": 62,
        "vitality": 94,
        "community": 69,
        "governance": 56,
        "engineering": 70
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 94,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "commits_last_year": 311,
              "human_commit_share": 0.69,
              "days_since_last_push": 0,
              "active_weeks_last_year": 38
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "38/52 weeks with commits",
                "points": 26.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 38
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "311 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 311
                    }
                  }
                ],
                "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": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v4.25.1",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 22.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~22.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 22.6
                    }
                  }
                ],
                "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": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 69,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "forks": 87,
              "stars": 598,
              "watchers": 16,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "598 stars",
                "points": 45,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 598
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "87 forks",
                "points": 16.1,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 87
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "16 watchers",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "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": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "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": 56,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 36,
              "top_contributor_share": 0.547
            },
            "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 55% of commits",
                "points": 10.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 55
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "36 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 36
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "merged_prs": 481,
              "open_issues": 280,
              "closed_issues": 738,
              "issue_closed_ratio": 0.725,
              "closed_unmerged_prs": 120
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "72% of issues closed",
                "points": 33.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 72
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "481/601 decided PRs merged",
                "points": 30.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 481,
                      "decided": 601
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/12 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "followers": 50,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "havit",
              "public_repos": 18,
              "account_age_days": 4057
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "50 followers of havit",
                "points": 12.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 50,
                      "login": "havit"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "18 public repos, account ~11 yr old",
                "points": 21.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 18
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 70,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_ci": true,
              "has_tests": false,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "21 out of 21 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "blazor",
                "wasm",
                "webassembly",
                "asp-net",
                "bootstrap",
                "bootstrap5"
              ],
              "has_wiki": true,
              "homepage": "https://havit.blazor.eu",
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://havit.blazor.eu",
                "points": 15,
                "status": "met",
                "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": "6 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "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": 62,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 52,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 5.2
            },
            "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 is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "21 out of 21 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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 0/12 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "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.5,
                "status": "met",
                "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": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is run on all commits",
                "points": 5,
                "status": "met",
                "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": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "32 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 407 resolved dependencies against OSV; 36 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). 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": 407
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 36
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 53,
              "affected_packages": 24,
              "assessed_packages": 407,
              "unassessed_packages": 36,
              "affected_by_severity": "critical 6, high 13, moderate 5",
              "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": 407,
              "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": 13
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 68,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.58,
              "agent_instruction_files": [
                ".claude/CLAUDE.md",
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 4884
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".claude/CLAUDE.md, AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".claude/CLAUDE.md, AGENTS.md"
                    }
                  }
                ],
                "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": "40 of 69 human commits state their intent (structured subject or explanatory body)",
                "points": 30.9,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 40,
                      "sampled": 69
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [
                "package-lock.json",
                "yarn.lock"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.4,
              "toolchain_manifests": [
                "BlazorAppTest/BlazorAppTest.csproj",
                "Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj",
                "Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj",
                "Havit.Blazor.ApplicationInsights.TestApp/Havit.Blazor.ApplicationInsights.TestApp.csproj",
                "Havit.Blazor.ApplicationInsights.Tests/Havit.Blazor.ApplicationInsights.Tests.csproj",
                "Havit.Blazor.ApplicationInsights/Havit.Blazor.ApplicationInsights.csproj",
                "Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests/Havit.Blazor.Components.Web.Bootstrap.EntityFrameworkCore.Tests.csproj",
                "Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators/Havit.Blazor.Components.Web.Bootstrap.InternalSourceGenerators.csproj",
                "Havit.Blazor.Components.Web.Bootstrap.Smart/Havit.Blazor.Components.Web.Bootstrap.Smart.csproj",
                "Havit.Blazor.Components.Web.Bootstrap.Tests/Havit.Blazor.Components.Web.Bootstrap.Tests.csproj",
                "Havit.Blazor.Components.Web.Bootstrap/Havit.Blazor.Components.Web.Bootstrap.csproj",
                "Havit.Blazor.Components.Web.ECharts/Havit.Blazor.Components.Web.ECharts.csproj",
                "Havit.Blazor.Components.Web.Tests/Havit.Blazor.Components.Web.Tests.csproj",
                "Havit.Blazor.Components.Web/Havit.Blazor.Components.Web.csproj",
                "Havit.Blazor.Documentation.Mcp/Havit.Blazor.Documentation.Mcp.csproj",
                "Havit.Blazor.Documentation.RepoDumpGenerator/Havit.Blazor.Documentation.RepoDumpGenerator.csproj",
                "Havit.Blazor.Documentation.Server/Havit.Blazor.Documentation.Server.csproj",
                "Havit.Blazor.Documentation.Tests/Havit.Blazor.Documentation.Tests.csproj",
                "Havit.Blazor.Documentation/Havit.Blazor.Documentation.csproj",
                "Havit.Blazor.E2ETests/Havit.Blazor.E2ETests.csproj",
                "Havit.Blazor.GoogleTagManager/Havit.Blazor.GoogleTagManager.csproj",
                "Havit.Blazor.Grpc.Client.ServerSideRendering/Havit.Blazor.Grpc.Client.ServerSideRendering.csproj",
                "Havit.Blazor.Grpc.Client.Tests/Havit.Blazor.Grpc.Client.Tests.csproj",
                "Havit.Blazor.Grpc.Client.WebAssembly/Havit.Blazor.Grpc.Client.WebAssembly.csproj",
                "Havit.Blazor.Grpc.Client/Havit.Blazor.Grpc.Client.csproj",
                "Havit.Blazor.Grpc.Core.Tests/Havit.Blazor.Grpc.Core.Tests.csproj",
                "Havit.Blazor.Grpc.Core/Havit.Blazor.Grpc.Core.csproj",
                "Havit.Blazor.Grpc.Server.Tests/Havit.Blazor.Grpc.Server.Tests.csproj",
                "Havit.Blazor.Grpc.Server/Havit.Blazor.Grpc.Server.csproj",
                "Havit.Blazor.Grpc.TestContracts/Havit.Blazor.Grpc.TestContracts.csproj",
                "Havit.Blazor.Storage.E2ETests/Havit.Blazor.Storage.E2ETests.csproj",
                "Havit.Blazor.Storage/Havit.Blazor.Storage.csproj",
                "Havit.Blazor.TestApp/Havit.Blazor.TestApp.Client/Havit.Blazor.TestApp.Client.csproj",
                "Havit.Blazor.TestApp/Havit.Blazor.TestApp/Havit.Blazor.TestApp.csproj",
                "Havit.Extensions.Localization/Havit.Extensions.Localization.csproj",
                "Havit.SourceGenerators.StrongApiStringLocalizers.Tests/Havit.SourceGenerators.StrongApiStringLocalizers.Tests.csproj",
                "Havit.SourceGenerators.StrongApiStringLocalizers/Havit.SourceGenerators.StrongApiStringLocalizers.csproj"
              ],
              "dependency_bot_commit_share": 0.31
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "BlazorAppTest/BlazorAppTest.csproj, Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj, Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "BlazorAppTest/BlazorAppTest.csproj, Havit.Blazor.ApplicationInsights.E2ETests/Havit.Blazor.ApplicationInsights.E2ETests.csproj, Havit.Blazor.ApplicationInsights.TestApp.Client/Havit.Blazor.ApplicationInsights.TestApp.Client.csproj"
                    }
                  }
                ],
                "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": "C# (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "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": "40 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 40,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "31 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 31,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "C#",
              "largest_source_bytes": 51637,
              "source_files_sampled": 777,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C# (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/777 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 777,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "demos"
              ],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "demos",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "demos"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "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",
    "Could not fetch npm package 'havit-bootstrap' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-28T15:29:40.746228Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/h/havit/Havit.Blazor.svg",
  "full_name": "havit/Havit.Blazor",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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