Public record
Software health reportschema 0.27.0 · metrics 2.5.0 · 2026-07-31 02:19 UTC

ymmv-fyi / ymmv

The tools you actually use. Publish from the CLI, diff against anyone's.

TypeScriptMIT★ 0 stars⑂ 0 forkssince Jun 2026View on GitHub ↗
KindCommand-line toolLibraryhow this is determined

ymmv-fyi/ymmv holds a health index of 69 out of 100, placing it in the Good band. It scores highest on Engineering Quality (90/100) and lowest on Community & Adoption (32/100). It was last updated 5 days ago. A single contributor accounts for most of its recent work.

69
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean, calibrated against the distribution of the public record so bands carry percentile meaning; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At Risk ceiling of 34.

69
Exceptional93-100The record's top tier (≈ top 5%); essentially all checked criteria met
Excellent80-92Strong across the board; minor gaps
Good65-79Healthy; gaps are limited and manageable
Moderate50-64Acceptable with notable gaps; review recommended
Weak35-49Material weaknesses across several areas
At Risk20-34Significant weaknesses; adoption warrants caution
Critical1-19Severe 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.

The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).

Ownership

ymmv.fyiOrganization
0 followers1 public reposince Jun 2026

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

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
npmymmv-cli0.9.02,783168 days agoymmvusesdotfilesdeveloper-toolsprofilediffcliterminal

Metrics by category

Vitality

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

74Good · 21% of overall
How it's scored
36/36Push recency — last push 5 days ago
2.8/36Commit cadence — 4/52 weeks with commits
18/18Commit volume — 128 commits in the last year
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Inputs used
commits_last_year128
human_commit_share0.98
days_since_last_push5
active_weeks_last_year4

Release discipline

100Exceptional
How it's scored
27/27Ships releases — 16 releases published
36/36Release recency — latest release 8 days ago
27/27Release cadence — a release every ~2 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count16
latest_release_tagv0.9.0
releases_from_tagsno
days_since_latest_release8
mean_days_between_releases2
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?

32At Risk · 17% of overall
How it's scored
0/60Stars — 0 stars
0/25Forks — 0 forks
0/15Watchers — 0 watchers
Inputs used
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateno
How it's scored
45.9/80Monthly downloads — 2,783 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesymmv-cli
dependents
ecosystemsnpm
total_downloads
monthly_downloads2,783
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?

48Weak · 23% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0/22.5Commit distribution — top contributor authored 100% of commits
1.4/13.5Contributor breadth — 1 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled1
top_contributor_share1
How it's scored
0/42Issue resolution — no issues or no data
30/30PR acceptance — 40/40 decided PRs merged
0/13Newcomer PR acceptance — no first-time contributor's PR decided in 30d
0/15OpenSSF Scorecard: Code-Review — Found 0/9 approved changesets -- score normalized to 0
Inputs used
merged_prs40
open_issues0
closed_issues0
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio
closed_unmerged_prs0
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluded from scoring (no data or not applicable): Issue resolution, newcomer_pr_acceptance. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
0/25Owner reach — 0 followers of ymmv-fyi
2.4/25Track record — 1 public repos, account ~0 yr old
Inputs used
followers0
owner_typeOrganization
is_verified
owner_loginymmv-fyi
public_repos1
account_age_days32

Package maintenance

100Exceptional
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 8 days ago
20/20Version history — 16 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesymmv-cli
ecosystemsnpm
any_deprecatedno
min_days_since_publish8

Engineering Quality

Are baseline engineering and documentation practices in place?

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

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://ymmv.fyi
10/10Repository description
10/10Topics — 8 topics
0/10Wiki
Inputs used
topicsastro, cli, cloudflare-workers, command-line-tool, developer-profile, developer-tools, dotfiles, terminal
has_wikino
homepagehttps://ymmv.fyi
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

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

59Moderate · 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 — 6 out of 6 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/9 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
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
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
4/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0.8/7.5Vulnerabilities — 9 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4.8
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.

Dependency advisories

100Exceptional
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages1
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:ymmv-cli@0.9.0 runtime dependency closure — what installing the published package pulls in — 1 packages. Reachability is not analyzed.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight (4%): agent tooling is a real maintenance signal, but a repository with none can still reach 100/100.

85Excellent · 4% of overall
How it's scored
45/45Agent instructions — CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 98 of 98 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes3,020
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — biome.json
11/11Static type checking — packages/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/tsconfig.json
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 83 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 2 of the last 100 commits are automated dependency updates
8/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
Inputs used
has_nixno
has_testsyes
lockfilespnpm-lock.yaml
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configspackages/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/tsconfig.json
agent_commit_share0.83
toolchain_manifests
dependency_bot_commit_share0.02
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
55/55Manageable file sizes — 0/84 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes50,191
source_files_sampled84
oversized_source_files0

Key facts

0GitHub stars
1contributors
128commits, last 12 months
5days since last push
16releases
1bus factor
0open issues
npmpackage ecosystems

More detail

OpenSSF Scorecard 4.8 / 10
4.8aggregate

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-31 02:19 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests6 out of 6 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/9 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
8Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 8
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
1Vulnerabilities9 existing vulnerabilities detected
Direct dependencies 2
RegistryPackageVersion constraintManifest
npmenv-paths^3packages/cli/package.json
npm@ymmv/sharedworkspace:*packages/web/package.json
All dependencies 507

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

