Public record
Software health reportschema 0.26.0 · metrics 1.13.0 · 2026-07-21 23:25 UTC

spree / spree

Open Source eCommerce Platform for B2B, Marketplace, and Enterprise. REST API, TypeScript SDK, and production-ready Next.js storefront. Self-host it. Own your stack. No vendor lock-in. Zero platform fees.

Ruby · TypeScriptBSD-3-Clause★ 15,570 stars⑂ 5,285 forkssince Mar 2008View on GitHub ↗

spree/spree holds a health index of 84 out of 100, placing it in the Good band. It scores highest on Vitality (100/100) and lowest on Security (66/100). It was last updated today. 2 contributors account for most of its recent work.

84
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

84
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Spree CommerceOrganization
197 followers26 public repossince Feb 2009

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
RubyGemsspree5.5.4-4381 day ago

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

100Excellent · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
36/36Commit cadence — 52/52 weeks with commits
18/18Commit volume — 2,174 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year2,174
human_commit_share1
days_since_last_push0
active_weeks_last_year52

Release discipline

100Excellent
How it's scored
27/27Ships releases — 100 releases published
36/36Release recency — latest release 1 days ago
27/27Release cadence — a release every ~6.9 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count100
latest_release_tagv5.4.4
releases_from_tagsno
days_since_latest_release1
mean_days_between_releases6.9
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

92Excellent · 18% of overall
How it's scored
60/60Stars — 15,570 stars
25/25Forks — 5,285 forks
10.6/15Watchers — 83 watchers
Inputs used
forks5,285
stars15,570
watchers83
growth_stateorganic
growth_factor_pct100

Community health

93Excellent
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (BSD-3-Clause)
18/18CONTRIBUTING guide
13.5/13.5Code of conduct
7.2/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateyes
has_code_of_conductyes
has_pull_request_templateno
How it's scored
67.1/80Total downloads — 2,840,445 downloads all-time across rubygems
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesspree
dependents
ecosystemsrubygems
total_downloads2,840,445
monthly_downloads
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

73Good · 24% of overall
How it's scored
25.2/54Bus factor — 2 contributor(s) cover half of all commits
15.4/22.5Commit distribution — top contributor authored 31% of commits
13.5/13.5Contributor breadth — 96 contributors
10/10OpenSSF Scorecard: Contributors — project has 27 contributing companies or organizations
Inputs used
bus_factor2
contributors_sampled96
top_contributor_share0.314
How it's scored
45.9/46.8Issue resolution — 98% of issues closed
20.6/38.3PR acceptance — 5,313/9,850 decided PRs merged
1.5/15OpenSSF Scorecard: Code-Review — Found 4/26 approved changesets -- score normalized to 1
Inputs used
merged_prs5,313
open_issues76
closed_issues4,253
issue_closed_ratio0.982
closed_unmerged_prs4,537
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
16.5/25Owner reach — 197 followers of spree
22.4/25Track record — 26 public repos, account ~17 yr old
Inputs used
followers197
owner_typeOrganization
is_verified
owner_loginspree
public_repos26
account_age_days6,358
How it's scored
25/25Published & resolvable — 1 package(s) on rubygems
35/35Publish recency — latest publish 1 days ago
20/20Version history — 438 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesspree
ecosystemsrubygems
any_deprecatedno
min_days_since_publish1

Engineering Quality

Are baseline engineering and documentation practices in place?

86Excellent · 20% of overall
How it's scored
24/24CI workflows — 5 workflow(s)
24/24Tests present
16/16Linter config — biome.json
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://spreecommerce.org
10/10Repository description
10/10Topics — 15 topics
0/10Wiki
Inputs used
topicsecommerce, e-commerce, ecommerce-platform, spree-commerce, marketplace, multi-tenant, multi-vendor, multi-vendor-ecommerce, ecommerce-api, ecommerce-framework, open-source, headless, headless-commerce, headless-ecommerce, b2b-commerce
has_wikino
homepagehttps://spreecommerce.org
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

66Moderate · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 23 out of 23 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0.8/7.5Code-Review — Found 4/26 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 27 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
5/5SAST — SAST tool is run on all commits
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 10 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5.7
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories10
affected_packages7
assessed_packages809
unassessed_packages133
affected_by_severityhigh 3, moderate 2, low 2
direct_affected_packages0
Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 809 resolved dependencies against OSV. 133 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.

AI Readiness

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.

71Good · 0% of overall
How it's scored
45/45Agent instructions — AGENTS.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 92 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.92
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes51,941
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — biome.json
11/11Static type checking — packages/admin-sdk/tsconfig.json, packages/cli/templates/plugin/packages/dashboard/tsconfig.json, packages/cli/tsconfig.json, packages/create-spree-app/tsconfig.json, packages/dashboard-core/tsconfig.json, packages/dashboard-plugin-example/tsconfig.json, packages/dashboard-starter/tsconfig.json, packages/dashboard-ui/tsconfig.json, packages/dashboard/tsconfig.json, packages/sdk-core/tsconfig.json, packages/sdk/tsconfig.json
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 67 of the last 100 commits agent-authored or agent-credited
5/8Automated maintenance — dependency automation configured, none observed in the sampled commits
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespnpm-lock.yaml
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configspackages/admin-sdk/tsconfig.json, packages/cli/templates/plugin/packages/dashboard/tsconfig.json, packages/cli/tsconfig.json, packages/create-spree-app/tsconfig.json, packages/dashboard-core/tsconfig.json, packages/dashboard-plugin-example/tsconfig.json, packages/dashboard-starter/tsconfig.json, packages/dashboard-ui/tsconfig.json, packages/dashboard/tsconfig.json, packages/sdk-core/tsconfig.json, packages/sdk/tsconfig.json
agent_commit_share0.67
toolchain_manifests
dependency_bot_commit_share0
How it's scored
27/45Type-checkable code — Ruby with type-check config (packages/admin-sdk/tsconfig.json, packages/cli/templates/plugin/packages/dashboard/tsconfig.json, packages/cli/tsconfig.json, packages/create-spree-app/tsconfig.json, packages/dashboard-core/tsconfig.json, packages/dashboard-plugin-example/tsconfig.json, packages/dashboard-starter/tsconfig.json, packages/dashboard-ui/tsconfig.json, packages/dashboard/tsconfig.json, packages/sdk-core/tsconfig.json, packages/sdk/tsconfig.json)
54.9/55Manageable file sizes — 7/3,285 source files over 60KB
Inputs used
primary_languageRuby
largest_source_bytes122,570
source_files_sampled3,285
oversized_source_files7
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples, recipes
Inputs used
example_dirsexamples, recipes
has_mcp_signalno
api_schema_files

Key facts

15,570GitHub stars
96contributors
2,174commits, last 12 months
0days since last push
100releases
2bus factor
76open issues
npm, RubyGemspackage ecosystems

More detail

Star and fork history 15,570 ★ / 5,285 ⇿
15,570Stars
5,285Forks
93Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

Only the most recent history is shown — this repository exceeds the collection window, so the earliest history is not captured.

4,0006,0008,00010,00012,00014,00016,00015,5705,285402021-062023-122026-07
Major 1Minor 13Patch 65

Each point covers 5 days.

OpenSSF Scorecard 5.7 / 10
5.7aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-21 23:24 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests23 out of 23 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 4/26 approved changesets -- score normalized to 1
10Contributorsproject has 27 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
10SASTSAST tool is run on all commits
10Security-Policysecurity policy file detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities10 existing vulnerabilities detected
Direct dependencies 2
RegistryPackageVersion constraintManifest
npm@base-ui/react^1.4.1package.json
npm@spree/cliworkspace:*package.json
All dependencies 942

