Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"component",
"frontend",
"typescript",
"uikit",
"vue",
"vue3",
"brutalist",
"brutalist-ui",
"component-library",
"design-system",
"neo-brutalism",
"shadcn-ui",
"tailwindcss",
"ui-library",
"vite"
],
"is_fork": false,
"size_kb": 13766,
"has_wiki": true,
"homepage": "https://lidaixingchen.github.io/brutxui-vue3/",
"languages": {
"CSS": 94607,
"Vue": 1070037,
"HTML": 1011,
"Handlebars": 3699,
"JavaScript": 44791,
"TypeScript": 2968635
},
"pushed_at": "2026-07-22T21:28:33Z",
"created_at": "2026-05-31T02:29:21Z",
"owner_type": "User",
"updated_at": "2026-07-22T21:28:37Z",
"description": "新粗野主义风格的Vue3 UI工具包,采用Next.js、Tailwind CSS和shadcn样式组件构建。",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript",
"Vue"
]
},
"owner": {
"blog": null,
"name": "历代星辰",
"type": "User",
"login": "lidaixingchen",
"company": null,
"location": null,
"followers": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/115717776?v=4",
"created_at": "2022-10-13T13:40:36Z",
"is_verified": null,
"public_repos": 16,
"account_age_days": 1378
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.9.5",
"kind": "patch",
"published_at": "2026-07-17T20:05:17Z"
},
{
"tag": "v0.9.4",
"kind": "patch",
"published_at": "2026-07-11T19:02:27Z"
},
{
"tag": "v0.9.3",
"kind": "patch",
"published_at": "2026-07-08T23:33:54Z"
},
{
"tag": "v0.9.2",
"kind": "patch",
"published_at": "2026-07-07T22:36:42Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2026-07-06T10:57:10Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-07-02T22:08:43Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-06-30T14:02:16Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-06-29T22:31:36Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-06-28T22:29:36Z"
},
{
"tag": "v0.7.8",
"kind": "patch",
"published_at": "2026-06-27T21:18:52Z"
},
{
"tag": "v0.7.7",
"kind": "patch",
"published_at": "2026-06-27T19:13:08Z"
},
{
"tag": "v0.7.6",
"kind": "patch",
"published_at": "2026-06-27T17:17:26Z"
},
{
"tag": "v0.7.5",
"kind": "patch",
"published_at": "2026-06-27T14:38:22Z"
},
{
"tag": "v0.7.4",
"kind": "patch",
"published_at": "2026-06-27T13:07:08Z"
},
{
"tag": "v0.7.3",
"kind": "patch",
"published_at": "2026-06-25T22:05:43Z"
},
{
"tag": "v0.7.2",
"kind": "patch",
"published_at": "2026-06-25T21:19:04Z"
},
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2026-06-25T17:31:40Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-06-25T17:12:51Z"
},
{
"tag": "v0.6.8",
"kind": "patch",
"published_at": "2026-06-24T20:55:10Z"
},
{
"tag": "v0.6.7",
"kind": "patch",
"published_at": "2026-06-09T16:06:38Z"
},
{
"tag": "v0.6.6",
"kind": "patch",
"published_at": "2026-06-08T21:18:11Z"
},
{
"tag": "v0.6.5",
"kind": "patch",
"published_at": "2026-06-07T19:58:57Z"
},
{
"tag": "v0.6.4",
"kind": "patch",
"published_at": "2026-06-06T17:54:26Z"
},
{
"tag": "v0.6.3",
"kind": "patch",
"published_at": "2026-06-06T10:11:05Z"
},
{
"tag": "v0.6.2",
"kind": "patch",
"published_at": "2026-06-04T23:31:00Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2026-06-04T21:51:31Z"
}
],
"recent_commits": [
{
"oid": "d9039dc43c049ee374c7589687b5c3fac990b47f",
"body": "- overrides 新增 brace-expansion ^2.1.2 / ^5.0.7(GHSA-3jxr-9vmj-r5cp\n 指数级展开 DoS,minimatch 9/10 两条传递链)\n- 三处 script 闭合标签正则由 <\\/script\\s*> 改为 <\\/script\\b[^>]*>:\n HTML 结束标签允许标签名后带空白与被忽略的属性(如 </script\\t\\n bar>),\n 消除 CodeQL js/bad-tag-filter 告警",
"is_bot": false,
"headline": "chore(deps): 修复剩余 4 个安全问题",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-22T21:28:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76f690933b71a68444c9cf39f4c16dec2b3af527",
"body": "vitepress 内置 vite 升级至 6.4.3 后,原 Vite 5 与 Vite 8 类型冲突\n(TS2321 Excessive stack depth)不再出现,残留指令触发 TS2578。",
"is_bot": false,
"headline": "fix(docs): 移除失效的 @ts-expect-error 指令修复 CI typecheck",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-20T21:21:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0408432c292097b655946080ff122f03915d7a0",
"body": "Dependabot(23 个依赖漏洞):\n- pnpm-workspace.yaml 新增 overrides(pnpm 11 不再读取 package.json\n 的 pnpm 字段):undici ^7.28.0 修复 7 个漏洞,ini ^1.3.8 修复原型\n 污染,vitepress>vite ^6.4.3 修复 10 个 vite 漏洞(5.x 无 fs.deny\n 绕过修复版本),tsup/tsx/@size-limit>esbuild ^0.28.1 修复 Windows\n 任意文件读取\n- cli 直接依赖 diff ^7.0.0 升级至 ^8.0.4(jsdiff\n[…]\nodule-specifiers.ts:字符串掩码由正则改为线性\n 单遍扫描器,消除转义引号序列导致的二次方回溯 ReDoS\n- shared/registry/cli 三处 script 闭合标签正则允许 </script > 尾随空白\n- cli/tests/doctor.test.ts:URL 主机名校验由 includes 子串匹配改为\n new URL().hostname 精确比较",
"is_bot": false,
"headline": "chore(deps): 修复 GitHub 安全报告的 28 个问题",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-20T20:41:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d176bcc2b95a066f0bbaca3eed54e07de2372721",
"body": "1. 新增theme提交scope说明并补充子scope使用建议\n2. 为所有vue示例添加lang=\"ts\"类型支持\n3. 格式化导航示例的组件名称为粗体\n4. 移除文档中废弃的useLocale相关内容\n5. 更新AGENTS.md、RELEASE.md的命令与链接\n6. 简化changelog侧边栏生成函数的多语言逻辑\n7. 为表单、反馈组件示例补充完整类型定义",
"is_bot": false,
"headline": "docs: 更新文档规范、示例与配置,移除废弃的useLocale内容",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-18T00:01:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9430fc637a4025449da6aeeae23cc85252a7a663",
"body": "重构组件开发流程文档,新增开发自检约束与自动生成文件警告,补充脚手架命令、代码规范与文档链接",
"is_bot": false,
"headline": "docs: 更新组件开发文档与项目维护指南",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T23:41:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4197de69fd551000b2c41727423e24c2cd85e1bf",
"body": "1. 更新设计令牌文档的最佳实践,替换为国际化最佳实践内容\n2. 修复layout-nav.md中的本地绝对路径链接为相对路径\n3. 拆分并重构SKILL.md主文档,新增独立的维护约定章节\n4. 新增完整的组件词典与组合式函数词典文档",
"is_bot": false,
"headline": "docs: 批量更新文档与新增组件词典、组合式函数词典",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T23:29:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9542faa593683a3decd6f9ce64eb70341fbf2357",
"body": "- 在 SKILL.md 中补充新粗野极致视觉、微交互动效一致性、SSR 兼容和 I18n 插值防错规范\n\n- 在 layout-nav.md 中补充三栏协同 Dashboard 大页面复合状态流协同模板",
"is_bot": false,
"headline": "docs(ui): 新增 AI 技能高阶优化指南与复合区块协同示例",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T23:08:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ce994ae7d75bdaef8b3df9eb462be645bb394e4",
"body": "- 清理历史遗留版本描述并优化表单类型\n\n- 引入 TS 严格模式和 A11y 最佳实践小节\n\n- 补充 TreeView、Upload、KanbanBoard 复杂业务模板及 Tailwind v4 theme 规范",
"is_bot": false,
"headline": "docs(ui): 优化 AI 技能文档与参考指南",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T23:03:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "89459924c396d3789ecf57f2054b194b2b00d1d4",
"body": "- 将 SKILL.md 同步更新至 v0.9.5 最新规范,移除历史版本变迁信息\n\n- 在 AGENTS.md 中新增技能文档维护规范,约定只保留最新 API 与编码规范",
"is_bot": false,
"headline": "docs(skills): 更新 brutxui 技能文档与 AGENTS.md 维护约定",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:48:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2f054a48dd10025c278b4f7d16bd8c23da9f09d",
"body": null,
"is_bot": false,
"headline": "docs(changelog): 精简主 CHANGELOG.md 头部描述并同步更新发版初始化头",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:40:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "432ffa2075c9cc364b489b1b826232531a449a32",
"body": null,
"is_bot": false,
"headline": "fix(changelog): 修复脏提交引发的 TypeError 崩溃与切片倒序引发的爆栈风险",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:35:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2573ca3cce65f2421be2b969646b12c5485d4520",
"body": null,
"is_bot": false,
"headline": "fix(changelog): 修复 Windows CRLF 换行替换失效并添加 index.md 缺失兜底机制",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:34:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d437a96d058239b1517e8262f9d08c1a96e44a1",
"body": null,
"is_bot": false,
"headline": "fix(changelog): 修复 fs 引用 ReferenceError 致命 bug 并优化正则与链接兼容性",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:32:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "482f8ce1c15510f28588f005113eb0c1b4a32673",
"body": null,
"is_bot": false,
"headline": "feat(changelog): 实现全自动滑动窗口归档与裁剪逻辑,并同步更新发版规范文档",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:30:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f873419a5e4b3c2a9d2ed07b2caa2d2fce67e518",
"body": null,
"is_bot": false,
"headline": "docs(changelog): 补齐遗漏的历史归档版本 v0.2.2 与 v0.1.1",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:26:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b773eedc6f646a83ffdabefc9f0ff34f27e2995",
"body": null,
"is_bot": false,
"headline": "docs(changelog): 全面重构、精炼并规范化 v0.8.0 至 v0.1.0 之间的所有历史归档日志",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:20:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27ce5edd126913160b32d13f87845ad68f8e84c9",
"body": "仅更新了CycloneDX格式sbom文件中的序列号为新的uuid值",
"is_bot": false,
"headline": "chore(registry): 更新sbom文件的serialNumber",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:11:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dac2c6fc876594ee05a671f9810e2fbb99e3667e",
"body": null,
"is_bot": false,
"headline": "docs(changelog): 补全并精炼 v0.6.8 至 v0.1.0 历史归档更新日志",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T22:10:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2fbb42584bd0700d97671e70e3b3db4801f1990f",
"body": "- 修改 turbo.json 的 inputs/outputs 配置并优化 validate 输入路径\n\n- 修正 GitHub Actions 缓存路径,引入特异性 Job 缓存 Key 与滚动更新\n\n- 将 packages/cli 对共享包的依赖移动至 devDependencies 并实现混卷打包\n\n- 对齐 packages/registry 的 bench 脚本命令",
"is_bot": false,
"headline": "chore(repo): 修复构建缓存、CI/CD流水线与CLI依赖配置",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T21:58:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "656d1f3ae11f228b9991c023cecc07ac6191e8e8",
"body": "- 纠偏 GitHub Actions 缓存路径并细化 turbo.json 配置以避免缓存误命中\n\n- 为缓存 Key 增加动态滚动与 Job 隔离以提升构建加速稳定性\n\n- 解除 CLI 的 brutx-shared-vue 运行时依赖,并在 tsup 编译中混卷打包以防公网 404\n\n- 修复 docs 包中 v0.9.0.md 的标签闭合错误与 17 处归档文件死链接",
"is_bot": false,
"headline": "chore(ci): 重构 Monorepo 构建缓存与 CI/CD 流水线",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T21:48:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e533ffcaa8fa0d29cf5190935f94f21370064ab",
"body": "中文 nav 链接从 /changelog/ 改为 /guide/changelog,与英文 /en/guide/changelog 保持路径结构一致。原 /changelog/ 路由仍可通过引导页或侧边栏访问。",
"is_bot": false,
"headline": "docs(changelog): 统一中英文主导航链接路径结构",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T21:12:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdd1a21bdba1029b8e5008086b54f83275a90be1",
"body": "- 中文 nav 添加「更新日志」链接到 /changelog/ 归档索引页\n- 英文 nav 添加「Changelog」链接到 /en/guide/changelog 引导页(英文 locale 无独立归档目录)",
"is_bot": false,
"headline": "docs(changelog): 在主导航栏添加更新日志入口",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T21:09:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0eff9e85b63c9dcec85e504edd938ee731c15f9",
"body": "- 新增 generate-changelog.mjs 脚本(pnpm changelog / changelog:dry)汇总 conventional commits 生成根 CHANGELOG 段\n- 引入归档机制:根文件仅保留最近 3 个版本完整段落,更早版本归档至 apps/docs/changelog/ 独立文件\n- 重写根 CHANGELOG.md:v0.9.5/v0.9.4/v0.9.3 完整段落 + 17 个归档版本索引\n- VitePress config 添加 generateChangelogSidebar() 自动生成归档侧边栏(按 major 分组)\n- guide/changelog.md 改造为引导页,避免版本内容重复维护\n- RELEASE.md 补充根 CHANGELOG 生成与归档机制章节\n- AGENTS.md 添加 pnpm changelog / changelog:dry 命令与脚本路径",
"is_bot": false,
"headline": "docs(changelog): 引入归档机制与根 CHANGELOG 生成脚本",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T20:59:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66727e6ad728d17ac24eed71a1ca68f9e9a3af8f",
"body": "更新了多个组件的 integrity 校验值、SBOM 文件的哈希与序列号,以及 registry-cache.json 缓存文件,同时为 DataTable 组件新增了固定列 z-index 常量配置",
"is_bot": false,
"headline": "chore: 更新组件包的哈希校验值和缓存",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T20:02:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7faf75d2d3867c9863c75aabfcd5278cf5372bfc",
"body": null,
"is_bot": false,
"headline": "release: bump version to 0.9.5 for ui and 0.8.0 for cli",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:56:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed730ac6a8cef6e1c10531629622711ad411fa44",
"body": "新增官方和第三方actions分组规则,拆分minor/patch升级PR,单独处理major升级以便评审",
"is_bot": false,
"headline": "ci(dependabot): 优化依赖分组策略",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:45:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fea0faec6ccc416874a4b14f78447a9a5016db56",
"body": "…dates (#2)\n\nBumps the github-actions group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [actions/checkout](https://github.com/actions/checkout) | `4.3.1` | `7.0.0` |\n| [pnpm/action-setup](https://github.com/pnpm/action-setup) | `4.3.0` | `6.0.9` |\n| [actions/se\n[…]\nsion-update:semver-major\n dependency-group: github-actions\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": "ci(deps): bump the github-actions group across 1 directory with 11 up…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-17T19:42:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9e07480ced479e0e74b67cbd0822e47812c60c6d",
"body": "补充供应链安全说明与仓库基础设施相关文档,新增GitHub Actions工作流和Dependabot配置的相关说明,规范SHA pin使用方式",
"is_bot": false,
"headline": "docs: add supply chain security and repo infra docs",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:40:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e387daeb3dea40585e9d4ef192023b0d9a609989",
"body": "由于依赖或构建产物变更,更新测试快照里的包完整性哈希值",
"is_bot": false,
"headline": "fix(registry tests): 更新快照中的 integrity 校验值",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:28:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cf76a2fe70c9989f7a08c2f52f1467a3dc62c04",
"body": "问题:fallback 单例的 mediaQuery 监听器仅通过 beforeunload 清理,组件卸载时不释放;若直接 onUnmounted(destroyFallback) 会破坏多组件共享单例语义(其他组件仍在使用时被销毁)。\n\n方案:引入 fallbackRefCount 引用计数,useTheme() 在组件 setup 上下文中调用时计数 +1 并注册 onUnmounted 清理;计数归零时才调用 destroyFallback 释放 mediaQuery 监听器。非组件上下文(如 effectScope)不参与计数,保持原有行为。\n\n新增 2 项测试:多组件共享时仅最后卸载触发 destroy;先卸载不影响后组件使用。\n\n对应报告:P2 L-2",
"is_bot": false,
"headline": "fix(ui/theme): useTheme fallback 引用计数清理",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:19:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "072682fb4c1b09afb7ae9485ea489f4661f2013f",
"body": "L-10 WW token 不对称:parseFormattedDate 之前仅支持格式化 WW 不支持解析,导致 roundtrip 失败。新增 WW 正则与 token 提取,新增 dateFromISOWeek 函数按 ISO 8601 反推该周周一日期(week 1 为包含当年第一个周四的周,周一可能落在前一年 12 月);新增 6 项测试覆盖 roundtrip 与跨年边界。\n\nL-3 destroy setTimeout 未跟踪:新增 pendingRemoveTimer 跟踪,setTimeout 前清理前一个 timer,符合通用 timer 管理最佳实践。\n\n对应报告:P2 L-10 / L-3",
"is_bot": false,
"headline": "fix(ui/lib): date.ts 补全 WW token 解析与 render-imperative timer 跟踪",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:19:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eaa623952ce298e360c0d30fed903eea9a10d316",
"body": "L-9 warnedColumns 永不重置:watchEffect 中先清除已移除列的 warnedColumns 记录,使列被动态移除再添加后警告能重新触发,避免警告永久静默;新增动态列增删重警告测试。\n\nL-24 魔法数字提取:pageSize:10 改用 DEFAULT_PAGE_SIZE 常量,4 处 zIndex:10 改用新增的 DATA_TABLE_FIXED_COLUMN_Z_INDEX 常量。\n\n对应报告:P2 L-9 / L-24",
"is_bot": false,
"headline": "fix(ui/data-table): 重置 warnedColumns 并提取魔法数字",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:18:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec0bcdd3d39bf2375f5086ec04792aaaad97927c",
"body": "问题:activeItemIndex 在 foundIndex 为 -1 时回退到 0,导致预选值在当前列选项中未找到时错误高亮首项,误导用户。\n\n方案:直接赋值 foundIndex(-1 表示无高亮),与 activeItemIndex 初始值 -1 的语义一致;新增 modelValue 路径未找到时 activeItemIndex 为 -1 的测试。\n\n对应报告:P2 L-7",
"is_bot": false,
"headline": "fix(ui/cascader): 预选值未找到时不再错误高亮首项",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:18:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fec2ff2b3490a03915b6d6243df2baa28df288d",
"body": "L-5 handleClose 并发守卫:新增 isClosing 标志,try/finally 模式防止用户快速触发关闭(如双击关闭按钮)导致 beforeClose 并发执行产生重复 API 调用或状态紊乱。\n\nL-1 initSize 重复 rAF:调用前 cancelAnimationFrame 取消前一个未触发的 rAF,回调内清空 sizeRafId,避免 contentRef 变化时多个 rAF 堆积读取到错误的 bounding rect。\n\n对应报告:P1 L-5 / P2 L-1",
"is_bot": false,
"headline": "fix(ui/dialog): handleClose 并发守卫与 initSize rAF 取消",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:18:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e72cb2587d6966c4114af493e7c0f403e4bc789",
"body": "M-2 FormWizard:watch(modelValue) 中清除当前步骤之后所有 completedSteps/stepErrors,防止用户返回上游修改数据后下游步骤被跳过验证。\n\nM-7 showMessageBox:删除 isZh 字符串比较反模式,新增 dialog.confirm/cancel 到 zh-CN/en locale,统一通过 t() 函数获取按钮文案。\n\nM-13 TreeView:移除 watch(defaultExpanded) 对 expandedIds 的覆盖;defaultExpanded 现仅为非受控初始值,用户手动展开后不被父组件新值覆盖,受控同步请使用 v-model:expanded。\n\n对应报告:P1 M-2 / M-7 / M-13",
"is_bot": false,
"headline": "fix(ui): 修复 FormWizard/Dialog/TreeView 三处状态与 i18n 问题",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:18:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24a7c38ccfb76fb069508ddb6e816807bcf177e3",
"body": "问题:useToast.addToast 内部 setTimeout 自动移除 toast,与 Toast.vue 自身 duration 定时器并存,导致重复触发 removeToast 与状态紊乱。\n\n方案:移除 useToast 内部定时器,由 Toast.vue close 事件触发 removeToast;ToastContainer 增加默认 slot fallback 自动渲染 Toast 列表,使 <ToastContainer /> 简单用法仍可工作。\n\n对应报告:P0 H-1",
"is_bot": false,
"headline": "fix(ui/toast): 修复 useToast 与 Toast.vue 双定时器冲突",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T19:18:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ec0ec3c023d61a11b4832f4f9c12091983cd4b3",
"body": "1. 补全bench-diff.mjs的错误处理注释,说明不直接退出的原因\n2. 新增2026-07-18辅助包bug扫描报告\n3. 新增2026-07-18UI包全面bug扫描报告\n4. 新增BrutxUI Vue3项目架构优化方案v3文档",
"is_bot": false,
"headline": "docs: add multiple audit reports and architecture optimization plan",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T18:58:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35a201c5759bb8d8f9f352171b0389b5a995f6cc",
"body": "- N-1: HomeCodePreview.vue 示例代码 BButton → Button(6 处),与 button/index.ts 实际导出对齐\n- N-2 + L-17: 5 个工作流 44 处 uses 全部 SHA pin + 新增 .github/dependabot.yml 自动维护\n- N-3: scan-phantom-deps.mjs 移除硬编码白名单,改运行时读取 package.json(含 peerDeps)\n- N-4: bench-diff.mjs 用 BenchDiffError + 顶层 try-catch 替代 process.exit(1),输出结构化错误报告",
"is_bot": false,
"headline": "fix: 修复根仓库扫描报告 root-scan-2026-07-18 的 5 项发现",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T18:54:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e40d92a13c0aa12a799e3a51df5d05834e0a22e",
"body": "依据 docs/review/auxiliary-packages-bug-scan-2026-07-18.md 修复 N1-N5:\n\n- cli/project.ts (N1): resolveImportAlias 对 @/lib/ 别名增加非 sharedBase\n 分支,重写到 path.dirname(aliases.utils),与 composables/locales/directives\n 保持对称;修复用户自定义 aliases.utils 脱离 @/lib/utils 形态时跨文件\n @/lib/<x> 导入断裂问题\n- cli/project.ts (N5): r\n[…]\nvalidate-utils.ts (N2): NON_COMPONENT_DEP_NAMES 删除不存在\n 的 locale-en 条目\n- cli/tests/project.test.ts: 更新 N1 测试断言并新增触发场景测试\n\nN6(extractScriptBlocks 正则限制)已在源码注释文档化,当前不触发,\n迁移到 @vue/compiler-sfc 属独立改造,本轮未处理。",
"is_bot": false,
"headline": "fix: 修复辅助包 bug 扫描发现的 5 项问题",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T18:47:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e03694e2a2f37363e98a500fc0b10fb56b8c2aec",
"body": "将首页统计中的TypeScript占比统计替换为源码掌控度统计,同时更新了多语言配置项和翻译内容",
"is_bot": false,
"headline": "chore(home stats): replace typescript stat with source ownership",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T18:15:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "009d23f942d3791975a3b44762bcec7e412d8ad5",
"body": "问题原因:我们在 config.ts 中使用了 process.env.VERCEL 动态调整 base,但由于 Turborepo 构建任务默认隔离了环境变量,底层的 VitePress 无法读取该变量,造成在 Vercel 部署上 base 仍然解析为了有子路径的版本。\n\n修复方案:在 turbo.json 中将 VERCEL 添加到 build 任务的 env 声明中,透传给构建子进程并作为缓存 Hash 依据。",
"is_bot": false,
"headline": "fix(vercel): 在 turbo.json 中透传 VERCEL 环境变量以正确匹配路径缓存",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T18:03:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e21fae29479a73dac6a04cd0406f1fa908ba6f47",
"body": "问题原因:原配置中 base 硬编码为 /brutxui-vue3/,对于 GitHub Pages 的子路径部署是正确的。但 Vercel 部署在该域名的根路径下,导致浏览器去请求 /brutxui-vue3/assets/... 的资源文件均报 404 错误,使得样式和脚本完全丢失。\n\n修复方案:修改 apps/docs/.vitepress/config.ts,根据 process.env.VERCEL 判断,当在 Vercel 部署时将 base 设为 /,在其他环境保留 /brutxui-vue3/。",
"is_bot": false,
"headline": "fix(docs): 动态设置 vitepress 的 base 路径以适配 Vercel 根域名部署",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T11:47:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b56550c4ba4f54d63575bbcb22cb1a86131cc39e",
"body": "问题原因:Vercel 部署 docs 站点时将 Root Directory 设置为 apps/docs 目录,命令执行和部署收集的相对路径均以 apps/docs 为起点。原本的 outputDirectory 设置为 apps/docs/.vitepress/dist 导致找不到物理路径。\n\n修复方案:将 vercel.json 中的 outputDirectory 修正为相对路径 .vitepress/dist。",
"is_bot": false,
"headline": "fix(vercel): 修复 vercel.json 中的 outputDirectory 相对路径",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T11:43:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc1c554c2445c04a5b25cb0c8ba137749db5e5d3",
"body": "问题原因:Vercel 部署 docs 站点时,其执行命令的 cwd 在子包 apps/docs 目录下,由于该目录下 package.json 不存在 build:docs script,导致报错。\n\n修复方案:在 vercel.json 的 buildCommand 中,在执行 pnpm build:docs 前先 cd ../.. 返回到根目录下执行。",
"is_bot": false,
"headline": "fix(vercel): 返回根目录执行 build:docs 解决部署命令找不到的问题",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T11:37:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b7245972fbe1a6cd36b287201a7fc10c07830efd",
"body": "问题原因:\n1. 构建过程中,prebuild 脚本生成了 src/components/*/index.ts、manifest 等 gitignored 衍生文件。但在 turbo.json 中未将其声明在 build 任务 outputs 中,导致远程缓存恢复时丢失了这些文件,使得后续测试任务在导入组件时报 Cannot find module 错误。\n2. docs 构建生成 .vitepress/dist。但由于 outputs 默认只包含 dist/**,导致部署流从缓存恢复时未还原该目录,从而使得 upload-pages-artifact 失败。\n\n修复方案:\n在 turbo.json 的 build 任务 outputs 中,补充 .vitepress/dist/** 路径以及 prebuild 衍生文件的匹配路径,确保它们被 turbo 缓存并还原。",
"is_bot": false,
"headline": "build(ci): 修复 turbo.json 缓存输出,解决测试与文档部署资源缺失问题",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-17T11:29:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3294cffbd92263cd91c9cec6c4b3f4589f4fb4b",
"body": "问题原因:docs 等包在 CI 并行运行 typecheck 时,由于没有配置对依赖项 build 的依赖,导致无法找到 brutx-ui-vue 导出类型。修复方案:在 turbo.json 的 typecheck 任务中配置 dependsOn: ['^build']。",
"is_bot": false,
"headline": "ci: 修复 turbo.json 中 typecheck 任务依赖",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T23:39:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "351a20d51eb257f25504165abcffb08de926bb95",
"body": "问题:CI/Deploy/Publish 工作流耗时过长(CI ~358s、Deploy ~118s、Publish ~280s),存在串行执行、冗余构建、不必要依赖安装等问题。\n\n方案:\n- ci.yml: 拆分单一 job 为 4 个并行 job(quality/test/visual/integration),添加 turbo 本地缓存,Node 24 矩阵仅保留在 test job,动态 fetch-depth\n- deploy-docs.yml: 移除 docs prebuild(turbo dependsOn 已处理依赖顺序),改用 pnpm build:docs,添加 turbo 缓存\n- publish.yml: 移除不必要的 Playwright 安装(test=vitest run 不需要浏览器),添加 turbo 缓存,清理 FORCE_JAVASCRIPT_ACTIONS_TO_NODE24\n- vercel.json: buildCommand 同步改为 pnpm build:docs",
"is_bot": false,
"headline": "ci: 优化三套工作流并行化与缓存策略",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T23:26:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b704ff256d9af02db83fd9ad340ff999ec5395db",
"body": "为视觉回归测试强制指定Inter字体,消除不同系统默认字体差异带来的尺寸偏移,更新spinner的基准快照文件",
"is_bot": false,
"headline": "fix(visual-test): 修复跨系统字体差异导致的视觉快照失败",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T22:49:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5343591685ae680bb836a4d789d188a333c5cc23",
"body": "将DropdownMenu改为DropdownMenuRoot以匹配最新的组件API,修复组件渲染异常问题",
"is_bot": false,
"headline": "fix(ui:visual): 修复reka-ui下拉菜单组件命名错误",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T22:28:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "641fc62ec33d79d34b657086760ed3fb91119766",
"body": "修改了ci和publish工作流中的turbo调用命令,通过pnpm exec来执行turbo,确保使用项目本地的turbo版本",
"is_bot": false,
"headline": "ci: 为turbo命令添加pnpm exec前缀",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T22:13:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e986f3cd0128c6ff990c710dbf39e8bb50602ea0",
"body": "1. 抽离共享的组件索引文件生成逻辑到 shared 包\n2. 移除本地重复的生成代码,改用共享函数\n3. 自动处理 index.ts 桶文件生成,避免循环依赖和CI构建问题\n4. 更新所有注册表文件的注释和哈希值",
"is_bot": false,
"headline": "refactor: 重构组件索引生成逻辑,统一实现方式",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T22:06:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "600ef2709254d278792aeb4904cadf07929dcdb3",
"body": "问题:upload 组件的 5 个源码文件(Upload.vue、UploadFileList.vue、\nUploadFileItem.vue 及 2 个 test)import 类型 from \"./index\",但\nindex.ts 是构建时由 prebuild:component-index 自动生成的,源码阶段\n不存在。\n\nCI 全新 checkout 时 prebuild:scan 先于 prebuild:component-index\n执行,scan 读取 Upload.vue 时尝试解析 \"./index\" import,因文件不\n存在导致 ENOENT,构建失败。\n\n本地之前能通过是因为历史遗留的 index.ts 未被清理,掩盖了问题。\n\n修复:将 \"./index\" 改为 \"./upload-types\"(类型的实际定义位置),\n源码不应依赖构建产物。",
"is_bot": false,
"headline": "fix(upload): 修正类型 import 路径,修复 CI 构建失败",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T21:43:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8680c28a25de83e68a53a075d9d62e2cca7def8e",
"body": "修复方案 V2 验收过程中发现的 6 项问题:\n\n- §5.1 turbo 远程缓存:ci.yml + publish.yml 启用 TURBO_TOKEN\n /TURBO_TEAM(方案明确禁止未配置远程缓存就上线 turbo)。按 Vercel\n Remote Cache 标准流程,TURBO_TEAM 改用 vars(团队 slug 非敏感)\n- §3.3 SSR smoke 测试:覆盖从 30 扩展到 195 个,补齐全部 86 个组件\n + 34 个 composable,分 3 层(简单组件 / provider 嵌套 / wrapper)\n- §4.3 performanc\n[…]\n§5.2 PR 模板修正 vitest-axe 引用为 axe-core(§1.1 已移除 vitest-axe)\n- §2.2 新增迁移指南(中英文):说明 reka-ui 原语不再 re-export,\n 用户须直接安装 reka-ui;VitePress 侧边栏同步\n\n验证:typecheck 通过(exit 0)、SSR 测试 195/195 通过、\ni18n 镜像 106/106 完整",
"is_bot": false,
"headline": "fix: 补齐方案 V2 验收遗漏项与 bug",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T21:39:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6d4a9cf54f73732b9fabb0bd18ab80579cf0a3a6",
"body": "- scripts/check-i18n.mjs: 比对 apps/docs/ 与 apps/docs/en/ 下 .md 文件名集合,零依赖\n\n- package.json: 新增 check:i18n(--report 仅打印)/ check:i18n:strict(缺失即 exit 1)\n\n- ci.yml: 新增 i18n mirror check 步骤(continue-on-error,仅作 PR 评论提示)\n\n当前状态:105/105 完全镜像,无缺失\n\nchore: no-changeset",
"is_bot": false,
"headline": "feat(docs): 新增 i18n 镜像校验脚本(§6.1)",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:59:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0409f431f159390ca6f65dfdbd6877f579757e63",
"body": "- pnpm-workspace.yaml: 删除 shamefullyHoist: true\n\n- packages/ui/package.json: 补 brutx-shared-vue devDependency(scripts/generate-styles-tokens.ts 与 prebuild-scan.ts 此前靠 hoist 才能解析)\n\n- scripts/scan-phantom-deps.mjs: 扩展扫描范围到 packages/ui/scripts,同步 DECLARED 集合(brutx-shared-vue/reka-ui/size-limit 系列)\n\n- d\n[…]\n出源根)\n\n- packages/registry/registry/*.json: 重建以纳入 §2.1 新增的 components/ui/*/index.ts(自动生成产物)\n\n验证:pnpm install 通过 / turbo run build 全部通过 / pnpm --filter docs build 通过 / CLI --help 通过\n\nchore: no-changeset",
"is_bot": false,
"headline": "build: 移除 shamefullyHoist 显式化包间依赖(§1.4+§5.3)",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:57:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5e28af6ef4ea2b50d9b0cce02464d8cfac2ea022",
"body": "- 删除 scripts/release/check-release.mjs 与 generate-changelog.mjs\n\n- 根 package.json: 移除 release:check/changelog* 脚本,新增 changeset/version-packages/release\n\n- 新增 .changeset/config.json(access=public, commit=true, ignore=[docs])\n\n- publish.yml: release:check → turbo run build test typecheck lint + 未消费 ch\n[…]\nyml: 新增 PR changeset 存在性检查([no-changeset] 显式豁免)\n\n- 新增 .github/PULL_REQUEST_TEMPLATE.md(含 changeset 检查项)\n\n- 同步更新 AGENTS.md / CONTRIBUTING.md / docs/RELEASE.md / 中英文 contributing.md\n\nchore: no-changeset",
"is_bot": false,
"headline": "build: 引入 changeset 版本管理替换自研发布脚本(§5.2)",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:43:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "86ba7bf9922bf1536718c2667e66674742d07260",
"body": "- 新增 turbo.json:build/test/test:ssr/typecheck/lint/validate/bench/clean 任务定义,含 inputs/outputs/dependsOn 依赖图\n\n- 根 package.json 脚本从 pnpm -r/pnpm --filter 迁移到 turbo run,删除冗余 build:ui\n\n- CI 工作流迁移到 turbo:pnpm build/typecheck/lint/test/test:ssr 替代串行 pnpm --filter\n\n- 修复 docs demo 的 reka-ui 导入:7 个 demo 文件将 \n[…]\ndocs 添加 reka-ui 依赖\n\n- 远程缓存配置预留(TURBO_TOKEN/TURBO_TEAM env vars 注释在 ci.yml 中,需用户配置 Vercel Remote Cache)\n\n验证:turbo run typecheck(5 包通过)+ turbo run lint(通过)+ turbo run build --filter=brutx-ui-vue(38s 通过)",
"is_bot": false,
"headline": "build: 引入 turbo 构建增量编排(§5.1)",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:36:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e01aeb9f47f8635135e53385c67321c29dc6e2a9",
"body": "调整弹窗初始化时的文档和body检查逻辑,先获取文档对象再判断合法性,避免直接非空断言导致的运行时错误,同时简化后续的body调用写法",
"is_bot": false,
"headline": "fix(dialog): 修复无文档或无body时的弹窗创建异常",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:24:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e80fd3a8de9ecf316e60fe2c7c8bc5bb21a55ac9",
"body": "P1 完成后实测:lines 80.94%, functions 80.23%, branches 69.32%, statements 79.84%\n\nT3 = max(T2, actual' - 2%) 向下取整到 5 的倍数:lines 75, functions 75, branches 65, statements 75(与 T2 持平,未提升)",
"is_bot": false,
"headline": "chore(ui): 记录 coverage 阈值阶段 3 测量数据(§1.5)——T3 与 T2 持平",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:23:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6da8a43c3693df52f90dfbe79ca6debb52d35b9b",
"body": "- §4.1 新增 vitest bench 基准:perf/render.bench.ts(DataTable+TreeView 各 100/1000 项),添加 bench/bench:json 脚本,创建 scripts/bench-diff.mjs PR 对比脚本,创建 .github/workflows/bench.yml CI 工作流(PR 评论发布对比报告,非门禁)\n\n- §4.2 审计 DataTable/TreeView/VirtualScroll/Cascader 的 v-memo/shallowRef/markRaw 使用,输出 docs/audit/perf-audit.md。结论:均合理使用 shallowRef,v-memo 暂不引入(依赖数组复杂,优先用 virtualScroll prop)\n\n- §4.3 更新 performance.md:新增 §7(v-memo/markRaw/shallowRef 取舍指南,含正例反例)和 §8(性能基准数据与回归判定标准)\n\n验证:typecheck + lint + bench 试跑全部通过",
"is_bot": false,
"headline": "perf(ui): 运行时性能体系(§4)——bench 基准 + 组件审计 + 最佳实践文档",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:13:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f13c3f0321f0184f56dce1139a447b107398d77a",
"body": "- §3.1 扩展 lib/env.ts:新增 16 个 SSR-safe API(getWindow/getDocument/matchMedia/getLocalStorage/requestAnimationFrame/IntersectionObserver 等),所有 DOM/BOM 访问统一路由通过该层\n\n- §3.2 ESLint 拦截:no-restricted-globals(window/document/navigator 等 15 个)+ no-restricted-syntax(window./globalThis./self. 成员访问),生产代码 error 级,\n[…]\nnfig.ts(node 环境)+ ssr-smoke.test.ts(30 用例:22 组件渲染 + 8 组合式函数 setup),新增 test:ssr 脚本\n\n- 同步更新 useTheme.test.ts / theme-variables.test.ts 的 vi.mock 工厂\n\n验证:typecheck + lint + 3116 单元测试 + 30 SSR smoke 测试全部通过",
"is_bot": false,
"headline": "refactor(ui): SSR 兼容性治理(§3)——env.ts 工具层 + lint 拦截 + smoke 测试",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T20:05:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d3a35acdc756bb12caad3f133ad1bdbba809a7fd",
"body": "- 删除根级 src/*.ts 包装文件(calendar/carousel/dialog 等 13 个),\n 组件子路径现由自动生成的 components/<name>/index.ts 提供\n- 新增 prebuild:component-index 脚本,从 registry-manifest.json 自动\n 生成 86 个组件 index.ts(gitignore 派生产物)\n- 新增 prebuild:exports / postbuild:exports / check:exports 脚本,\n 从 exports-manifest.json 自动生成 package.j\n[…]\n再导出 useCarousel,改用 brutx-ui-vue/useCarousel\n- 同步更新 date-picker.md / carousel.md 文档与 DatePickerDemo.vue\n- smoke-package.mjs:ESM-only 包跳过 CJS 烟雾测试\n- copyStylesPlugin:递归扫描 dist/ 查找 CSS 产物(兼容 assets/ 子目录)",
"is_bot": false,
"headline": "refactor(ui): exports 子路径自动化与多入口 ESM 构建(BREAKING)——P1-§2.1",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T19:23:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4c0d7e0404cbbdce881fedc2378c568ac0fece81",
"body": "落实 ARCHITECTURE_OPTIMIZATION_PLAN_V2 §2.2:直接移除 index.ts 中全部 8 处 reka-ui 值 re-export,组件库不再充当第三方原语代理入口。\n\n被移除的 re-export:Dialog/DialogTrigger/DialogPortal/DialogClose、AlertDialog/AlertDialogTrigger/AlertDialogPortal、Sheet/SheetTrigger/SheetPortal/SheetClose、Popover/PopoverTrigger/PopoverAnchor、Tooltip/\n[…]\n Popover, Tooltip, ... } from 'brutx-ui-vue' 的用户代码需改为直接 import { DialogRoot as Dialog } from 'reka-ui'。reka-ui 仍作为 peerDependencies 保留(组件内部使用),但不出现在公共 API 表面。0.x 阶段在下一个 minor 发版、CHANGELOG 标注 BREAKING。",
"is_bot": false,
"headline": "refactor(ui): 移除主入口 reka-ui re-export(BREAKING)",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T18:55:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "90989acc2bb03d73e73944830180ded145bd4fd2",
"body": "落实 ARCHITECTURE_OPTIMIZATION_PLAN_V2 第 1 章 P0 五项:\n\n§1.1 vitest-axe 兼容性修复:移除 vitest-axe 依赖与 vitest-axe.d.ts,a11y.ts 改用 axe-core 原生 API + 自定义违规详情错误信息,vitest.setup.ts 与 typedoc.json 同步清理。\n\n§1.2 visual 回归基线扩展:visual/App.vue 新增 URLSearchParams query 路由(不引入 vue-router),新增 5 核心组件 × 2 主题 = 10 张基线 PNG,core.s\n[…]\n与字符串字面量),新增 docs/audit/ 三份审计报告,实测 0 phantom deps,P2 移除阶段待动态验证。\n\n§1.5 coverage 阈值提升阶段 2:vitest.config.ts 阈值 60→75(lines/functions/statements)、50→65(branches),按 T2 = max(阶段1, actual - 2%) 向下取整到 5 的倍数推导。",
"is_bot": false,
"headline": "chore(ui): 完成 v2 方案 P0 工具链健康度",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T18:38:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "55d4949e9f71102092a1fecc4d8adb2ea51b518e",
"body": "补充并完善了无障碍测试、视觉回归、体积监控、SSR 治理、性能基准等多个模块的具体实现方案,包括:\n1. 重写 a11y 测试工具,优化错误提示信息\n2. 调整视觉 harness 实现,改用 URLSearchParams 自研 query 解析\n3. 替换 size-limit 构建工具为 esbuild 版本\n4. 补充 shamefullyHoist 移除的审计脚本细节\n5. 扩展 env.ts 工具层,完善 SSR 安全封装\n6. 新增 SSR smoke 测试用例规范\n7. 改用 vitest bench 替代 tinybench 做性能基准\n8. 调整依赖审计方案,使用 depcheck 检测 phantom dependency\n9. 修正文档中多处细节描述与命令示例",
"is_bot": false,
"headline": "docs: update ARCHITECTURE_OPTIMIZATION_PLAN_V2",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T17:52:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5df18faa915fc642674b9b5ca57c2a89945a3df3",
"body": "通过 try-catch 分别兼容源码开发和打包后的 package.json 相对路径",
"is_bot": false,
"headline": "fix(cli): 修复打包后 doctor 命令找不到 package.json 的问题",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T11:56:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66a85dd0b64970c83bc90b7fbdaf93caf1c8e5ba",
"body": null,
"is_bot": false,
"headline": "chore: 新增 .gitattributes 配置文件",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-16T11:43:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1b6392ece95964708d8e9536af75d3a5a2c70df",
"body": "validate-registry.ts 把 registry-sbom.json 当作普通组件文件处理,导致两个错误:缺失 shadcn \\、未在 index.json 注册。在文件过滤中排除该文件(与 index.json/registry-manifest.json 同处理)。",
"is_bot": false,
"headline": "fix(registry): validate 排除 registry-sbom.json 文件",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T21:11:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49bfe64dd159e027cae9b1695152db866805aaaa",
"body": "大幅修订架构优化计划:vitest-axe 改为直接使用 axe-core 原生 API、visual 回归测试基线扩展、re-export 审计、SSR smoke 测试、性能基准与 DataTable 性能审计、渲染优化(v-memo/shallowRef/markRaw)等。",
"is_bot": false,
"headline": "docs: 修订架构优化计划 v2",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T21:05:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7db7b53e1977130d711ec83d11c0f573c522908d",
"body": "中英双版 cli.md 同步补全:\n\n1. 版本锁定节扩充 4 小节:与 --registry 的交互(仅 GitHub raw URL 生效,否则 REGISTRY_VERSION_UNSUPPORTED)、版本混用 warn 提示、update --across-versions 跨版本约束。\n\n2. doctor 选项表新增 --sbom / --sbom-output。\n\n3. update 选项表新增 --across-versions。\n\n4. 全局选项表新增 --require-signature。\n\n5. 新增《供应链安全:签名与 SBOM》章节:信任公钥配置(BRUTX_REGISTRY_PUBLIC_KEYS)、默认 warn vs 严格模式(--require-signature / BRUTX_REQUIRE_SIGNATURE)、密钥轮换流程、注册表 SBOM(构建时)、项目 SBOM(doctor --sbom)。",
"is_bot": false,
"headline": "docs(cli): 补全版本锁定与供应链安全文档——P0-3",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T21:04:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c1adf6c5dee40e95e3b79f91f06be9544ff1447",
"body": "doctor 新增 --sbom/--sbom-output flag:读取已安装组件 manifest 生成 CycloneDX 1.5 SBOM(bom-ref 依赖图 + hashes + integrity),默认输出 ./brutx-sbom.json,无组件时报错退出。新增 3 个 doctor --sbom 测试。\n\n签名默认 warn:verifyManifestSignature 失败时默认打印 warn 并返回 false(不阻塞),通过 --require-signature flag 或 BRUTX_REQUIRE_SIGNATURE=1 环境变量激活严格模式(抛 RE\n[…]\n(仿 global-dry-run 模式)。\n\n测试调整:signature.test.ts 原 5 个 throw 用例改为 strict mode + 新增 5 个默认 warn 用例 + key rotation 拆分;registry.test.ts P1-6 集成测试 4 个改 strict + 3 个新增默认 warn;新增 signature-mode.test.ts 13 个用例。",
"is_bot": false,
"headline": "feat(cli): doctor --sbom 与签名默认 warn 严格模式——P1-6",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T21:04:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "400928eed5bb2298cd870944a12dbaab6a5db56c",
"body": "构建时自动生成 registry-sbom.json,包含所有组件与 npm 依赖的 bom-ref 依赖图、integrity 字段(sha256 over bomFormat/specVersion/components)以及 manifestIntegrity 字段绑定对应 manifest。\n\nverify-build 的 diff 排除字段改为按文件区分(FILE_EXCLUDED_FIELDS),将 SBOM 的随机 serialNumber 排除在对照之外。\n\n新增 4 个 SBOM 测试:CycloneDX 1.5 格式、integrity 确定性、内容变更 integrity 不同、computeSbomIntegrity 导出。",
"is_bot": false,
"headline": "feat(registry): 新增 CycloneDX 1.5 SBOM 生成——P1-6",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T21:03:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7864ee1698df2da3f42e3960aaaf806d4d463c5e",
"body": "该提交新增了BrutxUI (Vue 3)项目的v2架构优化方案文档,该方案基于v1已落地成果,针对后续演进方向分工具链健康度、产物治理、SSR兼容、运行时性能、monorepo治理和文档优化六大模块,按风险收益分为P0/P1/P2三阶段逐步落地,同时明确了各模块的现状痛点与落地方案。",
"is_bot": false,
"headline": "docs: add v2 architecture optimization plan for BrutxUI Vue3",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T20:28:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9995151b90a30be3e83dc4a2783843666dea0584",
"body": "1. 新增 RELEASE.md 文档规范 breaking change 迁移指南模板,明确提交标记与落地要求\n2. 在 CLI doctor 命令中新增 monorepo 子包检测提示,引导用户正确在子包执行命令\n3. 更新 AUXILIARY_PACKAGES_IMPROVEMENT_PLAN_V2.md,标记组件迁移引擎与 monorepo 支持项暂缓,并关联已落地的替代方案\n4. 为 workspace 检测功能添加完整单元测试用例",
"is_bot": false,
"headline": "docs(cli): 补充 breaking change 迁移规范与 monorepo 提示",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T20:08:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19a85fcdd45c926257660577cffc62632504296b",
"body": "- AGENTS.md:新增 Registry 包命令小节(build/build:watch/build:verify/build:bench/validate),CLI 工具小节补充 audit.ts/global-dry-run.ts/logger.ts verbose 描述,注册表构建器小节补充 validate-utils.ts 与 deps.dot/deps.json 产物\n\n- apps/docs/guide/cli.md 与 apps/docs/en/guide/cli.md:新增全局选项/全局 dry-run/verbose 等级/审计日志章节(中英文同步)\n\n- packa\n[…]\n\n\n- docs/AUXILIARY_PACKAGES_IMPROVEMENT_PLAN_V2.md:Item 11(registry watch)标记已完成并补落地说明,路线图与 P2 列表同步\n\n- 附带优化:packages/registry/scripts/build-registry.ts watch 模式 debounce timer 清理,避免多次触发堆积与 SIGINT 时资源泄漏",
"is_bot": false,
"headline": "docs: 同步 P1-8 与 P2.3 新功能文档",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T19:59:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1c8ea7d3193c7af81f0b9adcfa4278b29b749258",
"body": "监听 UI 源码变化,增量 rebuild registry JSON,提升组件开发体验。\n\n- build-registry.ts: 把 REGISTRY 改为 let + 导出 reloadRegistry(),watch 时可重新加载\n- 新增 runPrebuildScan():复用 prebuild-scan 逻辑,watch 时更新 registry-manifest.json\n- 新增 runWatch():fs.watch 递归监听 UI 源码目录(components/composables/locales/lib/directives)+ shared/src/compon\n[…]\nwatch flag 或 BRUTX_WATCH=1 环境变量激活\n- package.json 新增 build:watch 脚本\n- cli/index.ts: applyGlobalOptionsFromArgv 改为接收预处理后的 argv(避免重复检测 -v/-vv/-vvv)\n- 新增 10 测试(reloadRegistry + runPrebuildScan 幂等性 + 覆盖配置)",
"is_bot": false,
"headline": "feat(registry): registry build watch 模式——P2.3",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T19:47:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d9bc8fcc360ce78d8ac6a9cc2c07ffdf2301103a",
"body": "新增审计日志、全局 dry-run 开关、verbose 等级,提升 CLI 操作可观测性与安全性。\n\n- 新增 audit.ts:.brutx/audit.log JSONL 审计日志,记录 add/remove/update/diff 的命令/组件/源/integrity/时间戳/成功状态/dry-run 标志;写入失败不阻塞主操作\n- 新增 global-dry-run.ts:BRUTX_DRY_RUN=1 或 --dry-run 全局 flag 激活;mergeDryRun() 合并命令级与全局级 dry-run 标志\n- 扩展 logger.ts:verbose 等级(0-3)支持 \n[…]\ny-run、--verbose-level flag,预解析 -v/-vv/-vvv\n- add/remove/update/diff 接入 withAuditLog() 自动记录成功/失败\n- doctor 新增 checkAuditLog 检查,报告最近 5 条失败记录线索\n- 新增 52 测试(audit 20 + logger-verbose 17 + global-dry-run 15)",
"is_bot": false,
"headline": "feat(cli): CLI 操作审计与全局 dry-run——P1-8",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T19:37:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1d39b6ae7f54b981dae149b3ccc64b4f70b1c7d9",
"body": "- shared: 新增 extractClassifiedModuleSpecifiers,返回 specifier + isTypeOnly + isDynamic\n - 用 AST 区分 import type { ... } 与值导入;混合导入 (import { type Foo, bar })\n 仍标记为运行时依赖。同一 specifier 多次引用时优先运行时,仅当全部为 type-only 才标记。\n- registry/validate-utils: 用 AST 替换原有正则,避免误报 type-only 跨组件导入\n - 新增 classifyRegistryIm\n[…]\neps.json\n- .gitignore: 排除 deps.dot 与 deps.json(按需生成)\n- 测试:新增 31 个用例(extractClassifiedModuleSpecifiers 10 + extractRegistryDeps type-only 6 + classifyRegistryImport 7 + buildDependencyGraph/DOT/JSON 8)",
"is_bot": false,
"headline": "feat(registry): 依赖分析深化与依赖图导出——P1-7",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T19:22:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a7e36ef5a62f906a3cc8f702dbbce62e678676f5",
"body": "之前 firstError 恒为 null,REGISTRY_OFFLINE_UNAVAILABLE 丢失根因。\n现在捕获首个 CliError 作为 cause 传播,非 CliError 失败仍保持 cause 为 null。",
"is_bot": false,
"headline": "fix(cli): fetchWithSources 离线全失败时保留首个 CliError 作为 cause",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T19:06:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ce99d701b42f9ba2aaf892dfeeda9b624083faa",
"body": "…TURE_INVALID\n\n新增 signature.ts 集中实现供应链签名验证:\n- verifyManifestSignature:对 manifest.integrity 字段值做 Ed25519 验签(integrity 已绑定 manifest 内容,签名 integrity 即绑定全 manifest)\n- loadTrustedPublicKeys:从 BRUTX_REGISTRY_PUBLIC_KEYS 环境变量加载 JSON 公钥列表 [{keyId, publicKey}]\n- generateEd25519KeyPair + signManifestIntegrity\n[…]\n换场景\n- registry.test.ts(8 个集成):getItem + 签名 manifest 全链路(有效签名/无签名兼容/无公钥跳过/篡改签名/未知 keyId/内容替换/密钥轮换/CliError 实例断言)\n- error-advice.test.ts(3 个):REGISTRY_OFFLINE_UNAVAILABLE + REGISTRY_SIGNATURE_INVALID 建议",
"is_bot": false,
"headline": "feat(cli): manifest 签名验签基础设施——P1-6 Ed25519 签名 + 公钥轮换 + REGISTRY_SIGNA…",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T19:02:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b084a173f4790bd8c832250d66fd33565b94ab99",
"body": "新增 registry-source.ts 集中实现多源解析、认证注入与离线韧性:\n- resolveRegistrySources:override > config.registries > DEFAULT_REGISTRY_URL 优先级解析\n- isOfflineRequested:BRUTX_OFFLINE=1 或 --offline 均激活离线模式\n- buildAuthHeaders:BRUTX_REGISTRY_HEADERS(JSON)覆盖 BRUTX_REGISTRY_TOKEN(Bearer),仅对 http(s):// 源生效\n- fetchWithSources:在线\n[…]\n册 --offline 选项。\n\n新增 38 个测试覆盖 resolveRegistrySources / isOfflineRequested / buildAuthHeaders / fetchWithSources / withOfflineScope / doctor 可达性检查;doctor.test.ts 在 beforeEach mock global.fetch 避免真实网络请求。",
"is_bot": false,
"headline": "feat(cli): 多 registry 源与离线韧性——P1-5 离线模式 + auth + reachability",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T18:53:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fa876ea542c4cb5a492206fe42b8c65a7853102f",
"body": "原实现无条件用 `node <npm_execpath> run build` 启动 pnpm,但当脚本\n未通过 pnpm/npm 运行时(npm_execpath 缺失),node 会把 'pnpm' 当作\nJS 模块加载,报 Cannot find module。\n\n修复:当 npm_execpath 存在时走 node 显式执行路径(兼容 Windows);\n否则直接 execFileSync('pnpm', ...),让 shell 在 PATH 中查找 pnpm。",
"is_bot": false,
"headline": "fix(registry): verify-build 在 npm_execpath 缺失时回退到 PATH 中的 pnpm",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T18:36:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b92d4263d71631ec9d32c871ed10d4371a03aa81",
"body": "延续 P0-3 版本治理。update 命令默认跳过 manifest 中显式锁定版本\n(version 字段存在且不为 'latest')的组件,避免擅自改变用户锁定的\ngit ref。新增 --across-versions 选项解锁跨版本更新。\n\n变更:\n- types.ts: UpdateOptions 新增 acrossVersions 字段\n- index.ts: 注册 --across-versions CLI 选项(默认 false)\n- update.ts: 检测 version-pinned 组件,默认跳过并输出锁定列表与解锁提示\n- update.test.ts: 新增 8 项测试覆盖锁定/解锁/混合/全锁定/manifest 缺失场景\n\n验收:update 默认不跨 registry 主版本。",
"is_bot": false,
"headline": "feat(cli): update 版本约束——version-pinned 默认锁定 + --across-versions 解锁",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T18:32:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb384228cdff7358263757b43bd27e990f6f85f4",
"body": "P0-4 任务,让增量构建\"可证伪 + 可测量 + 可维护\":\n\n1. 增量策略文档化(build-registry.ts 顶部注释)\n 明确缓存键要素(CACHE_VERSION + componentInfo + fileMapping +\n TAILWIND/CSS_VARS + 传递闭包源码原文)、命中条件(三者均满足才复用)、\n 失效触发(改源码/元数据/配置/提升 CACHE_VERSION),让开发者能判断\n \"改了这个文件会不会触发缓存失效\"。\n\n2. build:verify 脚本(scripts/verify-build.ts)\n 证明\"增量 build\n[…]\ntests 全部通过\n- pnpm --filter brutx-registry-vue build:verify PASSED\n- pnpm --filter brutx-registry-vue build:bench 输出 bench.json\n\n并行构建(方案中标记\"待 bench 数据驱动,必要时降级 P1\")暂不实施,\n等 bench.json 在 CI 中积累数据后再决定是否需要。",
"is_bot": false,
"headline": "feat(registry): 构建增量透明化与性能基准——verify/bench/文档化",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T18:13:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f76ae28da2f79df48dcb44ff2d35d9ed7cdff359",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' of https://github.com/lidaixingchen/brutxui-vue3",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T18:04:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ff275d1c4e4412bb9f297b636a3df1a273bd32a",
"body": "P0-3 任务,把 name@version 从隐藏特性升级为契约,修复两个正确性缺陷:\n\n1. resolveDeps 去重键 bug(问题 4)\n 原实现 visited/active Set 以 cleanName 单键去重,组件 A 依赖 button@v1、\n B 依赖 button@v2 时第二个被静默跳过,导致 v2 依赖树缺失。\n 改为 (cleanName, itemSource) 二元组键——版本信息已隐含在 itemSource 中,\n 同源同名仍去重、跨版本各自解析。不可额外拼 version 进键(会破坏同版本去重)。\n\n2. @version 硬编码\n[…]\n version 字段\n\n测试:\n- registry.test.ts 新增 3 个版本化去重测试(BRUTX_NO_CACHE 隔离)\n- manifest.test.ts 新增 4 个 version 字段测试\n- 现有 fetch mock 补 headers 字段适配 P0-2 缓存层\n\n验证:pnpm --filter brutx-vue typecheck 通过;284 测试全部通过。",
"is_bot": false,
"headline": "feat(cli): 组件版本治理体系化——resolveDeps 去重键修复 + 去硬编码 URL + manifest 版本契约",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T18:03:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "363480b92ff8f2b4da179b0041b14aea99ae9f7d",
"body": "* fix(ui): resolve lint warnings\n\nCo-authored-by: lidaixingchen <115717776+lidaixingchen@users.noreply.github.com>\n\n* fix(ui): 修复 Checkbox 受控模式问题并消除模板空白引入\n\n问题原因:\n\n1. Checkbox.vue 将 checked 默认值设为 false,导致非受控用法(如 <Checkbox />)被强制进入受控模式且锁定为 false,无法切换选中状态。\n\n2. vue/singleline-html-element-content-newlin\n[…]\ncontent-newline 规则,并回滚 Button/Select/DataTableColumnFilter/UploadFileItem 中被该规则强制改动的多行插值。\n\n---------\n\nCo-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "Fix lint warnings in UI package (#1)",
"author_name": "历代星辰",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T17:58:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "30b7e1c734895f2a2e18fe5f38c2a14d99142b5f",
"body": "P0-2 落地:缓存层从 TTL-only 升级为具备条件请求、并发安全、LRU 上限与版本绑定的完整策略。\n\n- cache.ts 重写:CacheEntry schema 扩展 etag/lastModified/registryVersion;\n getCachedEntry/setCachedEntry 承载 header 字段;新增 touchCachedEntry 用于\n 304 响应续期;保留旧 getCached/setCache 向后兼容\n- in-flight 去重:进程级 Map<cacheKey, Promise>,同一 key 并发请求共享\n Promise(并\n[…]\n入缓存(带 header)\n- fetchWithRetry 支持 headers 参数透传条件请求头\n- clearCache 支持 --max-age 参数只清理过期 N 天的条目\n- 新增 cache 子命令:brutx-vue cache clear [--max-age N]\n- 新增 17 个测试覆盖 schema/版本绑定/去重/LRU/clearCache/NO_CACHE\nEOF",
"is_bot": false,
"headline": "feat(cli): 缓存层升级——条件请求 + 并发去重 + LRU 上限 + registry 版本绑定",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T17:37:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0adf13819cc228a8a749e6be99c2c1a872e7fd6c",
"body": "P0-1 落地:manifest 驱动的安装侧可观测性。\n\n- registry build 改字典序遍历 componentNames,让构建顺序成为稳定契约\n- manifest 移除 files 的 .sort(),新增 installedContentHash 字段规避\n resolveImportAlias 改写磁盘内容导致的 hash 不等\n- doctor 新增三类 manifest 驱动检查:文件一致性、integrity 漂移、\n registryDependencies 闭环;无 manifest 时降级 legacy scan\n- doctor --fix 支持 RestoreIntegrity(--fix 时触网拉取,失败降级提示\n update)与 RemoveOrphans(删除孤儿文件)\n- 新增 8 个测试覆盖四类场景 + 文件顺序稳定性反例 + fix 验证\n- 文档补强 v2.2:构建顺序稳定化、manifest 自身完整性校验、二元组语义\n 收紧、URL 重构缓存迁移、多源 fallback 与 @version 交互、diff 排除字段",
"is_bot": false,
"headline": "feat(cli): doctor 消费 manifest 实现 integrity 漂移与孤儿检测",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-15T17:28:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ad3df57c599bc216490ae225883bc52a60c13d7",
"body": "调整了测试中的文件路径断言和导入路径匹配,适配项目内部目录结构的变更,确保测试可以正确验证新的资源文件位置和导入规范",
"is_bot": false,
"headline": "test(cli): 更新集成测试用例以匹配新的目录结构",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-13T00:28:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12770131fd2c214892ae58d1949542c884947c34",
"body": "问题原因:brutx-shared-vue 主 barrel 导出 extractModuleSpecifiers(依赖 typescript),CLI 通过 noExternal 打包时将整个 typescript 编译器嵌入 ESM 输出,导致 typescript 内部 require('fs') 在 ESM 上下文中崩溃\n\n修复方案:将 extractModuleSpecifiers/extractScriptBlocks/scanComponentFiles 移至独立入口 brutx-shared-vue/scan,主 index 不再导出这些函数;CLI 打包时不再引入 typescript;registry builder 和 prebuild scanner 改为从 /scan 入口导入",
"is_bot": false,
"headline": "fix(shared): 拆分scan入口隔离typescript依赖",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-13T00:02:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69a9fc42e743a2f4287e7aab342aac5acc5458be",
"body": "问题原因:CDP Emulation.setEmulatedMedia 在 headless Chromium 中不 reliably 触发 MediaQueryList change 事件,导致 vi.waitFor 超时\n\n修复方案:L2 浏览器测试改为验证真实浏览器媒体查询的初始值读取(L1 无法覆盖),change 事件响应式已由 L1 单元测试 useReducedMotion.test.ts 用 mock matchMedia 覆盖",
"is_bot": false,
"headline": "fix(ui): 简化useReducedMotion浏览器测试",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T23:51:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "efc64fc952544ce8f93b7e997ebd46723d59fb70",
"body": "问题原因:provider: playwright 未作为工厂函数调用(缺少括号),导致 serverFactory 缺失;setup 文件引入 vitest-axe(Node-only createRequire)和 @vue/test-utils(esbuild 预打包丢失 init_shared_esm_bundler),在浏览器环境崩溃\n\n修复方案:playwright() 正确调用;新增浏览器专用 vitest.browser.setup.ts 排除 Node-only 依赖;新增 browser-mount.ts 用 Vue 原生 createApp 替代 @vue/test-utils;用 vi.waitFor 替代 nextTick 等待 CDP 媒体查询变更事件传播;render 函数替代内联 template 避免运行时编译器依赖",
"is_bot": false,
"headline": "fix(ui): 修复浏览器测试CI失败",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T23:43:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69106ee5d2aac3fe4ba8d25935a117f89c7e443f",
"body": "统一升级所有包中的vitest及其配套工具包版本,同步更新pnpm-lock.yaml中的依赖锁定信息,确保所有依赖版本一致兼容。",
"is_bot": false,
"headline": "chore: update vitest and related packages to v4.1.10",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T22:06:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6cd490d887dc749aaed335a41e5fa0c45470caa5",
"body": "切换vitest浏览器测试的playwright提供者配置为直接导入的playwright实例,更新pnpm锁文件中的依赖版本关联信息",
"is_bot": false,
"headline": "build(ui): 添加@vitest/browser-playwright依赖并更新配置",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T21:48:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d187affdcd0ca5dc8730345af954211d37db2e8",
"body": "1. 建立设计令牌单一数据源,通过脚本自动注入样式文件\n2. 移除Tailwind v3兼容测试,统一使用Tailwind v4\n3. 重构CLI集成测试矩阵,简化项目创建逻辑\n4. 更新文档与注释,统一令牌系统说明",
"is_bot": false,
"headline": "refactor: 重构设计令牌系统并简化CLI测试矩阵",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T21:38:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e43a4166452e7dc5a66439ee0be2322b43f62ff4",
"body": "首先,为项目添加了浏览器端测试支持:\n1. 新增vitest.browser.config.ts配置文件,使用playwright作为浏览器测试提供者\n2. 在package.json中添加test:browser脚本命令\n3. 给vite.config.ts新增浏览器测试的exclude规则,分离单元测试和浏览器测试\n4. 新增两个浏览器测试用例文件,测试GlitchText组件和useReducedMotion组合式函数\n5. 重构了preserve-modules-paths工具,使用acorn解析AST来更精准地重写模块导入路径,避免误改字符串和注释中的类似import语句\n6. 更新了pnpm依赖,添加了@vitest/browser、acorn、acorn-walk等必要包\n7. 在github workflows中新增node 22环境下的浏览器测试任务",
"is_bot": false,
"headline": "ci(workflow): add browser test job to ci pipeline",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T21:10:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "edb335b6fb313b64660b8de102bab2918ac79ebc",
"body": "1. 移除旧的手动组件映射文件packages/registry/scripts/component-files.ts\n2. 添加sharedBase配置支持,实现共享代码目录统一管理\n3. 新增prebuild:scan脚本,通过AST自动扫描生成registry-manifest.json\n4. 重构所有文档、校验脚本和工具代码,替换COMPONENT_FILES/COMPONENT_REGISTRY为自动清单+元数据模式\n5. 新增extract-module-specifiers和scan-component-files实现依赖自动发现\n6. 调整构建流程,将pnpm build接入prebuild:scan自动生成清单",
"is_bot": false,
"headline": "refactor(registry): 重构注册表系统,改用AST自动扫描组件清单",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T20:32:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7fadf0e4be181286a35f287015a5d930eb9e69a0",
"body": "1. 移除detectTailwindVersion相关代码,CLI默认使用@import方式引入Tailwind\n2. 新增CSS回退覆盖率审计脚本与CI检查流程\n3. 重构主题配置,将组件样式配置移入shared包\n4. 清理注册表组件冗余的Tailwind主题配置\n5. 补充useReducedMotion测试文件注释",
"is_bot": false,
"headline": "refactor: 简化Tailwind版本检测并统一样式注入逻辑",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T19:39:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc38499ed0e5261ba767cb28ab39401296bdc717",
"body": null,
"is_bot": false,
"headline": "docs(docs): 新增项目架构优化设计方案",
"author_name": "lidaixingchen",
"author_login": "lidaixingchen",
"committed_at": "2026-07-12T14:42:35Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 26,
"commits_last_year": 739,
"latest_release_at": "2026-07-17T20:05:17Z",
"latest_release_tag": "v0.9.5",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 12,
"days_since_latest_release": 5,
"mean_days_between_releases": 2.2
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 71,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "brutx-ui-vue",
"exists": true,
"license": "MIT",
"keywords": [
"vue",
"vue3",
"ui",
"ui-library",
"ui-components",
"components",
"brutalism",
"neo-brutalism",
"brutalist",
"design-system",
"tailwindcss",
"tailwind",
"reka-ui",
"typescript",
"frontend",
"accessible",
"dark-mode"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/brutx-ui-vue",
"is_deprecated": false,
"latest_version": "0.9.5",
"repository_url": "https://github.com/lidaixingchen/brutxui-vue3",
"versions_count": 43,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 3837,
"first_published_at": "2026-06-01T03:19:46.068000Z",
"latest_published_at": "2026-07-17T20:05:06.808000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
},
{
"name": "brutx-vue",
"exists": true,
"license": "MIT",
"keywords": [
"brutx-vue",
"cli",
"neo-brutalism",
"vue",
"vue3",
"components",
"tailwindcss"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/brutx-vue",
"is_deprecated": false,
"latest_version": "0.8.0",
"repository_url": "https://github.com/lidaixingchen/brutxui-vue3",
"versions_count": 28,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2972,
"first_published_at": "2026-06-01T22:13:39.187000Z",
"latest_published_at": "2026-07-17T20:05:14.016000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 0,
"stars": 2,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"demos"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"apps/docs/tsconfig.json",
"packages/cli/tsconfig.json",
"packages/registry/tsconfig.json",
"packages/shared/tsconfig.json",
"packages/ui/tsconfig.json",
"templates/vue-app/tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 55466,
"source_files_sampled": 435,
"oversized_source_files": 0,
"agent_instruction_files": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 11494
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "linkify-it",
"direct": false,
"version": "5.0.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-v245-v573-v5vm"
],
"fixed_version": "5.0.2",
"advisory_count": 1,
"oldest_advisory_days": 1
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 1
},
"advisory_count": 1,
"affected_count": 1,
"assessed_count": 807,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 52,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "@inquirer/prompts",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^8.5.2"
},
{
"name": "chalk",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^5.3.0"
},
{
"name": "commander",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^15.0.0"
},
{
"name": "diff",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^8.0.4"
},
{
"name": "es-module-lexer",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^2.2.0"
},
{
"name": "fs-extra",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^11.3.5"
},
{
"name": "jsonc-parser",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^3.3.1"
},
{
"name": "ora",
"manifest": "packages/cli/package.json",
"ecosystem": "npm",
"version_constraint": "^9.4.0"
},
{
"name": "brutx-shared-vue",
"manifest": "packages/registry/package.json",
"ecosystem": "npm",
"version_constraint": "workspace:*"
},
{
"name": "class-variance-authority",
"manifest": "packages/ui/package.json",
"ecosystem": "npm",
"version_constraint": "^0.7.0"
},
{
"name": "clsx",
"manifest": "packages/ui/package.json",
"ecosystem": "npm",
"version_constraint": "^2.1.0"
},
{
"name": "tailwind-merge",
"manifest": "packages/ui/package.json",
"ecosystem": "npm",
"version_constraint": "^3.6.0"
},
{
"name": "vue",
"manifest": "templates/vue-app/package.json",
"ecosystem": "npm",
"version_constraint": "^3.5.13"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@inquirer/prompts",
"direct": true,
"version": "8.5.2",
"ecosystem": "npm"
},
{
"name": "@inquirer/prompts",
"direct": true,
"version": "^8.5.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": true,
"version": "5.6.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": true,
"version": "^5.3.0",
"ecosystem": "npm"
},
{
"name": "class-variance-authority",
"direct": true,
"version": "0.7.1",
"ecosystem": "npm"
},
{
"name": "class-variance-authority",
"direct": true,
"version": "^0.7.0",
"ecosystem": "npm"
},
{
"name": "clsx",
"direct": true,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "clsx",
"direct": true,
"version": "^2.1.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": true,
"version": "10.0.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": true,
"version": "15.0.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": true,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": true,
"version": "^15.0.0",
"ecosystem": "npm"
},
{
"name": "diff",
"direct": true,
"version": "8.0.4",
"ecosystem": "npm"
},
{
"name": "diff",
"direct": true,
"version": "^8.0.4",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": true,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": true,
"version": "^2.2.0",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": true,
"version": "11.3.5",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": true,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": true,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": true,
"version": "^11.3.5",
"ecosystem": "npm"
},
{
"name": "jsonc-parser",
"direct": true,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "jsonc-parser",
"direct": true,
"version": "^3.3.1",
"ecosystem": "npm"
},
{
"name": "ora",
"direct": true,
"version": "9.4.0",
"ecosystem": "npm"
},
{
"name": "ora",
"direct": true,
"version": "^9.4.0",
"ecosystem": "npm"
},
{
"name": "tailwind-merge",
"direct": true,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "tailwind-merge",
"direct": true,
"version": "^3.6.0",
"ecosystem": "npm"
},
{
"name": "vue",
"direct": true,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "vue",
"direct": true,
"version": "^3.5.0",
"ecosystem": "npm"
},
{
"name": "vue",
"direct": true,
"version": "^3.5.13",
"ecosystem": "npm"
},
{
"name": "@algolia/abtesting",
"direct": false,
"version": "1.19.0",
"ecosystem": "npm"
},
{
"name": "@algolia/autocomplete-core",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/autocomplete-plugin-algolia-insights",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/autocomplete-preset-algolia",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/autocomplete-shared",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/client-abtesting",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-analytics",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-common",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-insights",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-personalization",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-query-suggestions",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-search",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/ingestion",
"direct": false,
"version": "1.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/monitoring",
"direct": false,
"version": "1.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/recommend",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-browser-xhr",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-fetch",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-node-http",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/css-color",
"direct": false,
"version": "5.1.11",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/dom-selector",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/generational-cache",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/nwsapi",
"direct": false,
"version": "2.3.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@bcoe/v8-coverage",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "@blazediff/core",
"direct": false,
"version": "1.9.1",
"ecosystem": "npm"
},
{
"name": "@bramus/specificity",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "@changesets/apply-release-plan",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "@changesets/assemble-release-plan",
"direct": false,
"version": "6.0.10",
"ecosystem": "npm"
},
{
"name": "@changesets/changelog-git",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "@changesets/cli",
"direct": false,
"version": "2.31.1",
"ecosystem": "npm"
},
{
"name": "@changesets/config",
"direct": false,
"version": "3.1.4",
"ecosystem": "npm"
},
{
"name": "@changesets/errors",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "@changesets/get-dependents-graph",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "@changesets/get-release-plan",
"direct": false,
"version": "4.0.16",
"ecosystem": "npm"
},
{
"name": "@changesets/get-version-range-type",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "@changesets/git",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@changesets/logger",
"direct": false,
"version": "0.1.1",
"ecosystem": "npm"
},
{
"name": "@changesets/parse",
"direct": false,
"version": "0.4.3",
"ecosystem": "npm"
},
{
"name": "@changesets/pre",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "@changesets/read",
"direct": false,
"version": "0.6.7",
"ecosystem": "npm"
},
{
"name": "@changesets/should-skip-package",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "@changesets/types",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "@changesets/types",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "@changesets/write",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "@csstools/color-helpers",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "@csstools/css-calc",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "@csstools/css-color-parser",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "@csstools/css-parser-algorithms",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-syntax-patches-for-csstree",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@csstools/css-tokenizer",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@docsearch/css",
"direct": false,
"version": "3.8.2",
"ecosystem": "npm"
},
{
"name": "@docsearch/js",
"direct": false,
"version": "3.8.2",
"ecosystem": "npm"
},
{
"name": "@docsearch/react",
"direct": false,
"version": "3.8.2",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.10.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.10.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "@esbuild/aix-ppc64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/aix-ppc64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-arm64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-arm64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ia32",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ia32",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-loong64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-loong64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-mips64el",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-mips64el",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ppc64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ppc64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-riscv64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-riscv64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-s390x",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-s390x",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-arm64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-arm64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openharmony-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/sunos-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/sunos-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-arm64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-ia32",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-ia32",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-x64",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@eslint-community/eslint-utils",
"direct": false,
"version": "4.9.1",
"ecosystem": "npm"
},
{
"name": "@eslint-community/regexpp",
"direct": false,
"version": "4.12.2",
"ecosystem": "npm"
},
{
"name": "@eslint/config-array",
"direct": false,
"version": "0.23.5",
"ecosystem": "npm"
},
{
"name": "@eslint/config-helpers",
"direct": false,
"version": "0.6.0",
"ecosystem": "npm"
},
{
"name": "@eslint/core",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "10.0.1",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "^10.0.1",
"ecosystem": "npm"
},
{
"name": "@eslint/object-schema",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "@eslint/plugin-kit",
"direct": false,
"version": "0.7.2",
"ecosystem": "npm"
},
{
"name": "@exodus/bytes",
"direct": false,
"version": "1.15.1",
"ecosystem": "npm"
},
{
"name": "@floating-ui/core",
"direct": false,
"version": "1.7.5",
"ecosystem": "npm"
},
{
"name": "@floating-ui/dom",
"direct": false,
"version": "1.7.6",
"ecosystem": "npm"
},
{
"name": "@floating-ui/utils",
"direct": false,
"version": "0.2.11",
"ecosystem": "npm"
},
{
"name": "@floating-ui/vue",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "@gerrit0/mini-shiki",
"direct": false,
"version": "3.23.0",
"ecosystem": "npm"
},
{
"name": "@humanfs/core",
"direct": false,
"version": "0.19.2",
"ecosystem": "npm"
},
{
"name": "@humanfs/node",
"direct": false,
"version": "0.16.8",
"ecosystem": "npm"
},
{
"name": "@humanfs/types",
"direct": false,
"version": "0.15.0",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/module-importer",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/retry",
"direct": false,
"version": "0.4.3",
"ecosystem": "npm"
},
{
"name": "@iconify-json/simple-icons",
"direct": false,
"version": "1.2.85",
"ecosystem": "npm"
},
{
"name": "@iconify/types",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "@inquirer/ansi",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "@inquirer/checkbox",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/confirm",
"direct": false,
"version": "6.1.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/core",
"direct": false,
"version": "11.2.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/editor",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "@inquirer/expand",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/external-editor",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "@inquirer/external-editor",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@inquirer/figures",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "@inquirer/input",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "@inquirer/number",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/password",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/rawlist",
"direct": false,
"version": "5.3.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/search",
"direct": false,
"version": "4.2.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/select",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "@inquirer/type",
"direct": false,
"version": "4.0.7",
"ecosystem": "npm"
},
{
"name": "@internationalized/date",
"direct": false,
"version": "3.12.2",
"ecosystem": "npm"
},
{
"name": "@internationalized/number",
"direct": false,
"version": "3.6.7",
"ecosystem": "npm"
},
{
"name": "@isaacs/cliui",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/remapping",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/set-array",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.4.10",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.4.14",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@lucide/vue",
"direct": false,
"version": "1.17.0",
"ecosystem": "npm"
},
{
"name": "@lucide/vue",
"direct": false,
"version": "^1.17.0",
"ecosystem": "npm"
},
{
"name": "@manypkg/find-root",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@manypkg/get-packages",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.6",
"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": "@one-ini/wasm",
"direct": false,
"version": "0.1.1",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.133.0",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.137.0",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-android-arm64",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-darwin-arm64",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-darwin-x64",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-freebsd-x64",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm-glibc",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm-musl",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm64-glibc",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-arm64-musl",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-x64-glibc",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-linux-x64-musl",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-win32-arm64",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-win32-ia32",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@parcel/watcher-win32-x64",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "@pkgjs/parseargs",
"direct": false,
"version": "0.11.0",
"ecosystem": "npm"
},
{
"name": "@playwright/test",
"direct": false,
"version": "1.60.0",
"ecosystem": "npm"
},
{
"name": "@playwright/test",
"direct": false,
"version": "^1.60.0",
"ecosystem": "npm"
},
{
"name": "@polka/url",
"direct": false,
"version": "1.0.0-next.29",
"ecosystem": "npm"
},
{
"name": "@popperjs/core",
"direct": false,
"version": "2.11.8",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-android-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-android-arm64",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-arm64",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-x64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-x64",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-freebsd-x64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-freebsd-x64",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm-gnueabihf",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm-gnueabihf",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-gnu",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-musl",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-musl",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-ppc64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-ppc64-gnu",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-s390x-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-s390x-gnu",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-gnu",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-musl",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-musl",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-openharmony-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-openharmony-arm64",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-wasm32-wasi",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-wasm32-wasi",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-arm64-msvc",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-arm64-msvc",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-x64-msvc",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-x64-msvc",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/pluginutils",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@rollup/pluginutils",
"direct": false,
"version": "5.4.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm-eabi",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm64",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-arm64",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-x64",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-arm64",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-x64",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-gnueabihf",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-musleabihf",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-gnu",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-musl",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-gnu",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-musl",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-gnu",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-musl",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-gnu",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-musl",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-s390x-gnu",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-gnu",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-musl",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openbsd-x64",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openharmony-arm64",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-arm64-msvc",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-ia32-msvc",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-gnu",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-msvc",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/core",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/engine-javascript",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/engine-oniguruma",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/engine-oniguruma",
"direct": false,
"version": "3.23.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/langs",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/langs",
"direct": false,
"version": "3.23.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/themes",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/themes",
"direct": false,
"version": "3.23.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/transformers",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/types",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/types",
"direct": false,
"version": "3.23.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/vscode-textmate",
"direct": false,
"version": "10.0.2",
"ecosystem": "npm"
},
{
"name": "@size-limit/esbuild",
"direct": false,
"version": "12.1.0",
"ecosystem": "npm"
},
{
"name": "@size-limit/esbuild",
"direct": false,
"version": "^12.1.0",
"ecosystem": "npm"
},
{
"name": "@size-limit/file",
"direct": false,
"version": "12.1.0",
"ecosystem": "npm"
},
{
"name": "@size-limit/file",
"direct": false,
"version": "^12.1.0",
"ecosystem": "npm"
},
{
"name": "@standard-schema/spec",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@swc/helpers",
"direct": false,
"version": "0.5.23",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/cli",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/cli",
"direct": false,
"version": "^4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/node",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/node",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-android-arm64",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-android-arm64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-arm64",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-arm64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-x64",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-x64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-freebsd-x64",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-freebsd-x64",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm-gnueabihf",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm-gnueabihf",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-gnu",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-gnu",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-musl",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-musl",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-musl",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-musl",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-wasm32-wasi",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-wasm32-wasi",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-arm64-msvc",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-arm64-msvc",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-x64-msvc",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-x64-msvc",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/vite",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/vite",
"direct": false,
"version": "^4.3.0",
"ecosystem": "npm"
},
{
"name": "@tanstack/virtual-core",
"direct": false,
"version": "3.17.2",
"ecosystem": "npm"
},
{
"name": "@tanstack/vue-virtual",
"direct": false,
"version": "3.13.30",
"ecosystem": "npm"
},
{
"name": "@turbo/darwin-64",
"direct": false,
"version": "2.10.5",
"ecosystem": "npm"
},
{
"name": "@turbo/darwin-arm64",
"direct": false,
"version": "2.10.5",
"ecosystem": "npm"
},
{
"name": "@turbo/linux-64",
"direct": false,
"version": "2.10.5",
"ecosystem": "npm"
},
{
"name": "@turbo/linux-arm64",
"direct": false,
"version": "2.10.5",
"ecosystem": "npm"
},
{
"name": "@turbo/windows-64",
"direct": false,
"version": "2.10.5",
"ecosystem": "npm"
},
{
"name": "@turbo/windows-arm64",
"direct": false,
"version": "2.10.5",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.2",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.3",
"ecosystem": "npm"
},
{
"name": "@types/chai",
"direct": false,
"version": "5.2.3",
"ecosystem": "npm"
},
{
"name": "@types/deep-eql",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "@types/esrecurse",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "@types/fs-extra",
"direct": false,
"version": "11.0.4",
"ecosystem": "npm"
},
{
"name": "@types/fs-extra",
"direct": false,
"version": "^11.0.4",
"ecosystem": "npm"
},
{
"name": "@types/hast",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/jsonfile",
"direct": false,
"version": "6.1.4",
"ecosystem": "npm"
},
{
"name": "@types/linkify-it",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "@types/lodash",
"direct": false,
"version": "4.17.24",
"ecosystem": "npm"
},
{
"name": "@types/markdown-it",
"direct": false,
"version": "14.1.2",
"ecosystem": "npm"
},
{
"name": "@types/mdast",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "@types/mdurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "12.7.1",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "25.9.1",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "^25.9.1",
"ecosystem": "npm"
},
{
"name": "@types/prismjs",
"direct": false,
"version": "1.26.6",
"ecosystem": "npm"
},
{
"name": "@types/prismjs",
"direct": false,
"version": "^1.26.6",
"ecosystem": "npm"
},
{
"name": "@types/resize-observer-browser",
"direct": false,
"version": "0.1.11",
"ecosystem": "npm"
},
{
"name": "@types/unist",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@types/web-bluetooth",
"direct": false,
"version": "0.0.20",
"ecosystem": "npm"
},
{
"name": "@types/web-bluetooth",
"direct": false,
"version": "0.0.21",
"ecosystem": "npm"
},
{
"name": "@types/whatwg-mimetype",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@types/ws",
"direct": false,
"version": "8.18.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/eslint-plugin",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/parser",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/project-service",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/scope-manager",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/tsconfig-utils",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/type-utils",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/types",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/typescript-estree",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/utils",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/visitor-keys",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "@ungap/structured-clone",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "@vitejs/plugin-vue",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "@vitejs/plugin-vue",
"direct": false,
"version": "6.0.7",
"ecosystem": "npm"
},
{
"name": "@vitejs/plugin-vue",
"direct": false,
"version": "^6.0.7",
"ecosystem": "npm"
},
{
"name": "@vitest/browser",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/browser",
"direct": false,
"version": "^4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/browser-playwright",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/browser-playwright",
"direct": false,
"version": "^4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/coverage-v8",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/coverage-v8",
"direct": false,
"version": "^4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/expect",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/mocker",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/pretty-format",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/runner",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/snapshot",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/spy",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@vitest/utils",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "@volar/language-core",
"direct": false,
"version": "2.4.28",
"ecosystem": "npm"
},
{
"name": "@volar/source-map",
"direct": false,
"version": "2.4.28",
"ecosystem": "npm"
},
{
"name": "@volar/typescript",
"direct": false,
"version": "2.4.28",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-core",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-core",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-dom",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-dom",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-sfc",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-ssr",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/compiler-ssr",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/devtools-api",
"direct": false,
"version": "7.7.10",
"ecosystem": "npm"
},
{
"name": "@vue/devtools-kit",
"direct": false,
"version": "7.7.10",
"ecosystem": "npm"
},
{
"name": "@vue/devtools-shared",
"direct": false,
"version": "7.7.10",
"ecosystem": "npm"
},
{
"name": "@vue/language-core",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "@vue/reactivity",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/runtime-core",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/runtime-dom",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/server-renderer",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/server-renderer",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/server-renderer",
"direct": false,
"version": "^3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/shared",
"direct": false,
"version": "3.5.35",
"ecosystem": "npm"
},
{
"name": "@vue/shared",
"direct": false,
"version": "3.5.39",
"ecosystem": "npm"
},
{
"name": "@vue/test-utils",
"direct": false,
"version": "2.4.11",
"ecosystem": "npm"
},
{
"name": "@vue/test-utils",
"direct": false,
"version": "^2.4.11",
"ecosystem": "npm"
},
{
"name": "@vueuse/core",
"direct": false,
"version": "12.4.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/core",
"direct": false,
"version": "14.3.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/integrations",
"direct": false,
"version": "12.4.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/metadata",
"direct": false,
"version": "12.4.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/metadata",
"direct": false,
"version": "14.3.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/shared",
"direct": false,
"version": "12.4.0",
"ecosystem": "npm"
},
{
"name": "@vueuse/shared",
"direct": false,
"version": "14.3.0",
"ecosystem": "npm"
},
{
"name": "abbrev",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.16.0",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "^8.14.0",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "acorn-walk",
"direct": false,
"version": "8.3.5",
"ecosystem": "npm"
},
{
"name": "acorn-walk",
"direct": false,
"version": "^8.3.1",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.15.0",
"ecosystem": "npm"
},
{
"name": "algoliasearch",
"direct": false,
"version": "5.53.0",
"ecosystem": "npm"
},
{
"name": "alien-signals",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "ansi-colors",
"direct": false,
"version": "4.1.3",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "any-promise",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "aria-hidden",
"direct": false,
"version": "1.2.6",
"ecosystem": "npm"
},
{
"name": "array-union",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "assertion-error",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "ast-v8-to-istanbul",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "axe-core",
"direct": false,
"version": "4.12.1",
"ecosystem": "npm"
},
{
"name": "axe-core",
"direct": false,
"version": "^4.12.1",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "better-path-resolve",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "bidi-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "birpc",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "boolbase",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "5.0.7",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "bundle-require",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "bytes-iec",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "cac",
"direct": false,
"version": "6.7.14",
"ecosystem": "npm"
},
{
"name": "ccount",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "chai",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "character-entities-html4",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "character-entities-legacy",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "chardet",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "cli-cursor",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "cli-spinners",
"direct": false,
"version": "3.4.0",
"ecosystem": "npm"
},
{
"name": "cli-width",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "comma-separated-tokens",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "compare-versions",
"direct": false,
"version": "6.1.1",
"ecosystem": "npm"
},
{
"name": "confbox",
"direct": false,
"version": "0.1.8",
"ecosystem": "npm"
},
{
"name": "confbox",
"direct": false,
"version": "0.2.4",
"ecosystem": "npm"
},
{
"name": "config-chain",
"direct": false,
"version": "1.1.13",
"ecosystem": "npm"
},
{
"name": "consola",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "copy-anything",
"direct": false,
"version": "4.0.5",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "css-tree",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "cssesc",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "csstype",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "data-urls",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "date-fns",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "date-fns-tz",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "decimal.js",
"direct": false,
"version": "10.6.0",
"ecosystem": "npm"
},
{
"name": "deep-is",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "defu",
"direct": false,
"version": "6.1.7",
"ecosystem": "npm"
},
{
"name": "dequal",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "detect-indent",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "detect-libc",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "detect-libc",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "devlop",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "dir-glob",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "eastasianwidth",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "editorconfig",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "embla-carousel",
"direct": false,
"version": "8.6.0",
"ecosystem": "npm"
},
{
"name": "embla-carousel-reactive-utils",
"direct": false,
"version": "8.6.0",
"ecosystem": "npm"
},
{
"name": "embla-carousel-vue",
"direct": false,
"version": "8.6.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "9.2.2",
"ecosystem": "npm"
},
{
"name": "emoji-regex-xs",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.21.6",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.22.1",
"ecosystem": "npm"
},
{
"name": "enquirer",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "esbuild",
"direct": false,
"version": "0.25.0",
"ecosystem": "npm"
},
{
"name": "esbuild",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "10.4.1",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "^10.4.1",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-vue",
"direct": false,
"version": "10.9.2",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-vue",
"direct": false,
"version": "^10.9.2",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "9.1.2",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "11.2.0",
"ecosystem": "npm"
},
{
"name": "esprima",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "esquery",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "expect-type",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "exsolve",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "extendable-error",
"direct": false,
"version": "0.1.7",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-glob",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-levenshtein",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "fast-string-truncated-width",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "fast-string-width",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "fast-wrap-ansi",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.20.1",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "file-entry-cache",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "fix-dts-default-cjs-exports",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "flat-cache",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "flatted",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "focus-trap",
"direct": false,
"version": "7.8.0",
"ecosystem": "npm"
},
{
"name": "foreground-child",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "get-east-asian-width",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "10.5.0",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "17.6.0",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "^17.6.0",
"ecosystem": "npm"
},
{
"name": "globby",
"direct": false,
"version": "11.0.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "happy-dom",
"direct": false,
"version": "20.9.0",
"ecosystem": "npm"
},
{
"name": "happy-dom",
"direct": false,
"version": "^20.9.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "hast-util-to-html",
"direct": false,
"version": "9.0.5",
"ecosystem": "npm"
},
{
"name": "hast-util-whitespace",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "hookable",
"direct": false,
"version": "5.5.3",
"ecosystem": "npm"
},
{
"name": "html-encoding-sniffer",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "html-void-elements",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "human-id",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.7.2",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "7.0.5",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "ini",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-interactive",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-potential-custom-element-name",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "is-subdir",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-unicode-supported",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-what",
"direct": false,
"version": "5.5.0",
"ecosystem": "npm"
},
{
"name": "is-windows",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-coverage",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-report",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-reports",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "jackspeak",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "jiti",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "joycon",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "js-beautify",
"direct": false,
"version": "1.15.4",
"ecosystem": "npm"
},
{
"name": "js-cookie",
"direct": false,
"version": "3.0.8",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "10.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "3.15.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "jsdom",
"direct": false,
"version": "29.1.1",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-stable-stringify-without-jsonify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "jsonfile",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "jsonfile",
"direct": false,
"version": "6.2.1",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "kolorist",
"direct": false,
"version": "1.8.0",
"ecosystem": "npm"
},
{
"name": "levn",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "lightningcss",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-android-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-freebsd-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm-gnueabihf",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-arm64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-x64-msvc",
"direct": false,
"version": "1.32.0",
"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": "linkify-it",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "load-tsconfig",
"direct": false,
"version": "0.2.5",
"ecosystem": "npm"
},
{
"name": "local-pkg",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.18.1",
"ecosystem": "npm"
},
{
"name": "lodash.startcase",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "log-symbols",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "10.2.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "11.5.1",
"ecosystem": "npm"
},
{
"name": "lunr",
"direct": false,
"version": "2.3.9",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.21",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "^0.30.17",
"ecosystem": "npm"
},
{
"name": "magicast",
"direct": false,
"version": "0.5.3",
"ecosystem": "npm"
},
{
"name": "make-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "mark.js",
"direct": false,
"version": "8.11.1",
"ecosystem": "npm"
},
{
"name": "markdown-it",
"direct": false,
"version": "14.2.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-hast",
"direct": false,
"version": "13.2.1",
"ecosystem": "npm"
},
{
"name": "mdn-data",
"direct": false,
"version": "2.27.1",
"ecosystem": "npm"
},
{
"name": "mdurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "merge2",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-character",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-encode",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-sanitize-uri",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-symbol",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-types",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "mimic-function",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "10.2.5",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.9",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "7.1.3",
"ecosystem": "npm"
},
{
"name": "minisearch",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "mitt",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "mlly",
"direct": false,
"version": "1.8.2",
"ecosystem": "npm"
},
{
"name": "mri",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "mrmime",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "muggle-string",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "mute-stream",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "mz",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.12",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.15",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "5.1.16",
"ecosystem": "npm"
},
{
"name": "nanospinner",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "node-addon-api",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "nopt",
"direct": false,
"version": "7.2.1",
"ecosystem": "npm"
},
{
"name": "nth-check",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "obug",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "ohash",
"direct": false,
"version": "2.0.11",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "oniguruma-to-es",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "optionator",
"direct": false,
"version": "0.9.4",
"ecosystem": "npm"
},
{
"name": "outdent",
"direct": false,
"version": "0.5.0",
"ecosystem": "npm"
},
{
"name": "p-filter",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "p-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "p-try",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "package-json-from-dist",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "package-manager-detector",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "path-browserify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-scurry",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "path-type",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "perfect-debounce",
"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.2",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "pify",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "pirates",
"direct": false,
"version": "4.0.7",
"ecosystem": "npm"
},
{
"name": "pkg-types",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "pkg-types",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "playwright",
"direct": false,
"version": "1.60.0",
"ecosystem": "npm"
},
{
"name": "playwright-core",
"direct": false,
"version": "1.60.0",
"ecosystem": "npm"
},
{
"name": "pngjs",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.15",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.16",
"ecosystem": "npm"
},
{
"name": "postcss-load-config",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "postcss-selector-parser",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "preact",
"direct": false,
"version": "10.29.2",
"ecosystem": "npm"
},
{
"name": "prelude-ls",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "2.7.1",
"ecosystem": "npm"
},
{
"name": "prismjs",
"direct": false,
"version": "1.30.0",
"ecosystem": "npm"
},
{
"name": "property-information",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "proto-list",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "punycode.js",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "quansync",
"direct": false,
"version": "0.2.11",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "read-yaml-file",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "regex",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "regex-recursion",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "regex-utilities",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "reka-ui",
"direct": false,
"version": "2.9.9",
"ecosystem": "npm"
},
{
"name": "reka-ui",
"direct": false,
"version": "^2.9.0",
"ecosystem": "npm"
},
{
"name": "require-from-string",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "restore-cursor",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "rfdc",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "5.0.5",
"ecosystem": "npm"
},
{
"name": "rolldown",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "rolldown",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "rollup",
"direct": false,
"version": "4.61.0",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "saxes",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "search-insights",
"direct": false,
"version": "2.17.3",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.8.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.8.5",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "shiki",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "siginfo",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "sirv",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "size-limit",
"direct": false,
"version": "12.1.0",
"ecosystem": "npm"
},
{
"name": "size-limit",
"direct": false,
"version": "^12.1.0",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.7.6",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "space-separated-tokens",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "spawndamnit",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "speakingurl",
"direct": false,
"version": "14.0.1",
"ecosystem": "npm"
},
{
"name": "sprintf-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "stackback",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "std-env",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "stdin-discarder",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "8.2.1",
"ecosystem": "npm"
},
{
"name": "stringify-entities",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "strip-bom",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "sucrase",
"direct": false,
"version": "3.35.1",
"ecosystem": "npm"
},
{
"name": "superjson",
"direct": false,
"version": "2.2.6",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "symbol-tree",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "tabbable",
"direct": false,
"version": "6.4.0",
"ecosystem": "npm"
},
{
"name": "tailwindcss",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "tailwindcss",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "tailwindcss",
"direct": false,
"version": "^4.3.0",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "term-size",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "thenify",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "thenify-all",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "tinybench",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.17",
"ecosystem": "npm"
},
{
"name": "tinyrainbow",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "tldts",
"direct": false,
"version": "7.4.2",
"ecosystem": "npm"
},
{
"name": "tldts-core",
"direct": false,
"version": "7.4.2",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "totalist",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "tough-cookie",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "tr46",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "tree-kill",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "trim-lines",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "ts-api-utils",
"direct": false,
"version": "2.5.0",
"ecosystem": "npm"
},
{
"name": "ts-interface-checker",
"direct": false,
"version": "0.1.13",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "tsup",
"direct": false,
"version": "8.5.1",
"ecosystem": "npm"
},
{
"name": "tsup",
"direct": false,
"version": "^8.0.1",
"ecosystem": "npm"
},
{
"name": "tsx",
"direct": false,
"version": "4.22.4",
"ecosystem": "npm"
},
{
"name": "tsx",
"direct": false,
"version": "^4.22.4",
"ecosystem": "npm"
},
{
"name": "turbo",
"direct": false,
"version": "2.10.5",
"ecosystem": "npm"
},
{
"name": "type-check",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "4.8.3",
"ecosystem": "npm"
},
{
"name": "typedoc",
"direct": false,
"version": "0.28.19",
"ecosystem": "npm"
},
{
"name": "typedoc",
"direct": false,
"version": "^0.28.19",
"ecosystem": "npm"
},
{
"name": "typedoc-plugin-markdown",
"direct": false,
"version": "4.12.0",
"ecosystem": "npm"
},
{
"name": "typedoc-plugin-markdown",
"direct": false,
"version": "^4.12.0",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "^6.0.3",
"ecosystem": "npm"
},
{
"name": "typescript-eslint",
"direct": false,
"version": "8.60.1",
"ecosystem": "npm"
},
{
"name": "typescript-eslint",
"direct": false,
"version": "^8.60.1",
"ecosystem": "npm"
},
{
"name": "uc.micro",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "ufo",
"direct": false,
"version": "1.6.4",
"ecosystem": "npm"
},
{
"name": "undici",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "7.24.6",
"ecosystem": "npm"
},
{
"name": "unist-util-is",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "unist-util-position",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-stringify-position",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-visit",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "unist-util-visit-parents",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unplugin",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "unplugin-dts",
"direct": false,
"version": "1.0.2",
"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": "v-calendar",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "v-calendar",
"direct": false,
"version": "^3.1.0",
"ecosystem": "npm"
},
{
"name": "vee-validate",
"direct": false,
"version": "4.15.1",
"ecosystem": "npm"
},
{
"name": "vfile",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "vfile-message",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "6.4.3",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "8.0.16",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "^8.0.16",
"ecosystem": "npm"
},
{
"name": "vite-plugin-dts",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "vite-plugin-dts",
"direct": false,
"version": "^5.0.2",
"ecosystem": "npm"
},
{
"name": "vitepress",
"direct": false,
"version": "1.6.4",
"ecosystem": "npm"
},
{
"name": "vitepress",
"direct": false,
"version": "^1.6.4",
"ecosystem": "npm"
},
{
"name": "vitest",
"direct": false,
"version": "4.1.10",
"ecosystem": "npm"
},
{
"name": "vitest",
"direct": false,
"version": "^4.1.10",
"ecosystem": "npm"
},
{
"name": "vscode-uri",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "vue-component-type-helpers",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "vue-demi",
"direct": false,
"version": "0.14.10",
"ecosystem": "npm"
},
{
"name": "vue-eslint-parser",
"direct": false,
"version": "10.4.1",
"ecosystem": "npm"
},
{
"name": "vue-screen-utils",
"direct": false,
"version": "1.0.0-beta.13",
"ecosystem": "npm"
},
{
"name": "vue-tsc",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "vue-tsc",
"direct": false,
"version": "^3.3.3",
"ecosystem": "npm"
},
{
"name": "w3c-xmlserializer",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "webidl-conversions",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "webpack-virtual-modules",
"direct": false,
"version": "0.6.2",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-url",
"direct": false,
"version": "16.0.1",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "why-is-node-running",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "word-wrap",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.21.0",
"ecosystem": "npm"
},
{
"name": "xml-name-validator",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "xml-name-validator",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "xmlchars",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "yaml",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "yoctocolors",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "zwitch",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 859,
"direct_count": 29,
"indirect_count": 830
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 2,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "lidaixingchen",
"commits": 614,
"avatar_url": "https://avatars.githubusercontent.com/u/115717776?v=4"
},
{
"type": "User",
"login": "dev-snake",
"commits": 124,
"avatar_url": "https://avatars.githubusercontent.com/u/121596451?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.832
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"bench.yml",
"ci.yml",
"deploy-docs.yml",
"publish.yml",
"update-visual-baselines.yml"
],
"has_docs_dir": true,
"linter_configs": [
"eslint.config.js"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"pnpm-lock.yaml"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "1 out of 1 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/29 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": null,
"reason": "no dependencies found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 9,
"reason": "1 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "d9039dc43c049ee374c7589687b5c3fac990b47f",
"ran_at": "2026-07-23T03:33:02Z",
"aggregate_score": 3.8,
"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-22T21:30:41Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-17T19:42:00Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/lidaixingchen/brutxui-vue3",
"host": "github.com",
"name": "brutxui-vue3",
"owner": "lidaixingchen"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 63,
"inputs": {
"security": 50,
"vitality": 77,
"community": 43,
"governance": 53,
"engineering": 90
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 77,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"commits_last_year": 739,
"human_commit_share": 0.99,
"days_since_last_push": 0,
"active_weeks_last_year": 12
},
"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": "12/52 weeks with commits",
"points": 8.3,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 12
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "739 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 739
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"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": 26,
"latest_release_tag": "v0.9.5",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 2.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "26 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 26
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~2.2 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 2.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 43,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 2,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "2 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 2
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"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": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 64,
"inputs": {
"packages": [
"brutx-ui-vue",
"brutx-vue"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 6809
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "6,809 downloads/month across npm",
"points": 51.1,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 6809,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 53,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 16,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.832
},
"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 83% of commits",
"points": 3.8,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 83
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"merged_prs": 2,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "2/2 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 2,
"decided": 2
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/29 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 39,
"inputs": {
"followers": 4,
"owner_type": "User",
"is_verified": null,
"owner_login": "lidaixingchen",
"public_repos": 16,
"account_age_days": 1378
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "4 followers of lidaixingchen",
"points": 5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 4,
"login": "lidaixingchen"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "16 public repos, account ~3 yr old",
"points": 16.5,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 16
}
},
{
"code": "account_age_years",
"params": {
"years": 3
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"brutx-ui-vue",
"brutx-vue"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "2 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 2,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "43 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 43
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 90,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "5 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 5
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": "eslint.config.js",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "1 out of 1 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": [
"component",
"frontend",
"typescript",
"uikit",
"vue",
"vue3",
"brutalist",
"brutalist-ui",
"component-library",
"design-system",
"neo-brutalism",
"shadcn-ui",
"tailwindcss",
"ui-library",
"vite"
],
"has_wiki": true,
"homepage": "https://lidaixingchen.github.io/brutxui-vue3/",
"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://lidaixingchen.github.io/brutxui-vue3/",
"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": "15 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 15
}
}
],
"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": 50,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"pinned_dependencies",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 38,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 3.8
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "1 out of 1 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/29 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "1 existing vulnerabilities detected",
"points": 6.8,
"status": "partial",
"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 807 resolved dependencies against OSV; 52 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": 807
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 52
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 1,
"affected_packages": 1,
"assessed_packages": 807,
"unassessed_packages": 52,
"affected_by_severity": "high 1",
"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": 807,
"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": 1
},
"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": "good",
"name": "AI Readiness",
"value": 75,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.99,
"agent_instruction_files": [
".github/copilot-instructions.md",
"AGENTS.md"
],
"agent_instruction_max_bytes": 11494
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".github/copilot-instructions.md, AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".github/copilot-instructions.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": "98 of 99 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 98,
"sampled": 99
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_pinned_dependencies"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 71,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"pnpm-lock.yaml"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"apps/docs/tsconfig.json",
"packages/cli/tsconfig.json",
"packages/registry/tsconfig.json",
"packages/shared/tsconfig.json",
"packages/ui/tsconfig.json",
"templates/vue-app/tsconfig.json"
],
"agent_commit_share": 0.01,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.01
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": "eslint.config.js",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "apps/docs/tsconfig.json, packages/cli/tsconfig.json, packages/registry/tsconfig.json, packages/shared/tsconfig.json, packages/ui/tsconfig.json, templates/vue-app/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "apps/docs/tsconfig.json, packages/cli/tsconfig.json, packages/registry/tsconfig.json, packages/shared/tsconfig.json, packages/ui/tsconfig.json, templates/vue-app/tsconfig.json"
}
}
],
"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": "1 of the last 100 commits agent-authored or agent-credited",
"points": 2,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "1 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 55466,
"source_files_sampled": 435,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/435 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 435,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"demos"
],
"has_mcp_signal": false,
"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": 0,
"status": "missed",
"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",
"deps.dev does not index npm:brutx-ui-vue@0.9.5; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-23T03:33:09.533623Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/lidaixingchen/brutxui-vue3.svg",
"full_name": "lidaixingchen/brutxui-vue3",
"license_state": "standard",
"license_spdx": "MIT"
}