RegistryPackageVersionRelation
npmenv-paths3.0.0direct
npm@astrojs/check0.9.9indirect
npm@astrojs/check^0.9indirect
npm@astrojs/cloudflare14.0.1indirect
npm@astrojs/cloudflare^14indirect
npm@astrojs/compiler2.13.1indirect
npm@astrojs/compiler-binding0.2.3indirect
npm@astrojs/compiler-binding-darwin-arm640.2.3indirect
npm@astrojs/compiler-binding-darwin-x640.2.3indirect
npm@astrojs/compiler-binding-linux-arm64-gnu0.2.3indirect
npm@astrojs/compiler-binding-linux-arm64-musl0.2.3indirect
npm@astrojs/compiler-binding-linux-x64-gnu0.2.3indirect
npm@astrojs/compiler-binding-linux-x64-musl0.2.3indirect
npm@astrojs/compiler-binding-wasm32-wasi0.2.3indirect
npm@astrojs/compiler-binding-win32-arm64-msvc0.2.3indirect
npm@astrojs/compiler-binding-win32-x64-msvc0.2.3indirect
npm@astrojs/compiler-rs0.2.3indirect
npm@astrojs/internal-helpers0.10.0indirect
npm@astrojs/language-server2.16.10indirect
npm@astrojs/markdown-satteri0.3.2indirect
npm@astrojs/prism4.0.2indirect
npm@astrojs/telemetry3.3.2indirect
npm@astrojs/underscore-redirects1.0.3indirect
npm@astrojs/yaml2ts0.2.4indirect
npm@babel/helper-string-parser7.29.7indirect
npm@babel/helper-validator-identifier7.29.7indirect
npm@babel/parser7.29.7indirect
npm@babel/types7.29.7indirect
npm@biomejs/biome2.5.1indirect
npm@biomejs/cli-darwin-arm642.5.1indirect
npm@biomejs/cli-darwin-x642.5.1indirect
npm@biomejs/cli-linux-arm642.5.1indirect
npm@biomejs/cli-linux-arm64-musl2.5.1indirect
npm@biomejs/cli-linux-x642.5.1indirect
npm@biomejs/cli-linux-x64-musl2.5.1indirect
npm@biomejs/cli-win32-arm642.5.1indirect
npm@biomejs/cli-win32-x642.5.1indirect
npm@bruits/satteri-darwin-arm640.9.3indirect
npm@bruits/satteri-darwin-x640.9.3indirect
npm@bruits/satteri-linux-arm64-gnu0.9.3indirect
npm@bruits/satteri-linux-arm64-musl0.9.3indirect
npm@bruits/satteri-linux-x64-gnu0.9.3indirect
npm@bruits/satteri-linux-x64-musl0.9.3indirect
npm@bruits/satteri-wasm32-wasi0.9.3indirect
npm@bruits/satteri-win32-arm64-msvc0.9.3indirect
npm@bruits/satteri-win32-x64-msvc0.9.3indirect
npm@capsizecss/unpack4.0.1indirect
npm@clack/core1.4.2indirect
npm@clack/prompts1.6.0indirect
npm@cloudflare/kv-asset-handler0.5.0indirect
npm@cloudflare/unenv-preset2.16.1indirect
npm@cloudflare/vite-plugin1.42.3indirect
npm@cloudflare/vitest-pool-workers0.16.20indirect
npm@cloudflare/vitest-pool-workers^0.16indirect
npm@cloudflare/workerd-darwin-641.20260625.1indirect
npm@cloudflare/workerd-darwin-arm641.20260625.1indirect
npm@cloudflare/workerd-linux-641.20260625.1indirect
npm@cloudflare/workerd-linux-arm641.20260625.1indirect
npm@cloudflare/workerd-windows-641.20260625.1indirect
npm@cspotcode/source-map-support0.8.1indirect
npm@emmetio/abbreviation2.3.3indirect
npm@emmetio/css-abbreviation2.1.8indirect
npm@emmetio/css-parser0.4.1indirect
npm@emmetio/html-matcher1.3.0indirect
npm@emmetio/scanner1.0.4indirect
npm@emmetio/stream-reader2.2.0indirect
npm@emmetio/stream-reader-utils0.1.0indirect
npm@emnapi/core1.11.1indirect
npm@emnapi/runtime1.11.1indirect
npm@emnapi/wasi-threads1.2.2indirect
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@img/colour1.1.0indirect
npm@img/sharp-darwin-arm640.34.5indirect
npm@img/sharp-darwin-x640.34.5indirect
npm@img/sharp-libvips-darwin-arm641.2.4indirect
npm@img/sharp-libvips-darwin-x641.2.4indirect
npm@img/sharp-libvips-linux-arm1.2.4indirect
npm@img/sharp-libvips-linux-arm641.2.4indirect
npm@img/sharp-libvips-linux-ppc641.2.4indirect
npm@img/sharp-libvips-linux-riscv641.2.4indirect
npm@img/sharp-libvips-linux-s390x1.2.4indirect
npm@img/sharp-libvips-linux-x641.2.4indirect
npm@img/sharp-libvips-linuxmusl-arm641.2.4indirect
npm@img/sharp-libvips-linuxmusl-x641.2.4indirect
npm@img/sharp-linux-arm0.34.5indirect
npm@img/sharp-linux-arm640.34.5indirect
npm@img/sharp-linux-ppc640.34.5indirect
npm@img/sharp-linux-riscv640.34.5indirect
npm@img/sharp-linux-s390x0.34.5indirect
npm@img/sharp-linux-x640.34.5indirect
npm@img/sharp-linuxmusl-arm640.34.5indirect
npm@img/sharp-linuxmusl-x640.34.5indirect
npm@img/sharp-wasm320.34.5indirect
npm@img/sharp-win32-arm640.34.5indirect
npm@img/sharp-win32-ia320.34.5indirect
npm@img/sharp-win32-x640.34.5indirect
npm@jridgewell/gen-mapping0.3.13indirect
npm@jridgewell/resolve-uri3.1.2indirect
npm@jridgewell/sourcemap-codec1.5.5indirect
npm@jridgewell/trace-mapping0.3.31indirect
npm@jridgewell/trace-mapping0.3.9indirect
npm@napi-rs/wasm-runtime1.1.6indirect
npm@oslojs/encoding1.1.0indirect
npm@oxc-project/types0.137.0indirect
npm@playwright/test1.61.1indirect
npm@playwright/test^1.61.1indirect
npm@poppinss/colors4.1.6indirect
npm@poppinss/dumper0.6.5indirect
npm@poppinss/exception1.2.3indirect
npm@rolldown/binding-android-arm641.1.3indirect
npm@rolldown/binding-darwin-arm641.1.3indirect
npm@rolldown/binding-darwin-x641.1.3indirect
npm@rolldown/binding-freebsd-x641.1.3indirect
npm@rolldown/binding-linux-arm-gnueabihf1.1.3indirect
npm@rolldown/binding-linux-arm64-gnu1.1.3indirect
npm@rolldown/binding-linux-arm64-musl1.1.3indirect
npm@rolldown/binding-linux-ppc64-gnu1.1.3indirect
npm@rolldown/binding-linux-s390x-gnu1.1.3indirect
npm@rolldown/binding-linux-x64-gnu1.1.3indirect
npm@rolldown/binding-linux-x64-musl1.1.3indirect
npm@rolldown/binding-openharmony-arm641.1.3indirect
npm@rolldown/binding-wasm32-wasi1.1.3indirect
npm@rolldown/binding-win32-arm64-msvc1.1.3indirect
npm@rolldown/binding-win32-x64-msvc1.1.3indirect
npm@rolldown/pluginutils1.0.1indirect
npm@rollup/pluginutils5.4.0indirect
npm@rollup/rollup-android-arm-eabi4.62.2indirect
npm@rollup/rollup-android-arm644.62.2indirect
npm@rollup/rollup-darwin-arm644.62.2indirect
npm@rollup/rollup-darwin-x644.62.2indirect
npm@rollup/rollup-freebsd-arm644.62.2indirect
npm@rollup/rollup-freebsd-x644.62.2indirect
npm@rollup/rollup-linux-arm-gnueabihf4.62.2indirect
npm@rollup/rollup-linux-arm-musleabihf4.62.2indirect
npm@rollup/rollup-linux-arm64-gnu4.62.2indirect
npm@rollup/rollup-linux-arm64-musl4.62.2indirect
npm@rollup/rollup-linux-loong64-gnu4.62.2indirect
npm@rollup/rollup-linux-loong64-musl4.62.2indirect
npm@rollup/rollup-linux-ppc64-gnu4.62.2indirect
npm@rollup/rollup-linux-ppc64-musl4.62.2indirect
npm@rollup/rollup-linux-riscv64-gnu4.62.2indirect
npm@rollup/rollup-linux-riscv64-musl4.62.2indirect
npm@rollup/rollup-linux-s390x-gnu4.62.2indirect
npm@rollup/rollup-linux-x64-gnu4.62.2indirect
npm@rollup/rollup-linux-x64-musl4.62.2indirect
npm@rollup/rollup-openbsd-x644.62.2indirect
npm@rollup/rollup-openharmony-arm644.62.2indirect
npm@rollup/rollup-win32-arm64-msvc4.62.2indirect
npm@rollup/rollup-win32-ia32-msvc4.62.2indirect
npm@rollup/rollup-win32-x64-gnu4.62.2indirect
npm@rollup/rollup-win32-x64-msvc4.62.2indirect
npm@shikijs/core4.3.0indirect
npm@shikijs/engine-javascript4.3.0indirect
npm@shikijs/engine-oniguruma4.3.0indirect
npm@shikijs/langs4.3.0indirect
npm@shikijs/primitive4.3.0indirect
npm@shikijs/themes4.3.0indirect
npm@shikijs/types4.3.0indirect
npm@shikijs/vscode-textmate10.0.2indirect
npm@sindresorhus/is7.2.0indirect
npm@speed-highlight/core1.2.17indirect
npm@standard-schema/spec1.1.0indirect
npm@tybys/wasm-util0.10.3indirect
npm@types/chai5.2.3indirect
npm@types/deep-eql4.0.2indirect
npm@types/estree1.0.9indirect
npm@types/estree-jsx1.0.5indirect
npm@types/hast3.0.4indirect
npm@types/mdast4.0.4indirect
npm@types/nlcst2.0.3indirect
npm@types/node22.20.0indirect
npm@types/unist3.0.3indirect
npm@ungap/structured-clone1.3.2indirect
npm@vitest/expect4.1.9indirect
npm@vitest/mocker4.1.9indirect
npm@vitest/pretty-format4.1.9indirect
npm@vitest/runner4.1.9indirect
npm@vitest/snapshot4.1.9indirect
npm@vitest/spy4.1.9indirect
npm@vitest/utils4.1.9indirect
npm@volar/kit2.4.28indirect
npm@volar/language-core2.4.28indirect
npm@volar/language-server2.4.28indirect
npm@volar/language-service2.4.28indirect
npm@volar/source-map2.4.28indirect
npm@volar/typescript2.4.28indirect
npm@vscode/emmet-helper2.11.0indirect
npm@vscode/l10n0.0.18indirect
npmacorn8.17.0indirect
npmajv8.20.0indirect
npmajv-draft-041.0.0indirect
npmam-i-vibing0.4.0indirect
npmansi-regex5.0.1indirect
npmansi-styles4.3.0indirect
npmany-promise1.3.0indirect
npmanymatch3.1.3indirect
npmargparse2.0.1indirect
npmaria-query5.3.2indirect
npmassertion-error2.0.1indirect
npmastro7.0.3indirect
npmastro^7indirect
npmaxobject-query4.1.0indirect
npmbail2.0.2indirect
npmblake3-wasm2.1.5indirect
npmboolbase1.0.0indirect
npmbundle-require5.1.0indirect
npmcac6.7.14indirect
npmccount2.0.1indirect
npmchai6.2.2indirect
npmcharacter-entities-html42.1.0indirect
npmcharacter-entities-legacy3.0.0indirect
npmchokidar4.0.3indirect
npmchokidar5.0.0indirect
npmci-info4.4.0indirect
npmcjs-module-lexer1.2.3indirect
npmcliui8.0.1indirect
npmclsx2.1.1indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcomma-separated-tokens2.0.3indirect
npmcommander11.1.0indirect
npmcommander4.1.1indirect
npmcommon-ancestor-path2.0.0indirect
npmconfbox0.1.8indirect
npmconsola3.4.2indirect
npmconvert-source-map2.0.0indirect
npmcookie1.1.1indirect
npmcookie-es1.2.3indirect
npmcrossws0.3.5indirect
npmcss-select5.2.2indirect
npmcss-tree2.2.1indirect
npmcss-tree3.2.1indirect
npmcss-what6.2.2indirect
npmcsso5.0.5indirect
npmdebug4.4.3indirect
npmdefu6.1.7indirect
npmdequal2.0.3indirect
npmdestr2.0.5indirect
npmdetect-libc2.1.2indirect
npmdevalue5.8.1indirect
npmdevlop1.1.0indirect
npmdiff8.0.4indirect
npmdom-serializer2.0.0indirect
npmdomelementtype2.3.0indirect
npmdomhandler5.0.3indirect
npmdomutils3.2.2indirect
npmdset3.1.4indirect
npmemmet2.4.11indirect
npmemoji-regex8.0.0indirect
npmentities4.5.0indirect
npmentities6.0.1indirect
npmerror-stack-parser-es1.0.5indirect
npmes-module-lexer2.1.0indirect
npmesbuild0.28.1indirect
npmescalade3.2.0indirect
npmestree-walker2.0.2indirect
npmestree-walker3.0.3indirect
npmeventemitter35.0.4indirect
npmexpect-type1.4.0indirect
npmextend3.0.2indirect
npmfast-deep-equal3.1.3indirect
npmfast-string-truncated-width3.0.3indirect
npmfast-string-width3.0.2indirect
npmfast-uri3.1.2indirect
npmfast-wrap-ansi0.2.2indirect
npmfdir6.5.0indirect
npmfix-dts-default-cjs-exports1.0.1indirect
npmflattie1.1.1indirect
npmfontace0.4.1indirect
npmfontkitten1.0.3indirect
npmfsevents2.3.2indirect
npmfsevents2.3.3indirect
npmget-caller-file2.0.5indirect
npmget-tsconfig5.0.0-beta.4indirect
npmgithub-slugger2.0.0indirect
npmh31.15.11indirect
npmhast-util-from-html2.0.3indirect
npmhast-util-from-parse58.0.3indirect
npmhast-util-parse-selector4.0.0indirect
npmhast-util-to-html9.0.5indirect
npmhast-util-whitespace3.0.0indirect
npmhastscript9.0.1indirect
npmhtml-escaper3.0.3indirect
npmhtml-void-elements3.0.0indirect
npmhttp-cache-semantics4.2.0indirect
npmiron-webcrypto1.2.1indirect
npmis-docker3.0.0indirect
npmis-docker4.0.0indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-inside-container1.0.0indirect
npmis-plain-obj4.1.0indirect
npmis-wsl3.1.1indirect
npmjoycon3.1.1indirect
npmjs-yaml4.3.0indirect
npmjson-schema-traverse1.0.0indirect
npmjsonc-parser2.3.1indirect
npmjsonc-parser3.3.1indirect
npmjsonc-parser^3.3.1indirect
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
npmload-tsconfig0.2.5indirect
npmlru-cache11.5.1indirect
npmmagic-string0.30.21indirect
npmmagicast0.5.3indirect
npmmdast-util-to-hast13.2.1indirect
npmmdn-data2.0.28indirect
npmmdn-data2.27.1indirect
npmmicromark-util-character2.1.1indirect
npmmicromark-util-encode2.0.1indirect
npmmicromark-util-sanitize-uri2.0.1indirect
npmmicromark-util-symbol2.0.1indirect
npmmicromark-util-types2.0.2indirect
npmminiflare4.20260625.0indirect
npmmlly1.8.2indirect
npmmrmime2.0.1indirect
npmms2.1.3indirect
npmmuggle-string0.4.1indirect
npmmz2.7.0indirect
npmnanoid3.3.15indirect
npmneotraverse0.6.18indirect
npmnlcst-to-string4.0.0indirect
npmnode-fetch-native1.6.7indirect
npmnode-mock-http1.0.4indirect
npmnormalize-path3.0.0indirect
npmnth-check2.1.1indirect
npmobject-assign4.1.1indirect
npmobug2.1.3indirect
npmofetch1.5.1indirect
npmohash2.0.11indirect
npmoniguruma-parser0.12.2indirect
npmoniguruma-to-es4.3.6indirect
npmp-limit7.3.0indirect
npmp-queue9.3.0indirect
npmp-timeout7.0.1indirect
npmpackage-manager-detector1.6.0indirect
npmparse57.3.0indirect
npmpath-browserify1.0.1indirect
npmpath-to-regexp6.3.0indirect
npmpathe2.0.3indirect
npmpiccolore0.1.3indirect
npmpicocolors1.1.1indirect
npmpicomatch2.3.2indirect
npmpicomatch4.0.4indirect
npmpirates4.0.7indirect
npmpkg-types1.3.1indirect
npmplaywright1.61.1indirect
npmplaywright-core1.61.1indirect
npmpostcss8.5.15indirect
npmpostcss-load-config6.0.1indirect
npmprettier3.9.0indirect
npmprismjs1.30.0indirect
npmprocess-ancestry0.1.0indirect
npmproperty-information7.2.0indirect
npmradix31.1.2indirect
npmreaddirp4.1.2indirect
npmreaddirp5.0.0indirect
npmregex6.1.0indirect
npmregex-recursion6.0.2indirect
npmregex-utilities2.3.0indirect
npmrehype13.0.2indirect
npmrehype-parse9.0.1indirect
npmrehype-stringify10.0.1indirect
npmrequest-light0.5.8indirect
npmrequest-light0.7.0indirect
npmrequire-directory2.1.1indirect
npmrequire-from-string2.0.2indirect
npmresolve-from5.0.0indirect
npmresolve-pkg-maps1.0.0indirect
npmretext-smartypants6.2.0indirect
npmrolldown1.1.3indirect
npmrollup4.62.2indirect
npmsatteri0.9.3indirect
npmsax1.6.0indirect
npmsemver7.8.5indirect
npmsharp0.34.5indirect
npmshiki4.3.0indirect
npmsiginfo2.0.0indirect
npmsisteransi1.0.5indirect
npmsmol-toml1.7.0indirect
npmsource-map0.7.6indirect
npmsource-map-js1.2.1indirect
npmspace-separated-tokens2.0.2indirect
npmstackback0.0.2indirect
npmstd-env4.1.0indirect
npmstring-width4.2.3indirect
npmstringify-entities4.0.4indirect
npmstrip-ansi6.0.1indirect
npmsucrase3.35.1indirect
npmsupports-color10.2.2indirect
npmsvgo4.0.1indirect
npmthenify3.3.1indirect
npmthenify-all1.6.0indirect
npmtiny-inflate1.0.3indirect
npmtinybench2.9.0indirect
npmtinyclip0.1.15indirect
npmtinyexec0.3.2indirect
npmtinyexec1.2.4indirect
npmtinyglobby0.2.17indirect
npmtinyrainbow3.1.0indirect
npmtree-kill1.2.2indirect
npmtrim-lines3.0.1indirect
npmtrough2.2.0indirect
npmts-interface-checker0.1.13indirect
npmtslib2.8.1indirect
npmtsup8.5.1indirect
npmtypesafe-path0.2.2indirect
npmtypescript5.9.3indirect
npmtypescript-auto-import-cache0.3.6indirect
npmufo1.6.4indirect
npmultrahtml1.6.0indirect
npmuncrypto0.1.3indirect
npmundici7.28.0indirect
npmundici-types6.21.0indirect
npmunenv2.0.0-rc.24indirect
npmunified11.0.5indirect
npmunifont0.7.4indirect
npmunist-util-is6.0.1indirect
npmunist-util-position5.0.0indirect
npmunist-util-stringify-position4.0.0indirect
npmunist-util-visit5.1.0indirect
npmunist-util-visit-parents6.0.2indirect
npmunstorage1.17.5indirect
npmvfile6.0.3indirect
npmvfile-location5.0.3indirect
npmvfile-message4.0.3indirect
npmvite8.1.0indirect
npmvitefu1.1.3indirect
npmvitest4.1.9indirect
npmvolar-service-css0.0.70indirect
npmvolar-service-emmet0.0.70indirect
npmvolar-service-html0.0.70indirect
npmvolar-service-prettier0.0.70indirect
npmvolar-service-typescript0.0.70indirect
npmvolar-service-typescript-twoslash-queries0.0.70indirect
npmvolar-service-yaml0.0.70indirect
npmvscode-css-languageservice6.3.10indirect
npmvscode-html-languageservice5.6.2indirect
npmvscode-json-languageservice4.1.8indirect
npmvscode-jsonrpc8.2.0indirect
npmvscode-jsonrpc9.0.0indirect
npmvscode-languageserver9.0.1indirect
npmvscode-languageserver-protocol3.17.5indirect
npmvscode-languageserver-protocol3.18.1indirect
npmvscode-languageserver-textdocument1.0.12indirect
npmvscode-languageserver-types3.17.5indirect
npmvscode-languageserver-types3.18.0indirect
npmvscode-nls5.2.0indirect
npmvscode-uri3.1.0indirect
npmweb-namespaces2.0.1indirect
npmwhich-pm-runs1.1.0indirect
npmwhy-is-node-running2.3.0indirect
npmworkerd1.20260625.1indirect
npmwrangler4.105.0indirect
npmwrangler^4indirect
npmwrap-ansi7.0.0indirect
npmws8.21.0indirect
npmxxhash-wasm1.1.0indirect
npmy18n5.0.8indirect
npmyaml2.9.0indirect
npmyaml-language-server1.20.0indirect
npmyargs17.7.3indirect
npmyargs-parser21.1.1indirect
npmyargs-parser22.0.0indirect
npmyocto-queue1.2.2indirect
npmyouch4.1.0-beta.10indirect
npmyouch-core0.3.3indirect
npmzod3.25.76indirect
npmzod4.4.3indirect
npmzwitch2.0.4indirect
Dependency advisories 0

Installing npm:ymmv-cli@0.9.0 pulls in 1 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.

No known advisories affect the assessed dependencies.

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": [
        "astro",
        "cli",
        "cloudflare-workers",
        "command-line-tool",
        "developer-profile",
        "developer-tools",
        "dotfiles",
        "terminal"
      ],
      "is_fork": false,
      "size_kb": 1989,
      "has_wiki": false,
      "homepage": "https://ymmv.fyi",
      "languages": {
        "CSS": 32964,
        "Astro": 37916,
        "Shell": 9415,
        "JavaScript": 4049,
        "TypeScript": 654199
      },
      "pushed_at": "2026-07-25T07:12:37Z",
      "created_at": "2026-06-30T00:47:14Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T04:46:31Z",
      "description": "The tools you actually use. Publish from the CLI, diff against anyone's.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://ymmv.fyi",
      "name": "ymmv.fyi",
      "type": "Organization",
      "login": "ymmv-fyi",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/297593369?v=4",
      "created_at": "2026-06-28T09:12:09Z",
      "is_verified": null,
      "public_repos": 1,
      "account_age_days": 32
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-07-22T04:52:08Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-07-19T20:55:38Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-07-12T02:49:31Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2026-07-10T03:34:32Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:31Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:30Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:28Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:26Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:24Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:22Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:20Z"
        },
        {
          "tag": "v0.1.4",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:18Z"
        },
        {
          "tag": "v0.1.3",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:16Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:14Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:13Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:11Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "ac930a52fb1a1d2c5358cdae046628b7a9ed014d",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.9.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:46:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7e1622b900462ae1208a37488394cbc4a224a36a",
          "body": "The check's first await is a real fs read that fake timers cannot\nadvance; on a slow runner the fake 500ms grace fired before the fetch\nwas ever invoked, leaving the captured signal undefined (CI verify(22)\nat bb823c0). Gate the timer advance on the fetch actually starting.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): deflake the update-check grace/abort test",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:43:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb823c04dd9af6760d5ca83139441501d0499c73",
          "body": "`ymmv update` bullet names the npm/pnpm/bun global upgrades and the\nmanual fallback instead of promising the right package manager for any\ninstall. The @latest note stops claiming it beats npx's tag cache\n(update-check.ts pins exact versions precisely because it can't).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): scope update claims to what ships",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a4e040399980f85437c0a06a9b383bd99aefff2",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog for the update check and ymmv update",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "adbe30bd1aabf132fb047fef659f0edcd402f82a",
          "body": "Bare `npx ymmv-cli` can keep serving an old cached copy indefinitely, so\nevery copyable invocation (READMEs, landing hero/footer, profile foot and\ncopy button, 404 description, CI recipe) now carries @latest. READMEs\ndocument ymmv update and the update-check opt-outs. e2e clipboard pins\nupdated to match.",
          "is_bot": false,
          "headline": "docs+web: install invocations pin npx ymmv-cli@latest",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1efc60c5336f4230a031e269b76736c69d9119a",
          "body": "Passive npm-registry check runs concurrently with eligible commands and\nprints a one-line stderr notice (TTY only) when a newer release exists,\nlinking the releases page. Cache in the config dir throttles checks\n(24h success / 6h failure backoff); every failure is silent and the\nfinish grace caps ad\n[…]\ngated\nstderr latest hint; piped stdout stays byte-identical.\n\nOpt-outs: YMMV_NO_UPDATE_CHECK, NO_UPDATE_NOTIFIER, CI. Dev builds\n(0.0.0) never check. update is exempt from the config gate like logout.",
          "is_bot": false,
          "headline": "feat(cli): update notice + ymmv update command",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "633a7a5f74d2142ae68e9dd18469ec2aaf8f2443",
          "body": "The new CLI self-update verb joins CLI_VERBS so `ymmv update` can never\ncollide with a real profile. Prod D1 pre-checked clean for an existing\nclaim (users.handle_lower + handle_history.old_handle_lower); re-check\nrides the release tag while the claim window is open.",
          "is_bot": false,
          "headline": "feat(shared): reserve `update` as a non-claimable handle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d04d89e79bbd1d65b7bcdb681b5e4124de62245d",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.8.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:52:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cd36ef88c7dd6440e460cb64376b75dadde2f0f1",
          "body": "Under parallel suite load WSL's bash can fail to launch or exit nonzero\nwithout running the parse; the syntax tripwire now skips (loudly) unless\nbash actually reports a syntax error. Linux CI keeps the strict path.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): waf tripwire tolerates a flaky local bash launch",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "70f97d3024be139a5de5af282152359bb2c9f7f5",
          "body": "infra/waf-ratelimit.sh, pointed at by rate-limit.ts and wrangler.jsonc\nsince the rule shipped, now exists: verify prints the live zone rule and\ndiffs it against the file's constants (verified against production);\napply converges idempotently and only ever PUTs the phase entrypoint\nwhen a 404 proves \n[…]\nted, and a help.test.ts tripwire pins the script's\nexistence, its expression atoms, env-only credentials, bash syntax, and\nboth source pointers.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(infra): commit the WAF rate-limit provisioning script",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0ae6d7e7d288337f9b2dc92014f030b24e65afc3",
          "body": "loadCredential prefers a YMMV_TOKEN env credential (handle from\nYMMV_HANDLE) over the stored login; the file readers stay env-blind so\nlogin's revoke flow and logout never touch it. credentialEnvProblem\nvalidates both vars at startup (logout exempt) without ever echoing the\ntoken. A 401/409 under an\n[…]\nd, closing the confirm-to-send account-switch window.\nREADME documents the CI recipe, the runner-detection caveat, and the\ntoken file locations.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): YMMV_TOKEN authenticates without a browser",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8fc9f96355ecdcb421b36e64ad7067c06f70d0f0",
          "body": "Dev/ymmv-dev shared prod's namespace ids (1001/2001), so a bare remote\ndeploy would consume production's live rate-limit counters; dev now uses\n1000/2000 (staging already isolates as 1002/2002) and the CAVEAT comment\nnames the hazard. RETRY_AFTER is exported and a new wrangler-config test\npins every\n[…]\ninding's period to it, the expected limit, and pairwise\nnamespace distinctness, parsed with jsonc-parser so comment style can't\nbreak the suite.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): dev wrangler config gets its own rate-limit namespace ids",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29309dab274695aacbc3ff1b9c876c24641df8f4",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog entries for the CLI hardening; atomic token rotate TODO",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3b2b910e256323ed2a34816930778df0b9c87138",
          "body": "DETECTED_KEYS exported from detect.ts anchors two new tripwires: a\nconvention test pins detectStack's output to the constant, and the\nREADME Auto-detected list is checked per key. The help tripwire now\nparses the Curated keys block and asserts exact set equality with\nCURATED_KEYS instead of whole-source substring matches.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): README lists all ten detected fields, tripwired to the code",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "24c8934e1e7b633a3bc9c0467698b66a3a4ff7dc",
          "body": "…blished\n\nA transient failure loading the viewer's profile prints a faint stderr\nnote instead of the publish nudge; stdout stays card-only for pipes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): view distinguishes a failed own-profile fetch from never-pu…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e1e9716a2c788160f6a61c8f9e8e2835e6f87dfb",
          "body": "…y cards\n\nuseColor treats \"false\" like \"0\" (supports-color convention). renderProfile\nsections each push their own leading blank, so a zero-curated-entry profile\nno longer renders a double blank line; populated output is byte-identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): FORCE_COLOR=false disables color; single blank line on empt…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "626b95470cc3439d740e201c49b70199195d7b42",
          "body": "login peeks the stored credential, warns (prose, stderr) before\nreplacing a different base's token, and after a successful save\nrevokes the same-base token the file held at overwrite time. A failed\nrevoke never blocks the login. The device-code shape check bounds\ninterval (1..900s, finite) and expir\n[…]\nay) so a\nmangled 200 can neither hot-poll GitHub nor hold the login forever;\npollForToken self-defends and slow_down ignores unusable intervals.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): re-login revokes the replaced token; device-flow wire bounds",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17101f9ee41d349897820bfa903d42409d10c20a",
          "body": "normalizeBase feeds both BASE and the new baseProblem check, so the\nvalidator and the request base cannot drift; the value must equal its\nown parsed origin, killing every parser-normalization bypass. Invalid\nvalues fail fast naming the variable instead of surfacing as a fake\nconnectivity error. Empt\n[…]\n. logout is exempt so tokens\nstored under legacy bases stay revocable. The logout other-base echo\nis sanitized like every other untrusted print.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): YMMV_API is validated at startup",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8be792c7d14a43bcbc4bf1994b390778a614c464",
          "body": "loadToken rejects a null root, a missing or non-string handle, and an\nempty token instead of crashing or misdiagnosing a reserved username.\nNew lenient peekCredential (base + token, any base) backs the login\nrevoke path; all three readers share one raw-read core.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): token store survives corrupt token.json",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2579c0d0b366d1005abfd3590c56ce4298178cca",
          "body": "The reference block named the JSON API but gave readers no path to the\ncontract; the data-row note now links docs/api.md (GitHub blob URL, same\nconvention as the cli README pointer). Footer e2e pins the anchor. Closes\nthe TODOS entry it implements.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): footer json note links the API contract doc",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T16:13:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "57f80a52ce3b448ebbeee2df2a6ba3fc6a85d439",
          "body": "…ys tripwire\n\n- docs/api.md: shape, status matrix, caching directives, CORS, stability\n  promise; examples verified against the seeded local worker\n- both READMEs link the contract next to their existing API mention\n- the CLI convention suite now asserts every curated key appears in the doc\n- TODOS: capture linking the doc from the site footer as a future ride-along\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: public API contract in docs/api.md, README pointers, curated-ke…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T15:58:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6f02e0e138f9d8a1a8a74f05e7352d669a2348c5",
          "body": "…429 contract\n\n- the three Worker message strings (write 429, login 429, GitHub 503) use the\n  sentence-break style the CLI fallbacks already use\n- rate-limit.ts no longer claims the CLI keys on the rate_limited slug; the\n  contract is the 429 status, the optional {message}, and retry-after\n- web tests require a non-empty message with no em dash; CLI test fixtures\n  stubbing these responses updated to the new wire copy\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): server error copy drops em dashes; comment states the real …",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T15:58:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5a783de71c56937c60bce0e6ce22eeae35f26385",
          "body": "- read API 404/500 return {\"error\":\"not_found\"|\"internal_error\"} as\n  application/json; the 500 gains cache-control: no-store\n- access-control-allow-origin: * on every read response; OPTIONS preflight\n  handler (GET/HEAD grant, authorization named alongside the wildcard)\n- live profile read folds ow\n[…]\nies\n- tests pin the envelopes, headers, exact cache-control values, and a\n  one-statement read; e2e covers the served worker end of the contract\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): JSON errors, CORS + preflight, atomic read on the public API",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T15:58:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a8778850a436d66eb515cd1266ec64ddc96b6b99",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cap limits in README, changelog entries, TODOS updates",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9f543b4d862004fa12dd7e854b63fca5706e26f8",
          "body": "Over-cap answers re-prompt in place, detected over-cap values refuse\nbefore the network on -y, a 33rd extra is refused locally, and a failed\nPOST returns to the confirm step instead of discarding the session.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): interactive publish keeps answers through transient failures",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "50c6cf107db2048c937b3003dba699e262ed6962",
          "body": "Server {message} bodies surface instead of raw dumps, mint slugs map to\nhuman copy, logout distinguishes unreachable from refused, the mid-publish\nre-login explains itself, and deterministic failures become PublishRefusal.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): honest error copy across publish, delete, login, and logout",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6d196f68fc9e374929effefe34494f816a47ed25",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): local cap pre-flight for set values and extra labels",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1976dc760874ee6298b63a657ce639d93de60d0a",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): wire-error parsing helpers and a typed NetworkError",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1edd878fd11e77be82603b0184c4411b4278ff22",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): human message on every write rejection",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f702f168afbc1543a55c079255d631566c862259",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(shared): export write caps, upgrade copy on schema mismatch",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "496aa65c98ef1505abf3a5505d0daaa252815ce8",
          "body": "The set/unset invalid-key error and the unknown-option error also echo raw\nargv; both now strip escapes like the handle branches, and the escape test\nwalks all five rejection paths. The flag-first -y error echoes the user's\nown verb (delete/publish) or a non-destructive publish example instead of\noffering delete to everyone. reserved.ts notes the old-binary skew caveat\nwhen reserving command words.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): sanitize every argv echo path, tailor the -y ordering hint",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T05:36:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "34f0dfdd60bddd5ec37d255c67543f4927dff555",
          "body": "Invalid-handle errors strip ANSI/OSC bytes before echoing argv (both view\nand bare paths). VIEW_USAGE hoisted beside the other usage consts. Tests\ncover the documented set -e shorthand, version-flag trailing rejection,\nand the escape-stripping. Root README commands list matches the CLI's;\nCHANGELOG wording narrowed (set/unset still join multi-word values).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): sanitize argv echoes, dedupe view usage, review test gaps",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T05:36:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "95ea15cfcdd7c095e5eefb433387c5c313b67972",
          "body": "Reject unexpected trailing arguments per verb: flag-first `ymmv -y delete`\nerrors instead of publishing, `ymmv delete <handle> -y` errors instead of\ndeleting the caller's own profile, and login/logout/view/bare-handle forms\ndrop nothing silently (help stays permissive by design). `version` and\n`publ\n[…]\nhared;\nthe web write path enforces it). Capitalized verbs hint the lowercase\ncommand. Help and README document `delete -y`, `-e`, and `version`.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): strict argv guards, version/publish verbs, verb case hints",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T05:36:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bed196dfe0867e184efb0bfdb428fa89ce6d3077",
          "body": "Bumps the github-actions group with 1 update: [actions/setup-node](https://github.com/actions/setup-node).\n\n\nUpdates `actions/setup-node` from 6.4.0 to 7.0.0\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6a\n[…]\n\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/setup-node in the github-actions group",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-18T20:21:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fc0aa876cdb84988e9fa60214b80bab52d8500d6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.7.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:46:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d99190c0c78b3ead982b4f4a0b87ae4110d7179",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: move completed web todos",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:34:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "85bfa20c8c4b36a8ef43806cb50efe3e22329321",
          "body": "Theme state (data-theme, aria-pressed, theme-color meta) now re-applies on\nBFCache restore (pageshow persisted) and cross-tab changes (storage,\nincluding the null-key localStorage.clear() form), with a single\nstoredTheme()/applyTheme()/setTheme() source for the whitelist and\nfallback chain.\n\nThe ins\n[…]\nrejected clipboard write announces \"Copy failed\" in the\nlive region instead of failing silently. Dead native-button resets\ndropped from the css.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): theme resync across tabs/BFCache, accessible install command",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:34:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ec13a4a856d175d1121f0ac835ba5499c9ec1c9",
          "body": "POST /api/v1/profile rejected trim-empty entry values but stored accepted\nones raw, so curl could persist padded values the page rendered padded.\nValues are now trimmed, then visibility-checked, then stored trimmed,\nmirroring the extras guard. The shared invisible-char check moves from a\nhand-rolled\n[…]\nselectors\npassed the old list and stored visually blank rows) — this tightens\nextras identically. The length cap now measures the trimmed value.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(api): trim entry values at the write boundary",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:34:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b9b746b49c5b070281bb18506c3d71cfc63993b9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: logout keeps its own copy on revoke timeout, correct TODOS claim",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "880364cc9aed0b09c2b22940d2fd99898a099788",
          "body": "CHANGELOG [Unreleased] gains the three CLI entries for the next tagged\nrelease. The three shipped TODOS move to Completed. profile-ops.ts's\nextras-upsert comment stops claiming the server stores labels verbatim\n(it trims at the write boundary since the extras fix).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: stage changelog, move completed todos, fix stale comment",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3b19d17c2f480137e12482196fb9a1a5558aea87",
          "body": "ymmv 404 (and ymmv view api) used to make a network round-trip and\nmisreport \"no profile yet\" for names that can never have a profile. Both\nview paths now reject reserved names locally with a clear error; shape is\nchecked before reservation and the API stays the trust boundary. The baked\nlist means \n[…]\nhipped CLIs, now\ndocumented at both sites. Help copy drops the verb-collision rationale\n(all verbs are reserved, so such profiles cannot exist).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): reserved names fail fast locally",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "46d1761a3499e2a2eaaf9a67217e4f7f6c9a090f",
          "body": "Since the bound-handle guard, the dominant second-409 body is\nhandle_not_bound with actionable copy the CLI used to discard in favor of\na hardcoded handle-taken line that is wrong for that case. Prefer the\nserver's message via serverMessage (sanitized, 200-char capped); the\nhardcoded line stays as the fallback for non-JSON or message-less bodies.\nrateLimitMessage collapses to one line on the shared helpers.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): second publish-409 surfaces the server's message",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ebae5836839a79c20a2b5abd44b7ff1f7c0e0bc1",
          "body": "safeFetch defaults init.signal to AbortSignal.timeout(30_000) (explicit\nsignals win), the logout revoke rides safeFetch instead of bare fetch, and\nthe device-flow poll carries its own per-request signal feeding the\ntransient counter. Timeouts print one line, \"request timed out\", on every\nsurface: ca\n[…]\ne wire bytes to the\nterminal. New shared helpers serverMessage/withRetryHint/displayError/\nisTimeoutError DRY the four wire-message parse sites.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): every request times out after 30s with truthful error copy",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bb45394b4d9cd49e4a9006553b83eb7f99db36d4",
          "body": "Bumps the github-actions group with 1 update: [actions/cache](https://github.com/actions/cache).\n\n\nUpdates `actions/cache` from 4.3.0 to 6.1.0\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github\n[…]\n\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/cache in the github-actions group",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-10T11:36:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d88b01c7b97c64dba9ba59011edf984ced718d54",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: coverage for publish 500 path and same-handle re-login history",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T05:54:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ba82d435de7dc963062ec085898a1eadd824179",
          "body": "The CLI branches on publish-409 status alone, so behavior is unchanged;\nfixtures now model the server's dominant 409 body. TODOS gains a P4 to\nsurface the server's 409 message in a future CLI release.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: align CLI 409 fixtures with handle_not_bound, queue CLI copy TODO",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T05:54:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "479c1060a82656b3172947c2d7e642f58bd8dd34",
          "body": "POST /api/v1/profile no longer binds handles. The bound-handle guard\nrefuses any payload handle that is not the caller's current\nusers.handle_lower (409 handle_not_bound; deployed CLIs already\nself-heal on 409 via re-login), and the write batch re-checks the bind\nin every statement (CAS) so a publis\n[…]\nments is\nnow login-only; the UNIQUE-violation backstop is gone with publish's\nlast handle write. Response echoes the stored login-proven casing.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): publish only writes under the login-bound handle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T05:54:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "33238ae5ab91cd68620bcda494ceb32b35a37a4d",
          "body": "Mutable action tags (checkout@v7, setup-node@v6, pnpm/action-setup@v6,\ncache@v4) are now 40-char commit SHAs with version comments, in both\nworkflows: release.yml holds npm Trusted Publishing OIDC + the Cloudflare\nAPI token, and ci.yml shares the Astro-fonts cache key with the release\njobs, so an un\n[…]\n now documents the retry path: gh run rerun --failed, and check\nnpm view before rerunning a failed publish job (npm publish is not\nidempotent).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: SHA-pin actions, add job timeouts and dependabot",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T04:21:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d23d12d16b1e2a2bb961bcbda60c2c2f9393cb2f",
          "body": "npm 12.0.0 broke provenance publishing (npm/cli#9722): npm publish dies with\nCannot find module 'sigstore' from libnpmpublish/lib/provenance.js. The publish\nstep tracked npm@latest, so the v0.6.2 tag deployed the Worker and then failed at\nnpm publish. Node 22 ships npm 10.x and Trusted Publishing needs >= 11.5.1, so the\nupgrade step stays, pinned to the 11 major.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: pin release npm to 11.x",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:31:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b56c7f565eb5c3e7cf20142b3124a5226224fbf7",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.6.2",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4027ff5331583ee53b205e1e6a55516798eb6614",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: record the reserved handle and extras validation",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c6dadcd2c4692c1da23c9d4c4998d25c6aa9fea3",
          "body": "The write API checked extras only for type and length, so an empty or\nwhitespace-only label or value was storable and rendered as a blank row that the\nCLI could never unset. Entries already rejected blank values; extras now match.\n\nTrim before the checks and store the trimmed string, so padding is n\n[…]\n Reject a field when nothing visible survives, while\nstoring the user's bytes untouched when an invisible character merely decorates\nreal text.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): reject extras with no visible content",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22c28330e772225485d3f4f32cc6a94e03afe7ec",
          "body": "The site serves a static page at /404, and Astro resolves a static route ahead of\nthe dynamic [handle] page. So the handle \"404\" (a valid GitHub login) could be\npublished and served as JSON at /api/v1/u/404 while /404 rendered the not-found\npage: the HTML and JSON surfaces disagreed permanently.\n\nRe\n[…]\nn the gap. Two docstrings\nclaimed the reserved set was only api/login/logout; that stale comment is how the gap\ngot in, and both are corrected.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(shared): reserve the 404 handle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a760b1fd13098c2835b3737eda90bdc58de3b11",
          "body": "parseProfile capped entry.value and both extras fields but left entry.key,\nhandle, and updated_at with only a type check. All three reach sanitizeValue on\na CLI print path, so a hostile origin could feed a multi-megabyte string that the\nterminal sanitizer then scans. Cap them at the same read-side c\n[…]\nrous and decoupled from the write caps on purpose: a future\nwrite-cap increase must never make the CLI reject a legitimate first-party profile.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(shared): bound every profile string the sanitizer scans",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30d91f44cbb44bb22d34d513626c0899eb9ba52f",
          "body": "Scoped pnpm overrides bump transitive dev deps out of their vulnerable\nranges: yaml stack overflow (GHSA-48c2-rrv3-qjmp) via yaml-language-server,\nesbuild dev-server file read (GHSA-g7r4-m6w7-qqqr) via tsup. Both dedupe to\na single patched copy.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): pin yaml and esbuild past vuln ranges",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-08T00:45:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "986324eb786789455297cda0edffec2d56e22e15",
          "body": null,
          "is_bot": false,
          "headline": "fix(web): extend page grain to full document height",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-08T00:25:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7982d449c1dedef3bb0d0d68b2346faab75610ba",
          "body": "New design system documented in DESIGN.md.\n\n- brand: different font stack, fork-mark favicon/og image, og:image meta\n- landing: animated canvas hero, how-it-works section\n- profile: 'updated' stamp, SVG go arrow\n- diff: fork-mark heading, ratio-bar minimap of differing rows\n- e2e: font preload and token pins updated",
          "is_bot": false,
          "headline": "feat(web): redesign around new design system",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-07T23:29:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "422c9547405bf9573ce4b1176cfeb3dd6169259d",
          "body": null,
          "is_bot": false,
          "headline": "docs: match README tagline to site, add npm + CI badges",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-06T07:29:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b4620d8549492a68218c33aa9af2690dacede37",
          "body": null,
          "is_bot": false,
          "headline": "ci: cut a GitHub release from the CHANGELOG on each tag",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-06T07:29:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46992f2f35cfbcc83afccec1524ffe146da74d23",
          "body": "CHANGELOG stages the tag-driven ymmv-cli train; the Worker deploys by hand, so\na pure web change is live on ship and gets no [Unreleased] entry. Log a Worker\nchange only when it rides with a CLI change in the same tag.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: scope the CHANGELOG to CLI releases",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T21:01:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "813236c487d4cd5b37c23a9d694f70b1d9cbb825",
          "body": "Landing showed an example profile but not a diff, so the product's core verb\nwas invisible until you'd installed the CLI and published. Adds an\noctocat-vs-hubot example after the profile sample, teaches Diff.astro an\n`example` mode (plain-text handles, no swap, no extras) mirroring\nProfile.astro, an\n[…]\nn the live profile/diff pages tightened. e2e covers the 7/6 counts, the\nmissing-value row, amber-on-changed, single h1, and extras suppression.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): show an example diff on the landing page",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T21:01:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c892623908cfb03ebd85105ea6be61afd88b15ab",
          "body": "Cache node_modules/.astro/fonts keyed on the fonts config in the four\nbuild jobs (ci: verify + e2e; release: gate + deploy-worker), so builds\nstop re-fetching and a provider outage can't fail a cached build.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: cache Astro font downloads across builds",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T11:55:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0d130ee6c20fa222d78fc8e1c823754d4badedcc",
          "body": "Guards the migration: exactly 3 preload font links (a degraded build\ndrops one), /_astro/fonts/* serves 200, and --font-display/-sans/-mono\ncarry the real families.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(web): assert font preloads and self-hosting in e2e",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T11:55:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8692eddc000de1f19d4d1d86bf70ab7fe831b91b",
          "body": "Hand-written @font-face + manual preloads replaced by the stable fonts:\nconfig and the <Font> component. Fonts fetch at build (Fontshare +\nGoogle), self-host under hashed /_astro/fonts/* with immutable caching,\nand gain size-matched fallback metrics to cut CLS. General Sans stays 3\nstatics (no varia\n[…]\nder); Geist Mono is one sliced\nvariable file. Vendored woff2 removed; LICENSES.md kept for attribution\nsince the build redistributes the fonts.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(web): serve self-hosted fonts via Astro's Fonts API",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T11:55:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2d96dd4e84ef89d7aa3ad54995d982901f0cd5c4",
          "body": null,
          "is_bot": false,
          "headline": "feat(web): rework hero tagline copy",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T10:02:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b416d1fe1c2c7248a7c8cd6b9d500f026c6ed7a6",
          "body": null,
          "is_bot": false,
          "headline": "docs: add manual web deploy runbook",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:53:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b24261e50f56b6e46a96ee3af1047b8274790af9",
          "body": null,
          "is_bot": false,
          "headline": "docs: drop skill-routing section",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:53:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff6a692862d9e36dc89c31e6bed3394ca615d11a",
          "body": null,
          "is_bot": false,
          "headline": "fix(web): add title to favicon svg for biome a11y lint",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:20:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc026dbed7564a7e7deeb7bd577f29dc9a20c0dd",
          "body": null,
          "is_bot": false,
          "headline": "feat(web): add site favicon",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:20:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b59f5cd31cba5ef4451cc7a6942ae89b4323303",
          "body": null,
          "is_bot": false,
          "headline": "docs: trim README description",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:20:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fabd8e8df98eac5612c02d397e5ff4e1ecacafd9",
          "body": null,
          "is_bot": false,
          "headline": "docs: add diff example to demo.gif",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:50:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "223115e47a29c595395caf9ba482280bd92bdae0",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.6.1",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "22feabcd5243288d42fe43ed51a12f31d9fbacdb",
          "body": "RL_AUTH rides with RL_WRITE in the manual-steps list; safeFetch is not the\nsingle fetch choke point (logout revoke is raw fetch); the stdout-clean\nclaim scoped to the blank line; tape comments match the 0.6.0 publish flow.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: correct stale claims in changelog, CLAUDE.md, TODOS.md, demo tape",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4e7e3dcef6081b827df4afbeceb477130262a42d",
          "body": "…tyle\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: strip stray indent from CLAUDE.md intro, match changelog bold s…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "50430d679d53e124057b5cfe4c2cc1dacbbd46f2",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog for the output-spacing pass",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f5d0ce5be88d765f56a98037031860a0b75a38bc",
          "body": "An HTTP-date retry-after (the WAF/proxy form) garbled the rate-limit\nmessage; the raw header also skipped the sanitize-at-render rule.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): retry hint only for seconds-form retry-after",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5233a53e2ae799b41f25bbf753780e3646b1b23a",
          "body": "One convention (render.ts header): every unit opens with one blank line,\nindents two spaces, and never carries trailing blanks; cli.ts prints the\none closing blank line (stdout on success, stderr on failure so pipes\nstay clean). help and --version stay flush-left. Fixes the cramped\npublish confirmation and the double blank between a viewed card and the\nnudge. Convention pinned by exact-byte tests incl. spawned-bin checks.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): print every message as an indented output unit",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "df18f48a6ce8b6ec757cc8fbf1a5220777bf94ae",
          "body": ".claude/ and .audits/ are machine-local; CLAUDE.md and TODOS.md are repo docs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: ignore local tooling state, track project docs",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e875ff7881c7083dc5b3aa01c90201ee75cc6ce7",
          "body": null,
          "is_bot": false,
          "headline": "docs: update demo.gif",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:55:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "225653bf94eb8f9edbe342f3dc15ebf227d6fd9c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.6.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d9acd6c3b524365897e4733ce4bd1ec735409f56",
          "body": "Coverage audit gaps: renderProfile extras rows (incl. URL-extra\nlinkify), the second-409 handle-taken verdict, generic POST failure,\nand requestDeviceCode's non-ok status. 86% -> 92% of changed paths\nasserted; the rest are cosmetic smoke or manual-by-design.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: cover the remaining error-path branches",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3e218a5cf74991f38346b6ea1794222e07e3fbbe",
          "body": "A malformed error body ({\"message\": 123}) reached wireText through\ntruthiness-only callers and threw a TypeError inside the error path\nitself. Coerce with String() before sanitizing; the error path never\nthrows.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): wireText coerces non-string wire values",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "051bba7f2b8ead4e1f1c327a1155503bf6bf0d04",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: trim changelog to user-facing changes",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ab485763efb74bc39958eafa4d0d8ed900abfd7",
          "body": "A reader of ymmv help is already holding the CLI, and the first usage\nline says what ymmv does. The CTA belongs on the web page, where it\nlives already.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): drop the publish-your-own footer from help",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2cf3bff13cf2b5445d2a719bd15b0245496bf72c",
          "body": "Respects-NO_COLOR is a convention, not news, and YMMV_API is a\ncontributor knob; neither earns a line every user reads. Both stay\ndocumented in the READMEs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): drop the env-var footer from help",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c1eaed54d9cec07dcad29c0b701b1d828ad110d6",
          "body": "Auth retries refuse ANY rebound identity (the 409 path now matches the\n401 guard; a re-run re-reads under the current handle, so a rename heal\nsurvives as two commands and a squat-seeded merge never publishes).\nCtrl+D at a prompt aborts cleanly instead of exiting 0 with a pending\nquestion unsettled;\n[…]\n Test env is hermetic\n(setup-env scrubs YMMV_API/FORCE_COLOR/NO_COLOR, pins TERM); new\nprompter, wireText, mint-shape, and Published-line tests.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): pre-landing review hardening",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd3fdef734b82b7f2f7e056dab4fe4f30c56153d",
          "body": "…ators\n\nThe foot becomes a flex row: numbers in ink (the existing .foot b idiom)\nwith faint words, a 24px gap standing in for the CLI's three spaces, and\nswap → alone on the right edge as the one action. Interpuncts gone.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): redesign the diff foot — counts left, swap right, no separ…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "897cfac8b21e793fd852c62a5febd28b54b3b82b",
          "body": "\"N differ   M shared\" in the terminal; \"N differ · M shared · swap →\"\non the web (HTML collapses spaces, the interpunct carries the layout\nthere). The tagline is gone from both surfaces.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: diff footer is just the counts",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "699e1b557272c590ff433738c73bdad9f7167047",
          "body": "\"N differ · M shared: your mileage may vary\" everywhere the line renders\n(CLI diff, web diff foot, README samples), and the web extras heading\nreads \"Extras (not compared)\". The two surfaces stay identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: drop the em dash from the diff footer on both surfaces",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ef056ce87112402b8ebf7208a1d3c6db0e42ac21",
          "body": "A message that contains a sentence break now opens with a capital too:\n\"Can't reach ymmv.fyi. Check your connection (...)\", \"Session expired.\nRun ...\". Single fragments (publish failed: 500, rate limited, ...) stay\nlowercase.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): capitalize multi-sentence messages",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed68e25442072dd82b659660263277704282a5af",
          "body": "Every prompt, error, and confirmation now uses plain punctuation\n(periods, semicolons, a colon in the help title). The diff footer keeps\nits web-matching typography, and the em dash survives as the\nmissing-value glyph. Test regexes and the plain-help snapshot follow.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): drop em dashes from runtime messages",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4c2f7c4afb769515f0c598bd16a947c052172cfc",
          "body": "Hint reads \"Enter to keep, \\\"-\\\" to clear\" (symmetric verbs, no\nseparator glyph). Abort lines drop the em dash: \"Aborted. Nothing\npublished.\" / \"Cancelled. Nothing deleted.\"\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): prompt-hint and abort copy",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5448314161fed0ee6a37ffe5c41c91cbb6e5c6ef",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog for the CLI restyle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4ad18952a7dfca8d89da797bb02b36d521813ed3",
          "body": "…t account\n\nA 401 mid-publish re-runs the device flow and retries. If a different\nGitHub account gets authorized in that browser tab, the retry would\npublish the first account's merged profile onto the second — a silent\ncross-account overwrite. The retry now refuses when the re-minted handle\ndiffers from the profile being published. The 409 path keeps its rebind:\nthere the handle itself is the dispute, and a changed handle is the heal.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): refuse the 401-retry publish when re-login binds a differen…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7ec78deb4fd4ee53e26e0b97e1bca6cb2d8acf67",
          "body": "help renders with faint section heads and a bold wordmark; plain output\nstays byte-identical (pinned by a snapshot test; the curated-key list\nremains literal in source for the sync tripwire). publishProfile returns\n{handle, url} instead of printing — commands compose their own output:\npublish prints\n[…]\n verification link, a bold sanitized code (was printed\nraw off the wire), a waiting-for-approval line, and — standalone only —\na next-step hint.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): styled help, linked messages, one-line set/unset",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d6fa591c79c01350111731dd384c22c6c7c7cb33",
          "body": "New http.ts safeFetch wraps every CLI fetch (api, login mint, device\nflow): any thrown network failure — undici TypeError, TLS, proxy — reads\nas \"can't reach <host> — check your connection (<cause>)\" instead of a\nraw fetch failed. A thrown fetch during the GitHub login poll now counts\nas a transient like a proxy 5xx (previously it crashed a login the user\nhad already approved), and the give-up message carries the last cause.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): actionable network errors; login poll survives blips",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8eca91de5cce649ec98963ef90cf754d218c665f",
          "body": "…ompts\n\nRepublishing shows the merged preview card immediately; one keypress\npublishes, n aborts, e opens the prefilled field walk (loop until\nconfirmed). First-ever publish keeps the guided prompts, now preceded by\na one-line hint making Enter-to-keep and \"-\"-to-clear discoverable.\nymmv -y on a TTY\n[…]\n); the delete confirm cancels\nthe same way. The carried-fields and duplicate-extra notes recompute\nwith every card so an edit pass updates them.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): card-first republish with [Y/n/e], -y publishes without pr…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35e159df60711957d8e0d143c82379dae6afa214",
          "body": "Prompt labels render faint (plain output byte-identical). New\nPrompter.choice() asks single-letter questions (first-letter match,\nre-ask on garbage, keys validated unique). Ctrl+C during any question\naborts it via AbortSignal — the nodejs/node#53497 workaround — and\nsurfaces as PromptAborted for the command to handle; between questions\nthe process exits 130 directly instead of readline swallowing the\nsignal and hanging.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): styled prompts, single-letter choice(), clean Ctrl+C",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fa3a23c0550ddad649ce190d6d8ee87f2545fb99",
          "body": "The profile card opens with the web breadcrumb (faint site/ + bold\nhandle), URL values render as links, and the updated line is humanized\n(3h ago; plain date past 30 days). A new preview mode — used only by the\npublish flow — lists unset curated keys as faint em-dash rows and drops\nthe not-yet-true \n[…]\nhiding empties. The diff\ngains the web's title line (how X differs from you) and uppercase column\nheaders. README diff samples updated to match.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): card + diff parity with the web",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "887e336159732ed518e3b7b7424cad7653dbec3b",
          "body": "link() renders URLs amber with an OSC-8 hyperlink and https://-stripped\ndisplay when color is on (full plain URL when off; no OSC-8 on TERM=linux/\ndumb, which mishandle unknown OSC). relTime() humanizes wire timestamps.\ncolorEnabled() moves into render.ts so every print site shares one gate.\nnotFound() links the site CTA. Amber now covers links + diff-differences,\nmatching the web's scarcity rule exactly.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): render toolkit — links, relative time, shared color gate",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 16,
      "commits_last_year": 128,
      "latest_release_at": "2026-07-22T04:52:08Z",
      "latest_release_tag": "v0.9.0",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 8,
      "mean_days_between_releases": 2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "ymmv-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ymmv",
            "uses",
            "dotfiles",
            "developer-tools",
            "profile",
            "diff",
            "cli",
            "terminal"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/ymmv-cli",
          "is_deprecated": false,
          "latest_version": "0.9.0",
          "repository_url": "https://github.com/ymmv-fyi/ymmv",
          "versions_count": 16,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2783,
          "first_published_at": "2026-06-30T01:14:08.057000Z",
          "latest_published_at": "2026-07-22T04:51:59.736000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/cli/tsconfig.json",
        "packages/shared/tsconfig.json",
        "packages/web/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 50191,
      "source_files_sampled": 84,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 3020
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 1,
        "malicious_count": 0,
        "assessed_package": "npm:ymmv-cli@0.9.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "env-paths",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3"
        },
        {
          "name": "@ymmv/shared",
          "manifest": "packages/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "env-paths",
            "direct": true,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/check",
            "direct": false,
            "version": "0.9.9",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/check",
            "direct": false,
            "version": "^0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/cloudflare",
            "direct": false,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/cloudflare",
            "direct": false,
            "version": "^14",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler",
            "direct": false,
            "version": "2.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-darwin-arm64",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-darwin-x64",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-arm64-gnu",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-arm64-musl",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-x64-gnu",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-x64-musl",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-wasm32-wasi",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-win32-arm64-msvc",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-win32-x64-msvc",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-rs",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/internal-helpers",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/language-server",
            "direct": false,
            "version": "2.16.10",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/markdown-satteri",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/prism",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/telemetry",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/underscore-redirects",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/yaml2ts",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-arm64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-x64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64-musl",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64-musl",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-arm64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-x64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-darwin-arm64",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-darwin-x64",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-arm64-gnu",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-arm64-musl",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-x64-gnu",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-x64-musl",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-wasm32-wasi",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-win32-arm64-msvc",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-win32-x64-msvc",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@capsizecss/unpack",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/core",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/prompts",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/kv-asset-handler",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/unenv-preset",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/vite-plugin",
            "direct": false,
            "version": "1.42.3",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/vitest-pool-workers",
            "direct": false,
            "version": "0.16.20",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/vitest-pool-workers",
            "direct": false,
            "version": "^0.16",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-arm64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-arm64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-windows-64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cspotcode/source-map-support",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/abbreviation",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/css-abbreviation",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/css-parser",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/html-matcher",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/scanner",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/stream-reader",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/stream-reader-utils",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.2",
            "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": "@img/colour",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-riscv64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-riscv64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "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": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oslojs/encoding",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.137.0",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "^1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/colors",
            "direct": false,
            "version": "4.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/dumper",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/exception",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-oniguruma",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/primitive",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@speed-highlight/core",
            "direct": false,
            "version": "1.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree-jsx",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/nlcst",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/kit",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/language-core",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/language-server",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/language-service",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/source-map",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/typescript",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@vscode/emmet-helper",
            "direct": false,
            "version": "2.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vscode/l10n",
            "direct": false,
            "version": "0.0.18",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-draft-04",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "am-i-vibing",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.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-query",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astro",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "astro",
            "direct": false,
            "version": "^7",
            "ecosystem": "npm"
          },
          {
            "name": "axobject-query",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "blake3-wasm",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bundle-require",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "6.7.14",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "common-ancestor-path",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "consola",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-es",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "crossws",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "csso",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "defu",
            "direct": false,
            "version": "6.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "destr",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "devalue",
            "direct": false,
            "version": "5.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "dset",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "emmet",
            "direct": false,
            "version": "2.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-stack-parser-es",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.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.2",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fix-dts-default-cjs-exports",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flattie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontace",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontkitten",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "5.0.0-beta.4",
            "ecosystem": "npm"
          },
          {
            "name": "github-slugger",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "h3",
            "direct": false,
            "version": "1.15.11",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-html",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "iron-webcrypto",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-inside-container",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "joycon",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "^3.3.1",
            "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": "load-tsconfig",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magicast",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.0.28",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "miniflare",
            "direct": false,
            "version": "4.20260625.0",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "mrmime",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "muggle-string",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "mz",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "ecosystem": "npm"
          },
          {
            "name": "neotraverse",
            "direct": false,
            "version": "0.6.18",
            "ecosystem": "npm"
          },
          {
            "name": "nlcst-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch-native",
            "direct": false,
            "version": "1.6.7",
            "ecosystem": "npm"
          },
          {
            "name": "node-mock-http",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "ofetch",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "ohash",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-queue",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-timeout",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "package-manager-detector",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-browserify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "piccolore",
            "direct": false,
            "version": "0.1.3",
            "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": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.61.1",
            "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": "prettier",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "prismjs",
            "direct": false,
            "version": "1.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-ancestry",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "radix3",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex-recursion",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-utilities",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype",
            "direct": false,
            "version": "13.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-parse",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "request-light",
            "direct": false,
            "version": "0.5.8",
            "ecosystem": "npm"
          },
          {
            "name": "request-light",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retext-smartypants",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "satteri",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "shiki",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "smol-toml",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "sucrase",
            "direct": false,
            "version": "3.35.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "10.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "4.0.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-inflate",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyclip",
            "direct": false,
            "version": "0.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tree-kill",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-interface-checker",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsup",
            "direct": false,
            "version": "8.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "typesafe-path",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-auto-import-cache",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "ultrahtml",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "uncrypto",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "unenv",
            "direct": false,
            "version": "2.0.0-rc.24",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unifont",
            "direct": false,
            "version": "0.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "unstorage",
            "direct": false,
            "version": "1.17.5",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "vitefu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-css",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-emmet",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-html",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-prettier",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-typescript",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-typescript-twoslash-queries",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-yaml",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-css-languageservice",
            "direct": false,
            "version": "6.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-html-languageservice",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-json-languageservice",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-jsonrpc",
            "direct": false,
            "version": "8.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-jsonrpc",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-protocol",
            "direct": false,
            "version": "3.17.5",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-protocol",
            "direct": false,
            "version": "3.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-textdocument",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-types",
            "direct": false,
            "version": "3.17.5",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-types",
            "direct": false,
            "version": "3.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-nls",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-uri",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-pm-runs",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "workerd",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrangler",
            "direct": false,
            "version": "4.105.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrangler",
            "direct": false,
            "version": "^4",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "xxhash-wasm",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml-language-server",
            "direct": false,
            "version": "1.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "22.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "youch",
            "direct": false,
            "version": "4.1.0-beta.10",
            "ecosystem": "npm"
          },
          {
            "name": "youch-core",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 507,
        "direct_count": 1,
        "indirect_count": 506
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 40,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "bardisty",
          "commits": 126,
          "avatar_url": "https://avatars.githubusercontent.com/u/6248459?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "biome.json"
      ],
      "has_editorconfig": true,
      "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": "6 out of 6 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/9 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 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": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 8,
            "reason": "dependency not pinned by hash detected -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 1,
            "reason": "9 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "ac930a52fb1a1d2c5358cdae046628b7a9ed014d",
        "ran_at": "2026-07-31T02:19:13Z",
        "aggregate_score": 4.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T07:19:38Z",
      "oldest_open_prs": [
        {
          "number": 40,
          "created_at": "2026-07-21T07:52:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 42,
          "created_at": "2026-07-25T07:12:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-22T04:40:41Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ymmv-fyi/ymmv",
    "host": "github.com",
    "name": "ymmv",
    "owner": "ymmv-fyi"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": "The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 62,
            "calibrated": 69,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 69,
      "inputs": {
        "security": 59,
        "vitality": 74,
        "community": 32,
        "governance": 48,
        "calibration": "2026-08-02",
        "engineering": 90,
        "ai_readiness": 85,
        "weighted_overall_raw": 62
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 74,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "commits_last_year": 128,
              "human_commit_share": 0.98,
              "days_since_last_push": 5,
              "active_weeks_last_year": 4
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "128 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 128
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "exceptional",
            "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": 16,
              "latest_release_tag": "v0.9.0",
              "releases_from_tags": false,
              "days_since_latest_release": 8,
              "mean_days_between_releases": 2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "16 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 8 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 32,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 57,
            "inputs": {
              "packages": [
                "ymmv-cli"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2783
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,783 downloads/month across npm",
                "points": 45.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2783,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "weak",
        "name": "Sustainability & Governance",
        "value": 48,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 67,
            "inputs": {
              "merged_prs": 40,
              "open_issues": 0,
              "closed_issues": 0,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "40/40 decided PRs merged",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 40,
                      "decided": 40
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "ymmv-fyi",
              "public_repos": 1,
              "account_age_days": 32
            },
            "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": "0 followers of ymmv-fyi",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "ymmv-fyi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "1 public repos, account ~0 yr old",
                "points": 2.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 1
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "ymmv-cli"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "16 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 90,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "6 out of 6 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": [
                "astro",
                "cli",
                "cloudflare-workers",
                "command-line-tool",
                "developer-profile",
                "developer-tools",
                "dotfiles",
                "terminal"
              ],
              "has_wiki": false,
              "homepage": "https://ymmv.fyi",
              "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://ymmv.fyi",
                "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": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "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": 59,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "weak",
            "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": 49,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "6 out of 6 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no 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": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow 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 8",
                "points": 4,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "9 existing vulnerabilities detected",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:ymmv-cli@0.9.0 runtime dependency closure — what installing the published package pulls in — 1 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:ymmv-cli@0.9.0",
                  "assessed": 1
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 1,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "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": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "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": "exceptional",
            "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": 1,
              "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
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "excellent",
        "name": "AI Readiness",
        "value": 85,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 3020
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "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": "98 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 98,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/cli/tsconfig.json",
                "packages/shared/tsconfig.json",
                "packages/web/tsconfig.json"
              ],
              "agent_commit_share": 0.83,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.02
            },
            "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/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/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": "83 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 83,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "2 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 2,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "exceptional",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 50191,
              "source_files_sampled": 84,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/84 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 84,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [
        "library",
        "application"
      ],
      "labels": [
        "cli",
        "library"
      ],
      "scores": {
        "cli": 6,
        "library": 6
      },
      "primary": "cli",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:npm",
          "weight": 6
        },
        {
          "tier": "description",
          "label": "cli",
          "source": "description:cli",
          "weight": 2
        },
        {
          "tier": "tags",
          "label": "cli",
          "source": "tag:cli",
          "weight": 2
        },
        {
          "tier": "tags",
          "label": "cli",
          "source": "tag:command-line-tool",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.5.0"
  },
  "warnings": [],
  "report_type": "repository",
  "generated_at": "2026-07-31T02:19:26.917259Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/y/ymmv-fyi/ymmv.svg",
  "full_name": "ymmv-fyi/ymmv",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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 v2.5.0, schema v0.27.0 — full methodology · metrics wiki.

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