Full resolved dependency set from the GitHub dependency graph: 2 direct and 940 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
npm@base-ui/react1.4.1direct
npm@base-ui/react^1.4.1direct
npm@babel/code-frame7.29.0indirect
npm@babel/compat-data7.29.3indirect
npm@babel/core7.29.0indirect
npm@babel/generator7.29.1indirect
npm@babel/helper-annotate-as-pure7.27.3indirect
npm@babel/helper-compilation-targets7.28.6indirect
npm@babel/helper-create-class-features-plugin7.29.3indirect
npm@babel/helper-globals7.28.0indirect
npm@babel/helper-member-expression-to-functions7.28.5indirect
npm@babel/helper-module-imports7.28.6indirect
npm@babel/helper-module-transforms7.28.6indirect
npm@babel/helper-optimise-call-expression7.27.1indirect
npm@babel/helper-plugin-utils7.28.6indirect
npm@babel/helper-replace-supers7.28.6indirect
npm@babel/helper-skip-transparent-expression-wrappers7.27.1indirect
npm@babel/helper-string-parser7.27.1indirect
npm@babel/helper-validator-identifier7.28.5indirect
npm@babel/helper-validator-option7.27.1indirect
npm@babel/helpers7.29.2indirect
npm@babel/parser7.29.3indirect
npm@babel/plugin-syntax-jsx7.28.6indirect
npm@babel/plugin-syntax-typescript7.28.6indirect
npm@babel/plugin-transform-modules-commonjs7.28.6indirect
npm@babel/plugin-transform-typescript7.28.6indirect
npm@babel/preset-typescript7.28.5indirect
npm@babel/runtime7.29.2indirect
npm@babel/template7.28.6indirect
npm@babel/traverse7.29.0indirect
npm@babel/types7.29.0indirect
npm@base-ui/utils0.2.8indirect
npm@bcoe/v8-coverage1.0.2indirect
npm@biomejs/biome2.4.14indirect
npm@biomejs/biome^2.4.14indirect
npm@biomejs/cli-darwin-arm642.4.14indirect
npm@biomejs/cli-darwin-x642.4.14indirect
npm@biomejs/cli-linux-arm642.4.14indirect
npm@biomejs/cli-linux-arm64-musl2.4.14indirect
npm@biomejs/cli-linux-x642.4.14indirect
npm@biomejs/cli-linux-x64-musl2.4.14indirect
npm@biomejs/cli-win32-arm642.4.14indirect
npm@biomejs/cli-win32-x642.4.14indirect
npm@changesets/apply-release-plan7.1.1indirect
npm@changesets/assemble-release-plan6.0.10indirect
npm@changesets/changelog-git0.2.1indirect
npm@changesets/changelog-github0.7.0indirect
npm@changesets/changelog-github^0.7.0indirect
npm@changesets/cli2.31.0indirect
npm@changesets/cli^2.31.0indirect
npm@changesets/config3.1.4indirect
npm@changesets/errors0.2.0indirect
npm@changesets/get-dependents-graph2.1.4indirect
npm@changesets/get-github-info0.8.0indirect
npm@changesets/get-release-plan4.0.16indirect
npm@changesets/get-version-range-type0.4.0indirect
npm@changesets/git3.0.4indirect
npm@changesets/logger0.1.1indirect
npm@changesets/parse0.4.3indirect
npm@changesets/pre2.0.2indirect
npm@changesets/read0.6.7indirect
npm@changesets/should-skip-package0.1.2indirect
npm@changesets/types4.1.0indirect
npm@changesets/types6.1.0indirect
npm@changesets/write0.4.0indirect
npm@clack/core1.3.0indirect
npm@clack/prompts1.3.0indirect
npm@clack/prompts^1.3.0indirect
npm@date-fns/tz1.4.1indirect
npm@dnd-kit/accessibility3.1.1indirect
npm@dnd-kit/core6.3.1indirect
npm@dnd-kit/core^6.3.1indirect
npm@dnd-kit/sortable10.0.0indirect
npm@dnd-kit/sortable^10.0.0indirect
npm@dnd-kit/utilities3.2.2indirect
npm@dnd-kit/utilities^3.2.2indirect
npm@dotenvx/dotenvx1.65.0indirect
npm@ecies/ciphers0.2.6indirect
npm@emnapi/core1.10.0indirect
npm@emnapi/runtime1.10.0indirect
npm@emnapi/wasi-threads1.2.1indirect
npm@esbuild/aix-ppc640.28.1indirect
npm@esbuild/android-arm0.28.1indirect
npm@esbuild/android-arm640.28.1indirect
npm@esbuild/android-x640.28.1indirect
npm@esbuild/darwin-arm640.28.1indirect
npm@esbuild/darwin-x640.28.1indirect
npm@esbuild/freebsd-arm640.28.1indirect
npm@esbuild/freebsd-x640.28.1indirect
npm@esbuild/linux-arm0.28.1indirect
npm@esbuild/linux-arm640.28.1indirect
npm@esbuild/linux-ia320.28.1indirect
npm@esbuild/linux-loong640.28.1indirect
npm@esbuild/linux-mips64el0.28.1indirect
npm@esbuild/linux-ppc640.28.1indirect
npm@esbuild/linux-riscv640.28.1indirect
npm@esbuild/linux-s390x0.28.1indirect
npm@esbuild/linux-x640.28.1indirect
npm@esbuild/netbsd-arm640.28.1indirect
npm@esbuild/netbsd-x640.28.1indirect
npm@esbuild/openbsd-arm640.28.1indirect
npm@esbuild/openbsd-x640.28.1indirect
npm@esbuild/openharmony-arm640.28.1indirect
npm@esbuild/sunos-x640.28.1indirect
npm@esbuild/win32-arm640.28.1indirect
npm@esbuild/win32-ia320.28.1indirect
npm@esbuild/win32-x640.28.1indirect
npm@floating-ui/core1.7.5indirect
npm@floating-ui/dom1.7.6indirect
npm@floating-ui/react-dom2.1.8indirect
npm@floating-ui/utils0.2.11indirect
npm@fontsource-variable/geist5.2.8indirect
npm@fontsource-variable/geist^5.2.8indirect
npm@fontsource-variable/geist-mono5.2.7indirect
npm@fontsource-variable/geist-mono^5.2.7indirect
npm@hono/node-server1.19.14indirect
npm@hookform/resolvers5.2.2indirect
npm@hookform/resolvers^5.2.2indirect
npm@inquirer/ansi2.0.5indirect
npm@inquirer/confirm6.0.12indirect
npm@inquirer/core11.1.9indirect
npm@inquirer/external-editor1.0.3indirect
npm@inquirer/figures2.0.5indirect
npm@inquirer/type4.0.5indirect
npm@jridgewell/gen-mapping0.3.13indirect
npm@jridgewell/remapping2.3.5indirect
npm@jridgewell/resolve-uri3.1.2indirect
npm@jridgewell/sourcemap-codec1.5.5indirect
npm@jridgewell/trace-mapping0.3.31indirect
npm@manypkg/find-root1.1.0indirect
npm@manypkg/get-packages1.1.3indirect
npm@modelcontextprotocol/sdk1.29.0indirect
npm@mswjs/interceptors0.41.8indirect
npm@napi-rs/wasm-runtime1.1.4indirect
npm@noble/ciphers1.3.0indirect
npm@noble/curves1.9.7indirect
npm@noble/hashes1.8.0indirect
npm@nodelib/fs.scandir2.1.5indirect
npm@nodelib/fs.stat2.0.5indirect
npm@nodelib/fs.walk1.2.8indirect
npm@open-draft/deferred-promise2.2.0indirect
npm@open-draft/deferred-promise3.0.0indirect
npm@open-draft/logger0.3.0indirect
npm@open-draft/until2.1.0indirect
npm@oxc-project/types0.133.0indirect
npm@playwright/test1.59.1indirect
npm@playwright/test^1.59.1indirect
npm@radix-ui/primitive1.1.3indirect
npm@radix-ui/react-compose-refs1.1.2indirect
npm@radix-ui/react-context1.1.2indirect
npm@radix-ui/react-dialog1.1.15indirect
npm@radix-ui/react-dismissable-layer1.1.11indirect
npm@radix-ui/react-focus-guards1.1.3indirect
npm@radix-ui/react-focus-scope1.1.7indirect
npm@radix-ui/react-id1.1.1indirect
npm@radix-ui/react-portal1.1.9indirect
npm@radix-ui/react-presence1.1.5indirect
npm@radix-ui/react-primitive2.1.3indirect
npm@radix-ui/react-primitive2.1.4indirect
npm@radix-ui/react-slot1.2.3indirect
npm@radix-ui/react-slot1.2.4indirect
npm@radix-ui/react-use-callback-ref1.1.1indirect
npm@radix-ui/react-use-controllable-state1.2.2indirect
npm@radix-ui/react-use-effect-event0.0.2indirect
npm@radix-ui/react-use-escape-keydown1.1.1indirect
npm@radix-ui/react-use-layout-effect1.1.1indirect
npm@reduxjs/toolkit2.11.2indirect
npm@rolldown/binding-android-arm641.0.3indirect
npm@rolldown/binding-darwin-arm641.0.3indirect
npm@rolldown/binding-darwin-x641.0.3indirect
npm@rolldown/binding-freebsd-x641.0.3indirect
npm@rolldown/binding-linux-arm-gnueabihf1.0.3indirect
npm@rolldown/binding-linux-arm64-gnu1.0.3indirect
npm@rolldown/binding-linux-arm64-musl1.0.3indirect
npm@rolldown/binding-linux-ppc64-gnu1.0.3indirect
npm@rolldown/binding-linux-s390x-gnu1.0.3indirect
npm@rolldown/binding-linux-x64-gnu1.0.3indirect
npm@rolldown/binding-linux-x64-musl1.0.3indirect
npm@rolldown/binding-openharmony-arm641.0.3indirect
npm@rolldown/binding-wasm32-wasi1.0.3indirect
npm@rolldown/binding-win32-arm64-msvc1.0.3indirect
npm@rolldown/binding-win32-x64-msvc1.0.3indirect
npm@rolldown/pluginutils1.0.0-rc.7indirect
npm@rolldown/pluginutils1.0.1indirect
npm@rollup/rollup-android-arm-eabi4.62.0indirect
npm@rollup/rollup-android-arm644.62.0indirect
npm@rollup/rollup-darwin-arm644.62.0indirect
npm@rollup/rollup-darwin-x644.62.0indirect
npm@rollup/rollup-freebsd-arm644.62.0indirect
npm@rollup/rollup-freebsd-x644.62.0indirect
npm@rollup/rollup-linux-arm-gnueabihf4.62.0indirect
npm@rollup/rollup-linux-arm-musleabihf4.62.0indirect
npm@rollup/rollup-linux-arm64-gnu4.62.0indirect
npm@rollup/rollup-linux-arm64-musl4.62.0indirect
npm@rollup/rollup-linux-loong64-gnu4.62.0indirect
npm@rollup/rollup-linux-loong64-musl4.62.0indirect
npm@rollup/rollup-linux-ppc64-gnu4.62.0indirect
npm@rollup/rollup-linux-ppc64-musl4.62.0indirect
npm@rollup/rollup-linux-riscv64-gnu4.62.0indirect
npm@rollup/rollup-linux-riscv64-musl4.62.0indirect
npm@rollup/rollup-linux-s390x-gnu4.62.0indirect
npm@rollup/rollup-linux-x64-gnu4.62.0indirect
npm@rollup/rollup-linux-x64-musl4.62.0indirect
npm@rollup/rollup-openbsd-x644.62.0indirect
npm@rollup/rollup-openharmony-arm644.62.0indirect
npm@rollup/rollup-win32-arm64-msvc4.62.0indirect
npm@rollup/rollup-win32-ia32-msvc4.62.0indirect
npm@rollup/rollup-win32-x64-gnu4.62.0indirect
npm@rollup/rollup-win32-x64-msvc4.62.0indirect
npm@sec-ant/readable-stream0.4.1indirect
npm@sindresorhus/merge-streams4.0.0indirect
npm@standard-schema/spec1.1.0indirect
npm@standard-schema/utils0.3.0indirect
npm@tabby_ai/hijri-converter1.0.5indirect
npm@tailwindcss/node4.2.4indirect
npm@tailwindcss/oxide4.2.4indirect
npm@tailwindcss/oxide-android-arm644.2.4indirect
npm@tailwindcss/oxide-darwin-arm644.2.4indirect
npm@tailwindcss/oxide-darwin-x644.2.4indirect
npm@tailwindcss/oxide-freebsd-x644.2.4indirect
npm@tailwindcss/oxide-linux-arm-gnueabihf4.2.4indirect
npm@tailwindcss/oxide-linux-arm64-gnu4.2.4indirect
npm@tailwindcss/oxide-linux-arm64-musl4.2.4indirect
npm@tailwindcss/oxide-linux-x64-gnu4.2.4indirect
npm@tailwindcss/oxide-linux-x64-musl4.2.4indirect
npm@tailwindcss/oxide-wasm32-wasi4.2.4indirect
npm@tailwindcss/oxide-win32-arm64-msvc4.2.4indirect
npm@tailwindcss/oxide-win32-x64-msvc4.2.4indirect
npm@tailwindcss/vite4.2.4indirect
npm@tailwindcss/vite^4.2.4indirect
npm@tanstack/history1.161.6indirect
npm@tanstack/hotkeys0.8.0indirect
npm@tanstack/query-core5.100.9indirect
npm@tanstack/react-hotkeys0.10.0indirect
npm@tanstack/react-hotkeys^0.10.0indirect
npm@tanstack/react-query5.100.9indirect
npm@tanstack/react-query^5.100.9indirect
npm@tanstack/react-router1.169.2indirect
npm@tanstack/react-router^1.169.2indirect
npm@tanstack/react-store0.11.0indirect
npm@tanstack/react-store0.9.3indirect
npm@tanstack/react-table8.21.3indirect
npm@tanstack/react-table^8.21.3indirect
npm@tanstack/router-core1.169.2indirect
npm@tanstack/router-generator1.166.42indirect
npm@tanstack/router-plugin1.167.35indirect
npm@tanstack/router-plugin^1.167.35indirect
npm@tanstack/router-utils1.161.8indirect
npm@tanstack/store0.11.0indirect
npm@tanstack/store0.9.3indirect
npm@tanstack/table-core8.21.3indirect
npm@tanstack/virtual-file-routes1.161.7indirect
npm@tanstack/virtual-file-routes1.162.0indirect
npm@tanstack/virtual-file-routes^1.162.0indirect
npm@tiptap/core3.22.5indirect
npm@tiptap/extension-blockquote3.22.5indirect
npm@tiptap/extension-bold3.22.5indirect
npm@tiptap/extension-bubble-menu3.22.5indirect
npm@tiptap/extension-bullet-list3.22.5indirect
npm@tiptap/extension-code3.22.5indirect
npm@tiptap/extension-code-block3.22.5indirect
npm@tiptap/extension-document3.22.5indirect
npm@tiptap/extension-dropcursor3.22.5indirect
npm@tiptap/extension-floating-menu3.22.5indirect
npm@tiptap/extension-gapcursor3.22.5indirect
npm@tiptap/extension-hard-break3.22.5indirect
npm@tiptap/extension-heading3.22.5indirect
npm@tiptap/extension-horizontal-rule3.22.5indirect
npm@tiptap/extension-italic3.22.5indirect
npm@tiptap/extension-link3.22.5indirect
npm@tiptap/extension-link^3.22.5indirect
npm@tiptap/extension-list3.22.5indirect
npm@tiptap/extension-list-item3.22.5indirect
npm@tiptap/extension-list-keymap3.22.5indirect
npm@tiptap/extension-ordered-list3.22.5indirect
npm@tiptap/extension-paragraph3.22.5indirect
npm@tiptap/extension-placeholder3.22.5indirect
npm@tiptap/extension-placeholder^3.22.5indirect
npm@tiptap/extension-strike3.22.5indirect
npm@tiptap/extension-text3.22.5indirect
npm@tiptap/extension-underline3.22.5indirect
npm@tiptap/extensions3.22.5indirect
npm@tiptap/pm3.22.5indirect
npm@tiptap/react3.22.5indirect
npm@tiptap/react^3.22.5indirect
npm@tiptap/starter-kit3.22.5indirect
npm@tiptap/starter-kit^3.22.5indirect
npm@ts-morph/common0.27.0indirect
npm@turbo/darwin-642.9.18indirect
npm@turbo/darwin-arm642.9.18indirect
npm@turbo/linux-642.9.18indirect
npm@turbo/linux-arm642.9.18indirect
npm@turbo/windows-642.9.18indirect
npm@turbo/windows-arm642.9.18indirect
npm@tybys/wasm-util0.10.2indirect
npm@types/chai5.2.3indirect
npm@types/d3-array3.2.2indirect
npm@types/d3-color3.1.3indirect
npm@types/d3-ease3.0.2indirect
npm@types/d3-interpolate3.0.4indirect
npm@types/d3-path3.1.1indirect
npm@types/d3-scale4.0.9indirect
npm@types/d3-shape3.1.8indirect
npm@types/d3-time3.0.4indirect
npm@types/d3-timer3.0.2indirect
npm@types/deep-eql4.0.2indirect
npm@types/estree1.0.8indirect
npm@types/estree1.0.9indirect
npm@types/node12.20.55indirect
npm@types/node25.6.0indirect
npm@types/node^25.6.0indirect
npm@types/react19.2.14indirect
npm@types/react^19.2.14indirect
npm@types/react-dom19.2.3indirect
npm@types/react-dom^19.2.3indirect
npm@types/set-cookie-parser2.4.10indirect
npm@types/spark-md53.0.5indirect
npm@types/spark-md5^3.0.5indirect
npm@types/statuses2.0.6indirect
npm@types/use-sync-external-store0.0.6indirect
npm@types/validate-npm-package-name4.0.2indirect
npm@uiw/react-json-view1.12.2indirect
npm@uiw/react-json-view^1.12indirect
npm@vitejs/plugin-react6.0.1indirect
npm@vitejs/plugin-react^6.0.1indirect
npm@vitest/coverage-v84.1.5indirect
npm@vitest/coverage-v8^4.1.5indirect
npm@vitest/expect4.1.5indirect
npm@vitest/mocker4.1.5indirect
npm@vitest/pretty-format4.1.5indirect
npm@vitest/runner4.1.5indirect
npm@vitest/snapshot4.1.5indirect
npm@vitest/spy4.1.5indirect
npm@vitest/utils4.1.5indirect
npmaccepts2.0.0indirect
npmacorn8.15.0indirect
npmagent-base7.1.4indirect
npmajv8.20.0indirect
npmajv-formats3.0.1indirect
npmansi-colors4.1.3indirect
npmansi-regex5.0.1indirect
npmansi-regex6.2.2indirect
npmansi-styles4.3.0indirect
npmansis4.2.0indirect
npmany-promise1.3.0indirect
npmanymatch3.1.3indirect
npmargparse2.0.1indirect
npmaria-hidden1.2.6indirect
npmarray-union2.1.0indirect
npmassertion-error2.0.1indirect
npmast-types0.16.1indirect
npmast-v8-to-istanbul1.0.0indirect
npmbabel-dead-code-elimination1.0.12indirect
npmbalanced-match4.0.4indirect
npmbaseline-browser-mapping2.10.27indirect
npmbetter-path-resolve1.0.0indirect
npmbinary-extensions2.3.0indirect
npmbody-parser2.2.2indirect
npmbrace-expansion5.0.6indirect
npmbraces3.0.3indirect
npmbrowserslist4.28.2indirect
npmbundle-name4.1.0indirect
npmbundle-require5.1.0indirect
npmbytes3.1.2indirect
npmcac6.7.14indirect
npmcall-bind-apply-helpers1.0.2indirect
npmcall-bound1.0.4indirect
npmcallsites3.1.0indirect
npmcaniuse-lite1.0.30001792indirect
npmchai6.2.2indirect
npmchalk5.6.2indirect
npmchardet2.1.1indirect
npmchokidar3.6.0indirect
npmchokidar4.0.3indirect
npmclass-variance-authority0.7.1indirect
npmclass-variance-authority^0.7.1indirect
npmcli-cursor5.0.0indirect
npmcli-spinners2.9.2indirect
npmcli-width4.1.0indirect
npmcliui8.0.1indirect
npmclsx2.1.1indirect
npmclsx^2.1.1indirect
npmcmdk1.1.1indirect
npmcmdk^1.1.1indirect
npmcode-block-writer13.0.3indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcommander11.1.0indirect
npmcommander14.0.3indirect
npmcommander4.1.1indirect
npmcommander^14.0.3indirect
npmconfbox0.1.8indirect
npmconsola3.4.2indirect
npmconsole-table-printer2.15.0indirect
npmconsole-table-printer^2.15.0indirect
npmcontent-disposition1.1.0indirect
npmcontent-type1.0.5indirect
npmconvert-source-map2.0.0indirect
npmcookie0.7.2indirect
npmcookie1.1.1indirect
npmcookie-es3.1.1indirect
npmcookie-signature1.2.2indirect
npmcors2.8.6indirect
npmcosmiconfig9.0.1indirect
npmcross-spawn7.0.6indirect
npmcssesc3.0.0indirect
npmcsstype3.2.3indirect
npmd3-array3.2.4indirect
npmd3-color3.1.0indirect
npmd3-ease3.0.1indirect
npmd3-format3.1.2indirect
npmd3-interpolate3.0.1indirect
npmd3-path3.1.0indirect
npmd3-scale4.0.2indirect
npmd3-shape3.2.0indirect
npmd3-time3.1.0indirect
npmd3-time-format4.1.0indirect
npmd3-timer3.0.1indirect
npmdata-uri-to-buffer4.0.1indirect
npmdataloader1.4.0indirect
npmdate-fns4.1.0indirect
npmdate-fns^4.1.0indirect
npmdate-fns-jalali4.1.0-0indirect
npmdate-fns-tz3.2.0indirect
npmdate-fns-tz^3.2.0indirect
npmdebug4.4.3indirect
npmdecimal.js-light2.5.1indirect
npmdedent1.7.2indirect
npmdeepmerge4.3.1indirect
npmdefault-browser5.5.0indirect
npmdefault-browser-id5.0.1indirect
npmdefine-lazy-prop3.0.0indirect
npmdepd2.0.0indirect
npmdetect-indent6.1.0indirect
npmdetect-libc2.1.2indirect
npmdetect-node-es1.1.0indirect
npmdiff8.0.4indirect
npmdir-glob3.0.1indirect
npmdotenv17.4.2indirect
npmdotenv8.6.0indirect
npmdunder-proto1.0.1indirect
npmeciesjs0.4.18indirect
npmee-first1.1.1indirect
npmelectron-to-chromium1.5.352indirect
npmemoji-regex10.6.0indirect
npmemoji-regex8.0.0indirect
npmencodeurl2.0.0indirect
npmenhanced-resolve5.21.0indirect
npmenquirer2.4.1indirect
npmenv-paths2.2.1indirect
npmerror-ex1.3.4indirect
npmes-define-property1.0.1indirect
npmes-errors1.3.0indirect
npmes-module-lexer2.1.0indirect
npmes-object-atoms1.1.1indirect
npmes-toolkit1.45.1indirect
npmesbuild0.28.1indirect
npmescalade3.2.0indirect
npmescape-html1.0.3indirect
npmesprima4.0.1indirect
npmestree-walker3.0.3indirect
npmetag1.8.1indirect
npmeventemitter35.0.4indirect
npmeventsource3.0.7indirect
npmeventsource-parser3.0.8indirect
npmexeca5.1.1indirect
npmexeca9.6.1indirect
npmexeca^9.6.1indirect
npmexpect-type1.3.0indirect
npmexpress5.2.1indirect
npmexpress-rate-limit8.5.1indirect
npmextendable-error0.1.7indirect
npmfast-deep-equal3.1.3indirect
npmfast-equals5.4.0indirect
npmfast-glob3.3.3indirect
npmfast-string-truncated-width3.0.3indirect
npmfast-string-width3.0.2indirect
npmfast-uri3.1.2indirect
npmfast-wrap-ansi0.2.0indirect
npmfastq1.20.1indirect
npmfdir6.5.0indirect
npmfetch-blob3.2.0indirect
npmfigures6.1.0indirect
npmfill-range7.1.1indirect
npmfinalhandler2.1.1indirect
npmfind-up4.1.0indirect
npmfix-dts-default-cjs-exports1.0.1indirect
npmflag-icons7.5.0indirect
npmflag-icons^7.5.0indirect
npmformdata-polyfill4.0.10indirect
npmforwarded0.2.0indirect
npmfresh2.0.0indirect
npmfs-extra11.3.5indirect
npmfs-extra7.0.1indirect
npmfs-extra8.1.0indirect
npmfsevents2.3.2indirect
npmfsevents2.3.3indirect
npmfunction-bind1.1.2indirect
npmfuzzysort3.1.0indirect
npmgensync1.0.0-beta.2indirect
npmget-caller-file2.0.5indirect
npmget-east-asian-width1.5.0indirect
npmget-intrinsic1.3.0indirect
npmget-nonce1.0.1indirect
npmget-own-enumerable-keys1.0.0indirect
npmget-port7.2.0indirect
npmget-port^7.2.0indirect
npmget-proto1.0.1indirect
npmget-stream6.0.1indirect
npmget-stream9.0.1indirect
npmget-tsconfig4.13.7indirect
npmglob-parent5.1.2indirect
npmglobby11.1.0indirect
npmgopd1.2.0indirect
npmgraceful-fs4.2.11indirect
npmgraphql16.14.0indirect
npmhas-flag4.0.0indirect
npmhas-symbols1.1.0indirect
npmhasown2.0.3indirect
npmheaders-polyfill5.0.1indirect
npmhono4.12.25indirect
npmhtml-escaper2.0.2indirect
npmhtml-parse-stringify3.0.1indirect
npmhttp-errors2.0.1indirect
npmhttps-proxy-agent7.0.6indirect
npmhuman-id4.1.3indirect
npmhuman-signals2.1.0indirect
npmhuman-signals8.0.1indirect
npmi18next26.2.0indirect
npmi18next^26.2.0indirect
npmiconv-lite0.7.2indirect
npmignore5.3.2indirect
npmimmer10.2.0indirect
npmimmer11.1.4indirect
npmimport-fresh3.3.1indirect
npminherits2.0.4indirect
npminternmap2.0.3indirect
npmip-address10.2.0indirect
npmipaddr.js1.9.1indirect
npmis-arrayish0.2.1indirect
npmis-binary-path2.1.0indirect
npmis-docker3.0.0indirect
npmis-extglob2.1.1indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-glob4.0.3indirect
npmis-in-ssh1.0.0indirect
npmis-inside-container1.0.0indirect
npmis-interactive2.0.0indirect
npmis-node-process1.2.0indirect
npmis-number7.0.0indirect
npmis-obj3.0.0indirect
npmis-plain-obj4.1.0indirect
npmis-promise4.0.0indirect
npmis-regexp3.1.0indirect
npmis-stream2.0.1indirect
npmis-stream4.0.1indirect
npmis-subdir1.2.0indirect
npmis-unicode-supported1.3.0indirect
npmis-unicode-supported2.1.0indirect
npmis-windows1.0.2indirect
npmis-wsl3.1.1indirect
npmisbot5.1.40indirect
npmisexe2.0.0indirect
npmisexe3.1.5indirect
npmistanbul-lib-coverage3.2.2indirect
npmistanbul-lib-report3.0.1indirect
npmistanbul-reports3.2.0indirect
npmjiti2.7.0indirect
npmjose6.2.3indirect
npmjoycon3.1.1indirect
npmjs-tokens10.0.0indirect
npmjs-tokens4.0.0indirect
npmjs-yaml4.2.0indirect
npmjsesc3.1.0indirect
npmjson-parse-even-better-errors2.3.1indirect
npmjson-schema-traverse1.0.0indirect
npmjson-schema-typed8.0.2indirect
npmjson52.2.3indirect
npmjsonfile4.0.0indirect
npmjsonfile6.2.1indirect
npmkleur3.0.3indirect
npmkleur4.1.5indirect
npmlightningcss1.32.0indirect
npmlightningcss-android-arm641.32.0indirect
npmlightningcss-darwin-arm641.32.0indirect
npmlightningcss-darwin-x641.32.0indirect
npmlightningcss-freebsd-x641.32.0indirect
npmlightningcss-linux-arm-gnueabihf1.32.0indirect
npmlightningcss-linux-arm64-gnu1.32.0indirect
npmlightningcss-linux-arm64-musl1.32.0indirect
npmlightningcss-linux-x64-gnu1.32.0indirect
npmlightningcss-linux-x64-musl1.32.0indirect
npmlightningcss-win32-arm64-msvc1.32.0indirect
npmlightningcss-win32-x64-msvc1.32.0indirect
npmlilconfig3.1.3indirect
npmlines-and-columns1.2.4indirect
npmlinkifyjs4.3.2indirect
npmload-tsconfig0.2.5indirect
npmlocate-path5.0.0indirect
npmlodash.startcase4.4.0indirect
npmlog-symbols6.0.0indirect
npmlru-cache5.1.1indirect
npmlucide-react1.14.0indirect
npmlucide-react^1.14.0indirect
npmmagic-string0.30.21indirect
npmmagicast0.5.2indirect
npmmake-dir4.0.0indirect
npmmath-intrinsics1.1.0indirect
npmmedia-typer1.1.0indirect
npmmerge-descriptors2.0.0indirect
npmmerge-stream2.0.0indirect
npmmerge21.4.1indirect
npmmicromatch4.0.8indirect
npmmime-db1.54.0indirect
npmmime-types3.0.2indirect
npmmimic-fn2.1.0indirect
npmmimic-function5.0.1indirect
npmminimatch10.2.5indirect
npmminimist1.2.8indirect
npmmlly1.8.0indirect
npmmri1.2.0indirect
npmms2.1.3indirect
npmmsw2.14.3indirect
npmmsw^2.14.3indirect
npmmute-stream3.0.0indirect
npmmz2.7.0indirect
npmnanoid3.3.12indirect
npmnegotiator1.0.0indirect
npmnext-themes0.4.6indirect
npmnext-themes^0.4.6indirect
npmnode-domexception1.0.0indirect
npmnode-fetch2.7.0indirect
npmnode-fetch3.3.2indirect
npmnode-releases2.0.38indirect
npmnormalize-path3.0.0indirect
npmnpm-run-path4.0.1indirect
npmnpm-run-path6.0.0indirect
npmobject-assign4.1.1indirect
npmobject-inspect1.13.4indirect
npmobject-treeify1.1.33indirect
npmobug2.1.1indirect
npmon-finished2.4.1indirect
npmonce1.4.0indirect
npmonetime5.1.2indirect
npmonetime7.0.0indirect
npmopen11.0.0indirect
npmora8.2.0indirect
npmorderedmap2.1.1indirect
npmoutdent0.5.0indirect
npmoutvariant1.4.3indirect
npmp-filter2.1.0indirect
npmp-limit2.3.0indirect
npmp-locate4.1.0indirect
npmp-map2.1.0indirect
npmp-try2.2.0indirect
npmpackage-manager-detector0.2.11indirect
npmparent-module1.0.1indirect
npmparse-json5.2.0indirect
npmparse-ms4.0.0indirect
npmparseurl1.3.3indirect
npmpath-browserify1.0.1indirect
npmpath-exists4.0.0indirect
npmpath-key3.1.1indirect
npmpath-key4.0.0indirect
npmpath-to-regexp6.3.0indirect
npmpath-to-regexp8.4.2indirect
npmpath-type4.0.0indirect
npmpathe2.0.3indirect
npmpicocolors1.1.1indirect
npmpicocolors^1.1.1indirect
npmpicomatch2.3.2indirect
npmpicomatch4.0.4indirect
npmpirates4.0.7indirect
npmpkce-challenge5.0.1indirect
npmpkg-types1.3.1indirect
npmplaywright1.59.1indirect
npmplaywright-core1.59.1indirect
npmpostcss8.5.14indirect
npmpostcss8.5.15indirect
npmpostcss-load-config6.0.1indirect
npmpostcss-selector-parser7.1.1indirect
npmpowershell-utils0.1.0indirect
npmprettier2.8.8indirect
npmprettier3.8.3indirect
npmpretty-ms9.3.0indirect
npmprompts2.4.2indirect
npmprosemirror-changeset2.4.1indirect
npmprosemirror-commands1.7.1indirect
npmprosemirror-dropcursor1.8.2indirect
npmprosemirror-gapcursor1.4.1indirect
npmprosemirror-history1.5.0indirect
npmprosemirror-keymap1.2.3indirect
npmprosemirror-model1.25.4indirect
npmprosemirror-schema-list1.5.1indirect
npmprosemirror-state1.4.4indirect
npmprosemirror-tables1.8.5indirect
npmprosemirror-transform1.12.0indirect
npmprosemirror-view1.41.8indirect
npmproxy-addr2.0.7indirect
npmqs6.15.2indirect
npmquansync0.2.11indirect
npmqueue-microtask1.2.3indirect
npmrange-parser1.2.1indirect
npmraw-body3.0.2indirect
npmreact19.2.6indirect
npmreact^19.2.6indirect
npmreact-colorful5.7.0indirect
npmreact-colorful^5.7.0indirect
npmreact-day-picker9.14.0indirect
npmreact-day-picker^9.14.0indirect
npmreact-dom19.2.6indirect
npmreact-dom^19.2.6indirect
npmreact-hook-form7.75.0indirect
npmreact-hook-form^7.75.0indirect
npmreact-i18next17.0.8indirect
npmreact-i18next^17.0.8indirect
npmreact-is19.2.5indirect
npmreact-redux9.2.0indirect
npmreact-remove-scroll2.7.2indirect
npmreact-remove-scroll-bar2.3.8indirect
npmreact-style-singleton2.2.3indirect
npmread-yaml-file2.1.0indirect
npmreaddirp3.6.0indirect
npmreaddirp4.1.2indirect
npmrecast0.23.11indirect
npmrecharts3.8.1indirect
npmrecharts^3.8.1indirect
npmredux5.0.1indirect
npmredux-thunk3.1.0indirect
npmrequire-directory2.1.1indirect
npmrequire-from-string2.0.2indirect
npmreselect5.1.1indirect
npmresolve-from4.0.0indirect
npmresolve-from5.0.0indirect
npmresolve-pkg-maps1.0.0indirect
npmrestore-cursor5.1.0indirect
npmrettime0.11.11indirect
npmreusify1.1.0indirect
npmrolldown1.0.3indirect
npmrollup4.62.0indirect
npmrope-sequence1.3.4indirect
npmrouter2.2.0indirect
npmrun-applescript7.1.0indirect
npmrun-parallel1.2.0indirect
npmsafer-buffer2.1.2indirect
npmscheduler0.27.0indirect
npmsemver6.3.1indirect
npmsemver7.7.4indirect
npmsend1.2.1indirect
npmseroval1.5.4indirect
npmseroval-plugins1.5.4indirect
npmserve-static2.2.1indirect
npmset-cookie-parser3.1.0indirect
npmsetprototypeof1.2.0indirect
npmshadcn4.7.0indirect
npmshadcn^4.7.0indirect
npmshebang-command2.0.0indirect
npmshebang-regex3.0.0indirect
npmside-channel1.1.0indirect
npmside-channel-list1.0.1indirect
npmside-channel-map1.0.1indirect
npmside-channel-weakmap1.0.2indirect
npmsiginfo2.0.0indirect
npmsignal-exit3.0.7indirect
npmsignal-exit4.1.0indirect
npmsimple-wcswidth1.1.2indirect
npmsisteransi1.0.5indirect
npmslash3.0.0indirect
npmsonner2.0.7indirect
npmsonner^2.0.7indirect
npmsource-map0.6.1indirect
npmsource-map0.7.6indirect
npmsource-map-js1.2.1indirect
npmspark-md53.0.2indirect
npmspark-md5^3.0.2indirect
npmspawndamnit3.0.1indirect
npmstackback0.0.2indirect
npmstatuses2.0.2indirect
npmstd-env4.1.0indirect
npmstdin-discarder0.2.2indirect
npmstrict-event-emitter0.5.1indirect
npmstring-width4.2.3indirect
npmstring-width7.2.0indirect
npmstringify-object5.0.0indirect
npmstrip-ansi6.0.1indirect
npmstrip-ansi7.2.0indirect
npmstrip-bom3.0.0indirect
npmstrip-bom4.0.0indirect
npmstrip-final-newline2.0.0indirect
npmstrip-final-newline4.0.0indirect
npmsucrase3.35.1indirect
npmsupports-color7.2.0indirect
npmtagged-tag1.0.0indirect
npmtailwind-merge3.5.0indirect
npmtailwind-merge^3.5.0indirect
npmtailwindcss4.2.4indirect
npmtailwindcss^4.2.4indirect
npmtapable2.3.3indirect
npmterm-size2.2.1indirect
npmthenify3.3.1indirect
npmthenify-all1.6.0indirect
npmtiny-invariant1.3.3indirect
npmtinybench2.9.0indirect
npmtinyexec0.3.2indirect
npmtinyexec1.1.2indirect
npmtinyglobby0.2.16indirect
npmtinyglobby0.2.17indirect
npmtinyrainbow3.1.0indirect
npmtldts7.0.30indirect
npmtldts-core7.0.30indirect
npmto-regex-range5.0.1indirect
npmtoidentifier1.0.1indirect
npmtough-cookie6.0.1indirect
npmtr460.0.3indirect
npmtree-kill1.2.2indirect
npmts-interface-checker0.1.13indirect
npmts-morph26.0.0indirect
npmtsconfig-paths4.2.0indirect
npmtslib2.8.1indirect
npmtsup8.5.1indirect
npmtsup^8.0.0indirect
npmtsup^8.5.1indirect
npmtsx4.21.0indirect
npmtsx^4.0.0indirect
npmtsx^4.21.0indirect
npmturbo2.9.18indirect
npmtw-animate-css1.4.0indirect
npmtw-animate-css^1.4.0indirect
npmtype-fest5.6.0indirect
npmtype-is2.0.1indirect
npmtypescript6.0.3indirect
npmtypescript^6.0.3indirect
npmtypescript~6.0.3indirect
npmufo1.6.3indirect
npmundici-types7.19.2indirect
npmunicorn-magic0.3.0indirect
npmuniversalify0.1.2indirect
npmuniversalify2.0.1indirect
npmunpipe1.0.0indirect
npmunplugin3.0.0indirect
npmuntil-async3.0.2indirect
npmupdate-browserslist-db1.2.3indirect
npmuse-callback-ref1.3.3indirect
npmuse-sidecar1.1.3indirect
npmuse-sync-external-store1.6.0indirect
npmutil-deprecate1.0.2indirect
npmvalidate-npm-package-name7.0.2indirect
npmvary1.1.2indirect
npmvictory-vendor37.3.6indirect
npmvite8.0.16indirect
npmvite^8.0.11indirect
npmvite^8.0.16indirect
npmvitest4.1.5indirect
npmvitest^4.1.5indirect
npmvoid-elements3.1.0indirect
npmw3c-keyname2.2.8indirect
npmweb-streams-polyfill3.3.3indirect
npmwebidl-conversions3.0.1indirect
npmwebpack-virtual-modules0.6.2indirect
npmwhatwg-url5.0.0indirect
npmwhich2.0.2indirect
npmwhich4.0.0indirect
npmwhy-is-node-running2.3.0indirect
npmwrap-ansi7.0.0indirect
npmwrappy1.0.2indirect
npmwsl-utils0.3.1indirect
npmy18n5.0.8indirect
npmyallist3.1.1indirect
npmyaml2.8.4indirect
npmyaml^2.8.4indirect
npmyargs17.7.2indirect
npmyargs-parser21.1.1indirect
npmyocto-spinner1.2.0indirect
npmyoctocolors2.1.2indirect
npmzod3.25.76indirect
npmzod4.4.3indirect
npmzod^4.4.3indirect
npmzod-to-json-schema3.25.2indirect
RubyGemsactive_link_toindirect
RubyGemsactive_storage_validationsindirect
RubyGemsacts-as-taggable-onindirect
RubyGemsacts_as_listindirect
RubyGemsalbaindirect
RubyGemsar_lazy_preloadindirect
RubyGemsawesome_nested_setindirect
RubyGemsbcryptindirect
RubyGemsbenchmarkindirect
RubyGemsbreadcrumbs_on_railsindirect
RubyGemscancancanindirect
RubyGemscarmenindirect
RubyGemschartkickindirect
RubyGemscountriesindirect
RubyGemsemail_specindirect
RubyGemsfriendly_idindirect
RubyGemsfriendly_id-mobilityindirect
RubyGemsgeocoderindirect
RubyGemsgroupdateindirect
RubyGemshighlineindirect
RubyGemshightopindirect
RubyGemsi18n-tasksindirect
RubyGemsimage_processingindirect
RubyGemsimportmap-railsindirect
RubyGemsinline_svgindirect
RubyGemsjwtindirect
RubyGemslocal_timeindirect
RubyGemsmapkick-rbindirect
RubyGemsmobilityindirect
RubyGemsmobility-actiontextindirect
RubyGemsmobility-ransackindirect
RubyGemsmonetizeindirect
RubyGemsmoneyindirect
RubyGemsname_of_personindirect
RubyGemsojindirect
RubyGemsostructindirect
RubyGemspagyindirect
RubyGemsparanoiaindirect
RubyGemsphonelibindirect
RubyGemsrailsindirect
RubyGemsransackindirect
RubyGemsrexmlindirect
RubyGemsrswag-specsindirect
RubyGemsruby-oembedindirect
RubyGemssafely_blockindirect
RubyGemsselenium-webdriverindirect
RubyGemsspreeindirect
RubyGemsspree_coreindirect
RubyGemsspree_emailsindirect
RubyGemssprockets-railsindirect
RubyGemssqidsindirect
RubyGemsssrf_filterindirect
RubyGemsstate_machines-activemodelindirect
RubyGemsstate_machines-activerecordindirect
RubyGemsstimulus-railsindirect
RubyGemsstringexindirect
RubyGemstailwindcss-railsindirect
RubyGemstailwindcss-rubyindirect
RubyGemstinymce-railsindirect
RubyGemstracking_numberindirect
RubyGemsturbo-railsindirect
RubyGemstypelizerindirect
RubyGemsvalidates_zipcodeindirect
RubyGemswannabe_boolindirect
Dependency advisories 7

This repository publishes no package the index resolves, so its own dependency graph was assessed — 809 packages, which also include development and test pins that never ship: 7 carry known advisories, of which 0 are direct. 133 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

PackageVersionRelationSeverityAdvisoriesFixed in
brace-expansion5.0.6indirecthigh15.0.7
fast-uri3.1.2indirecthigh24.1.1
js-yaml4.2.0indirecthigh14.3.0
@hono/node-server1.19.14indirectmoderate12.0.5
hono4.12.25indirectmoderate34.12.27
@babel/core7.29.0indirectlow18.0.0-rc.6
body-parser2.2.2indirectlow12.3.0

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "ecommerce",
        "e-commerce",
        "ecommerce-platform",
        "spree-commerce",
        "marketplace",
        "multi-tenant",
        "multi-vendor",
        "multi-vendor-ecommerce",
        "ecommerce-api",
        "ecommerce-framework",
        "open-source",
        "headless",
        "headless-commerce",
        "headless-ecommerce",
        "b2b-commerce"
      ],
      "is_fork": false,
      "size_kb": 286114,
      "has_wiki": false,
      "homepage": "https://spreecommerce.org",
      "languages": {
        "CSS": 123018,
        "HTML": 624675,
        "Ruby": 7764903,
        "Shell": 13633,
        "JavaScript": 271741,
        "TypeScript": 3395966
      },
      "pushed_at": "2026-07-21T17:18:40Z",
      "created_at": "2008-03-10T14:45:35Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T21:03:15Z",
      "description": "Open Source eCommerce Platform for B2B, Marketplace, and Enterprise. REST API, TypeScript SDK, and production-ready Next.js storefront. Self-host it. Own your stack. No vendor lock-in. Zero platform fees.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "BSD-3-Clause",
      "default_branch": "main",
      "license_spdx_raw": "BSD-3-Clause",
      "primary_language": "Ruby",
      "significant_languages": [
        "Ruby",
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://spreecommerce.org",
      "name": "Spree Commerce",
      "type": "Organization",
      "login": "spree",
      "company": null,
      "location": null,
      "followers": 197,
      "avatar_url": "https://avatars.githubusercontent.com/u/56702?v=4",
      "created_at": "2009-02-22T00:54:00Z",
      "is_verified": null,
      "public_repos": 26,
      "account_age_days": 6358
    },
    "license": {
      "state": "standard",
      "spdx_id": "BSD-3-Clause",
      "raw_spdx": "BSD-3-Clause",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v5.4.4",
          "kind": "patch",
          "published_at": "2026-07-20T13:12:49Z"
        },
        {
          "tag": "v5.5.4",
          "kind": "patch",
          "published_at": "2026-07-20T13:14:03Z"
        },
        {
          "tag": "v5.5.3",
          "kind": "patch",
          "published_at": "2026-07-10T17:19:21Z"
        },
        {
          "tag": "v5.5.2",
          "kind": "patch",
          "published_at": "2026-07-06T17:35:01Z"
        },
        {
          "tag": "v5.5.1",
          "kind": "patch",
          "published_at": "2026-06-29T15:46:36Z"
        },
        {
          "tag": "v5.5.0",
          "kind": "minor",
          "published_at": "2026-06-18T10:33:38Z"
        },
        {
          "tag": "@spree/sdk@1.1.0",
          "kind": "other",
          "published_at": "2026-06-11T15:42:47Z"
        },
        {
          "tag": "v5.3.6",
          "kind": "patch",
          "published_at": "2026-05-19T14:29:42Z"
        },
        {
          "tag": "v5.2.8",
          "kind": "patch",
          "published_at": "2026-05-19T14:30:24Z"
        },
        {
          "tag": "v5.4.3",
          "kind": "patch",
          "published_at": "2026-05-19T12:34:17Z"
        },
        {
          "tag": "v5.4.2",
          "kind": "patch",
          "published_at": "2026-04-27T15:34:04Z"
        },
        {
          "tag": "v5.4.1",
          "kind": "patch",
          "published_at": "2026-04-14T11:55:11Z"
        },
        {
          "tag": "@spree/sdk@1.0.1",
          "kind": "other",
          "published_at": "2026-04-14T11:58:12Z"
        },
        {
          "tag": "@spree/sdk@1.0.0",
          "kind": "other",
          "published_at": "2026-04-11T13:12:00Z"
        },
        {
          "tag": "v5.4.0",
          "kind": "minor",
          "published_at": "2026-04-08T14:18:21Z"
        },
        {
          "tag": "v5.4.0.rc3",
          "kind": "other",
          "published_at": "2026-03-25T15:10:35Z"
        },
        {
          "tag": "v5.4.0.rc2",
          "kind": "other",
          "published_at": "2026-03-23T15:42:45Z"
        },
        {
          "tag": "v5.4.0.rc1",
          "kind": "other",
          "published_at": "2026-03-20T15:25:52Z"
        },
        {
          "tag": "v5.3.5",
          "kind": "patch",
          "published_at": "2026-03-12T20:25:32Z"
        },
        {
          "tag": "v5.3.4",
          "kind": "patch",
          "published_at": "2026-02-23T13:36:09Z"
        },
        {
          "tag": "v5.3.3",
          "kind": "patch",
          "published_at": "2026-02-16T10:30:10Z"
        },
        {
          "tag": "4.10.3",
          "kind": "patch",
          "published_at": "2026-02-05T13:53:15Z"
        },
        {
          "tag": "v5.0.8",
          "kind": "patch",
          "published_at": "2026-02-05T13:56:10Z"
        },
        {
          "tag": "v5.1.10",
          "kind": "patch",
          "published_at": "2026-02-05T13:56:52Z"
        },
        {
          "tag": "v5.2.7",
          "kind": "patch",
          "published_at": "2026-02-05T13:57:17Z"
        },
        {
          "tag": "v5.3.2",
          "kind": "patch",
          "published_at": "2026-02-05T14:00:50Z"
        },
        {
          "tag": "v5.3.1",
          "kind": "patch",
          "published_at": "2026-02-02T16:34:07Z"
        },
        {
          "tag": "v5.3.0",
          "kind": "minor",
          "published_at": "2026-01-26T13:53:39Z"
        },
        {
          "tag": "v5.3.0.rc2",
          "kind": "other",
          "published_at": "2026-01-22T15:53:34Z"
        },
        {
          "tag": "v5.2.6",
          "kind": "patch",
          "published_at": "2026-01-15T11:52:24Z"
        },
        {
          "tag": "v4.10.2",
          "kind": "patch",
          "published_at": "2026-01-08T11:54:47Z"
        },
        {
          "tag": "v5.0.7",
          "kind": "patch",
          "published_at": "2026-01-08T11:55:51Z"
        },
        {
          "tag": "v5.1.9",
          "kind": "patch",
          "published_at": "2026-01-08T11:56:35Z"
        },
        {
          "tag": "v5.2.5",
          "kind": "patch",
          "published_at": "2026-01-08T11:57:15Z"
        },
        {
          "tag": "v5.2.4",
          "kind": "patch",
          "published_at": "2025-12-18T18:31:15Z"
        },
        {
          "tag": "v5.2.3",
          "kind": "patch",
          "published_at": "2025-12-16T08:34:08Z"
        },
        {
          "tag": "v5.2.2",
          "kind": "patch",
          "published_at": "2025-12-09T16:49:59Z"
        },
        {
          "tag": "v5.2.1",
          "kind": "patch",
          "published_at": "2025-12-02T15:08:40Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2025-11-28T11:22:49Z"
        },
        {
          "tag": "v5.2.0.rc3",
          "kind": "other",
          "published_at": "2025-11-18T12:43:37Z"
        },
        {
          "tag": "v5.2.0.rc2",
          "kind": "other",
          "published_at": "2025-11-09T21:13:04Z"
        },
        {
          "tag": "v5.2.0.rc1",
          "kind": "other",
          "published_at": "2025-11-04T16:45:12Z"
        },
        {
          "tag": "v5.1.8",
          "kind": "patch",
          "published_at": "2025-10-30T12:11:59Z"
        },
        {
          "tag": "v5.1.7",
          "kind": "patch",
          "published_at": "2025-09-29T12:48:15Z"
        },
        {
          "tag": "v5.1.6",
          "kind": "patch",
          "published_at": "2025-09-18T16:02:39Z"
        },
        {
          "tag": "v5.1.5",
          "kind": "patch",
          "published_at": "2025-08-06T14:59:00Z"
        },
        {
          "tag": "v5.0.6",
          "kind": "patch",
          "published_at": "2025-08-06T14:01:11Z"
        },
        {
          "tag": "v5.1.4",
          "kind": "patch",
          "published_at": "2025-07-24T12:10:40Z"
        },
        {
          "tag": "v5.1.3",
          "kind": "patch",
          "published_at": "2025-07-20T16:52:09Z"
        },
        {
          "tag": "v5.1.2",
          "kind": "patch",
          "published_at": "2025-07-14T13:11:33Z"
        },
        {
          "tag": "v5.1.1",
          "kind": "patch",
          "published_at": "2025-07-08T12:40:47Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2025-07-03T14:56:00Z"
        },
        {
          "tag": "v5.0.5",
          "kind": "patch",
          "published_at": "2025-06-30T20:35:04Z"
        },
        {
          "tag": "v5.0.4",
          "kind": "patch",
          "published_at": "2025-05-22T12:24:48Z"
        },
        {
          "tag": "v5.0.3",
          "kind": "patch",
          "published_at": "2025-05-06T10:32:21Z"
        },
        {
          "tag": "v5.0.2",
          "kind": "patch",
          "published_at": "2025-04-22T13:09:05Z"
        },
        {
          "tag": "v5.0.1",
          "kind": "patch",
          "published_at": "2025-04-09T18:48:06Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2025-04-03T14:42:16Z"
        },
        {
          "tag": "v4.10.0",
          "kind": "minor",
          "published_at": "2024-09-06T12:53:03Z"
        },
        {
          "tag": "v4.9.0",
          "kind": "minor",
          "published_at": "2024-08-14T12:43:11Z"
        },
        {
          "tag": "v4.8.3",
          "kind": "patch",
          "published_at": "2024-06-13T11:00:32Z"
        },
        {
          "tag": "v4.8.2",
          "kind": "patch",
          "published_at": "2024-05-29T13:04:37Z"
        },
        {
          "tag": "v4.8.1",
          "kind": "patch",
          "published_at": "2024-05-27T14:41:17Z"
        },
        {
          "tag": "v4.8.0",
          "kind": "minor",
          "published_at": "2024-05-27T14:38:56Z"
        },
        {
          "tag": "v4.7.3",
          "kind": "patch",
          "published_at": "2024-05-05T17:19:41Z"
        },
        {
          "tag": "v4.6.6",
          "kind": "patch",
          "published_at": "2024-05-05T17:18:58Z"
        },
        {
          "tag": "v4.5.5",
          "kind": "patch",
          "published_at": "2024-05-05T17:16:45Z"
        },
        {
          "tag": "v4.0.9",
          "kind": "patch",
          "published_at": "2024-04-21T20:58:03Z"
        },
        {
          "tag": "v4.1.15",
          "kind": "patch",
          "published_at": "2024-04-21T20:59:28Z"
        },
        {
          "tag": "v4.2.7",
          "kind": "patch",
          "published_at": "2024-04-21T21:00:47Z"
        },
        {
          "tag": "v4.3.3",
          "kind": "patch",
          "published_at": "2024-04-21T21:01:40Z"
        },
        {
          "tag": "v4.4.1",
          "kind": "patch",
          "published_at": "2024-04-21T21:02:47Z"
        },
        {
          "tag": "v4.5.4",
          "kind": "patch",
          "published_at": "2024-04-21T21:03:37Z"
        },
        {
          "tag": "v4.6.5",
          "kind": "patch",
          "published_at": "2024-04-21T21:04:11Z"
        },
        {
          "tag": "v4.7.2",
          "kind": "patch",
          "published_at": "2024-04-21T21:04:51Z"
        },
        {
          "tag": "v4.7.1",
          "kind": "patch",
          "published_at": "2024-01-09T13:14:19Z"
        },
        {
          "tag": "v4.6.4",
          "kind": "patch",
          "published_at": "2024-01-09T13:10:44Z"
        },
        {
          "tag": "v4.6.3",
          "kind": "patch",
          "published_at": "2023-11-09T13:57:30Z"
        },
        {
          "tag": "v4.7.0",
          "kind": "minor",
          "published_at": "2023-11-09T18:33:15Z"
        },
        {
          "tag": "v4.6.2",
          "kind": "patch",
          "published_at": "2023-09-04T18:57:10Z"
        },
        {
          "tag": "v4.6.1",
          "kind": "patch",
          "published_at": "2023-07-24T14:33:07Z"
        },
        {
          "tag": "v4.6.0",
          "kind": "minor",
          "published_at": "2023-05-31T10:18:30Z"
        },
        {
          "tag": "v4.5.3",
          "kind": "patch",
          "published_at": "2023-05-14T12:54:07Z"
        },
        {
          "tag": "v4.5.2",
          "kind": "patch",
          "published_at": "2023-04-21T07:43:07Z"
        },
        {
          "tag": "v4.5.1",
          "kind": "patch",
          "published_at": "2023-01-18T12:45:34Z"
        },
        {
          "tag": "v4.5.0",
          "kind": "minor",
          "published_at": "2022-12-01T17:28:56Z"
        },
        {
          "tag": "v4.3.2",
          "kind": "patch",
          "published_at": "2022-06-01T16:16:58Z"
        },
        {
          "tag": "v4.2.6",
          "kind": "patch",
          "published_at": "2022-06-01T16:17:32Z"
        },
        {
          "tag": "v4.4.0",
          "kind": "minor",
          "published_at": "2022-01-26T13:40:08Z"
        },
        {
          "tag": "v4.4.0.rc2",
          "kind": "other",
          "published_at": "2022-01-10T12:24:36Z"
        },
        {
          "tag": "v4.3.1",
          "kind": "patch",
          "published_at": "2022-01-09T13:33:34Z"
        },
        {
          "tag": "v4.4.0.rc1",
          "kind": "other",
          "published_at": "2021-12-04T17:15:34Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2021-09-14T16:13:36Z"
        },
        {
          "tag": "v4.3.0.rc2",
          "kind": "other",
          "published_at": "2021-08-23T17:18:52Z"
        },
        {
          "tag": "v4.3.0.rc1",
          "kind": "other",
          "published_at": "2021-08-11T15:47:44Z"
        },
        {
          "tag": "v4.2.5",
          "kind": "patch",
          "published_at": "2021-05-31T10:47:05Z"
        },
        {
          "tag": "v4.1.14",
          "kind": "patch",
          "published_at": "2021-05-31T10:27:30Z"
        },
        {
          "tag": "v4.0.8",
          "kind": "patch",
          "published_at": "2021-05-31T10:09:36Z"
        },
        {
          "tag": "v3.7.14.1",
          "kind": "other",
          "published_at": "2021-05-05T19:05:11Z"
        },
        {
          "tag": "v4.2.3.1",
          "kind": "other",
          "published_at": "2021-05-05T19:08:29Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "202d846374270c75e19b23cea5498ea559577f67",
          "body": "…board) (#14342)\n\n* Add per-channel order routing rule management (Admin API + React dashboard)\n\nShips the rules-admin slice of docs/plans/6.0-order-routing.md Phase 2,\ndashboard-only — no legacy Rails admin surface (decisions.md 2026-07-21):\n\n- Admin API v3: rule CRUD nested under channels plus a t\n[…]\n picker, and\n  schema-driven preference forms so plugin-registered kinds render\n  automatically. Shown only when the channel's effective routing strategy\n  (channel override, store fallback) is Rules.",
          "is_bot": false,
          "headline": "Add per-channel order routing rule management (Admin API + React dash…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-21T17:18:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8af053ca41360fdd93c352b1d5b07565792b34d9",
          "body": "Speed up the dashboard E2E suite on CI\n\nThe 159-test suite ran serially on a single runner against the Vite dev\nserver, with every spec driving the login form — wall-clock kept growing\nwith each new spec file.\n\n- Shard the CI job across 4 runners, each booting its own isolated\n  Rails + SQLite + Vit\n[…]\n-up job keeping the \"Dashboard - E2E\" check name\nstable for branch protection.\n\n\nClaude-Session: https://claude.ai/code/session_01P1e1boeUjru43c9gL27jg1\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Parallelize dashboard E2E tests across sharded CI jobs (#14343)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-21T17:17:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dc332372b918ffeb92252c33372a1d71a221a7d4",
          "body": "…14341)\n\nThe demo wholesale price list now carries a VolumeRule (min_quantity 10)\nalongside its customer-group rule, so trade pricing applies only on orders\nof 10+ of a single item — the way real wholesale ships in cases. Below the\nthreshold the buyer falls back to retail; there is no hard order min\n[…]\negistry serializes the two fields max-first, so the generic form alone\n  would show them in the wrong order; the editor exists only to fix that.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add a case-pack minimum to wholesale pricing (seed + admin editor) (#…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-21T15:16:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0d1a8145d498223f334c852b86b9037dbeed8dd5",
          "body": "First fixed-group release: @spree/dashboard, -core, and -ui align on\n0.12.0. The CLI patch ships the floating-range starter template.\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Release dashboard packages 0.12.0 and @spree/cli 2.4.6 (#14340)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-21T10:32:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b71e61326289d7ef4038a4bd55f353569a242d52",
          "body": "* Consolidate Changesets into a single root instance\n\n* Float dashboard template ranges; slim the scaffolded app to @spree/dashboard",
          "is_bot": false,
          "headline": "Chore/root changesets and floating dashboard template (#14339)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-21T10:17:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8bc1cd7af4068a40df89e59c6ed49657e07f4353",
          "body": null,
          "is_bot": false,
          "headline": "Bump spree to 5.6.0.rc4",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-20T16:51:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb6238c0be24e8ce0cd95feb90f701b2ab2d6a7c",
          "body": "spree-starter no longer provisions Meilisearch — the Database search\nprovider is the default on every install path (decisions.md 2026-07-19).\nSPREE_MEILISEARCH=1 pnpm server:dev opts the dev server back in via a\nmonorepo-owned compose overlay that survives server:setup resets; booting\nwithout the flag reverts to DB search and removes the container.\n\nAlso updates the create-spree-app scaffold test for the new starter\ncompose and drops stale redis/meilisearch mentions in CLI comments.",
          "is_bot": false,
          "headline": "Make Meilisearch fully optional for monorepo server development (#14331)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-20T12:30:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "558508216a824bc19a8718e7adf05ef1c71a3a82",
          "body": null,
          "is_bot": false,
          "headline": "Move PrepareNestedAttributes into the spree_admin engine (#14337)",
          "author_name": "Łukasz Adamczyk",
          "author_login": "mad-eel",
          "committed_at": "2026-07-20T12:28:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1b341275c2593050d082fd29f67dfb8ed99a537",
          "body": null,
          "is_bot": false,
          "headline": "Fix B2B plan name as it's in 6.1",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-20T11:39:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c91c92bfc10b6e535cafda9477a67fea272ed558",
          "body": null,
          "is_bot": false,
          "headline": "Harden webhook payload handling (#14335)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-20T11:13:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4b0c77e8f9768bdc456b6627c8427d988440d4e",
          "body": "…332)\n\n* Add allow list for optional attributes in google merchant center\n\n* Exclude item_group_id from optional attributes allowlist\n\nIt is always emitted as a required attribute, so allowing it as an\noptional metafield produced a duplicate g:item_group_id element.",
          "is_bot": false,
          "headline": "Add allow list for optional attributes in google merchant center (#14…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-20T10:22:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ab9d938ea513e0659d5032c233f4423c29c613d",
          "body": "…sale seeds (#14330)\n\nStorefronts can now read the channel their requests resolve to:\nGET /api/v3/store/channel returns the current channel with its resolved\nstorefront_access posture and guest_checkout, reachable before\nauthentication so a gated storefront can render a sign-in wall instead of\nan er\n[…]\nved buyer with a 40%-off customer-group price list, so a\nfresh install can demo a blended DTC + gated B2B storefront end to end.\n\n@spree/sdk gains client.channel.get() and Channel/CustomerGroup types.",
          "is_bot": false,
          "headline": "Store channel context endpoint, channel-bound publishable keys, whole…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-20T09:13:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b4414f8f67819ec06cda00e44c8081f0fd612d3",
          "body": null,
          "is_bot": false,
          "headline": "Add support for newsletter unsubscribe workflow in Store SDK (#14329)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T19:28:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acc180583bd763a8f5219befcd45854674c8528e",
          "body": "…328)\n\nCatches up the unreleased fixes that landed without changesets: the\ncollapsed-sidebar badge fix (#14311, dashboard-core) and the\nimport-completion cache invalidation (#14326, dashboard). Starts a\nCHANGELOG for dashboard-core.",
          "is_bot": false,
          "headline": "Release @spree/dashboard-core 0.10.2 and @spree/dashboard 0.10.3 (#14…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T19:06:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e28ee384ce387229b3c26f622340678196200b10",
          "body": "…gres-only (#14325)",
          "is_bot": false,
          "headline": "Plan: Solid Queue as the default job backend — single-container, Post…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T18:27:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d96f4bb0339b99b7f9143becf4a0cdc701d0d8a",
          "body": "Single-node Docker deployment as the default: root-context builds",
          "is_bot": false,
          "headline": "Merge pull request #14323 from spree/feat/docker-single-node-deploy",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T17:00:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ddd539397ba397da4ac1114fdfb5ae67f7886de2",
          "body": null,
          "is_bot": false,
          "headline": "Bump verison to 5.6.0 RC3",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T17:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab98fc7ee95684df6325c900e5fab574a708f4a8",
          "body": null,
          "is_bot": false,
          "headline": "Add user page sidebar injection point for admin UI extensions (#14327)",
          "author_name": "ifizza",
          "author_login": "ifizza",
          "committed_at": "2026-07-19T16:44:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dea3bf7dbe37b8aae4cf2776754335c70ca74205",
          "body": "+ added overview/quickstart page\n+ added AWS EC2 guide\n+ added background jobs guide\n+ refined caching guide",
          "is_bot": false,
          "headline": "Update deplpyment guides",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T15:56:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "287c520604103e9727cbe3f3a06bdeb145f81fc9",
          "body": "… group\n\nImporting the 30-product sample CSV published 1000+ events. Two cuts:\n\nBare touches no longer publish *.updated — the touch cascade (price →\nvariant → product, asset → all variants) re-announced payloads\nsubscribers already had. Detection is causal, not changeset-based: a\ntouch sets a flag,\n[…]\nStore so any\nmisuse outside the block form clears at request boundaries.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Trim lifecycle event noise: no touch duplicates, one event per import…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T15:56:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1bb80695ce4604067f2e907b744957fb08d27509",
          "body": "Simplify the default stack with just one web+worker node and DB",
          "is_bot": false,
          "headline": "Single-node Docker deployment as the default: root-context builds",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-19T15:54:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77e3a007523ae538ffb5c06dd1b86170b615f2dc",
          "body": "* Invalidate resource caches when a dashboard import finishes\n\nThe import pipeline creates records server-side, outside any tracked\nmutation, and the products list stays mounted under the ?import= wizard\nmodal — so the TanStack Query cache kept serving the pre-import list\nafter completion (no remoun\n[…]\nore\nmachines.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_013NKETijfLwd96LxMRVZ3pM\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Invalidate import-touched caches on import completion (#14326)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-18T20:01:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "63f4a1eb1b08c591657ac917a6b2acb118eee15b",
          "body": null,
          "is_bot": false,
          "headline": "Shrink package READMEs to identity + quick start + docs links (#14324)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-18T08:15:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b2a8625f1009f9ff9d12468c039702bf2697baf",
          "body": "* Fix product description losing formatting on reload in dashboard\n\nThe Tiptap product description hydrated from the serializer's `description`\nfield, which returns tag-stripped, whitespace-squished plain text. On every\nreload this collapsed paragraphs and line breaks into a single block. Hydrate\nth\n[…]\nonts and other plain-text consumers. Extract plain text via a shared\n`Spree::RichTextHelper.to_plain_text` that maps block boundaries and line\nbreaks to newlines. Single-paragraph output is unchanged.",
          "is_bot": false,
          "headline": "Fix rich text description round-tripping in product forms (#14322)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-17T14:54:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c0d86e097728c2ab31edaef086979c469c2db973",
          "body": "…4295)\n\n* Recalculate tax from the discounted basis for all promotion types\n\nApplying a promotion only moved the taxable basis in one of the four\ndiscount x tax-mode combinations (line-item discount with additional\ntax). Two gaps caused the rest:\n\n- Calculator::DefaultTax computed included (VAT-styl\n[…]\nhipment_spec.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_0117wy5yeay31JhFB1wkeHco\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Recalculate tax from the discounted basis for all promotion types (#1…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-17T12:31:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2216b7db6e4924a0a45c1065cac52a4a32d135e4",
          "body": "* Handle deleting immutable address correctly\n\n* use address services for create & update action in Admin V3 API address endpoint\n\n* update pending orders if necessary\n\n* return failure when nested objects like order fail to update\n\n* improve authorization + handle error on destroy\n\n* extract failur\n[…]\n, move associated incomplete orders back to address step\n\n* remove redundant comment\n\n* use update_all to unassign deleted address from incomplete orders\n\n* narrow scope for updating incomplete orders",
          "is_bot": false,
          "headline": "Handle immutable addresses correctly (#14300)",
          "author_name": "Kacper Mękarski",
          "author_login": "KacperMekarski",
          "committed_at": "2026-07-17T12:30:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb60cf9aa1217bc9ea6dd1d310ba8bb97687029e",
          "body": "…… (#14321)\n\nFix admin auth refresh cookie never being set over plain-http production deployments\n\nIn production, Rails silently refuses to write a Secure cookie on a\nnon-SSL request, so a production app served over plain http (e.g. the\nprebuilt Docker image on http://localhost:3000) never received \n[…]\ne dashboard\ndeployments), while http requests fall back to SameSite=Lax — safe\nbecause same-site covers both the baked-in /dashboard and local Vite\ndev, and any cross-site setup requires https anyway.",
          "is_bot": false,
          "headline": "Fix admin auth refresh cookie never being set over plain-http product…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-17T12:29:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "760f29cdd5fddc08ff9271722ddae90e19410c23",
          "body": null,
          "is_bot": false,
          "headline": "Bump version to v5.6.0.rc2",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-17T11:20:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a29cb95dd7a96e2a57ccf3be77f21769407fd536",
          "body": "Pin SimpleCov to 0.x and restore original coverage DSL\n\nSimpleCov 1.0 changed how the parallel, sharded coverage results merge: a file\ncovered by its spec in one of the 12 core processes (e.g. images_helper.rb,\nwhich has images_helper_spec.rb) is reported at 0% because the other processes'\nempty res\n[…]\nv to the 0.x line, restoring the known-good ~90% baseline and\nreproducible CI.\n\n\nClaude-Session: https://claude.ai/code/session_01DtKxNMbwGECCpw247XfDKM\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Pin SimpleCov to 0.x and restore original coverage config (#14320)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-17T09:46:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "50e8edd3645fba6625bd34c286b5deaca4fc4432",
          "body": "* Fixed: removed deprecated `stores=` usage from tests\n\n* Fixed: removed remaining deprecated plural store reads from tests\n\nComplete the migration started in the previous commit: the read-side\naccessors `stores` and `store_ids` were still used in assertions and in\nthe `custom_payment` factory, going through the deprecation bridge.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fixed: removed deprecated `stores=` usage from tests (#14318)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-17T08:51:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "09ee912d85268e05516e1c45f944557ef3cc7630",
          "body": "SimpleCov 1.0 deprecated the add_group/add_filter configuration methods in\nfavor of group/skip. Update all engine spec helpers to the new DSL so CI runs\nclean without deprecation warnings on the current (unpinned) SimpleCov.\n\nMatchers are unchanged, so coverage measurement is unaffected.\n\n\nClaude-Session: https://claude.ai/code/session_01DtKxNMbwGECCpw247XfDKM\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Migrate coverage config to SimpleCov 1.0 DSL (#14319)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-17T08:50:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "96561073d1d2fe7ac76c66d3535bfb622a015736",
          "body": "Scope dashboard coverage flag to spree/dashboard in Codecov\n\nThe spree_dashboard test job uploads a SimpleCov report rooted at the whole\nmonorepo (it boots a dummy app on the full `spree` gem), but its suite only\nexercises the SPA host. Because the `dashboard` flag was never declared in\ncodecov.yml,\n[…]\n/dashboard/ so its report\nonly affects its own files, matching the other gems.\n\n\nClaude-Session: https://claude.ai/code/session_01DtKxNMbwGECCpw247XfDKM\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add dashboard component to Codecov configuration (#14317)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T18:21:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66daa048fb397e2fc2f1f5b2bcdfda9ee315bd6f",
          "body": "* Handle race condition in find_or_create_from_oauth method\n\n* small adjustment\n\n* Refresh identity on race condition as well",
          "is_bot": false,
          "headline": "Handle race condition in find_or_create_from_oauth method (#14282)",
          "author_name": "Kacper Mękarski",
          "author_login": "KacperMekarski",
          "committed_at": "2026-07-16T18:13:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8332de3824233deaf7a7e72ddff5dbf795a55848",
          "body": null,
          "is_bot": false,
          "headline": "Improve the updater widget (#14316)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T17:39:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9cae77bb7908c8c70917ccd7e276c89f69aac72",
          "body": null,
          "is_bot": false,
          "headline": "Added Spree 6 multi vendor plan (#14303)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T15:38:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5a3273aecfe8480d4223c5c234edb72040933cb",
          "body": "always require the cart token",
          "is_bot": false,
          "headline": "Harden Store API Cart Associate endpoint (#14314)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T15:37:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9b22cce82d78c2eff5ba75c27c80d2b35aadf82",
          "body": "Imperove post install instructions; make the dashboard accessible via argument\n\n```bash\nnpx create-spree-app --react-dashboard\n```",
          "is_bot": false,
          "headline": "Improve CLI/create-spree-app around new react dashboard preview (#14313)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T13:09:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09edaaf6bd3544649e69ba8606ba9708e74eb571",
          "body": "* Document new RAILS_HOST and CDN_HOST env vars\n\n* fixes",
          "is_bot": false,
          "headline": "Document new RAILS_HOST and CDN_HOST env vars (#14312)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T12:07:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dc93127e8456d237fad4a74f0d546e4e3bdb297",
          "body": "Fix nav label leaking into collapsed sidebar when item has a badge\n\nThe collapsed icon sidebar hides item labels via a `span:last-child`\nrule on the menu button. A trailing badge span (only the Getting Started\nentry has one) took that last-child slot, so its label stayed visible and\nwrapped, breakin\n[…]\nlayout. Hide both the label and badge spans\nexplicitly in collapsed icon mode.\n\n\nClaude-Session: https://claude.ai/code/session_016BGTdmYEHcSTE4FXHY6jYg\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix nav item title and badge visibility in collapsed icon mode (#14311)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T11:48:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "98a9a00551d7fd35dae3176853f31f04903c8958",
          "body": "* Subscribe to/unsubscribe from a newsletter when toggling the `accepts_email_marketing` user attribute\n\n* Add endpoints for unsubscribing from the newsletter - for both signed in and guest customers\n\n* CR fixes: spec, missing permissions for newsletter subscribers, toggling the accepts_email_market\n[…]\nath (CR alignment; moving away\nfrom multi-store).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add a flow for unsubscribing from the newsletter (#14122)",
          "author_name": "Łukasz Adamczyk",
          "author_login": "mad-eel",
          "committed_at": "2026-07-16T10:33:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f145a98e1e33ad297002ad1c7ff442bb0fefdc39",
          "body": "* Fix dashboard logins dying on CORS in scaffolded apps\n\nspree add dashboard wrote VITE_SPREE_API_URL=http://localhost:<port>\ninto apps/dashboard/.env.local — but that variable is the SDK's switch\nto absolute cross-origin URLs (meant for deploys on a different origin\nthan the API), so requests bypas\n[…]\n\nteaching the bug.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD\n\n* Release the dashboard CORS fix as @spree/cli 2.4.3",
          "is_bot": false,
          "headline": "Fix dashboard logins dying on CORS in scaffolded apps (#14310)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-16T05:39:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a5d65fae59eb89acb02292f1f5f1ba6b0bdc55a2",
          "body": "…st-run setup automatically (#14308)\n\n* Never let optional app phases abort create-spree-app before setup runs\n\nA storefront or React Dashboard failure used to kill the whole scaffold\nbefore the final setup phase (spree init: fresh image pull, seeded\ndatabase, API keys) ever ran. The project it left\n[…]\npnpm.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "create-spree-app always yields a working app; spree dev completes fir…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-15T21:56:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35649b683a0f221653575d48b74e9920aed77a2c",
          "body": "Fix flaky CSV import retry E2E test\n\nThe \"imports products through the upload → mapping → progress → results\nwizard\" spec intermittently failed asserting the \"Retrying failed rows\"\ncopy after clicking retry. The retry response already carries the fresh\n`processing` status, which is cached optimistic\n[…]\nen solely by\nthe existing 2s poll, giving the retry indicator a stable window.\n\n\nClaude-Session: https://claude.ai/code/session_011q6J7AZTh2ZETcsvWCkgcH\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix retry failed rows race condition with refetch (#14309)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-15T21:07:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cc8b4be3352c2ffe5fa0045c93b4c4f5d10032f5",
          "body": "…n-sdk 0.6.0, dashboard 0.10.1, CLI 2.4.1 (#14307)\n\n* Release @spree/admin-sdk 0.6.0\n\nConsume the twelve pending changesets into the changelog. This is the\nAdmin API surface the 5.6 React Dashboard consumes — hosts installing\n@spree/dashboard@0.10.x from the registry need it; 0.5.0 lacks exports\nthe\n[…]\n too.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix registry installs of the dashboard Vite integration; release admi…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-15T17:02:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2bace53ac29f91ed5d4e5e00e8ce2e571f4d5018",
          "body": "Release @spree/cli 2.4.0 and create-spree-app 1.1.0\n\nApplies the staged changesets for the Developer Preview: the CLI gains\nspree add dashboard (bundled starter template pinned to the released\n@spree/dashboard* 0.10.0), spree build --production, and the fully\nnon-interactive spree plugin new; create\n[…]\nblishes them in order behind the already-published\ndashboard packages.\n\n\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Release @spree/cli 2.4.0 + create-spree-app 1.1.0 (#14306)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-15T15:19:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b7e9f56bf05812c2956d7d3db9d1e276b5455cfc",
          "body": "First release carrying the React Dashboard Developer Preview: the new\nspree_dashboard host gem ships alongside the existing gems, keeping the\nbackend in lockstep with the @spree/dashboard* npm packages.",
          "is_bot": false,
          "headline": "Bump version to 5.6.0.rc1 (#14305)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-15T14:27:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5941aa99eaf6b1d4ce81d5d255026cc74ce65abf",
          "body": "@spree/dashboard 0.1.0 (and 0.2.x) were published years ago and npm\nnever allows a version to be reused, so the Developer Preview starts at\n0.10.0 — all three packages in lockstep. Updates the plugin scaffold's\npeer ranges and the publishing docs to match; the CLI's embedded\nstarter template picks the new pins up automatically at build time.",
          "is_bot": false,
          "headline": "Bump dashboard packages to 0.10.0 (#14304)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-15T13:33:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "249dbf3c68461288f8444d754bcf27d0fa962250",
          "body": null,
          "is_bot": false,
          "headline": "Add more sandboxes references in README and docs",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-14T13:59:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dc380f87bc804541664d0dc5a46a45d0bcd66d7",
          "body": null,
          "is_bot": false,
          "headline": "Add sandbox as option in spree docs",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-14T13:04:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "233b0ad4022ebe58742224406af5b94c30d35638",
          "body": "Include new React dashboard as developer preview in newly created projects",
          "is_bot": false,
          "headline": "Merge pull request #14301 from spree/feature/spree-cli-plugin",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-14T12:37:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a8b5dd97b9c81f674623eff904a8d7c36280229",
          "body": "Bugbot follow-up completing the release chain: create-spree-app's\ndashboard phase delegates to the project-local `spree add dashboard`,\nso publishing it before the CLI that implements the command (and embeds\nthe starter) would break dashboard scaffolding for the same-push\nwindow. Full chain: admin-sdk → dashboard → cli → create-spree-app.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Gate create-spree-app release on the CLI release",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-14T12:05:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "04c705cf738dff9e2036cd5b7939f665ace6a9b9",
          "body": "Bugbot follow-up on the release-cli gate: the embedded starter template\nand the dashboard packages' rewritten workspace ranges also pin\n@spree/admin-sdk, so a same-push admin-sdk version bump could still\npublish scaffolds or dashboard packages referencing a version not yet\non npm. release-dashboard \n[…]\n on release-admin-sdk, completing\nthe admin-sdk → dashboard → cli chain.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Complete the npm release ordering chain with admin-sdk",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-14T11:47:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "659a75a5d36bd5eb8d8320bda4260ab43a4c485f",
          "body": "Three fixes from the PR #14301 review cycle:\n\n- release-cli now needs release-dashboard (Bugbot): the CLI tarball\n  embeds the dashboard-starter template pinning ^x.y.z of\n  @spree/dashboard{,-ui,-core}, so publishing it before those versions\n  exist on npm would ship a scaffold whose install fails.\n[…]\ning the filesystem, on top of\n  the existing expanded-path prefix guard.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Address PR review: release ordering, turbo edge, CodeQL hardening",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-14T11:30:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f3b0987de6f9c0893fc94419ea6006deb55427d2",
          "body": "The edge overlay points SPREE_DASHBOARD_DIST_PATH at\npackages/dashboard-starter/dist through the existing monorepo mount, so\nthe spree_dashboard gem (now in spree-starter's SPREE_PATH gem block)\nserves the built SPA at localhost:3000/dashboard with zero copying —\nand because the gem reads files per \n[…]\nlback, /dashboard/-prefixed asset URLs, and\nsame-origin API all correct.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Serve the hosted dashboard from the dev server via pnpm server:*",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-14T10:16:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b402c0c09dec20f4cb06388639e31c887b3345cf",
          "body": "* Make deleting variants in rails admin safer\n\nOnly delete variants which IDs are explicitely passed in params\n\n* fixup! Make deleting variants in rails admin safer",
          "is_bot": false,
          "headline": "Make deleting variants in rails admin safer (#14299)",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-13T15:49:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d02d6002c5a1eae12d31ea2394d033799190eb04",
          "body": "…le (#14298)\n\n* Keep the store content locale in request state, not I18n.default_locale\n\nSpree::Core::ControllerHelpers::Locale#set_locale assigned\nI18n.default_locale on every storefront/admin request (and the admin\nre-assigned it via align_i18n_default_locale_to_content!). In the i18n\ngem only `lo\n[…]\nain visit silently inherited the thread's\n  stale locale.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n* Update CLAUDE.md\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Keep the store content locale in request state, not I18n.default_loca…",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-13T12:02:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6db2b605056c3b0a29fd04edc887ee29248c3efc",
          "body": "The production image build (registry push, Render/Railway/AWS deploys)\nhad no CLI flow — and once the starter Dockerfile bakes the stock\ndashboard, anyone building a customized project's image by hand would\nsilently ship stock over their own apps/dashboard. The new flag closes\nboth gaps: it builds t\n[…]\nsolved so plain\nbuilds need no flags) lives on the spree-starter branch.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Add spree build --production with customized-dashboard baking",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-13T09:20:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0cec7f4fe93a4782ea6eb16a8caf6b287a528574",
          "body": "Serving the SPA is a delivery concern, not an API concern — the host\nmoves out of spree_api into its own optional gem, opt-in via Gemfile\n(API-only installs carry no dashboard routes) and claiming the\nsuccessor slot to spree_admin for 6.0, when it takes over /admin as the\ndefault admin delivery. Con\n[…]\nS) and gains an env-fallback spec on\ntop of the relocated request suite.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Extract the dashboard host into a spree_dashboard gem",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-13T08:38:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5ce1305ab27f92e4bc2a79d13c7d90953fc513ae",
          "body": "The default production topology becomes single node — the Rails app\nserves the built React Dashboard at /dashboard, same origin as the\nAdmin API, so the cross-origin machinery (CORS allowlist, SameSite=None\ncookies, per-environment builds) disappears entirely. Medusa (/app) and\nVendure (DashboardPlu\n[…]\ngle node; the static/CDN topology\nremains documented as the alternative.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Serve the dashboard from the Spree server: single-node by default",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-13T08:02:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c71039b59892e5e55fee65783f8d6cccd9435ed0",
          "body": "spree add dashboard now appends a static-site service to the root\nrender.yaml when one exists (create-spree-app relocates spree-starter's\nBlueprint there): CDN-served dist/ with the SPA rewrite, rootDir\napps/dashboard, and a build command matching the project's package\nmanager. Two steps stay manual\n[…]\nr cookie/CORS\nrequirements, the Render path, and a production checklist.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Register the dashboard in the project's Render Blueprint",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T17:09:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4de684c07d0e4db95d34b490444b72623a9bbf62",
          "body": "The Spree dashboard stack (source-only packages, heavy peer\ndependencies, registry singletons) is built and tested under pnpm, and\nthe docs already speak pnpm — scaffolding npm projects contradicted\nboth. Detection now treats an explicit invoking agent as a choice\n(pnpm create / yarn create still wi\n[…]\n— which previously\nhardcoded npm/npx regardless of the selected manager.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Default new create-spree-app projects to pnpm",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T16:57:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ecebc9c16f0ca09b38b9c9e3def8171906d0677",
          "body": "Replaces the spree/dashboard-starter template-repo + CI-sync-job design\nwith Vendure-style build-time embedding, after comparing how Medusa\n(separate starter repo kept current by a scheduled bot) and Vendure\n(templates inside @vendure/create, lockstep for free) distribute\nstarters. The CLI's build r\n[…]\nte repo remains a 6.0 GA option — the script takes any target\ndirectory.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Embed the dashboard-starter template in the @spree/cli tarball",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T16:21:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "23d7433a82eea6437c81e26092c439269c315179",
          "body": "The capstone walkthrough for early adopters (slated to become the main\ntutorial at 6.0): one product attribute wired through every dashboard\nsurface — form editing via the host form, a table column, numeric\nfiltering, and sorting. Leads with the decision rule the docs push\neverywhere: default to cus\n[…]\n\nallowlist, validation) is mapped to the frontend capability it unlocks.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Add the attribute-end-to-end recipe",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T10:41:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "072c0925d89bb0c07f0cf830c6ac4e6d11bdd36b",
          "body": "The recipe now leads with the zero-code path (a CustomFieldDefinition\nrenders in the Custom Fields card and saves with the form) and covers\nthe code path for real columns (formFields + a slot widget bound via\nuseHostForm — no nested form, no widget-owned save; the previous\nversion nested a <form> in\n[…]\nlic-api and the dashboard-core README list the new\nregistries and hooks.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Teach the two real custom-form-field flows in the docs",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T09:44:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5274ffbfe9e20f2916a3171b2470b7de7a92f42d",
          "body": "Benchmarked against Medusa v2 (no form participation at all), Vendure's\nReact dashboard (page blocks receive the host form), and Saleor\n(first-party attributes only) — the missing capability was a\ncode-driven field that saves with the built-in form instead of nesting\nits own <form> with its own save\n[…]\ne widget.\n\nBoth registries are declarable through defineDashboardPlugin.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Let extension fields join built-in forms' save cycle",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T09:44:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "88b71ee0f0f1322ca9af100d4414b69dcac69f1c",
          "body": "A verification sweep of every docs page against the published packages\nfound code samples that crash or silently no-op as written:\n\n- public-api listed exports that don't exist (formatMoney/formatDate/\n  mapFormErrors/Tabs/Alert/EmptyState/toast) — replaced with the real\n  surface (formatPrice, form\n[…]\nboth now match\n  the scaffold template and Developer Preview 0.x reality\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Fix runtime-breaking errors in the dashboard docs",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T08:51:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9c80ab185344e891679e8dada4b4b94c8541f44f",
          "body": "Normalize plugin route mounts to POSIX separators for Windows hosts,\nwarn (instead of silently degrading) when a plugin's package.json fails\nto parse during manifest discovery, point the plugin scaffolder's\nnext-steps banner at file routes alongside the registry entry point,\nand document two route-s\n[…]\ng\nbeing a dispatcher feature that file routes must implement themselves.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Apply review-round fixes from the branch code review",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T08:35:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c7267123f7091f035ad96bd0ee16f5a16c86808f",
          "body": "The three dashboard packages are about to appear on npm, so their\nREADMEs must stand alone: drop the stale dashboard-ui \"Phase 0\nplaceholder\" note, replace monorepo-relative links and internal plan\nreferences with docs-site links, fix @/ alias imports that no longer\nexist, and correct the private-pa\n[…]\n and fixes\na dead customization/extensions URL in the plugin scaffolder.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Refresh dashboard docs and package READMEs for external readers",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T08:31:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "899c4c9fea5d48ccad6567afb7cbdd1c5fd3cf98",
          "body": "@spree/dashboard, @spree/dashboard-core, and @spree/dashboard-ui become\npublishable at 0.1.0 with full npm metadata and per-package changeset\nconfigs. A new release job in packages.yml publishes unpublished\nversions in dependency order via pnpm publish (rewrites workspace:^\nwhile packing; source-onl\n[…]\n\nthe workspace biome.json inlined — so the template always stands alone.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Release the dashboard packages as a 0.x Developer Preview",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T08:24:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "61b2fd494c1d99ac45ccfbd0413b855247a215b3",
          "body": "New prompt (default yes, labeled Developer Preview) and --no-dashboard\nflag clone the dashboard starter into apps/dashboard/, write .env.local\n(API URL only — VITE_ values compile into the client bundle, so no\ncredentials), install deps, and extend the README, CLAUDE.md, and\nDependabot templates. Ad\n[…]\nk,\nand hardens both git clones with `--` before user-supplied templates.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Offer the React Dashboard in create-spree-app",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T08:15:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a433ade2b6149ae1464746e4e787419e8af3a092",
          "body": "The source-only dashboard package compiles inside host programs (the\nstarter) that don't define the @ path alias, so shell source must use\nrelative imports. Applies the same codemod to the files main added\n(imports wizard, setup tasks, storefront connect, auth pages).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Rewrite @/ aliases to relative imports in files new on main",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T08:05:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bbc7a62ef6a38056ae0e574423b3a4be459a1885",
          "body": "main introduced top-level /forgot-password and /reset-password routes;\nthe virtual route config in @spree/dashboard/vite names top-level shell\nroutes explicitly, so they must be listed there to appear in composed\nhosts. Regenerates both committed route trees.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014DzwNXZwhBsLqcJzwZwAmD",
          "is_bot": false,
          "headline": "Add main's new auth routes to the virtual route skeleton",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T08:05:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d47c51c6e59cefa7c13b294a3ef911395ff73318",
          "body": "The docs assumed the reader was a Spree contributor: monorepo paths\n(packages/dashboard/src/...) presented as the reader's own files, links\ninto internal plan documents, a hand-rolled customizations.ts + main.tsx\nimport dance that the app already does, and examples that would crash —\nthe quickstart \n[…]\np-level \"Dashboard\" nav item with\n  Overview/Customization/Recipes/Plugins/Slots Catalog groups; overview\n  gains the Developer Preview callout.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rewrite dashboard docs for readers outside the Spree codebase",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2a2a040ce86303d84fd3772790d46c21ef9c7309",
          "body": "addChild and removeChild replace the children array; updateChild\npatched the child object in place, so the patched entry kept its\nreference in the next snapshot — defeating any reference-equality\nmemoization on sidebar item components. Now both the child and the\narray get fresh references. (Review finding.)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make nav.updateChild replace instead of mutate in place",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "81b67dcae88cc30de7eebfeeea28f1db3cbccb77",
          "body": "overview.mdx lists file routes as a distinct plugin concern (the\nspree.dashboard.routes marker → typed route tree), and quickstart points\nplugin authors at file routes while keeping the registry form for in-app\ncustomization. routes.mdx gains a \"Route collisions\" section showing the\npackage-named error the build now emits when two packages claim the same\npath.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Document file routes and route-collision behavior",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed7c7615562906a7e4b526b23359572cca0a0d74",
          "body": "The docs referenced @spree/dashboard-sdk, a package that doesn't exist —\nthe Admin API client is @spree/admin-sdk. They also used prefixed type\nnames (AdminProduct/AdminOrder/AdminCustomer) that the SDK never\nexported; the real types are Product/Order/Customer. Several of these\nwere live import exam\n[…]\n; it actually exports the app shell\n(Dashboard, createDashboardRouter) plus the /vite and /styles.css\nsubpaths. Rewritten to match src/index.ts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix phantom @spree/dashboard-sdk / Admin* type names in docs",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "443c389af4ed583c27d08c3b63c8df15dffdd18a",
          "body": "Switches the example from a top-level nav entry to the addChildren form,\nnesting \"Brands\" inside the built-in Products submenu. Position 600 puts\nit after Transfers (the last built-in child at 500). Demonstrates the\nnew child-mutation API against a real built-in parent; drops the now-\nunused PackageIcon (child entries don't render icons).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Nest example Brands under the Products menu as the last item",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2a83c4ee87c276fb368b9ee032f1b9dd69d2dcae",
          "body": "Plugins could build their own submenu but couldn't add an item into a\nbuilt-in one: the only lever was nav.update('products', { children }),\nwhich replaces the whole children array and drops the built-in entries.\n\nAdd nav.addChild / removeChild / updateChild, which mutate a parent's\nchildren in plac\n[…]\nre addChildren so a plugin can add a parent and nest under it\nin one config. Nesting under a missing parent — or a duplicate child\nkey — throws.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Support nesting nav items under an existing parent",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3973774f2a452c342b7f6b68a42993e0577a8658",
          "body": "The example plugin's position (35) predated the current nav scale —\nbuilt-ins now use hundreds (Products 300, Customers 400), so 35 sorted\nBrands to the very top instead of between them. 350 slots it after\nProducts.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix Brands nav position to sit after Products",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2ecd1f75beed157261c3503aa5dc0dddafb6c678",
          "body": "The packed-tarball spike passed (generator parses route files under real\nnode_modules, never writes into the package). The three former open\nquestions are now resolved decisions: collision pre-flight shipped, and\nthe TanStack dependency classification + per-package caret pin policy is\ndocumented.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Record spike result and resolved decisions in the typed-routes plan",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6484f695e57aab1f551ac48333fd7ba6cc67cdda",
          "body": "Two plugins (or a plugin and the shell) declaring the same route path\npreviously surfaced as TanStack's file-path-only \"Conflicting\nconfiguration paths\" error, which authors had to map back to packages\nby hand. assertNoRouteCollisions now pre-flights the composition: it\nparses each source's createFi\n[…]\n from a\nreal node_modules install, the generator never writes into the package,\nand the starter builds with router-plugin resolved transitively.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add route-collision pre-flight; fix TanStack dep classification",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19a21cb601f0eb12771dbe0be2fd6ee761d716e2",
          "body": "New plan 5.6-dashboard-typed-plugin-routes.md records the design, the\nverified facts (identical shell tree through the virtual skeleton, no\ngenerator writes into plugin packages, cast-free links proven via the\nstarter), and the remaining published-tarball spike. The routes guide\nnow teaches file rou\n[…]\ne runtime\nregistry scoped to in-app/dynamic cases; scaffolding and publishing\nguides follow. Resolves the project-layout plan's open question 5.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Document typed plugin routes; add the plan",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "143e2837c6feef642c88c640d57bd5defb69db2b",
          "body": "New plugins get src/pages/ for components and src/routes/ with a\nready-made list file route (full final path literal, resourceSearchSchema\nvalidation), the spree.dashboard.routes marker, and the standalone-tsc\nexclusion. The entry no longer registers routes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Scaffold file routes in the plugin template",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6712a9a863b8af86a52122c77971dfdc2f4dacd8",
          "body": "main.tsx builds the router from the host-generated tree and registers it\nprogram-wide; routeTree.gen.ts is committed on purpose — it regenerates\non every dev start/build, and its diff on package upgrades shows exactly\nwhich admin pages changed. @tanstack/react-router and react-query become\ndirect de\n[…]\nposes the shell's 44 routes plus the example\nplugin's two brands routes — its typecheck proves cast-free typed links\nto plugin pages end-to-end.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Wire the starter to the composed typed router",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "561ff56d543d6ba9feeb4bb97444b94d63abe6cc",
          "body": "Brands list and detail become TanStack route files in src/routes/\n(declared via the spree.dashboard.routes marker), with the page\ncomponents in src/pages/. The entry keeps slots, nav, tables, and\ntranslations; route registration is gone — and so are the link casts,\nsince /$storeId/brands/$brandId is\n[…]\n createFileRoute\npaths only type-check against a generated route tree, which exists in\nhost programs (the starter compiles these files in-repo).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Migrate the example plugin to file routes",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f31fa7b1d2077471e31f2d95dbe69199dcd0855c",
          "body": "The route generator parses route files statically — it never executes\nthem — so plugin routes shipped as plain TanStack route files can be\ncomposed at build time without running plugin code in Node.\n\n@spree/dashboard/vite now wraps the TanStack Router generator with a\nvirtual route config: the shell\n[…]\negistry and catch-all dispatcher stay for dynamic,\nin-app registration; file routes always win since the catch-all is the\nlowest-priority match.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Compile plugin file routes into the host's typed route tree",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c91ec2be8532be1401c51ad6d7adfd5a95dd36c8",
          "body": "Plugin routes stay on the runtime registry + catch-all for the preview;\nthe open question captures the later option of compiling statically\ndeclared plugin routes into the host's route tree (typed links,\nper-route code splitting), enabled by the source-only shell + build-time\nplugin discovery already in place.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Record build-time typed route composition as a 5.6 plan open question",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7cf111df8a01ee9fd5529206929c2ec9f289cefa",
          "body": "The nav and settings-nav registries could already remove and patch\nentries, but the plugin facade only mapped arrays to add — so \"reorder\nor hide a built-in sidebar entry\", a common merchant customization,\nrequired dropping to imperative registry calls. nav and settingsNav now\nalso accept the { add,\n[…]\nrm stays as shorthand for\n{ add }. Built-ins register during shell bootstrap, before any plugin\nruns, so plugin configs can patch them reliably.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Expose nav remove/update declaratively in defineDashboardPlugin",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ccded5cbc9c6072e11741c70de01fdf7ec5577aa",
          "body": "Bolts the React Dashboard onto an existing project: clones the\ndashboard-starter template into apps/dashboard/, writes .env.local with\nthe project's API URL (no credentials — admins sign in interactively,\nand VITE_ values are compiled into the client bundle), and installs\ndependencies. Idempotent: a\n[…]\nTE) accepts a git URL or a\nlocal directory — how the monorepo tests the flow against\npackages/dashboard-starter before the template repo exists.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add spree add dashboard command",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c66d957f2308b3f7d814f0d5566d35d234aaa46",
          "body": "Thin host (~7 files) consuming <Dashboard /> from @spree/dashboard:\nVite config with spreeDashboardPlugin() + API proxy, entry importing\nthe shell, the virtual plugin-activation module, and a plugins.ts\ncustomization point. No TanStack Router plugin — the route tree ships\npre-generated inside the sh\n[…]\n the example plugin\nlands in the bundle via discovery, and the CSS output is byte-identical\nto the dashboard's own build (shell scanning exact).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add packages/dashboard-starter, the canonical dashboard host template",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f6e9654f0212bc0e92f2cb121dfcd4ede154166d",
          "body": "The dashboard-starter model has hosts depend on @spree/dashboard and\nrender its shell; until now the package was only an app with its own\nentry point. src/dashboard.tsx exports the provider stack + router with\nthe i18n/nav/search bootstrap as module side effects, the package gains\na root export (plu\n[…]\nailwind classes\nwhen installed, resolved from the host root; silent when absent so\ncustom dashboards built directly on core + ui are unaffected.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Export the app shell as <Dashboard /> from @spree/dashboard",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:56:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4f42a28e87e457c1428c5fbc1a94e0903a120ad3",
          "body": "Three decisions locked in for the Developer Preview:\n\n- @spree/dashboard publishes to npm and exports the app shell as a\n  <Dashboard /> component, distributed source-only (host's Vite compiles\n  it, keeping the generated route types first-class). Shell source uses\n  relative imports only.\n- The das\n[…]\nOnly refresh cookie). Key minting is\n  removed from create-spree-app and spree add dashboard, and the two\n  related open questions are resolved.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Nail down the 5.6 dashboard packaging decisions in the plan",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "65d3d4395f26aaf8905feeef61ea9501fd144b4c",
          "body": "Auto-discovery previously only wired Tailwind scanning — the host still\nhad to hand-edit main.tsx to run a plugin's code, and the dashboard's\ndev-mode example wiring bypassed the discovery path entirely with a\nmanual conditional import.\n\nspreeDashboardPlugin() now also serves virtual:spree-dashboard\n[…]\n leaves\nzero traces. Docs updated: plugin install is two steps (npm package +\nbackend), with the factory pattern as the config-taking exception.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Activate discovered plugins via virtual:spree-dashboard-plugins",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a5a04517a035c9d1904f7eadb5117e6bb3226ce8",
          "body": "5.5 shipped without it, so the backend/ → api/ rename, apps/dashboard/\nscaffolding, and the spree add dashboard / spree upgrade layout commands\nnow target 5.6. Version references inside the plan follow (dual-layout\nsupport spans pre-5.6 vs 5.6+; the optional deprecation-warning question\nmoves to 5.7). Indexed in CLAUDE.md under pending design work.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Retarget the project layout & dashboard plan to 5.6",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "711aff87e9dd71ba507091337fdfdf7fa4e84ccb",
          "body": "The Rails-rendered spree/admin engine is the Classic Admin; the\npackages/dashboard SPA replacing it in 6.0 is the React Dashboard. The\ndocs navigation and the dashboard overview now use these names instead\nof the ad-hoc \"Rails admin\" / \"admin dashboard\" variants.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adopt Classic Admin / React Dashboard naming in docs",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "21a5a142fa81976fbd57710b8b9105f1a0dde21c",
          "body": "Nothing imported @spree/dashboard-plugin-example, so its bugs (dead\ndetail link, slot that no page rendered) shipped unnoticed. The\ndashboard now loads it before first render when VITE_EXAMPLE_PLUGIN=true\nin dev; the DEV guard statically eliminates it from production builds.\n\nWiring it in immediatel\n[…]\ned route types are\nstrict — registry-route Links need their params cast just like `to`.\nFixed in the example and documented in the routes guide.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Run the example plugin in dashboard dev mode behind VITE_EXAMPLE_PLUGIN",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "50a6eab1b7313741500b9ef7924fd7e43895d8c4",
          "body": "Every prompt now has a matching flag (--ruby-name, --module-name,\n--npm-scope, --author, --author-email, --license) and -y/--yes accepts\nthe default for whatever the flags leave unanswered, so CI and scripted\nruns work without a TTY. Author name and email default to git config\nuser.name/user.email — prefilled into the interactive prompts too.\n\nThe scaffolding guide documented most of these flags already; now the\nCLI honors them.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make spree plugin new fully non-interactive",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea4e3554e2adc4b111cbfcc64510e96e6402ae62",
          "body": "- extending.mdx: the SDK accepts `limit`, not `per_page`; lookups use\n  prefixed IDs, not slugs (also in the request() JSDoc); link the\n  renamed tutorial page directly.\n- distributing.mdx: the module-level configure() pattern can't influence\n  import-time registration — ES imports are hoisted, so t\n[…]\ntern.\n- Fix two broken links (plugins/publishing, dashboard backend page) and\n  point the dashboard-plugins redirect at the plugin landing page.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Correct dashboard and Admin SDK docs",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4098e9395fa0eff04bcb9294b0b12182e50ab2cc",
          "body": "Send the unresolved-plugin error overlay once per WebSocket connection\ninstead of on every HTTP request, resolve file: URLs with fileURLToPath\ninstead of a byte-offset slice, and stop overstating auto-discovery in\nthe docstring — it wires Tailwind scanning, while plugin code still\nactivates via a side-effect import in the host's main.tsx.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Polish the Vite plugin: overlay per connection, correct file: handling",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2cb35ef66fdcdebeceec4f78e8cd013ef8963cda",
          "body": "The brands list linked to /brands/$brandId but the plugin never\nregistered that route, so clicking a brand name landed on \"Page not\nfound\". The new detail page also serves as the reference for plugin\nroutes with path params — the dispatcher's params prop in action.\n\nAlso fixes the README's extension-point count (six, not five).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add a brand detail route to the example plugin",
          "author_name": "Damian Legawiec",
          "author_login": "damianlegawiec",
          "committed_at": "2026-07-12T07:55:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 2174,
      "latest_release_at": "2026-07-20T13:12:49Z",
      "latest_release_tag": "v5.4.4",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 52,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 6.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 100,
      "has_issue_template": true,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "spree",
          "exists": true,
          "license": "BSD-3-Clause",
          "keywords": [],
          "ecosystem": "rubygems",
          "matches_repo": true,
          "registry_url": "https://rubygems.org/gems/spree",
          "is_deprecated": false,
          "latest_version": "5.5.4",
          "repository_url": "https://github.com/spree/spree/tree/v5.5.4",
          "versions_count": 438,
          "total_downloads": 2840445,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2009-07-25T17:51:39Z",
          "latest_published_at": "2026-07-20T16:53:59.496000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1
        }
      ]
    },
    "popularity": {
      "forks": 5285,
      "stars": 15570,
      "watchers": 83,
      "fork_history": {
        "days": [
          {
            "date": "2021-06-11",
            "count": 1
          },
          {
            "date": "2021-06-12",
            "count": 1
          },
          {
            "date": "2021-06-15",
            "count": 1
          },
          {
            "date": "2021-06-16",
            "count": 1
          },
          {
            "date": "2021-06-17",
            "count": 2
          },
          {
            "date": "2021-06-18",
            "count": 3
          },
          {
            "date": "2021-06-21",
            "count": 1
          },
          {
            "date": "2021-06-25",
            "count": 1
          },
          {
            "date": "2021-06-26",
            "count": 1
          },
          {
            "date": "2021-06-28",
            "count": 1
          },
          {
            "date": "2021-06-29",
            "count": 1
          },
          {
            "date": "2021-06-30",
            "count": 1
          },
          {
            "date": "2021-07-03",
            "count": 1
          },
          {
            "date": "2021-07-04",
            "count": 1
          },
          {
            "date": "2021-07-08",
            "count": 1
          },
          {
            "date": "2021-07-10",
            "count": 1
          },
          {
            "date": "2021-07-12",
            "count": 1
          },
          {
            "date": "2021-07-13",
            "count": 6
          },
          {
            "date": "2021-07-14",
            "count": 1
          },
          {
            "date": "2021-07-19",
            "count": 1
          },
          {
            "date": "2021-07-22",
            "count": 3
          },
          {
            "date": "2021-07-23",
            "count": 2
          },
          {
            "date": "2021-07-24",
            "count": 2
          },
          {
            "date": "2021-07-25",
            "count": 1
          },
          {
            "date": "2021-07-26",
            "count": 1
          },
          {
            "date": "2021-07-27",
            "count": 1
          },
          {
            "date": "2021-07-28",
            "count": 3
          },
          {
            "date": "2021-07-29",
            "count": 4
          },
          {
            "date": "2021-08-01",
            "count": 1
          },
          {
            "date": "2021-08-02",
            "count": 1
          },
          {
            "date": "2021-08-05",
            "count": 1
          },
          {
            "date": "2021-08-07",
            "count": 1
          },
          {
            "date": "2021-08-09",
            "count": 2
          },
          {
            "date": "2021-08-11",
            "count": 1
          },
          {
            "date": "2021-08-12",
            "count": 1
          },
          {
            "date": "2021-08-13",
            "count": 1
          },
          {
            "date": "2021-08-14",
            "count": 1
          },
          {
            "date": "2021-08-15",
            "count": 2
          },
          {
            "date": "2021-08-18",
            "count": 2
          },
          {
            "date": "2021-08-20",
            "count": 1
          },
          {
            "date": "2021-08-23",
            "count": 1
          },
          {
            "date": "2021-08-24",
            "count": 1
          },
          {
            "date": "2021-08-26",
            "count": 3
          },
          {
            "date": "2021-08-27",
            "count": 2
          },
          {
            "date": "2021-08-28",
            "count": 1
          },
          {
            "date": "2021-08-30",
            "count": 2
          },
          {
            "date": "2021-08-31",
            "count": 1
          },
          {
            "date": "2021-09-05",
            "count": 1
          },
          {
            "date": "2021-09-06",
            "count": 2
          },
          {
            "date": "2021-09-07",
            "count": 3
          },
          {
            "date": "2021-09-08",
            "count": 1
          },
          {
            "date": "2021-09-09",
            "count": 2
          },
          {
            "date": "2021-09-13",
            "count": 1
          },
          {
            "date": "2021-09-14",
            "count": 2
          },
          {
            "date": "2021-09-15",
            "count": 2
          },
          {
            "date": "2021-09-21",
            "count": 1
          },
          {
            "date": "2021-09-22",
            "count": 3
          },
          {
            "date": "2021-09-26",
            "count": 1
          },
          {
            "date": "2021-09-27",
            "count": 2
          },
          {
            "date": "2021-10-01",
            "count": 1
          },
          {
            "date": "2021-10-07",
            "count": 1
          },
          {
            "date": "2021-10-09",
            "count": 1
          },
          {
            "date": "2021-10-11",
            "count": 2
          },
          {
            "date": "2021-10-14",
            "count": 1
          },
          {
            "date": "2021-10-15",
            "count": 3
          },
          {
            "date": "2021-10-20",
            "count": 1
          },
          {
            "date": "2021-10-25",
            "count": 2
          },
          {
            "date": "2021-10-27",
            "count": 1
          },
          {
            "date": "2021-10-29",
            "count": 1
          },
          {
            "date": "2021-10-30",
            "count": 1
          },
          {
            "date": "2021-11-01",
            "count": 2
          },
          {
            "date": "2021-11-03",
            "count": 2
          },
          {
            "date": "2021-11-04",
            "count": 1
          },
          {
            "date": "2021-11-09",
            "count": 2
          },
          {
            "date": "2021-11-12",
            "count": 1
          },
          {
            "date": "2021-11-13",
            "count": 2
          },
          {
            "date": "2021-11-15",
            "count": 3
          },
          {
            "date": "2021-11-18",
            "count": 1
          },
          {
            "date": "2021-11-19",
            "count": 1
          },
          {
            "date": "2021-11-21",
            "count": 1
          },
          {
            "date": "2021-11-23",
            "count": 1
          },
          {
            "date": "2021-11-25",
            "count": 2
          },
          {
            "date": "2021-11-26",
            "count": 2
          },
          {
            "date": "2021-12-01",
            "count": 2
          },
          {
            "date": "2021-12-09",
            "count": 1
          },
          {
            "date": "2021-12-15",
            "count": 1
          },
          {
            "date": "2021-12-16",
            "count": 1
          },
          {
            "date": "2021-12-17",
            "count": 1
          },
          {
            "date": "2021-12-29",
            "count": 2
          },
          {
            "date": "2022-01-04",
            "count": 1
          },
          {
            "date": "2022-01-05",
            "count": 1
          },
          {
            "date": "2022-01-10",
            "count": 3
          },
          {
            "date": "2022-01-11",
            "count": 1
          },
          {
            "date": "2022-01-14",
            "count": 1
          },
          {
            "date": "2022-01-16",
            "count": 1
          },
          {
            "date": "2022-01-23",
            "count": 1
          },
          {
            "date": "2022-01-24",
            "count": 1
          },
          {
            "date": "2022-01-30",
            "count": 1
          },
          {
            "date": "2022-01-31",
            "count": 3
          },
          {
            "date": "2022-02-02",
            "count": 1
          },
          {
            "date": "2022-02-04",
            "count": 1
          },
          {
            "date": "2022-02-06",
            "count": 2
          },
          {
            "date": "2022-02-07",
            "count": 2
          },
          {
            "date": "2022-02-10",
            "count": 1
          },
          {
            "date": "2022-02-11",
            "count": 1
          },
          {
            "date": "2022-02-19",
            "count": 2
          },
          {
            "date": "2022-02-20",
            "count": 2
          },
          {
            "date": "2022-02-23",
            "count": 3
          },
          {
            "date": "2022-02-24",
            "count": 2
          },
          {
            "date": "2022-03-02",
            "count": 1
          },
          {
            "date": "2022-03-04",
            "count": 1
          },
          {
            "date": "2022-03-07",
            "count": 1
          },
          {
            "date": "2022-03-08",
            "count": 1
          },
          {
            "date": "2022-03-09",
            "count": 1
          },
          {
            "date": "2022-03-11",
            "count": 1
          },
          {
            "date": "2022-03-12",
            "count": 1
          },
          {
            "date": "2022-03-18",
            "count": 2
          },
          {
            "date": "2022-03-24",
            "count": 1
          },
          {
            "date": "2022-03-25",
            "count": 2
          },
          {
            "date": "2022-03-27",
            "count": 1
          },
          {
            "date": "2022-04-02",
            "count": 1
          },
          {
            "date": "2022-04-03",
            "count": 1
          },
          {
            "date": "2022-04-04",
            "count": 2
          },
          {
            "date": "2022-04-05",
            "count": 2
          },
          {
            "date": "2022-04-11",
            "count": 2
          },
          {
            "date": "2022-04-15",
            "count": 1
          },
          {
            "date": "2022-04-16",
            "count": 1
          },
          {
            "date": "2022-04-19",
            "count": 1
          },
          {
            "date": "2022-04-28",
            "count": 2
          },
          {
            "date": "2022-04-29",
            "count": 2
          },
          {
            "date": "2022-05-01",
            "count": 1
          },
          {
            "date": "2022-05-03",
            "count": 2
          },
          {
            "date": "2022-05-05",
            "count": 1
          },
          {
            "date": "2022-05-06",
            "count": 1
          },
          {
            "date": "2022-05-08",
            "count": 1
          },
          {
            "date": "2022-05-09",
            "count": 2
          },
          {
            "date": "2022-05-13",
            "count": 1
          },
          {
            "date": "2022-05-14",
            "count": 1
          },
          {
            "date": "2022-05-16",
            "count": 1
          },
          {
            "date": "2022-05-17",
            "count": 1
          },
          {
            "date": "2022-05-18",
            "count": 1
          },
          {
            "date": "2022-05-19",
            "count": 1
          },
          {
            "date": "2022-05-22",
            "count": 1
          },
          {
            "date": "2022-05-25",
            "count": 1
          },
          {
            "date": "2022-05-27",
            "count": 1
          },
          {
            "date": "2022-06-03",
            "count": 1
          },
          {
            "date": "2022-06-04",
            "count": 1
          },
          {
            "date": "2022-06-07",
            "count": 1
          },
          {
            "date": "2022-06-12",
            "count": 1
          },
          {
            "date": "2022-06-13",
            "count": 1
          },
          {
            "date": "2022-06-14",
            "count": 1
          },
          {
            "date": "2022-06-15",
            "count": 1
          },
          {
            "date": "2022-06-17",
            "count": 2
          },
          {
            "date": "2022-06-23",
            "count": 1
          },
          {
            "date": "2022-07-01",
            "count": 1
          },
          {
            "date": "2022-07-03",
            "count": 1
          },
          {
            "date": "2022-07-07",
            "count": 1
          },
          {
            "date": "2022-07-13",
            "count": 1
          },
          {
            "date": "2022-07-14",
            "count": 1
          },
          {
            "date": "2022-07-18",
            "count": 1
          },
          {
            "date": "2022-07-20",
            "count": 1
          },
          {
            "date": "2022-07-21",
            "count": 2
          },
          {
            "date": "2022-07-22",
            "count": 1
          },
          {
            "date": "2022-07-26",
            "count": 1
          },
          {
            "date": "2022-08-05",
            "count": 1
          },
          {
            "date": "2022-08-14",
            "count": 1
          },
          {
            "date": "2022-08-15",
            "count": 1
          },
          {
            "date": "2022-08-17",
            "count": 1
          },
          {
            "date": "2022-08-18",
            "count": 1
          },
          {
            "date": "2022-08-20",
            "count": 1
          },
          {
            "date": "2022-08-22",
            "count": 1
          },
          {
            "date": "2022-08-23",
            "count": 2
          },
          {
            "date": "2022-08-24",
            "count": 2
          },
          {
            "date": "2022-08-26",
            "count": 1
          },
          {
            "date": "2022-08-28",
            "count": 1
          },
          {
            "date": "2022-08-29",
            "count": 1
          },
          {
            "date": "2022-09-06",
            "count": 1
          },
          {
            "date": "2022-09-07",
            "count": 1
          },
          {
            "date": "2022-09-18",
            "count": 1
          },
          {
            "date": "2022-09-22",
            "count": 1
          },
          {
            "date": "2022-09-24",
            "count": 1
          },
          {
            "date": "2022-09-27",
            "count": 1
          },
          {
            "date": "2022-09-28",
            "count": 1
          },
          {
            "date": "2022-10-02",
            "count": 1
          },
          {
            "date": "2022-10-04",
            "count": 2
          },
          {
            "date": "2022-10-06",
            "count": 1
          },
          {
            "date": "2022-10-16",
            "count": 1
          },
          {
            "date": "2022-10-20",
            "count": 1
          },
          {
            "date": "2022-10-27",
            "count": 1
          },
          {
            "date": "2022-10-28",
            "count": 1
          },
          {
            "date": "2022-10-31",
            "count": 1
          },
          {
            "date": "2022-11-02",
            "count": 1
          },
          {
            "date": "2022-11-03",
            "count": 2
          },
          {
            "date": "2022-11-04",
            "count": 1
          },
          {
            "date": "2022-11-13",
            "count": 1
          },
          {
            "date": "2022-11-15",
            "count": 1
          },
          {
            "date": "2022-11-22",
            "count": 1
          },
          {
            "date": "2022-11-28",
            "count": 3
          },
          {
            "date": "2022-12-03",
            "count": 1
          },
          {
            "date": "2022-12-06",
            "count": 1
          },
          {
            "date": "2022-12-07",
            "count": 1
          },
          {
            "date": "2022-12-08",
            "count": 2
          },
          {
            "date": "2022-12-15",
            "count": 1
          },
          {
            "date": "2022-12-16",
            "count": 1
          },
          {
            "date": "2022-12-23",
            "count": 1
          },
          {
            "date": "2022-12-29",
            "count": 1
          },
          {
            "date": "2023-01-05",
            "count": 1
          },
          {
            "date": "2023-01-11",
            "count": 1
          },
          {
            "date": "2023-01-12",
            "count": 1
          },
          {
            "date": "2023-01-13",
            "count": 1
          },
          {
            "date": "2023-01-23",
            "count": 1
          },
          {
            "date": "2023-01-26",
            "count": 1
          },
          {
            "date": "2023-01-27",
            "count": 1
          },
          {
            "date": "2023-02-01",
            "count": 1
          },
          {
            "date": "2023-02-04",
            "count": 1
          },
          {
            "date": "2023-02-06",
            "count": 2
          },
          {
            "date": "2023-02-13",
            "count": 1
          },
          {
            "date": "2023-02-14",
            "count": 1
          },
          {
            "date": "2023-02-16",
            "count": 1
          },
          {
            "date": "2023-02-17",
            "count": 1
          },
          {
            "date": "2023-02-22",
            "count": 1
          },
          {
            "date": "2023-02-24",
            "count": 1
          },
          {
            "date": "2023-02-25",
            "count": 1
          },
          {
            "date": "2023-03-02",
            "count": 1
          },
          {
            "date": "2023-03-03",
            "count": 1
          },
          {
            "date": "2023-03-05",
            "count": 1
          },
          {
            "date": "2023-03-07",
            "count": 1
          },
          {
            "date": "2023-03-09",
            "count": 1
          },
          {
            "date": "2023-03-13",
            "count": 1
          },
          {
            "date": "2023-03-14",
            "count": 1
          },
          {
            "date": "2023-03-16",
            "count": 1
          },
          {
            "date": "2023-03-23",
            "count": 1
          },
          {
            "date": "2023-03-24",
            "count": 1
          },
          {
            "date": "2023-03-28",
            "count": 2
          },
          {
            "date": "2023-04-04",
            "count": 1
          },
          {
            "date": "2023-04-05",
            "count": 1
          },
          {
            "date": "2023-04-10",
            "count": 1
          },
          {
            "date": "2023-04-13",
            "count": 1
          },
          {
            "date": "2023-04-20",
            "count": 1
          },
          {
            "date": "2023-04-21",
            "count": 1
          },
          {
            "date": "2023-04-24",
            "count": 1
          },
          {
            "date": "2023-04-26",
            "count": 1
          },
          {
            "date": "2023-04-27",
            "count": 1
          },
          {
            "date": "2023-04-30",
            "count": 2
          },
          {
            "date": "2023-05-01",
            "count": 1
          },
          {
            "date": "2023-05-07",
            "count": 1
          },
          {
            "date": "2023-05-08",
            "count": 1
          },
          {
            "date": "2023-05-10",
            "count": 2
          },
          {
            "date": "2023-05-11",
            "count": 1
          },
          {
            "date": "2023-05-12",
            "count": 1
          },
          {
            "date": "2023-05-18",
            "count": 1
          },
          {
            "date": "2023-05-19",
            "count": 1
          },
          {
            "date": "2023-05-26",
            "count": 1
          },
          {
            "date": "2023-05-27",
            "count": 1
          },
          {
            "date": "2023-05-29",
            "count": 1
          },
          {
            "date": "2023-06-02",
            "count": 1
          },
          {
            "date": "2023-06-05",
            "count": 1
          },
          {
            "date": "2023-06-08",
            "count": 1
          },
          {
            "date": "2023-06-11",
            "count": 1
          },
          {
            "date": "2023-06-17",
            "count": 1
          },
          {
            "date": "2023-06-28",
            "count": 1
          },
          {
            "date": "2023-06-29",
            "count": 1
          },
          {
            "date": "2023-06-30",
            "count": 1
          },
          {
            "date": "2023-07-02",
            "count": 1
          },
          {
            "date": "2023-07-04",
            "count": 1
          },
          {
            "date": "2023-07-08",
            "count": 1
          },
          {
            "date": "2023-07-10",
            "count": 1
          },
          {
            "date": "2023-07-17",
            "count": 1
          },
          {
            "date": "2023-07-18",
            "count": 1
          },
          {
            "date": "2023-07-20",
            "count": 1
          },
          {
            "date": "2023-07-21",
            "count": 1
          },
          {
            "date": "2023-07-22",
            "count": 1
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-08-03",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-10",
            "count": 2
          },
          {
            "date": "2023-08-11",
            "count": 1
          },
          {
            "date": "2023-08-12",
            "count": 1
          },
          {
            "date": "2023-08-15",
            "count": 1
          },
          {
            "date": "2023-08-22",
            "count": 1
          },
          {
            "date": "2023-08-26",
            "count": 1
          },
          {
            "date": "2023-09-01",
            "count": 1
          },
          {
            "date": "2023-09-13",
            "count": 1
          },
          {
            "date": "2023-09-14",
            "count": 1
          },
          {
            "date": "2023-09-15",
            "count": 1
          },
          {
            "date": "2023-09-24",
            "count": 1
          },
          {
            "date": "2023-09-25",
            "count": 1
          },
          {
            "date": "2023-10-06",
            "count": 2
          },
          {
            "date": "2023-10-08",
            "count": 1
          },
          {
            "date": "2023-10-10",
            "count": 1
          },
          {
            "date": "2023-10-11",
            "count": 1
          },
          {
            "date": "2023-10-12",
            "count": 1
          },
          {
            "date": "2023-10-15",
            "count": 1
          },
          {
            "date": "2023-10-17",
            "count": 1
          },
          {
            "date": "2023-10-18",
            "count": 1
          },
          {
            "date": "2023-10-23",
            "count": 1
          },
          {
            "date": "2023-10-24",
            "count": 1
          },
          {
            "date": "2023-10-27",
            "count": 1
          },
          {
            "date": "2023-10-28",
            "count": 1
          },
          {
            "date": "2023-11-05",
            "count": 1
          },
          {
            "date": "2023-11-12",
            "count": 1
          },
          {
            "date": "2023-11-14",
            "count": 1
          },
          {
            "date": "2023-11-19",
            "count": 1
          },
          {
            "date": "2023-11-22",
            "count": 1
          },
          {
            "date": "2023-11-25",
            "count": 1
          },
          {
            "date": "2023-12-09",
            "count": 1
          },
          {
            "date": "2023-12-13",
            "count": 1
          },
          {
            "date": "2023-12-28",
            "count": 1
          },
          {
            "date": "2024-01-01",
            "count": 1
          },
          {
            "date": "2024-01-02",
            "count": 2
          },
          {
            "date": "2024-01-03",
            "count": 1
          },
          {
            "date": "2024-01-04",
            "count": 1
          },
          {
            "date": "2024-01-07",
            "count": 1
          },
          {
            "date": "2024-01-10",
            "count": 2
          },
          {
            "date": "2024-01-12",
            "count": 1
          },
          {
            "date": "2024-01-13",
            "count": 1
          },
          {
            "date": "2024-01-16",
            "count": 1
          },
          {
            "date": "2024-01-17",
            "count": 1
          },
          {
            "date": "2024-01-19",
            "count": 1
          },
          {
            "date": "2024-01-22",
            "count": 1
          },
          {
            "date": "2024-01-24",
            "count": 2
          },
          {
            "date": "2024-01-25",
            "count": 1
          },
          {
            "date": "2024-02-05",
            "count": 1
          },
          {
            "date": "2024-02-23",
            "count": 1
          },
          {
            "date": "2024-02-29",
            "count": 1
          },
          {
            "date": "2024-03-05",
            "count": 1
          },
          {
            "date": "2024-03-06",
            "count": 2
          },
          {
            "date": "2024-03-07",
            "count": 1
          },
          {
            "date": "2024-03-12",
            "count": 1
          },
          {
            "date": "2024-03-17",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-03-20",
            "count": 1
          },
          {
            "date": "2024-03-22",
            "count": 1
          },
          {
            "date": "2024-03-23",
            "count": 1
          },
          {
            "date": "2024-03-25",
            "count": 1
          },
          {
            "date": "2024-03-26",
            "count": 1
          },
          {
            "date": "2024-04-01",
            "count": 1
          },
          {
            "date": "2024-04-11",
            "count": 1
          },
          {
            "date": "2024-04-12",
            "count": 1
          },
          {
            "date": "2024-04-19",
            "count": 1
          },
          {
            "date": "2024-04-21",
            "count": 1
          },
          {
            "date": "2024-04-23",
            "count": 1
          },
          {
            "date": "2024-04-24",
            "count": 2
          },
          {
            "date": "2024-04-27",
            "count": 1
          },
          {
            "date": "2024-04-29",
            "count": 3
          },
          {
            "date": "2024-05-02",
            "count": 1
          },
          {
            "date": "2024-05-03",
            "count": 1
          },
          {
            "date": "2024-05-04",
            "count": 3
          },
          {
            "date": "2024-05-06",
            "count": 1
          },
          {
            "date": "2024-05-10",
            "count": 1
          },
          {
            "date": "2024-05-13",
            "count": 1
          },
          {
            "date": "2024-05-19",
            "count": 1
          },
          {
            "date": "2024-05-21",
            "count": 1
          },
          {
            "date": "2024-05-27",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-05-31",
            "count": 1
          },
          {
            "date": "2024-06-10",
            "count": 1
          },
          {
            "date": "2024-06-12",
            "count": 1
          },
          {
            "date": "2024-06-17",
            "count": 1
          },
          {
            "date": "2024-06-21",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 1
          },
          {
            "date": "2024-07-01",
            "count": 1
          },
          {
            "date": "2024-07-06",
            "count": 1
          },
          {
            "date": "2024-07-11",
            "count": 1
          },
          {
            "date": "2024-07-13",
            "count": 1
          },
          {
            "date": "2024-07-17",
            "count": 1
          },
          {
            "date": "2024-07-18",
            "count": 1
          },
          {
            "date": "2024-07-20",
            "count": 1
          },
          {
            "date": "2024-07-22",
            "count": 1
          },
          {
            "date": "2024-08-05",
            "count": 1
          },
          {
            "date": "2024-08-08",
            "count": 1
          },
          {
            "date": "2024-08-15",
            "count": 1
          },
          {
            "date": "2024-08-17",
            "count": 1
          },
          {
            "date": "2024-08-21",
            "count": 1
          },
          {
            "date": "2024-08-31",
            "count": 1
          },
          {
            "date": "2024-09-02",
            "count": 1
          },
          {
            "date": "2024-09-12",
            "count": 1
          },
          {
            "date": "2024-09-14",
            "count": 1
          },
          {
            "date": "2024-09-15",
            "count": 2
          },
          {
            "date": "2024-10-03",
            "count": 1
          },
          {
            "date": "2024-10-04",
            "count": 1
          },
          {
            "date": "2024-10-08",
            "count": 1
          },
          {
            "date": "2024-10-11",
            "count": 1
          },
          {
            "date": "2024-10-14",
            "count": 1
          },
          {
            "date": "2024-10-16",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-10-19",
            "count": 1
          },
          {
            "date": "2024-10-21",
            "count": 1
          },
          {
            "date": "2024-10-23",
            "count": 6
          },
          {
            "date": "2024-10-24",
            "count": 1
          },
          {
            "date": "2024-10-25",
            "count": 1
          },
          {
            "date": "2024-10-26",
            "count": 1
          },
          {
            "date": "2024-10-29",
            "count": 1
          },
          {
            "date": "2024-10-31",
            "count": 2
          },
          {
            "date": "2024-11-01",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 1
          },
          {
            "date": "2024-11-03",
            "count": 1
          },
          {
            "date": "2024-11-04",
            "count": 1
          },
          {
            "date": "2024-11-08",
            "count": 1
          },
          {
            "date": "2024-11-12",
            "count": 2
          },
          {
            "date": "2024-11-15",
            "count": 1
          },
          {
            "date": "2024-11-25",
            "count": 1
          },
          {
            "date": "2024-11-27",
            "count": 1
          },
          {
            "date": "2024-12-05",
            "count": 1
          },
          {
            "date": "2024-12-07",
            "count": 1
          },
          {
            "date": "2024-12-10",
            "count": 3
          },
          {
            "date": "2024-12-12",
            "count": 1
          },
          {
            "date": "2024-12-19",
            "count": 1
          },
          {
            "date": "2024-12-22",
            "count": 2
          },
          {
            "date": "2024-12-24",
            "count": 1
          },
          {
            "date": "2024-12-26",
            "count": 1
          },
          {
            "date": "2024-12-30",
            "count": 1
          },
          {
            "date": "2025-01-03",
            "count": 1
          },
          {
            "date": "2025-01-07",
            "count": 1
          },
          {
            "date": "2025-01-11",
            "count": 1
          },
          {
            "date": "2025-01-12",
            "count": 1
          },
          {
            "date": "2025-01-14",
            "count": 6
          },
          {
            "date": "2025-01-15",
            "count": 4
          },
          {
            "date": "2025-01-16",
            "count": 10
          },
          {
            "date": "2025-01-17",
            "count": 10
          },
          {
            "date": "2025-01-18",
            "count": 4
          },
          {
            "date": "2025-01-19",
            "count": 9
          },
          {
            "date": "2025-01-20",
            "count": 4
          },
          {
            "date": "2025-01-21",
            "count": 3
          },
          {
            "date": "2025-01-22",
            "count": 2
          },
          {
            "date": "2025-01-23",
            "count": 1
          },
          {
            "date": "2025-01-24",
            "count": 2
          },
          {
            "date": "2025-01-25",
            "count": 1
          },
          {
            "date": "2025-01-26",
            "count": 2
          },
          {
            "date": "2025-01-29",
            "count": 2
          },
          {
            "date": "2025-01-30",
            "count": 1
          },
          {
            "date": "2025-02-02",
            "count": 2
          },
          {
            "date": "2025-02-03",
            "count": 1
          },
          {
            "date": "2025-02-04",
            "count": 1
          },
          {
            "date": "2025-02-06",
            "count": 1
          },
          {
            "date": "2025-02-07",
            "count": 1
          },
          {
            "date": "2025-02-09",
            "count": 1
          },
          {
            "date": "2025-02-11",
            "count": 2
          },
          {
            "date": "2025-02-12",
            "count": 3
          },
          {
            "date": "2025-02-14",
            "count": 2
          },
          {
            "date": "2025-02-15",
            "count": 3
          },
          {
            "date": "2025-02-16",
            "count": 2
          },
          {
            "date": "2025-02-17",
            "count": 3
          },
          {
            "date": "2025-02-18",
            "count": 1
          },
          {
            "date": "2025-02-19",
            "count": 2
          },
          {
            "date": "2025-02-20",
            "count": 1
          },
          {
            "date": "2025-02-21",
            "count": 2
          },
          {
            "date": "2025-02-22",
            "count": 1
          },
          {
            "date": "2025-02-25",
            "count": 2
          },
          {
            "date": "2025-02-26",
            "count": 1
          },
          {
            "date": "2025-02-27",
            "count": 1
          },
          {
            "date": "2025-02-28",
            "count": 1
          },
          {
            "date": "2025-03-01",
            "count": 1
          },
          {
            "date": "2025-03-03",
            "count": 1
          },
          {
            "date": "2025-03-06",
            "count": 1
          },
          {
            "date": "2025-03-07",
            "count": 3
          },
          {
            "date": "2025-03-14",
            "count": 2
          },
          {
            "date": "2025-03-17",
            "count": 2
          },
          {
            "date": "2025-03-18",
            "count": 2
          },
          {
            "date": "2025-03-19",
            "count": 1
          },
          {
            "date": "2025-03-21",
            "count": 1
          },
          {
            "date": "2025-03-24",
            "count": 1
          },
          {
            "date": "2025-03-25",
            "count": 1
          },
          {
            "date": "2025-04-01",
            "count": 1
          },
          {
            "date": "2025-04-02",
            "count": 1
          },
          {
            "date": "2025-04-03",
            "count": 2
          },
          {
            "date": "2025-04-04",
            "count": 1
          },
          {
            "date": "2025-04-05",
            "count": 2
          },
          {
            "date": "2025-04-06",
            "count": 1
          },
          {
            "date": "2025-04-07",
            "count": 1
          },
          {
            "date": "2025-04-10",
            "count": 2
          },
          {
            "date": "2025-04-12",
            "count": 2
          },
          {
            "date": "2025-04-13",
            "count": 2
          },
          {
            "date": "2025-04-15",
            "count": 1
          },
          {
            "date": "2025-04-17",
            "count": 1
          },
          {
            "date": "2025-04-21",
            "count": 1
          },
          {
            "date": "2025-04-22",
            "count": 2
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-04-24",
            "count": 1
          },
          {
            "date": "2025-04-25",
            "count": 1
          },
          {
            "date": "2025-04-29",
            "count": 1
          },
          {
            "date": "2025-05-07",
            "count": 4
          },
          {
            "date": "2025-05-08",
            "count": 2
          },
          {
            "date": "2025-05-09",
            "count": 2
          },
          {
            "date": "2025-05-10",
            "count": 1
          },
          {
            "date": "2025-05-12",
            "count": 1
          },
          {
            "date": "2025-05-13",
            "count": 1
          },
          {
            "date": "2025-05-14",
            "count": 1
          },
          {
            "date": "2025-05-16",
            "count": 1
          },
          {
            "date": "2025-05-17",
            "count": 1
          },
          {
            "date": "2025-05-20",
            "count": 1
          },
          {
            "date": "2025-05-21",
            "count": 1
          },
          {
            "date": "2025-05-26",
            "count": 1
          },
          {
            "date": "2025-05-27",
            "count": 1
          },
          {
            "date": "2025-05-29",
            "count": 1
          },
          {
            "date": "2025-05-30",
            "count": 1
          },
          {
            "date": "2025-05-31",
            "count": 1
          },
          {
            "date": "2025-06-02",
            "count": 2
          },
          {
            "date": "2025-06-03",
            "count": 2
          },
          {
            "date": "2025-06-04",
            "count": 1
          },
          {
            "date": "2025-06-06",
            "count": 1
          },
          {
            "date": "2025-06-07",
            "count": 1
          },
          {
            "date": "2025-06-09",
            "count": 1
          },
          {
            "date": "2025-06-12",
            "count": 1
          },
          {
            "date": "2025-06-13",
            "count": 2
          },
          {
            "date": "2025-06-14",
            "count": 2
          },
          {
            "date": "2025-06-19",
            "count": 1
          },
          {
            "date": "2025-06-21",
            "count": 1
          },
          {
            "date": "2025-06-28",
            "count": 1
          },
          {
            "date": "2025-06-30",
            "count": 1
          },
          {
            "date": "2025-07-01",
            "count": 2
          },
          {
            "date": "2025-07-03",
            "count": 1
          },
          {
            "date": "2025-07-05",
            "count": 1
          },
          {
            "date": "2025-07-07",
            "count": 1
          },
          {
            "date": "2025-07-08",
            "count": 1
          },
          {
            "date": "2025-07-10",
            "count": 1
          },
          {
            "date": "2025-07-11",
            "count": 2
          },
          {
            "date": "2025-07-12",
            "count": 1
          },
          {
            "date": "2025-07-14",
            "count": 2
          },
          {
            "date": "2025-07-15",
            "count": 2
          },
          {
            "date": "2025-07-16",
            "count": 1
          },
          {
            "date": "2025-07-21",
            "count": 2
          },
          {
            "date": "2025-07-24",
            "count": 3
          },
          {
            "date": "2025-07-27",
            "count": 2
          },
          {
            "date": "2025-08-02",
            "count": 1
          },
          {
            "date": "2025-08-04",
            "count": 1
          },
          {
            "date": "2025-08-05",
            "count": 1
          },
          {
            "date": "2025-08-07",
            "count": 1
          },
          {
            "date": "2025-08-08",
            "count": 1
          },
          {
            "date": "2025-08-11",
            "count": 2
          },
          {
            "date": "2025-08-15",
            "count": 1
          },
          {
            "date": "2025-08-16",
            "count": 1
          },
          {
            "date": "2025-08-17",
            "count": 2
          },
          {
            "date": "2025-08-18",
            "count": 1
          },
          {
            "date": "2025-08-19",
            "count": 1
          },
          {
            "date": "2025-08-21",
            "count": 2
          },
          {
            "date": "2025-08-22",
            "count": 1
          },
          {
            "date": "2025-08-24",
            "count": 2
          },
          {
            "date": "2025-08-29",
            "count": 1
          },
          {
            "date": "2025-09-03",
            "count": 5
          },
          {
            "date": "2025-09-04",
            "count": 3
          },
          {
            "date": "2025-09-06",
            "count": 1
          },
          {
            "date": "2025-09-07",
            "count": 1
          },
          {
            "date": "2025-09-09",
            "count": 3
          },
          {
            "date": "2025-09-11",
            "count": 1
          },
          {
            "date": "2025-09-13",
            "count": 1
          },
          {
            "date": "2025-09-14",
            "count": 1
          },
          {
            "date": "2025-09-15",
            "count": 2
          },
          {
            "date": "2025-09-17",
            "count": 1
          },
          {
            "date": "2025-09-18",
            "count": 2
          },
          {
            "date": "2025-09-20",
            "count": 2
          },
          {
            "date": "2025-09-21",
            "count": 2
          },
          {
            "date": "2025-09-22",
            "count": 1
          },
          {
            "date": "2025-09-24",
            "count": 1
          },
          {
            "date": "2025-09-27",
            "count": 2
          },
          {
            "date": "2025-09-30",
            "count": 1
          },
          {
            "date": "2025-10-02",
            "count": 2
          },
          {
            "date": "2025-10-04",
            "count": 3
          },
          {
            "date": "2025-10-06",
            "count": 1
          },
          {
            "date": "2025-10-07",
            "count": 1
          },
          {
            "date": "2025-10-08",
            "count": 1
          },
          {
            "date": "2025-10-09",
            "count": 15
          },
          {
            "date": "2025-10-10",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 1
          },
          {
            "date": "2025-10-14",
            "count": 1
          },
          {
            "date": "2025-10-24",
            "count": 2
          },
          {
            "date": "2025-10-27",
            "count": 2
          },
          {
            "date": "2025-10-28",
            "count": 1
          },
          {
            "date": "2025-10-29",
            "count": 6
          },
          {
            "date": "2025-10-30",
            "count": 1
          },
          {
            "date": "2025-11-04",
            "count": 3
          },
          {
            "date": "2025-11-05",
            "count": 1
          },
          {
            "date": "2025-11-07",
            "count": 1
          },
          {
            "date": "2025-11-10",
            "count": 1
          },
          {
            "date": "2025-11-13",
            "count": 2
          },
          {
            "date": "2025-11-18",
            "count": 2
          },
          {
            "date": "2025-11-20",
            "count": 1
          },
          {
            "date": "2025-11-21",
            "count": 1
          },
          {
            "date": "2025-11-22",
            "count": 2
          },
          {
            "date": "2025-11-23",
            "count": 2
          },
          {
            "date": "2025-11-25",
            "count": 1
          },
          {
            "date": "2025-11-30",
            "count": 1
          },
          {
            "date": "2025-12-02",
            "count": 2
          },
          {
            "date": "2025-12-03",
            "count": 2
          },
          {
            "date": "2025-12-09",
            "count": 1
          },
          {
            "date": "2025-12-11",
            "count": 2
          },
          {
            "date": "2025-12-12",
            "count": 1
          },
          {
            "date": "2025-12-15",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 2
          },
          {
            "date": "2025-12-19",
            "count": 1
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2025-12-30",
            "count": 1
          },
          {
            "date": "2026-01-06",
            "count": 1
          },
          {
            "date": "2026-01-07",
            "count": 3
          },
          {
            "date": "2026-01-08",
            "count": 3
          },
          {
            "date": "2026-01-13",
            "count": 1
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-01-19",
            "count": 2
          },
          {
            "date": "2026-01-21",
            "count": 2
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 2
          },
          {
            "date": "2026-01-26",
            "count": 1
          },
          {
            "date": "2026-01-27",
            "count": 1
          },
          {
            "date": "2026-01-28",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 1
          },
          {
            "date": "2026-02-01",
            "count": 1
          },
          {
            "date": "2026-02-02",
            "count": 1
          },
          {
            "date": "2026-02-04",
            "count": 2
          },
          {
            "date": "2026-02-05",
            "count": 3
          },
          {
            "date": "2026-02-06",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-02-14",
            "count": 1
          },
          {
            "date": "2026-02-15",
            "count": 1
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-20",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-02-26",
            "count": 3
          },
          {
            "date": "2026-02-28",
            "count": 1
          },
          {
            "date": "2026-03-01",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 1
          },
          {
            "date": "2026-03-04",
            "count": 3
          },
          {
            "date": "2026-03-06",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-10",
            "count": 2
          },
          {
            "date": "2026-03-11",
            "count": 1
          },
          {
            "date": "2026-03-12",
            "count": 1
          },
          {
            "date": "2026-03-14",
            "count": 1
          },
          {
            "date": "2026-03-16",
            "count": 3
          },
          {
            "date": "2026-03-18",
            "count": 1
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 3
          },
          {
            "date": "2026-03-25",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 2
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 1
          },
          {
            "date": "2026-04-04",
            "count": 1
          },
          {
            "date": "2026-04-08",
            "count": 1
          },
          {
            "date": "2026-04-09",
            "count": 1
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 2
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-17",
            "count": 1
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-04-23",
            "count": 3
          },
          {
            "date": "2026-04-24",
            "count": 2
          },
          {
            "date": "2026-04-25",
            "count": 3
          },
          {
            "date": "2026-04-26",
            "count": 4
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 2
          },
          {
            "date": "2026-04-30",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 1
          },
          {
            "date": "2026-05-11",
            "count": 1
          },
          {
            "date": "2026-05-14",
            "count": 2
          },
          {
            "date": "2026-05-16",
            "count": 2
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 2
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-20",
            "count": 2
          },
          {
            "date": "2026-05-21",
            "count": 2
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-24",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 2
          },
          {
            "date": "2026-05-28",
            "count": 2
          },
          {
            "date": "2026-05-30",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 3
          },
          {
            "date": "2026-06-04",
            "count": 1
          },
          {
            "date": "2026-06-06",
            "count": 1
          },
          {
            "date": "2026-06-07",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 3
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-19",
            "count": 1
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 2
          },
          {
            "date": "2026-06-23",
            "count": 2
          },
          {
            "date": "2026-06-25",
            "count": 3
          },
          {
            "date": "2026-06-28",
            "count": 2
          },
          {
            "date": "2026-06-30",
            "count": 3
          },
          {
            "date": "2026-07-02",
            "count": 4
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 2
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 3
          },
          {
            "date": "2026-07-14",
            "count": 2
          },
          {
            "date": "2026-07-15",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 2
          },
          {
            "date": "2026-07-18",
            "count": 2
          },
          {
            "date": "2026-07-20",
            "count": 1
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_forks": 5285
      },
      "star_history": {
        "days": [
          {
            "date": "2025-07-18",
            "count": 2
          },
          {
            "date": "2025-07-20",
            "count": 3
          },
          {
            "date": "2025-07-21",
            "count": 2
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-07-24",
            "count": 2
          },
          {
            "date": "2025-07-25",
            "count": 2
          },
          {
            "date": "2025-07-26",
            "count": 2
          },
          {
            "date": "2025-07-28",
            "count": 6
          },
          {
            "date": "2025-07-29",
            "count": 2
          },
          {
            "date": "2025-07-30",
            "count": 1
          },
          {
            "date": "2025-07-31",
            "count": 3
          },
          {
            "date": "2025-08-01",
            "count": 2
          },
          {
            "date": "2025-08-02",
            "count": 5
          },
          {
            "date": "2025-08-04",
            "count": 10
          },
          {
            "date": "2025-08-05",
            "count": 4
          },
          {
            "date": "2025-08-06",
            "count": 2
          },
          {
            "date": "2025-08-07",
            "count": 7
          },
          {
            "date": "2025-08-08",
            "count": 2
          },
          {
            "date": "2025-08-09",
            "count": 3
          },
          {
            "date": "2025-08-10",
            "count": 3
          },
          {
            "date": "2025-08-11",
            "count": 5
          },
          {
            "date": "2025-08-12",
            "count": 1
          },
          {
            "date": "2025-08-13",
            "count": 2
          },
          {
            "date": "2025-08-14",
            "count": 10
          },
          {
            "date": "2025-08-15",
            "count": 1
          },
          {
            "date": "2025-08-16",
            "count": 3
          },
          {
            "date": "2025-08-17",
            "count": 5
          },
          {
            "date": "2025-08-18",
            "count": 4
          },
          {
            "date": "2025-08-19",
            "count": 5
          },
          {
            "date": "2025-08-20",
            "count": 1
          },
          {
            "date": "2025-08-21",
            "count": 3
          },
          {
            "date": "2025-08-22",
            "count": 2
          },
          {
            "date": "2025-08-23",
            "count": 4
          },
          {
            "date": "2025-08-24",
            "count": 3
          },
          {
            "date": "2025-08-25",
            "count": 2
          },
          {
            "date": "2025-08-26",
            "count": 3
          },
          {
            "date": "2025-08-29",
            "count": 3
          },
          {
            "date": "2025-08-31",
            "count": 5
          },
          {
            "date": "2025-09-01",
            "count": 5
          },
          {
            "date": "2025-09-02",
            "count": 3
          },
          {
            "date": "2025-09-03",
            "count": 17
          },
          {
            "date": "2025-09-04",
            "count": 9
          },
          {
            "date": "2025-09-05",
            "count": 7
          },
          {
            "date": "2025-09-06",
            "count": 5
          },
          {
            "date": "2025-09-07",
            "count": 2
          },
          {
            "date": "2025-09-09",
            "count": 4
          },
          {
            "date": "2025-09-10",
            "count": 2
          },
          {
            "date": "2025-09-11",
            "count": 4
          },
          {
            "date": "2025-09-12",
            "count": 1
          },
          {
            "date": "2025-09-13",
            "count": 1
          },
          {
            "date": "2025-09-14",
            "count": 2
          },
          {
            "date": "2025-09-15",
            "count": 5
          },
          {
            "date": "2025-09-16",
            "count": 1
          },
          {
            "date": "2025-09-17",
            "count": 3
          },
          {
            "date": "2025-09-18",
            "count": 4
          },
          {
            "date": "2025-09-19",
            "count": 4
          },
          {
            "date": "2025-09-20",
            "count": 6
          },
          {
            "date": "2025-09-21",
            "count": 3
          },
          {
            "date": "2025-09-22",
            "count": 1
          },
          {
            "date": "2025-09-23",
            "count": 1
          },
          {
            "date": "2025-09-24",
            "count": 1
          },
          {
            "date": "2025-09-25",
            "count": 1
          },
          {
            "date": "2025-09-26",
            "count": 2
          },
          {
            "date": "2025-09-27",
            "count": 3
          },
          {
            "date": "2025-09-28",
            "count": 3
          },
          {
            "date": "2025-09-29",
            "count": 2
          },
          {
            "date": "2025-09-30",
            "count": 1
          },
          {
            "date": "2025-10-01",
            "count": 2
          },
          {
            "date": "2025-10-02",
            "count": 3
          },
          {
            "date": "2025-10-04",
            "count": 2
          },
          {
            "date": "2025-10-05",
            "count": 2
          },
          {
            "date": "2025-10-06",
            "count": 7
          },
          {
            "date": "2025-10-07",
            "count": 1
          },
          {
            "date": "2025-10-08",
            "count": 4
          },
          {
            "date": "2025-10-09",
            "count": 5
          },
          {
            "date": "2025-10-10",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 2
          },
          {
            "date": "2025-10-12",
            "count": 1
          },
          {
            "date": "2025-10-13",
            "count": 3
          },
          {
            "date": "2025-10-14",
            "count": 1
          },
          {
            "date": "2025-10-15",
            "count": 2
          },
          {
            "date": "2025-10-16",
            "count": 1
          },
          {
            "date": "2025-10-17",
            "count": 2
          },
          {
            "date": "2025-10-18",
            "count": 4
          },
          {
            "date": "2025-10-19",
            "count": 5
          },
          {
            "date": "2025-10-20",
            "count": 2
          },
          {
            "date": "2025-10-21",
            "count": 5
          },
          {
            "date": "2025-10-22",
            "count": 2
          },
          {
            "date": "2025-10-23",
            "count": 2
          },
          {
            "date": "2025-10-24",
            "count": 3
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-10-26",
            "count": 3
          },
          {
            "date": "2025-10-27",
            "count": 1
          },
          {
            "date": "2025-10-28",
            "count": 2
          },
          {
            "date": "2025-10-29",
            "count": 4
          },
          {
            "date": "2025-10-30",
            "count": 4
          },
          {
            "date": "2025-10-31",
            "count": 3
          },
          {
            "date": "2025-11-01",
            "count": 2
          },
          {
            "date": "2025-11-03",
            "count": 3
          },
          {
            "date": "2025-11-04",
            "count": 2
          },
          {
            "date": "2025-11-06",
            "count": 3
          },
          {
            "date": "2025-11-07",
            "count": 3
          },
          {
            "date": "2025-11-08",
            "count": 1
          },
          {
            "date": "2025-11-11",
            "count": 4
          },
          {
            "date": "2025-11-12",
            "count": 1
          },
          {
            "date": "2025-11-13",
            "count": 1
          },
          {
            "date": "2025-11-14",
            "count": 3
          },
          {
            "date": "2025-11-15",
            "count": 5
          },
          {
            "date": "2025-11-16",
            "count": 3
          },
          {
            "date": "2025-11-17",
            "count": 2
          },
          {
            "date": "2025-11-19",
            "count": 2
          },
          {
            "date": "2025-11-20",
            "count": 4
          },
          {
            "date": "2025-11-22",
            "count": 6
          },
          {
            "date": "2025-11-24",
            "count": 1
          },
          {
            "date": "2025-11-25",
            "count": 1
          },
          {
            "date": "2025-11-26",
            "count": 1
          },
          {
            "date": "2025-11-28",
            "count": 4
          },
          {
            "date": "2025-11-30",
            "count": 3
          },
          {
            "date": "2025-12-01",
            "count": 2
          },
          {
            "date": "2025-12-02",
            "count": 2
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-04",
            "count": 3
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-06",
            "count": 1
          },
          {
            "date": "2025-12-07",
            "count": 3
          },
          {
            "date": "2025-12-08",
            "count": 8
          },
          {
            "date": "2025-12-09",
            "count": 3
          },
          {
            "date": "2025-12-10",
            "count": 2
          },
          {
            "date": "2025-12-11",
            "count": 4
          },
          {
            "date": "2025-12-12",
            "count": 2
          },
          {
            "date": "2025-12-13",
            "count": 1
          },
          {
            "date": "2025-12-16",
            "count": 4
          },
          {
            "date": "2025-12-17",
            "count": 3
          },
          {
            "date": "2025-12-18",
            "count": 2
          },
          {
            "date": "2025-12-19",
            "count": 1
          },
          {
            "date": "2025-12-20",
            "count": 1
          },
          {
            "date": "2025-12-21",
            "count": 3
          },
          {
            "date": "2025-12-22",
            "count": 2
          },
          {
            "date": "2025-12-23",
            "count": 4
          },
          {
            "date": "2025-12-24",
            "count": 2
          },
          {
            "date": "2025-12-25",
            "count": 3
          },
          {
            "date": "2025-12-26",
            "count": 3
          },
          {
            "date": "2025-12-27",
            "count": 2
          },
          {
            "date": "2025-12-28",
            "count": 2
          },
          {
            "date": "2025-12-29",
            "count": 1
          },
          {
            "date": "2025-12-30",
            "count": 2
          },
          {
            "date": "2025-12-31",
            "count": 2
          },
          {
            "date": "2026-01-01",
            "count": 2
          },
          {
            "date": "2026-01-02",
            "count": 2
          },
          {
            "date": "2026-01-03",
            "count": 2
          },
          {
            "date": "2026-01-04",
            "count": 2
          },
          {
            "date": "2026-01-05",
            "count": 1
          },
          {
            "date": "2026-01-06",
            "count": 2
          },
          {
            "date": "2026-01-07",
            "count": 2
          },
          {
            "date": "2026-01-08",
            "count": 3
          },
          {
            "date": "2026-01-09",
            "count": 2
          },
          {
            "date": "2026-01-11",
            "count": 1
          },
          {
            "date": "2026-01-12",
            "count": 3
          },
          {
            "date": "2026-01-13",
            "count": 5
          },
          {
            "date": "2026-01-14",
            "count": 2
          },
          {
            "date": "2026-01-15",
            "count": 2
          },
          {
            "date": "2026-01-17",
            "count": 2
          },
          {
            "date": "2026-01-18",
            "count": 3
          },
          {
            "date": "2026-01-19",
            "count": 1
          },
          {
            "date": "2026-01-20",
            "count": 4
          },
          {
            "date": "2026-01-21",
            "count": 2
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 4
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-01-25",
            "count": 2
          },
          {
            "date": "2026-01-27",
            "count": 6
          },
          {
            "date": "2026-01-28",
            "count": 4
          },
          {
            "date": "2026-01-29",
            "count": 5
          },
          {
            "date": "2026-01-30",
            "count": 4
          },
          {
            "date": "2026-01-31",
            "count": 4
          },
          {
            "date": "2026-02-01",
            "count": 2
          },
          {
            "date": "2026-02-02",
            "count": 4
          },
          {
            "date": "2026-02-04",
            "count": 2
          },
          {
            "date": "2026-02-05",
            "count": 16
          },
          {
            "date": "2026-02-06",
            "count": 3
          },
          {
            "date": "2026-02-07",
            "count": 2
          },
          {
            "date": "2026-02-08",
            "count": 3
          },
          {
            "date": "2026-02-09",
            "count": 4
          },
          {
            "date": "2026-02-10",
            "count": 4
          },
          {
            "date": "2026-02-11",
            "count": 2
          },
          {
            "date": "2026-02-12",
            "count": 2
          },
          {
            "date": "2026-02-14",
            "count": 1
          },
          {
            "date": "2026-02-15",
            "count": 3
          },
          {
            "date": "2026-02-16",
            "count": 4
          },
          {
            "date": "2026-02-17",
            "count": 1
          },
          {
            "date": "2026-02-18",
            "count": 3
          },
          {
            "date": "2026-02-19",
            "count": 2
          },
          {
            "date": "2026-02-21",
            "count": 3
          },
          {
            "date": "2026-02-22",
            "count": 2
          },
          {
            "date": "2026-02-23",
            "count": 2
          },
          {
            "date": "2026-02-24",
            "count": 2
          },
          {
            "date": "2026-02-25",
            "count": 1
          },
          {
            "date": "2026-02-26",
            "count": 5
          },
          {
            "date": "2026-02-27",
            "count": 4
          },
          {
            "date": "2026-02-28",
            "count": 3
          },
          {
            "date": "2026-03-01",
            "count": 1
          },
          {
            "date": "2026-03-02",
            "count": 4
          },
          {
            "date": "2026-03-03",
            "count": 4
          },
          {
            "date": "2026-03-04",
            "count": 3
          },
          {
            "date": "2026-03-05",
            "count": 2
          },
          {
            "date": "2026-03-06",
            "count": 5
          },
          {
            "date": "2026-03-07",
            "count": 1
          },
          {
            "date": "2026-03-08",
            "count": 2
          },
          {
            "date": "2026-03-09",
            "count": 3
          },
          {
            "date": "2026-03-10",
            "count": 7
          },
          {
            "date": "2026-03-11",
            "count": 2
          },
          {
            "date": "2026-03-12",
            "count": 1
          },
          {
            "date": "2026-03-13",
            "count": 6
          },
          {
            "date": "2026-03-15",
            "count": 1
          },
          {
            "date": "2026-03-16",
            "count": 3
          },
          {
            "date": "2026-03-18",
            "count": 2
          },
          {
            "date": "2026-03-19",
            "count": 5
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-03-21",
            "count": 3
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 4
          },
          {
            "date": "2026-03-24",
            "count": 2
          },
          {
            "date": "2026-03-25",
            "count": 1
          },
          {
            "date": "2026-03-26",
            "count": 4
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 4
          },
          {
            "date": "2026-03-29",
            "count": 3
          },
          {
            "date": "2026-03-30",
            "count": 1
          },
          {
            "date": "2026-03-31",
            "count": 3
          },
          {
            "date": "2026-04-01",
            "count": 4
          },
          {
            "date": "2026-04-02",
            "count": 4
          },
          {
            "date": "2026-04-03",
            "count": 3
          },
          {
            "date": "2026-04-04",
            "count": 4
          },
          {
            "date": "2026-04-05",
            "count": 2
          },
          {
            "date": "2026-04-06",
            "count": 5
          },
          {
            "date": "2026-04-07",
            "count": 4
          },
          {
            "date": "2026-04-08",
            "count": 3
          },
          {
            "date": "2026-04-09",
            "count": 4
          },
          {
            "date": "2026-04-10",
            "count": 1
          },
          {
            "date": "2026-04-11",
            "count": 3
          },
          {
            "date": "2026-04-12",
            "count": 3
          },
          {
            "date": "2026-04-13",
            "count": 5
          },
          {
            "date": "2026-04-14",
            "count": 3
          },
          {
            "date": "2026-04-15",
            "count": 3
          },
          {
            "date": "2026-04-16",
            "count": 3
          },
          {
            "date": "2026-04-17",
            "count": 4
          },
          {
            "date": "2026-04-18",
            "count": 6
          },
          {
            "date": "2026-04-19",
            "count": 6
          },
          {
            "date": "2026-04-20",
            "count": 4
          },
          {
            "date": "2026-04-21",
            "count": 2
          },
          {
            "date": "2026-04-22",
            "count": 2
          },
          {
            "date": "2026-04-23",
            "count": 2
          },
          {
            "date": "2026-04-24",
            "count": 2
          },
          {
            "date": "2026-04-25",
            "count": 3
          },
          {
            "date": "2026-04-26",
            "count": 4
          },
          {
            "date": "2026-04-27",
            "count": 4
          },
          {
            "date": "2026-04-28",
            "count": 3
          },
          {
            "date": "2026-04-29",
            "count": 4
          },
          {
            "date": "2026-04-30",
            "count": 3
          },
          {
            "date": "2026-05-01",
            "count": 3
          },
          {
            "date": "2026-05-03",
            "count": 4
          },
          {
            "date": "2026-05-04",
            "count": 3
          },
          {
            "date": "2026-05-05",
            "count": 3
          },
          {
            "date": "2026-05-06",
            "count": 6
          },
          {
            "date": "2026-05-07",
            "count": 4
          },
          {
            "date": "2026-05-08",
            "count": 3
          },
          {
            "date": "2026-05-09",
            "count": 4
          },
          {
            "date": "2026-05-10",
            "count": 4
          },
          {
            "date": "2026-05-11",
            "count": 2
          },
          {
            "date": "2026-05-12",
            "count": 5
          },
          {
            "date": "2026-05-13",
            "count": 5
          },
          {
            "date": "2026-05-14",
            "count": 2
          },
          {
            "date": "2026-05-15",
            "count": 1
          },
          {
            "date": "2026-05-16",
            "count": 4
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 2
          },
          {
            "date": "2026-05-20",
            "count": 2
          },
          {
            "date": "2026-05-21",
            "count": 2
          },
          {
            "date": "2026-05-22",
            "count": 2
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 5
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 3
          },
          {
            "date": "2026-05-29",
            "count": 3
          },
          {
            "date": "2026-05-30",
            "count": 3
          },
          {
            "date": "2026-05-31",
            "count": 3
          },
          {
            "date": "2026-06-01",
            "count": 3
          },
          {
            "date": "2026-06-02",
            "count": 3
          },
          {
            "date": "2026-06-03",
            "count": 2
          },
          {
            "date": "2026-06-04",
            "count": 2
          },
          {
            "date": "2026-06-06",
            "count": 5
          },
          {
            "date": "2026-06-08",
            "count": 4
          },
          {
            "date": "2026-06-09",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 6
          },
          {
            "date": "2026-06-11",
            "count": 4
          },
          {
            "date": "2026-06-12",
            "count": 7
          },
          {
            "date": "2026-06-13",
            "count": 1
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 4
          },
          {
            "date": "2026-06-17",
            "count": 9
          },
          {
            "date": "2026-06-19",
            "count": 2
          },
          {
            "date": "2026-06-20",
            "count": 2
          },
          {
            "date": "2026-06-21",
            "count": 2
          },
          {
            "date": "2026-06-22",
            "count": 5
          },
          {
            "date": "2026-06-24",
            "count": 7
          },
          {
            "date": "2026-06-25",
            "count": 2
          },
          {
            "date": "2026-06-26",
            "count": 2
          },
          {
            "date": "2026-06-27",
            "count": 2
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 3
          },
          {
            "date": "2026-06-30",
            "count": 2
          },
          {
            "date": "2026-07-01",
            "count": 2
          },
          {
            "date": "2026-07-02",
            "count": 2
          },
          {
            "date": "2026-07-03",
            "count": 3
          },
          {
            "date": "2026-07-04",
            "count": 5
          },
          {
            "date": "2026-07-05",
            "count": 3
          },
          {
            "date": "2026-07-06",
            "count": 2
          },
          {
            "date": "2026-07-07",
            "count": 2
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 4
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 6
          },
          {
            "date": "2026-07-14",
            "count": 5
          },
          {
            "date": "2026-07-15",
            "count": 2
          },
          {
            "date": "2026-07-16",
            "count": 5
          },
          {
            "date": "2026-07-17",
            "count": 4
          },
          {
            "date": "2026-07-18",
            "count": 3
          },
          {
            "date": "2026-07-19",
            "count": 3
          },
          {
            "date": "2026-07-20",
            "count": 3
          },
          {
            "date": "2026-07-21",
            "count": 5
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_stars": 15570
      },
      "open_issues_and_prs": 125
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples",
        "recipes"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/admin-sdk/tsconfig.json",
        "packages/cli/templates/plugin/packages/dashboard/tsconfig.json",
        "packages/cli/tsconfig.json",
        "packages/create-spree-app/tsconfig.json",
        "packages/dashboard-core/tsconfig.json",
        "packages/dashboard-plugin-example/tsconfig.json",
        "packages/dashboard-starter/tsconfig.json",
        "packages/dashboard-ui/tsconfig.json",
        "packages/dashboard/tsconfig.json",
        "packages/sdk-core/tsconfig.json",
        "packages/sdk/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 122570,
      "source_files_sampled": 3285,
      "oversized_source_files": 7,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 51941
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "spree/Gemfile"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4c8g-83qw-93j6",
              "GHSA-v2hh-gcrm-f6hx"
            ],
            "fixed_version": "4.1.1",
            "advisory_count": 2,
            "oldest_advisory_days": 0
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          },
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.14",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 0
          },
          {
            "name": "hono",
            "direct": false,
            "version": "4.12.25",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.5,
            "advisory_ids": [
              "GHSA-hvrm-45r6-mjfj",
              "GHSA-w62v-xxxg-mg59",
              "GHSA-xgm2-5f3f-mvvc"
            ],
            "fixed_version": "4.12.27",
            "advisory_count": 3,
            "oldest_advisory_days": 0
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.0",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.2,
            "advisory_ids": [
              "GHSA-4x5r-pxfx-6jf8"
            ],
            "fixed_version": "8.0.0-rc.6",
            "advisory_count": 1,
            "oldest_advisory_days": 36
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.2.2",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.7,
            "advisory_ids": [
              "GHSA-v422-hmwv-36x6"
            ],
            "fixed_version": "2.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 2,
          "high": 3,
          "moderate": 2
        },
        "advisory_count": 10,
        "affected_count": 7,
        "assessed_count": 809,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 133,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "rubygems"
      ],
      "dependencies": [
        {
          "name": "@base-ui/react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.1"
        },
        {
          "name": "@spree/cli",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@base-ui/react",
            "direct": true,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@base-ui/react",
            "direct": true,
            "version": "^1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-annotate-as-pure",
            "direct": false,
            "version": "7.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-create-class-features-plugin",
            "direct": false,
            "version": "7.29.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-member-expression-to-functions",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-optimise-call-expression",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-replace-supers",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-skip-transparent-expression-wrappers",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-modules-commonjs",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-typescript",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/preset-typescript",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.29.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@base-ui/utils",
            "direct": false,
            "version": "0.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "^2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-arm64",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-x64",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64-musl",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64-musl",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-arm64",
            "direct": false,
            "version": "2.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-x64",
            "direct": false,
            "version": "2.4.14",
            "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/changelog-github",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@changesets/changelog-github",
            "direct": false,
            "version": "^0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@changesets/cli",
            "direct": false,
            "version": "2.31.0",
            "ecosystem": "npm"
          },
          {
            "name": "@changesets/cli",
            "direct": false,
            "version": "^2.31.0",
            "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-github-info",
            "direct": false,
            "version": "0.8.0",
            "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.1.0",
            "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": "@clack/core",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/prompts",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/prompts",
            "direct": false,
            "version": "^1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@date-fns/tz",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/accessibility",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/core",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/core",
            "direct": false,
            "version": "^6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/sortable",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/sortable",
            "direct": false,
            "version": "^10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/utilities",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/utilities",
            "direct": false,
            "version": "^3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@dotenvx/dotenvx",
            "direct": false,
            "version": "1.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ecies/ciphers",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "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.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.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/react-dom",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/utils",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "@fontsource-variable/geist",
            "direct": false,
            "version": "5.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@fontsource-variable/geist",
            "direct": false,
            "version": "^5.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@fontsource-variable/geist-mono",
            "direct": false,
            "version": "5.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@fontsource-variable/geist-mono",
            "direct": false,
            "version": "^5.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.14",
            "ecosystem": "npm"
          },
          {
            "name": "@hookform/resolvers",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@hookform/resolvers",
            "direct": false,
            "version": "^5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/ansi",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/confirm",
            "direct": false,
            "version": "6.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/core",
            "direct": false,
            "version": "11.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/external-editor",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/figures",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/type",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "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/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "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": "@modelcontextprotocol/sdk",
            "direct": false,
            "version": "1.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@mswjs/interceptors",
            "direct": false,
            "version": "0.41.8",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@noble/ciphers",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@noble/curves",
            "direct": false,
            "version": "1.9.7",
            "ecosystem": "npm"
          },
          {
            "name": "@noble/hashes",
            "direct": false,
            "version": "1.8.0",
            "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": "@open-draft/deferred-promise",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@open-draft/deferred-promise",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@open-draft/logger",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@open-draft/until",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.133.0",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.59.1",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "^1.59.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/primitive",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-compose-refs",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-context",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-dialog",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-dismissable-layer",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-focus-guards",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-focus-scope",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-id",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-portal",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-presence",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-primitive",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-primitive",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-callback-ref",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-controllable-state",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-effect-event",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-escape-keydown",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-layout-effect",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@reduxjs/toolkit",
            "direct": false,
            "version": "2.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.0-rc.7",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sec-ant/readable-stream",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/merge-streams",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/utils",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tabby_ai/hijri-converter",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/node",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-android-arm64",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-arm64",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-x64",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-freebsd-x64",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-gnu",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-musl",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-gnu",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-musl",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-wasm32-wasi",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-arm64-msvc",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-x64-msvc",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/vite",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/vite",
            "direct": false,
            "version": "^4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/history",
            "direct": false,
            "version": "1.161.6",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/hotkeys",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/query-core",
            "direct": false,
            "version": "5.100.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-hotkeys",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-hotkeys",
            "direct": false,
            "version": "^0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-query",
            "direct": false,
            "version": "5.100.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-query",
            "direct": false,
            "version": "^5.100.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-router",
            "direct": false,
            "version": "1.169.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-router",
            "direct": false,
            "version": "^1.169.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-store",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-store",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-table",
            "direct": false,
            "version": "8.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-table",
            "direct": false,
            "version": "^8.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-core",
            "direct": false,
            "version": "1.169.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-generator",
            "direct": false,
            "version": "1.166.42",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-plugin",
            "direct": false,
            "version": "1.167.35",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-plugin",
            "direct": false,
            "version": "^1.167.35",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-utils",
            "direct": false,
            "version": "1.161.8",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/store",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/store",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/table-core",
            "direct": false,
            "version": "8.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/virtual-file-routes",
            "direct": false,
            "version": "1.161.7",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/virtual-file-routes",
            "direct": false,
            "version": "1.162.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/virtual-file-routes",
            "direct": false,
            "version": "^1.162.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/core",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-blockquote",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bold",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bubble-menu",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bullet-list",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-code",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-code-block",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-document",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-dropcursor",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-floating-menu",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-gapcursor",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-hard-break",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-heading",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-horizontal-rule",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-italic",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-link",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-link",
            "direct": false,
            "version": "^3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-list",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-list-item",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-list-keymap",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-ordered-list",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-paragraph",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-placeholder",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-placeholder",
            "direct": false,
            "version": "^3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-strike",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-text",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-underline",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extensions",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/pm",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/react",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/react",
            "direct": false,
            "version": "^3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/starter-kit",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/starter-kit",
            "direct": false,
            "version": "^3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "@ts-morph/common",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/darwin-64",
            "direct": false,
            "version": "2.9.18",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/darwin-arm64",
            "direct": false,
            "version": "2.9.18",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/linux-64",
            "direct": false,
            "version": "2.9.18",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/linux-arm64",
            "direct": false,
            "version": "2.9.18",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/windows-64",
            "direct": false,
            "version": "2.9.18",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/windows-arm64",
            "direct": false,
            "version": "2.9.18",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-array",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-color",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-ease",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-interpolate",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-path",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-scale",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-shape",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-time",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-timer",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "12.20.55",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "^25.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "19.2.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "^19.2.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "19.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "^19.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/set-cookie-parser",
            "direct": false,
            "version": "2.4.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/spark-md5",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/spark-md5",
            "direct": false,
            "version": "^3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/statuses",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/use-sync-external-store",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/validate-npm-package-name",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@uiw/react-json-view",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@uiw/react-json-view",
            "direct": false,
            "version": "^1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": false,
            "version": "^6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/coverage-v8",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/coverage-v8",
            "direct": false,
            "version": "^4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "3.0.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": "ansis",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "any-promise",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "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-types",
            "direct": false,
            "version": "0.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-v8-to-istanbul",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-dead-code-elimination",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.27",
            "ecosystem": "npm"
          },
          {
            "name": "better-path-resolve",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.2",
            "ecosystem": "npm"
          },
          {
            "name": "bundle-name",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bundle-require",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "6.7.14",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001792",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": false,
            "version": "^0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "cli-width",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": false,
            "version": "^2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cmdk",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cmdk",
            "direct": false,
            "version": "^1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "code-block-writer",
            "direct": false,
            "version": "13.0.3",
            "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": "commander",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "^14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "consola",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "console-table-printer",
            "direct": false,
            "version": "2.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "console-table-printer",
            "direct": false,
            "version": "^2.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-es",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "d3-array",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "d3-color",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-ease",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-format",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-interpolate",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-path",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-scale",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-shape",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time-format",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-timer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-uri-to-buffer",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dataloader",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns",
            "direct": false,
            "version": "^4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns-jalali",
            "direct": false,
            "version": "4.1.0-0",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns-tz",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns-tz",
            "direct": false,
            "version": "^3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js-light",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "default-browser",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "default-browser-id",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-lazy-prop",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-indent",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node-es",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dotenv",
            "direct": false,
            "version": "17.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "dotenv",
            "direct": false,
            "version": "8.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "eciesjs",
            "direct": false,
            "version": "0.4.18",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.352",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "enquirer",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "env-paths",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-toolkit",
            "direct": false,
            "version": "1.45.1",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource-parser",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "^9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "express-rate-limit",
            "direct": false,
            "version": "8.5.1",
            "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-equals",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "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-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-wrap-ansi",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fetch-blob",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fix-dts-default-cjs-exports",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flag-icons",
            "direct": false,
            "version": "7.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "flag-icons",
            "direct": false,
            "version": "^7.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "formdata-polyfill",
            "direct": false,
            "version": "4.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "8.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": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fuzzysort",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-nonce",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-own-enumerable-keys",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-port",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-port",
            "direct": false,
            "version": "^7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "4.13.7",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "graphql",
            "direct": false,
            "version": "16.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "headers-polyfill",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hono",
            "direct": false,
            "version": "4.12.25",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "html-parse-stringify",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-id",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "i18next",
            "direct": false,
            "version": "26.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "i18next",
            "direct": false,
            "version": "^26.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": "immer",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "immer",
            "direct": false,
            "version": "11.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "internmap",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-in-ssh",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-inside-container",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-node-process",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-regexp",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-subdir",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "isbot",
            "direct": false,
            "version": "5.1.40",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "3.1.5",
            "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": "jiti",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jose",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "joycon",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-typed",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "4.1.5",
            "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": "linkifyjs",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "load-tsconfig",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.startcase",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": false,
            "version": "^1.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magicast",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-function",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "mri",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "msw",
            "direct": false,
            "version": "2.14.3",
            "ecosystem": "npm"
          },
          {
            "name": "msw",
            "direct": false,
            "version": "^2.14.3",
            "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": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "next-themes",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "npm"
          },
          {
            "name": "next-themes",
            "direct": false,
            "version": "^0.4.6",
            "ecosystem": "npm"
          },
          {
            "name": "node-domexception",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.38",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-treeify",
            "direct": false,
            "version": "1.1.33",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "open",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": false,
            "version": "8.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "orderedmap",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "outdent",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "outvariant",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "p-filter",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "package-manager-detector",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-ms",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "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-key",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "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": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkce-challenge",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.59.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.59.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.15",
            "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": "powershell-utils",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "2.8.8",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-ms",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-changeset",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-commands",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-dropcursor",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-gapcursor",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-history",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-keymap",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-model",
            "direct": false,
            "version": "1.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-schema-list",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-state",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-tables",
            "direct": false,
            "version": "1.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-transform",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-view",
            "direct": false,
            "version": "1.41.8",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "quansync",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": false,
            "version": "19.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": false,
            "version": "^19.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "react-colorful",
            "direct": false,
            "version": "5.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-colorful",
            "direct": false,
            "version": "^5.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-day-picker",
            "direct": false,
            "version": "9.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-day-picker",
            "direct": false,
            "version": "^9.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": false,
            "version": "19.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": false,
            "version": "^19.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "react-hook-form",
            "direct": false,
            "version": "7.75.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-hook-form",
            "direct": false,
            "version": "^7.75.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-i18next",
            "direct": false,
            "version": "17.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-i18next",
            "direct": false,
            "version": "^17.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "19.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "react-redux",
            "direct": false,
            "version": "9.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll",
            "direct": false,
            "version": "2.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll-bar",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-style-singleton",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "read-yaml-file",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "recast",
            "direct": false,
            "version": "0.23.11",
            "ecosystem": "npm"
          },
          {
            "name": "recharts",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "recharts",
            "direct": false,
            "version": "^3.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "redux",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "redux-thunk",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "reselect",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rettime",
            "direct": false,
            "version": "0.11.11",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "rope-sequence",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-applescript",
            "direct": false,
            "version": "7.1.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": "scheduler",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "seroval",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "seroval-plugins",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "set-cookie-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "shadcn",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "shadcn",
            "direct": false,
            "version": "^4.7.0",
            "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": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-wcswidth",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sonner",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sonner",
            "direct": false,
            "version": "^2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "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": "spark-md5",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "spark-md5",
            "direct": false,
            "version": "^3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "spawndamnit",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stdin-discarder",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "strict-event-emitter",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-object",
            "direct": false,
            "version": "5.0.0",
            "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": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sucrase",
            "direct": false,
            "version": "3.35.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tagged-tag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": false,
            "version": "^3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": false,
            "version": "^4.2.4",
            "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": "tiny-invariant",
            "direct": false,
            "version": "1.3.3",
            "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.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.16",
            "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.0.30",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.0.30",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tree-kill",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ts-interface-checker",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "ts-morph",
            "direct": false,
            "version": "26.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsconfig-paths",
            "direct": false,
            "version": "4.2.0",
            "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.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsup",
            "direct": false,
            "version": "^8.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsx",
            "direct": false,
            "version": "4.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsx",
            "direct": false,
            "version": "^4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsx",
            "direct": false,
            "version": "^4.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "turbo",
            "direct": false,
            "version": "2.9.18",
            "ecosystem": "npm"
          },
          {
            "name": "tw-animate-css",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "tw-animate-css",
            "direct": false,
            "version": "^1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "^6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "~6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.19.2",
            "ecosystem": "npm"
          },
          {
            "name": "unicorn-magic",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "until-async",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-callback-ref",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-sidecar",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-sync-external-store",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-name",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "victory-vendor",
            "direct": false,
            "version": "37.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "^8.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "^8.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "^4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "void-elements",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-keyname",
            "direct": false,
            "version": "2.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "web-streams-polyfill",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-virtual-modules",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wsl-utils",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "^2.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-spinner",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yoctocolors",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "^4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod-to-json-schema",
            "direct": false,
            "version": "3.25.2",
            "ecosystem": "npm"
          },
          {
            "name": "active_link_to",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "active_storage_validations",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "acts-as-taggable-on",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_list",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "alba",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ar_lazy_preload",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "awesome_nested_set",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "benchmark",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "breadcrumbs_on_rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "cancancan",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "carmen",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "chartkick",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "countries",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "email_spec",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "friendly_id",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "friendly_id-mobility",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "geocoder",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "groupdate",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "highline",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "hightop",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n-tasks",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "image_processing",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "importmap-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "inline_svg",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "jwt",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "local_time",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mapkick-rb",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mobility",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mobility-actiontext",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mobility-ransack",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "monetize",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "money",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "name_of_person",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "oj",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ostruct",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "pagy",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "paranoia",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "phonelib",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ransack",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rexml",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rswag-specs",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ruby-oembed",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "safely_block",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "selenium-webdriver",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "spree",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "spree_core",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "spree_emails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "sqids",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ssrf_filter",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "state_machines-activemodel",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "state_machines-activerecord",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "stimulus-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "stringex",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "tailwindcss-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "tailwindcss-ruby",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "tinymce-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "tracking_number",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "turbo-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "typelizer",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "validates_zipcode",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "wannabe_bool",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 942,
        "direct_count": 2,
        "indirect_count": 940
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 49,
        "merged_prs": 5313,
        "open_issues": 76,
        "closed_ratio": 0.982,
        "closed_issues": 4253,
        "closed_unmerged_prs": 4537
      },
      "bus_factor": 2,
      "bot_contributors": 4,
      "top_contributors": [
        {
          "type": "User",
          "login": "damianlegawiec",
          "commits": 6782,
          "avatar_url": "https://avatars.githubusercontent.com/u/55154?v=4"
        },
        {
          "type": "User",
          "login": "radar",
          "commits": 4059,
          "avatar_url": "https://avatars.githubusercontent.com/u/2687?v=4"
        },
        {
          "type": "User",
          "login": "schof",
          "commits": 2149,
          "avatar_url": "https://avatars.githubusercontent.com/u/85518?v=4"
        },
        {
          "type": "User",
          "login": "MatthewKennedy",
          "commits": 1027,
          "avatar_url": "https://avatars.githubusercontent.com/u/1240766?v=4"
        },
        {
          "type": "User",
          "login": "BDQ",
          "commits": 634,
          "avatar_url": "https://avatars.githubusercontent.com/u/22470?v=4"
        },
        {
          "type": "User",
          "login": "huoxito",
          "commits": 620,
          "avatar_url": "https://avatars.githubusercontent.com/u/245662?v=4"
        },
        {
          "type": "User",
          "login": "romul",
          "commits": 432,
          "avatar_url": "https://avatars.githubusercontent.com/u/28540?v=4"
        },
        {
          "type": "User",
          "login": "LBRapid",
          "commits": 343,
          "avatar_url": "https://avatars.githubusercontent.com/u/19807?v=4"
        },
        {
          "type": "User",
          "login": "bbonislawski",
          "commits": 285,
          "avatar_url": "https://avatars.githubusercontent.com/u/7106611?v=4"
        },
        {
          "type": "User",
          "login": "mad-eel",
          "commits": 266,
          "avatar_url": "https://avatars.githubusercontent.com/u/18441660?v=4"
        }
      ],
      "contributors_sampled": 96,
      "top_contributor_share": 0.314
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "docs-package.yml",
        "packages.yml",
        "release.yml",
        "security-audit.yml",
        "tests.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "biome.json"
      ],
      "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": "23 out of 23 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": 1,
            "reason": "Found 4/26 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 27 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool is run on all commits",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "10 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "202d846374270c75e19b23cea5498ea559577f67",
        "ran_at": "2026-07-21T23:24:53Z",
        "aggregate_score": 5.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-21T17:32:49Z",
      "oldest_open_prs": [
        {
          "number": 7064,
          "created_at": "2016-02-15T08:05:44Z",
          "last_comment_at": "2016-03-21T11:07:57Z",
          "last_comment_author": "nishant-cyro"
        },
        {
          "number": 8766,
          "created_at": "2018-05-25T11:23:00Z",
          "last_comment_at": "2018-05-28T15:40:48Z",
          "last_comment_author": "MatthewKennedy"
        },
        {
          "number": 11798,
          "created_at": "2022-11-20T02:04:20Z",
          "last_comment_at": "2022-11-20T02:05:04Z",
          "last_comment_author": "viezly"
        },
        {
          "number": 11859,
          "created_at": "2023-02-22T13:25:30Z",
          "last_comment_at": "2023-02-22T13:25:56Z",
          "last_comment_author": "viezly"
        },
        {
          "number": 11932,
          "created_at": "2023-09-15T11:40:56Z",
          "last_comment_at": "2023-10-02T09:59:02Z",
          "last_comment_author": "rafalcymerys"
        },
        {
          "number": 12196,
          "created_at": "2024-10-29T14:17:49Z",
          "last_comment_at": "2025-07-22T08:09:54Z",
          "last_comment_author": "coderabbitai"
        },
        {
          "number": 12278,
          "created_at": "2024-12-29T13:05:40Z",
          "last_comment_at": "2024-12-29T13:06:45Z",
          "last_comment_author": "mbajur"
        },
        {
          "number": 12425,
          "created_at": "2025-02-20T13:34:22Z",
          "last_comment_at": "2025-03-24T10:17:42Z",
          "last_comment_author": "coderabbitai"
        },
        {
          "number": 13075,
          "created_at": "2025-09-08T03:45:27Z",
          "last_comment_at": "2025-11-12T21:47:13Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 13326,
          "created_at": "2025-11-30T12:25:28Z",
          "last_comment_at": "2025-11-30T17:10:48Z",
          "last_comment_author": "damianlegawiec"
        },
        {
          "number": 13330,
          "created_at": "2025-12-01T16:02:18Z",
          "last_comment_at": "2025-12-01T16:24:13Z",
          "last_comment_author": "dwstyagi"
        },
        {
          "number": 13430,
          "created_at": "2026-01-09T15:45:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 13597,
          "created_at": "2026-02-16T15:18:24Z",
          "last_comment_at": "2026-02-24T12:03:08Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 13721,
          "created_at": "2026-03-04T12:14:58Z",
          "last_comment_at": "2026-03-04T12:20:45Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 13726,
          "created_at": "2026-03-04T17:24:53Z",
          "last_comment_at": "2026-03-04T17:42:51Z",
          "last_comment_author": "codecov"
        },
        {
          "number": 13942,
          "created_at": "2026-04-24T17:55:16Z",
          "last_comment_at": "2026-04-24T17:55:28Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 13943,
          "created_at": "2026-04-24T18:15:19Z",
          "last_comment_at": "2026-04-24T18:15:30Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 13948,
          "created_at": "2026-04-26T00:10:00Z",
          "last_comment_at": "2026-04-26T00:10:13Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 13950,
          "created_at": "2026-04-26T08:32:20Z",
          "last_comment_at": "2026-04-26T08:32:32Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 13951,
          "created_at": "2026-04-26T08:57:37Z",
          "last_comment_at": "2026-04-26T08:57:50Z",
          "last_comment_author": "github-actions"
        }
      ],
      "last_merged_pr_at": "2026-07-21T17:18:40Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 5713,
          "created_at": "2014-12-05T12:44:17Z",
          "last_comment_at": "2014-12-09T22:29:42Z",
          "last_comment_author": "JDutil"
        },
        {
          "number": 6228,
          "created_at": "2015-03-25T18:00:39Z",
          "last_comment_at": "2015-03-26T15:22:14Z",
          "last_comment_author": "niedfelj"
        },
        {
          "number": 6460,
          "created_at": "2015-06-03T21:26:06Z",
          "last_comment_at": "2017-03-28T09:27:58Z",
          "last_comment_author": "mvz"
        },
        {
          "number": 6906,
          "created_at": "2015-12-30T21:42:59Z",
          "last_comment_at": "2016-10-05T15:32:43Z",
          "last_comment_author": "joryhatton"
        },
        {
          "number": 7226,
          "created_at": "2016-03-18T10:52:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 7227,
          "created_at": "2016-03-18T12:58:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 7506,
          "created_at": "2016-07-28T08:27:38Z",
          "last_comment_at": "2017-03-28T09:18:54Z",
          "last_comment_author": "mvz"
        },
        {
          "number": 7523,
          "created_at": "2016-08-11T13:40:16Z",
          "last_comment_at": "2016-08-15T21:23:14Z",
          "last_comment_author": "krtschmr"
        },
        {
          "number": 7592,
          "created_at": "2016-09-20T21:46:05Z",
          "last_comment_at": "2016-10-05T09:24:59Z",
          "last_comment_author": "catalin88"
        },
        {
          "number": 7890,
          "created_at": "2017-03-26T18:27:51Z",
          "last_comment_at": "2018-04-20T06:18:17Z",
          "last_comment_author": "vishalzambre"
        },
        {
          "number": 8208,
          "created_at": "2017-08-07T06:08:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 8511,
          "created_at": "2017-12-08T00:07:32Z",
          "last_comment_at": "2020-12-05T07:56:55Z",
          "last_comment_author": "githubble01"
        },
        {
          "number": 8529,
          "created_at": "2017-12-15T13:23:02Z",
          "last_comment_at": "2018-02-13T13:33:27Z",
          "last_comment_author": "pavels"
        },
        {
          "number": 8578,
          "created_at": "2018-02-05T11:56:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 8621,
          "created_at": "2018-02-20T23:45:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 8719,
          "created_at": "2018-05-08T07:33:28Z",
          "last_comment_at": "2021-08-19T15:08:16Z",
          "last_comment_author": "nflorentin"
        },
        {
          "number": 8820,
          "created_at": "2018-06-11T12:12:29Z",
          "last_comment_at": "2018-06-11T18:59:27Z",
          "last_comment_author": "MatthewKennedy"
        },
        {
          "number": 9096,
          "created_at": "2018-11-27T11:20:27Z",
          "last_comment_at": "2019-03-22T08:14:30Z",
          "last_comment_author": "PSzyszkaSpark"
        },
        {
          "number": 9112,
          "created_at": "2018-12-06T12:33:38Z",
          "last_comment_at": "2019-03-11T14:26:01Z",
          "last_comment_author": "jkojro"
        },
        {
          "number": 9209,
          "created_at": "2019-01-22T16:24:23Z",
          "last_comment_at": "2019-01-23T18:46:59Z",
          "last_comment_author": "LucasKuhn"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/spree/spree",
    "host": "github.com",
    "name": "spree",
    "owner": "spree"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 84,
      "inputs": {
        "security": 66,
        "vitality": 100,
        "community": 92,
        "governance": 73,
        "engineering": 86
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 100,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 2174,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 52
            },
            "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": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "2174 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 2174
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v5.4.4",
              "releases_from_tags": false,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 6.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~6.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 6.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "excellent",
        "name": "Community & Adoption",
        "value": 92,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 96,
            "inputs": {
              "forks": 5285,
              "stars": 15570,
              "watchers": 83,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "15,570 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 15570
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "5,285 forks",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 5285
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "83 watchers",
                "points": 10.6,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 83
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 93,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": true,
              "has_code_of_conduct": true,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (BSD-3-Clause)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "BSD-3-Clause"
                    }
                  }
                ],
                "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": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 7.2,
                "status": "met",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "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": 84,
            "inputs": {
              "packages": [
                "spree"
              ],
              "dependents": null,
              "ecosystems": "rubygems",
              "total_downloads": 2840445,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "2,840,445 downloads all-time across rubygems",
                "points": 67.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 2840445,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "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": "good",
        "name": "Sustainability & Governance",
        "value": 73,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 96,
              "top_contributor_share": 0.314
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 31% of commits",
                "points": 15.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 31
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "96 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 96
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 27 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "merged_prs": 5313,
              "open_issues": 76,
              "closed_issues": 4253,
              "issue_closed_ratio": 0.982,
              "closed_unmerged_prs": 4537
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "98% of issues closed",
                "points": 45.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "5313/9850 decided PRs merged",
                "points": 20.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 5313,
                      "decided": 9850
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 4/26 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "followers": 197,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "spree",
              "public_repos": 26,
              "account_age_days": 6358
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "197 followers of spree",
                "points": 16.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 197,
                      "login": "spree"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "26 public repos, account ~17 yr old",
                "points": 22.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 26
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 17
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "spree"
              ],
              "ecosystems": "rubygems",
              "any_deprecated": false,
              "min_days_since_publish": 1
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on rubygems",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 1 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "438 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 438
                    }
                  }
                ],
                "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": 86,
        "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": "biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "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": "23 out of 23 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": 90,
            "inputs": {
              "topics": [
                "ecommerce",
                "e-commerce",
                "ecommerce-platform",
                "spree-commerce",
                "marketplace",
                "multi-tenant",
                "multi-vendor",
                "multi-vendor-ecommerce",
                "ecommerce-api",
                "ecommerce-framework",
                "open-source",
                "headless",
                "headless-commerce",
                "headless-ecommerce",
                "b2b-commerce"
              ],
              "has_wiki": false,
              "homepage": "https://spreecommerce.org",
              "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://spreecommerce.org",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 66,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 57,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5.7
            },
            "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": "23 out of 23 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 4/26 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 27 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is run on all commits",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "10 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 809 resolved dependencies against OSV; 133 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": 809
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 133
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 10,
              "affected_packages": 7,
              "assessed_packages": 809,
              "unassessed_packages": 133,
              "affected_by_severity": "high 3, moderate 2, low 2",
              "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": 809,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 9
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 71,
        "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.92,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 51941
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.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": "92 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/admin-sdk/tsconfig.json",
                "packages/cli/templates/plugin/packages/dashboard/tsconfig.json",
                "packages/cli/tsconfig.json",
                "packages/create-spree-app/tsconfig.json",
                "packages/dashboard-core/tsconfig.json",
                "packages/dashboard-plugin-example/tsconfig.json",
                "packages/dashboard-starter/tsconfig.json",
                "packages/dashboard-ui/tsconfig.json",
                "packages/dashboard/tsconfig.json",
                "packages/sdk-core/tsconfig.json",
                "packages/sdk/tsconfig.json"
              ],
              "agent_commit_share": 0.67,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/admin-sdk/tsconfig.json, packages/cli/templates/plugin/packages/dashboard/tsconfig.json, packages/cli/tsconfig.json, packages/create-spree-app/tsconfig.json, packages/dashboard-core/tsconfig.json, packages/dashboard-plugin-example/tsconfig.json, packages/dashboard-starter/tsconfig.json, packages/dashboard-ui/tsconfig.json, packages/dashboard/tsconfig.json, packages/sdk-core/tsconfig.json, packages/sdk/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/admin-sdk/tsconfig.json, packages/cli/templates/plugin/packages/dashboard/tsconfig.json, packages/cli/tsconfig.json, packages/create-spree-app/tsconfig.json, packages/dashboard-core/tsconfig.json, packages/dashboard-plugin-example/tsconfig.json, packages/dashboard-starter/tsconfig.json, packages/dashboard-ui/tsconfig.json, packages/dashboard/tsconfig.json, packages/sdk-core/tsconfig.json, packages/sdk/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": "67 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 67,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "dependency automation configured, none observed in the sampled commits",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "dependency_bot_config_only",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Ruby",
              "largest_source_bytes": 122570,
              "source_files_sampled": 3285,
              "oversized_source_files": 7
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Ruby with type-check config (packages/admin-sdk/tsconfig.json, packages/cli/templates/plugin/packages/dashboard/tsconfig.json, packages/cli/tsconfig.json, packages/create-spree-app/tsconfig.json, packages/dashboard-core/tsconfig.json, packages/dashboard-plugin-example/tsconfig.json, packages/dashboard-starter/tsconfig.json, packages/dashboard-ui/tsconfig.json, packages/dashboard/tsconfig.json, packages/sdk-core/tsconfig.json, packages/sdk/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "packages/admin-sdk/tsconfig.json, packages/cli/templates/plugin/packages/dashboard/tsconfig.json, packages/cli/tsconfig.json, packages/create-spree-app/tsconfig.json, packages/dashboard-core/tsconfig.json, packages/dashboard-plugin-example/tsconfig.json, packages/dashboard-starter/tsconfig.json, packages/dashboard-ui/tsconfig.json, packages/dashboard/tsconfig.json, packages/sdk-core/tsconfig.json, packages/sdk/tsconfig.json",
                      "language": "Ruby"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "7/3285 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 3285,
                      "oversized": 7
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples",
                "recipes"
              ],
              "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": "examples, recipes",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples, recipes"
                    }
                  }
                ],
                "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": [],
  "report_type": "repository",
  "generated_at": "2026-07-21T23:25:32.520012Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/spree/spree.svg",
  "full_name": "spree/spree",
  "license_state": "standard",
  "license_spdx": "BSD-3-Clause"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.26.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsRubyGems.