Public record
Software health reportschema 0.27.0 · metrics 2.3.1 · 2026-07-27 22:22 UTC

anousss007 / blatui

shadcn/ui for the BLAT stack — a CLI that copies Blade components you own into your Laravel project. MIT.

Blade · PHPCustom license★ 211 stars⑂ 10 forkssince May 2026View on GitHub ↗
KindLibraryCommand-line toolhow this is determined

anousss007/blatui holds a health index of 57 out of 100, placing it in the Moderate band. It scores highest on Vitality (76/100) and lowest on Security (25/100). It was last updated today. A single contributor accounts for most of its recent work.

57
overall / 100
Moderate

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.

57
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 55 is calibrated to 57 on the published index scale (record calibration 2026-08-02).

Ownership

Anas B.Personal account
0 followers4 public repossince Apr 2013

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
Packagistanousss007/blatuiv1.17.12,162365 days agouiclicomponentslaravelbladetailwindcssalpinejsshadcnblatui

Metrics by category

Vitality

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

76Good · 21% of overall
How it's scored
36/36Push recency — last push 0 days ago
5.5/36Commit cadence — 8/52 weeks with commits
18/18Commit volume — 202 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_year202
human_commit_share1
days_since_last_push0
active_weeks_last_year8

Release discipline

100Exceptional
How it's scored
27/27Ships releases — 37 releases published
36/36Release recency — latest release 0 days ago
27/27Release cadence — a release every ~4.6 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count37
latest_release_tagv1.18.0
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases4.6
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?

57Moderate · 17% of overall
How it's scored
37.7/60Stars — 211 stars
8/25Forks — 10 forks
3.9/15Watchers — 6 watchers
Inputs used
forks10
stars211
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
16.9/22.5License — license file present, not a recognized license
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
readme_badges
has_contributingyes
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateyes
How it's scored
44.5/80Monthly downloads — 2,162 downloads/month across packagist
4/20Registry dependents — 3 packages depend on it
Inputs used
packagesanousss007/blatui
dependents3
ecosystemspackagist
total_downloads2,328
monthly_downloads2,162

Sustainability & Governance

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

44Weak · 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
42/42Issue resolution — 100% of issues closed
0/30PR acceptance — 0/1 decided PRs merged
0/13Newcomer PR acceptance — no first-time contributor's PR decided in 30d
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Inputs used
merged_prs0
open_issues0
closed_issues8
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio1
closed_unmerged_prs1
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluded from scoring (no data or not applicable): newcomer_pr_acceptance. Remaining weights renormalized.
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
0/25Owner reach — 0 followers of anousss007
17.1/25Track record — 4 public repos, account ~13 yr old
Inputs used
followers0
owner_typeUser
is_verified
owner_loginanousss007
public_repos4
account_age_days4,854
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.

Package maintenance

100Exceptional
How it's scored
25/25Published & resolvable — 1 package(s) on packagist
35/35Publish recency — latest publish 5 days ago
20/20Version history — 36 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesanousss007/blatui
ecosystemspackagist
any_deprecatedno
min_days_since_publish5

Engineering Quality

Are baseline engineering and documentation practices in place?

71Good · 19% of overall
How it's scored
24/24CI workflows — 2 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — no data
Inputs used
has_ciyes
has_testsyes
has_editorconfigyes
has_linter_configno
has_precommit_configno
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.
How it's scored
30/30README
25/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepage
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

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

25At Risk · 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
0/2.5CI-Tests — no data
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — no data
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5License — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — no data
0/5Pinned-Dependencies — no data
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — no data
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2.6
Excluded from scoring (no data or not applicable): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Remaining weights renormalized.

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.

41Weak · 4% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
39.5/40Legible commit history — 74 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.74
agent_instruction_files
agent_instruction_max_bytes
How it's scored
0/18One-command bootstrap
22/22Automated tests
0/11Lint / format config
0/11Static type checking
10/10Reproducible environment — lockfile
0/10Demonstrated agent practice — no agent-authored commits among the last 100
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — no data
Inputs used
has_nixno
has_testsyes
lockfilescomposer.lock, package-lock.json
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.
How it's scored
0/45Type-checkable code — Blade without a type-check config
54.7/55Manageable file sizes — 11/2,241 source files over 60KB
Inputs used
primary_languageBlade
largest_source_bytes72,302
source_files_sampled2,241
oversized_source_files11
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_files

Key facts

211GitHub stars
1contributors
202commits, last 12 months
0days since last push
37releases
1bus factor
0open issues
Packagistpackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

More detail

Star and fork history 0 ★ / 10 ⇿
0Stars
10Forks
7Releases

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

345689101032026-062026-072026-07
Major 0Minor 3Patch 4
OpenSSF Scorecard 2.6 / 10
2.6aggregate

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-27 22:22 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/aCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
n/aDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/aPackagingpackaging workflow not detected
n/aPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
n/aToken-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
Direct dependencies 2
RegistryPackageVersion constraintManifest
Packagistilluminate/console^11.0 || ^12.0 || ^13.0composer.json
Packagistilluminate/support^11.0 || ^12.0 || ^13.0composer.json
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 1658,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 186533,
        "PHP": 616657,
        "Blade": 4696955,
        "Shell": 9269,
        "JavaScript": 196271
      },
      "pushed_at": "2026-07-27T22:19:33Z",
      "created_at": "2026-05-29T14:39:41Z",
      "owner_type": "User",
      "updated_at": "2026-07-27T22:19:46Z",
      "description": "shadcn/ui for the BLAT stack — a CLI that copies Blade components you own into your Laravel project. MIT.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Blade",
      "significant_languages": [
        "Blade",
        "PHP"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Anas B.",
      "type": "User",
      "login": "anousss007",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/4137453?v=4",
      "created_at": "2013-04-12T13:55:53Z",
      "is_verified": null,
      "public_repos": 4,
      "account_age_days": 4854
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.18.0",
          "kind": "minor",
          "published_at": "2026-07-27T22:19:48Z"
        },
        {
          "tag": "v1.17.1",
          "kind": "patch",
          "published_at": "2026-07-22T07:29:54Z"
        },
        {
          "tag": "v1.16.0",
          "kind": "minor",
          "published_at": "2026-07-03T18:01:06Z"
        },
        {
          "tag": "v1.15.3",
          "kind": "patch",
          "published_at": "2026-06-28T07:01:33Z"
        },
        {
          "tag": "v1.15.2",
          "kind": "patch",
          "published_at": "2026-06-28T06:54:27Z"
        },
        {
          "tag": "v1.15.1",
          "kind": "patch",
          "published_at": "2026-06-27T18:50:24Z"
        },
        {
          "tag": "v1.15.0",
          "kind": "minor",
          "published_at": "2026-06-26T05:55:34Z"
        },
        {
          "tag": "v1.14.1",
          "kind": "patch",
          "published_at": "2026-06-24T09:00:45Z"
        },
        {
          "tag": "v1.14.0",
          "kind": "minor",
          "published_at": "2026-06-24T06:24:12Z"
        },
        {
          "tag": "v1.13.2",
          "kind": "patch",
          "published_at": "2026-06-16T13:57:47Z"
        },
        {
          "tag": "v1.13.1",
          "kind": "patch",
          "published_at": "2026-06-15T22:53:47Z"
        },
        {
          "tag": "v1.13.0",
          "kind": "minor",
          "published_at": "2026-06-15T21:36:50Z"
        },
        {
          "tag": "v1.12.2",
          "kind": "patch",
          "published_at": "2026-06-14T14:24:15Z"
        },
        {
          "tag": "v1.12.1",
          "kind": "patch",
          "published_at": "2026-06-11T18:14:38Z"
        },
        {
          "tag": "v1.12.0",
          "kind": "minor",
          "published_at": "2026-06-11T15:49:44Z"
        },
        {
          "tag": "v1.11.0",
          "kind": "minor",
          "published_at": "2026-06-11T13:46:59Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-06-11T10:39:22Z"
        },
        {
          "tag": "v1.9.2",
          "kind": "patch",
          "published_at": "2026-06-10T10:41:19Z"
        },
        {
          "tag": "v1.9.1",
          "kind": "patch",
          "published_at": "2026-06-10T10:11:57Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-06-10T08:02:26Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-06-09T05:42:30Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-06-08T20:47:10Z"
        },
        {
          "tag": "v1.6.6",
          "kind": "patch",
          "published_at": "2026-06-08T19:36:27Z"
        },
        {
          "tag": "v1.6.5",
          "kind": "patch",
          "published_at": "2026-06-08T19:29:09Z"
        },
        {
          "tag": "v1.6.4",
          "kind": "patch",
          "published_at": "2026-06-08T19:02:04Z"
        },
        {
          "tag": "v1.6.3",
          "kind": "patch",
          "published_at": "2026-06-08T18:41:38Z"
        },
        {
          "tag": "v1.6.2",
          "kind": "patch",
          "published_at": "2026-06-08T18:32:45Z"
        },
        {
          "tag": "v1.6.1",
          "kind": "patch",
          "published_at": "2026-06-08T15:37:50Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-06-08T15:15:55Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-06-08T11:30:41Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-06-08T10:42:24Z"
        },
        {
          "tag": "v1.3.2",
          "kind": "patch",
          "published_at": "2026-06-07T20:56:43Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2026-06-06T20:22:27Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-06-05T18:05:43Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-06-05T13:36:40Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-06-05T09:41:45Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-05-29T14:39:56Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "a87ce2e9d147e04600f88d1e936e3d2bd669335b",
          "body": "…fix calendar repaint\n\n- i18n: route hardcoded UI strings through __() with override props\n  (pagination prev/next label+aria-label, sidebar-trigger label,\n  calendar prev/next-month labels). English defaults unchanged.\n- RTL: migrate ~30 ui/ components from physical to logical direction\n  utilities\n[…]\n-for loops by date (fmt) instead of\n  positional index so a programmatic calendar:set reliably repaints\n  data-selected after a month navigation.\n- Regenerate stubs/; add RegistryI18nRtlTest coverage.",
          "is_bot": false,
          "headline": "Localise registry labels, migrate registry to logical RTL utilities, …",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-27T22:19:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e7ff3297b3073bfaf705e7cab55cf223bfcb5231",
          "body": "anousss007/blatui is now BOTH the dev monorepo AND the published package: composer.json/src/stubs\nstay at the repo root so Packagist reads it unchanged, while apps/demo (authoring + live site) and\napps/starter live in subdirs stripped from the dist tarball via .gitattributes export-ignore.\n\n- script\n[…]\n + pint + build-drift guard\n- README/CONTRIBUTING/PR-template/docs rewritten for the one-repo model; pint excludes apps/\n- history of blatui-demo/blatui-starter preserved under apps/ (git-filter-repo)",
          "is_bot": false,
          "headline": "chore(monorepo): single repo — package at root + apps/ (demo, starter)",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T08:41:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d271ac743244f56ddb10e6405f44a6db518e12bf",
          "body": null,
          "is_bot": false,
          "headline": "chore(monorepo): import starter app under apps/ (history preserved)",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T08:37:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2ee23545110a6acf23d0f0a0b2ae713c5aa699e",
          "body": null,
          "is_bot": false,
          "headline": "chore(monorepo): import demo app under apps/ (history preserved)",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T08:37:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "693839cfb0633603cfbb290e560a68181b1dbfc6",
          "body": "…f anousss007/blatui, developed at anousss007/blatui-workspace\n\nREADME/CONTRIBUTING/PR-template now point contributors to the blatui-workspace monorepo\n(blatui-demo is archived; sync-package.sh is gone). Package name and install are unchanged.",
          "is_bot": false,
          "headline": "docs: align with monorepo migration — this repo is the distribution o…",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T08:30:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b5acfee82e50205f7c4a6d8dea160731174b9fd",
          "body": null,
          "is_bot": false,
          "headline": "docs: archived — development moved to the blatui-workspace monorepo",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T08:25:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14088329458aa38b9423761194a92619c151093a",
          "body": null,
          "is_bot": false,
          "headline": "docs: archived — development moved to the blatui-workspace monorepo",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T08:25:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f6296d774250d06a19a64016bc1e194ba7c0dff",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 1.17.1",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T07:29:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83c25819cc280c31640fe3e1952361c06cd8edd4",
          "body": "A plain :viewBox bind is lowercased to viewbox by the HTML parser, which\nthe browser ignores (viewBox is case-sensitive), so the code rendered at\n1px/module instead of filling size. Use Alpine's .camel modifier. Synced\nfrom blatui-demo; adds a regression guard test. Closes #9.",
          "is_bot": false,
          "headline": "fix(qr-code): scale SVG to size via Alpine .camel viewBox bind",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T07:26:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6efc8159f2d4be3e4795e0a174ac1674d6995f01",
          "body": "A plain :viewBox bind is lowercased to viewbox by the HTML parser, which\nthe browser ignores (viewBox is case-sensitive), so the code rendered at\n1px/module instead of filling size. Use Alpine's .camel modifier.",
          "is_bot": false,
          "headline": "fix(qr-code): scale SVG to size via Alpine .camel viewBox bind",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T07:26:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96977a192e94dc3d300845dbafd298ed5f832d51",
          "body": "A plain :viewBox bind is lowercased to viewbox by the HTML parser, which\nthe browser ignores (viewBox is case-sensitive), so the code rendered at\n1px/module instead of filling size. Use Alpine's .camel modifier.",
          "is_bot": false,
          "headline": "fix(qr-code): scale SVG to size via Alpine .camel viewBox bind",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-22T07:26:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e026d7cf6c330838cfdc8f105b425206311c69f",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.17.0 — server-table component + data-table row actions",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-14T18:26:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3c6079c08eaa44b0846e9411c652c6f4c46b48d",
          "body": "Generated from blatui-demo via scripts/sync-package.sh: adds the new\nserver-table component stub, the updated data-table (row actions), and the\nrebuilt registry.json.\n\nRefs #8",
          "is_bot": false,
          "headline": "Sync server-table + data-table row actions from demo",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-04T14:34:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4aa4c7138660d241858567376e458ae26d9c78f",
          "body": "data-table: optional actions slot with stable row keys, sticky-actions, and\naria-sort/scope hardening.\n\nserver-table: new server-rendered, Livewire-first data table with declarative\nrow actions (inline or dropdown), custom cell/action views, server-driven\nsorting, search, selection, pagination, and \n[…]\nA\nand mobile-first (horizontal scroll + stacked cards).\n\nAdds docs-api metadata, a Using-with-Livewire section, and 17 server-table /\n6 data-table examples. Registry rebuilt.\n\nRefs anousss007/blatui#8",
          "is_bot": false,
          "headline": "Add server-table component + data-table row actions",
          "author_name": "Anas B.",
          "author_login": "anousss007",
          "committed_at": "2026-07-04T14:34:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "721d197dfa084c6fcc919269bd920718ad772997",
          "body": "…iants",
          "is_bot": false,
          "headline": "Release v1.16.0 — date-picker presets + select/combobox indicator var…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-07-03T18:00:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee13ac9677996805e664a06a086c33ef0c80a9c0",
          "body": "Ported from the component source: `presets` prop on date-picker (with the\ncalendar:set-range hook + element-scoped calendar listeners it needs) and the\n`indicator` prop (check | checkbox | radio) on select/combobox.",
          "is_bot": false,
          "headline": "date-picker presets + select/combobox indicator variants",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-07-03T17:56:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d716d9792e29a7c9db7fed863a729a539525a95",
          "body": "…icator variants",
          "is_bot": false,
          "headline": "sync components from demo — date-picker presets + select/combobox ind…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-07-03T17:56:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0c23e3521ce3776d69238a80230b23cb78bc198",
          "body": "- date-picker: new `presets` prop (bool | array of named keys / custom ranges).\n  Quick-pick shortcuts beside the calendar, resolved client-side. Calendar hooks\n  (calendar:set / :set-range) now also bind to the calendar's own element so a\n  preset targets only its picker (non-bubbling dispatch) — m\n[…]\n Cascades to\n  select-item via @aware. Default 'check' keeps existing markup unchanged.\n- docs: API metadata + examples (date-picker/presets, custom-presets;\n  combobox/indicators; select/indicators).",
          "is_bot": false,
          "headline": "date-picker presets + select/combobox indicator variants",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-07-03T17:56:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f9c43914f6ddf4783dbee2a1ce570c97988736d0",
          "body": "Rolls a random combination across all visual dimensions (base, accent,\nradius, input style, fonts, shadow, spacing, tracking) for quick\ninspiration. Mode is left untouched to avoid a jarring light/dark flip.",
          "is_bot": false,
          "headline": "Add Random theme button to customizer and theme editor",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-28T22:27:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80f03f274cd01456ff4f15537ade70d0a3bbbc59",
          "body": "…mport (#4)\n\nSynced from demo.\n- darkMode:false is now hands-off — the theme store no longer toggles the\n  'dark' class when dark mode is disabled, so it stops stripping a host app's\n  'dark' class (e.g. Flux) on every load (dark->light flash on refresh).\n- The theme CSS export no longer emits @import 'tw-animate-css' (dropped dep);\n  the scaffold matches the shipped app.css so pasted themes build cleanly.",
          "is_bot": false,
          "headline": "Release v1.15.3 — Flux dark-mode coexistence + stale tw-animate-css i…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-28T07:01:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43b399c816151ebba743d34cc6fe7d41f34ddc1b",
          "body": "- darkMode:false now means hands-off: the theme store no longer toggles the\n  'dark' class on <html> when dark mode is disabled, so it stops stripping a\n  'dark' class set by the host app (e.g. Flux) on every page load (which caused\n  a dark->light flash on full refresh). 'class'/'system' modes unchanged.\n- The 'Copy theme CSS' scaffold no longer emits @import 'tw-animate-css'\n  (dropped dependency); it now matches the shipped app.css, so a pasted theme\n  builds without a missing-package error.",
          "is_bot": false,
          "headline": "Fix Flux dark-mode coexistence + stale tw-animate-css import (#4)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-28T07:01:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ec81035f3f4fa3cfabd65b1ac5c6ee190426e1a",
          "body": "…up #5)\n\nSynced from demo. Popovers relocated into a Flux modal's native <dialog>\n(v1.15.1) were on top but mis-positioned (x-anchor's position:absolute has\nwrong offsetParent math in the top layer) and tall ones overflowed off-screen.\nNow they position with position:fixed, and a new x-blat-anchor d\n[…]\nctive\n(floating-ui flip+shift+size) caps datetime/date picker, select and\ndropdown-menu to the available height and scrolls. Adds @floating-ui/dom to the\ndocumented install deps and blatui:init check.",
          "is_bot": false,
          "headline": "Release v1.15.2 — fix popover positioning inside Flux modals (follow-…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-28T06:54:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "30ffb37a227e4131d9c48fa5fe60400bf29fc014",
          "body": "Relocating popovers into a Flux modal's native <dialog> (v1.15.1) put them on\ntop but mis-positioned: x-anchor's default position:absolute has wrong\noffsetParent math in the top layer, so the popover detached from its trigger,\nand tall popovers overflowed off-screen.\n\n- Popovers now position with po\n[…]\n/date\n  picker, select and dropdown-menu to the available height and scrolls, never\n  exceeding the component's own max-h. Other popovers gained the fixed strategy.\n- Adds @floating-ui/dom dependency.",
          "is_bot": false,
          "headline": "Fix popover positioning inside Flux modals (follow-up #5)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-28T06:54:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e116c2ede920c95b51e88f596e73ada2c632d832",
          "body": "…er + Livewire morph), #5\n\nSynced from demo. Adds the shared x-blat-dialog-layer directive (relocate a\nteleported popover into an ancestor native <dialog> so it isn't hidden behind\na Flux modal's top layer) and wire:ignore on the teleport template of every\nteleported overlay (so a Livewire validation re-render no longer detaches the\npopover from its Alpine scope). Affects datetime/date picker, combobox, select,\ndropdown-menu, context-menu, menubar, popover, hover-card, tooltip.",
          "is_bot": false,
          "headline": "Release v1.15.1 — fix teleported popovers inside modals (Flux top-lay…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-27T18:50:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca9720153ae99231c1d8a9b2b2127c65c3ef9533",
          "body": "…h (#5)\n\nTwo bugs affected every teleported overlay (datetime/date picker, combobox,\nselect, dropdown-menu, context-menu, menubar, popover, hover-card, tooltip)\nwhen used inside a modal:\n\n- Rendered behind a Flux <flux:modal> (a native <dialog> in the top layer,\n  which paints above anything in <bod\n[…]\ner a Livewire validation re-render: morph detached the teleported\n  popover from its Alpine scope, so open/errors/invalid resolved against\n  window. wire:ignore on the teleport template prevents this.",
          "is_bot": false,
          "headline": "Fix teleported popovers inside modals: Flux top-layer + Livewire morp…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-27T18:49:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9eaa5df1453c39b64d998ec14e9f742364a7efbe",
          "body": "Cover the case where Livewire already bundles and starts Alpine: don't\ninstall alpinejs or import blatui.js, install only the plugins, and\nregister via the alpine:init hook. Prompted by issue #4.",
          "is_bot": false,
          "headline": "docs: add Livewire/Flux setup path for existing Alpine",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-27T13:37:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "216bd3550bb1af30f394341703e5aadcaf77b216",
          "body": "Mirror the README note: register BlatUI onto Livewire's Alpine via the\nalpine:init hook instead of importing blatui.js. Prompted by issue #4.",
          "is_bot": false,
          "headline": "docs: add Livewire/Flux setup block to getting-started",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-27T13:37:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e516ce27c913f18ca0d9a951183e376ca90bee58",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.15.0 — Livewire wire:model support + brand/profile components",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-26T05:55:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7d50991bb2f56509424d960040100bb8b6fd88e",
          "body": null,
          "is_bot": false,
          "headline": "Merge: Livewire wire:model support + brand/profile components",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-26T05:54:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41121b5c26c14e65eabe9c4cf84a5b45597ea9e9",
          "body": "…ile homepage fixes",
          "is_bot": false,
          "headline": "Merge: Livewire wire:model support, brand/profile, Livewire docs, mob…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-25T17:27:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "041b39f53a7fd6341f9ebd09427bd882afc25f0a",
          "body": "…bile\n\nKeep each terminal command on one line (white-space: nowrap) and let the body\nscroll horizontally (overflow-x: auto); add min-w-0 to the terminal's grid item\nso it shrinks to its cell and the body — not the page — scrolls. Verified: term\nfits the viewport, body overflows internally, page width == viewport at 375/320.",
          "is_bot": false,
          "headline": "fix(home): terminal mockup scrolls instead of wrapping/clipping on mo…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-25T17:27:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54192c2aa5315854d05bef5cf7e47ecab0ec93d5",
          "body": "The code-showcase grid (lg:grid-cols-2) collapses to one column on mobile, but\nthe code-block's long lines gave the grid items a ~643px min-content that would\nnot shrink (default min-width:auto), forcing the page to ~667px wide at 375px.\nAdd min-w-0 to both grid items so they shrink and the code scrolls internally.\nVerified: documentScrollWidth == viewport at 375px and 320px.",
          "is_bot": false,
          "headline": "fix(home): remove horizontal scroll on mobile",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-25T16:55:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a2cb903c974b1db73759938a8bf29c463841c79",
          "body": "Adds a config-driven 'Using with Livewire' section to every bindable component's\ndocs page: the existing examples show the frontend (Blade/Alpine) usage, and the\nnew section shows the same component driven by a Livewire property via wire:model\n(component class + bound Blade snippet). Driven by config('docs.livewire').",
          "is_bot": false,
          "headline": "docs: show frontend + Livewire usage on each component page",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-25T16:47:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "97b6b54871d920146e3ee62e0f78cf03c7673689",
          "body": "- wire:model now binds every form control (entangle for custom Alpine widgets,\n  native forwarding for composites/file-upload). Inert without Livewire.\n- Add brand + profile stubs (Flux Pro parity); profile depends on avatar.\n- Rebuild registry.json (179 families); README: 155 components, Livewire-ready.",
          "is_bot": false,
          "headline": "Sync Livewire wire:model support + brand/profile components from demo",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-25T13:42:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9ad075db4bc5f4d68276bc7aa5f241da9aa5c6b",
          "body": "Components are Blade + Alpine, so they already render inside Livewire. This\nmakes wire:model bind their value with full two-way sync:\n\n- Custom Alpine widgets entangle their state with wire:model via\n  @entangle($attributes->wire('model')) — select, combobox, switch, toggle,\n  toggle-group, radio-gr\n[…]\ninert (and stripped) when Livewire isn't installed, so\n  plain Blade/Alpine pages are unaffected.\n- Add brand + profile components for Flux Pro parity.\n- Add /docs/livewire guide and registry rebuild.",
          "is_bot": false,
          "headline": "Add Livewire wire:model support across form components + brand/profile",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-25T13:42:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1e0d6237294e84ec981f8787d9019a63ec5bc23d",
          "body": "…accordion cursor, tree-table copyable, confetti directions)",
          "is_bot": false,
          "headline": "Release v1.14.1 — fixes from ngBlatUI feedback (context-menu scroll, …",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T09:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89ba67523f86076c3ef0fb74449d91a10558be31",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.14.1",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T09:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01d3af8d6b0ffae4feb616df1fa871b944ca2e52",
          "body": null,
          "is_bot": false,
          "headline": "Merge: fixes from ngBlatUI Reddit feedback",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T08:59:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfaa332d2a25d9207d2c19c9f52abad22ee2a036",
          "body": "- context-menu: close on window scroll/resize (was pinned to stale fixed coords).\n- accordion-trigger: add cursor-pointer (Tailwind v4 dropped the default button cursor).\n- tree-table: new `copyable` prop — copies the hierarchy as a markdown ├──/└──/│ tree.\n- confetti: new `direction`/`spreadArc` (a\n[…]\nsts) and `fullscreen` (top-edge rain).\nAdds confetti directional/fullscreen + tree-table copyable example variants.\nOther reported items were Angular-port-specific and not present in the Blade source.",
          "is_bot": false,
          "headline": "Fixes from ngBlatUI Reddit feedback (#3 follow-up)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T08:57:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c141401eb59c1dd15e58ad2cb2d21f04ca0e2d27",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.14.0",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T06:24:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e9593c3a6d10547ca02c2b549d750758e9426e5",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.14.0",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T06:23:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "768b88c352474d5ae2be0850b1d3bfc0bf09239f",
          "body": null,
          "is_bot": false,
          "headline": "Merge: component consolidation toward composition (#3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T02:47:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98f691f9a863a48ec8b6539cd9af523a6c8a518c",
          "body": null,
          "is_bot": false,
          "headline": "Merge: component consolidation toward composition (#3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-24T02:47:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7443db77cf1e5b2c2d9eb7f4d8317ec8899085f",
          "body": "Old slugs now redirect to the canonical component (autocomplete→combobox,\nautosize-textarea→textarea, quantity-selector→number-input, 301), and the\nregistry exposes the old names as search keywords on the canonical item plus\na deprecated flag — so searching \"autocomplete\" resolves to combobox and the\ndeprecated entry is hidden from search. Driven by a single config('docs.deprecated') map.",
          "is_bot": false,
          "headline": "Search + redirects for merged components (#3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T20:50:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc82f562a33fa102092aeaa0f1aab4f36ffdcbaf",
          "body": "- add-to-cart composes <x-ui.button>; mention-input composes <x-ui.textarea>.\n- textarea gains rows/maxRows + autosize/sizes/with-color variants.\n- dropdown/context/menubar share new menu-* leaf primitives (identical output).\n- autocomplete+combobox share one Alpine listbox engine (blatListbox); com\n[…]\n scaffold left as-is: a copy-paste library can\nonly share via component composition or foundations JS, and the overlay shells\nrely on the Blade $id() helper which doesn't survive a component boundary.",
          "is_bot": false,
          "headline": "Consolidate near-duplicate components toward composition (#3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T20:36:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1cc8094f1060ba0e5bc3498f382ab464b731d65a",
          "body": "Synced from demo: add-to-cart composes button; mention-input composes\ntextarea; dropdown/context/menubar share new menu-* leaf primitives;\nautocomplete+combobox share one Alpine listbox engine (combobox gains\ntrigger=input). autosize-textarea and autocomplete become thin deprecated\naliases. Breadth preserved (component + variant total did not drop).",
          "is_bot": false,
          "headline": "Consolidate near-duplicate components toward composition (#3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T20:36:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edd7302d9ca9c2e37fd9c2c641c20f6dde496c46",
          "body": "Audit-backed plan to merge near-duplicate components into single primitives\nexposed through variants/props instead of separate components. Covers\ntextareas, add-to-cart, menu families, overlay scaffold, autocomplete/combobox,\nmodals, input cluster and date pickers; keeps meter/progress separate\n(distinct WAI-ARIA roles). Phased, copy-paste-safe deprecation policy.",
          "is_bot": false,
          "headline": "Add component consolidation plan (refactor toward composition, #3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T19:45:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c17cdbc5dc6332485a8d5ab2e83061ffa9c3e5a8",
          "body": "It duplicated number-input (same control, integer-only with min/value of 1\nand a tighter footprint). Build cart/product steppers with number-input\ninstead. Updates the bundled registry manifest and CHANGELOG.",
          "is_bot": false,
          "headline": "Remove quantity-selector; consolidate into number-input (#3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T19:12:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a98c04ebbc7c8a1ac80d522a943449bb8ec7618",
          "body": "Drops the component, its docs-api and examples; rebuilds registry.json;\nadds a quantity-selector usage example under number-input plus a docs note\nand removes it from the E-commerce category.",
          "is_bot": false,
          "headline": "Remove quantity-selector; consolidate into number-input (#3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T19:12:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d333a17bc9619da33022eb6ebb6116c50448988",
          "body": null,
          "is_bot": false,
          "headline": "Remove quantity-selector component (consolidated into number-input, #3)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T19:11:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c3946a6c71b4ccbb2d5af1080fff4bd4595f462",
          "body": "Each docs link is a full server-rendered page load, so the sidebar scrolled\nback to the top every time. Save its scrollTop to sessionStorage and restore\nit synchronously right after the element parses (no scroll-to-top flash).",
          "is_bot": false,
          "headline": "Persist docs sidebar scroll position across navigations",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T08:40:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ac5823e5aa21e29ba10b64f232442b9179ec136",
          "body": "Each component page now renders a Props / nested-shape / Slots / Methods\ntable sourced from per-component metadata in resources/docs-api/<slug>.php.\nCovers all 155 documented components (661 props), so authors no longer have\nto reverse-engineer prop shapes (e.g. the onboarding-tour steps array) from\n[…]\n\n\n- resources/views/components/docs/api.blade.php + api-table.blade.php: renderer\n- resources/views/docs/component.blade.php: include the API section\n- resources/docs-api/*.php: per-component metadata",
          "is_bot": false,
          "headline": "Add API Reference docs to component pages",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-23T08:32:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6babece8df623ee4063be580975591ff431af7b",
          "body": "…rsor, Codex, Windsurf\n\nMake the MCP docs editor-agnostic instead of Claude-only. Add a 'Pick your\neditor' matrix under the hosted option with the exact config each client needs\n(servers vs mcpServers keys, serverUrl, Codex TOML, streamable-http), and\ngeneralise the local stdio section the same way.",
          "is_bot": false,
          "headline": "docs(mcp): per-editor hosted setup — Claude Code, Copilot/VS Code, Cu…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-17T15:59:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d79518468cd2d4efced81955c5d4b568ce5232d6",
          "body": null,
          "is_bot": false,
          "headline": "v1.0.3: regenerate composer.lock for the anousss007/blatui rename",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-16T14:07:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9829895c5dddc037000eacacb9f136d427814b5e",
          "body": null,
          "is_bot": false,
          "headline": "v1.13.2: changelog for the anousss007/* Composer vendor rebrand",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-16T13:57:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1e06dd4675ab66fca6615211b688e080711f80d",
          "body": "…+ changelog",
          "is_bot": false,
          "headline": "v1.13.2: declare replace blatui/blatui (self.version) for the rename …",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-16T13:57:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "209d978c9731b893cb92f33ec32c16b44b3b6fb2",
          "body": null,
          "is_bot": false,
          "headline": "Rename to anousss007/blatui-starter; require anousss007/blatui",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-16T13:40:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efadaefabe5acc775f02fbed849d4cd5d4a80796",
          "body": "…anifest\n\nUpdates all composer require/create-project snippets, badges, footer link,\nand registry/agent-readiness output to the new package names. Site name and\ngithub.com/anousss007 URLs unchanged.",
          "is_bot": false,
          "headline": "Rename Composer vendor blatui/* -> anousss007/* in install docs and m…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-16T13:40:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "251729fb11dc42591eba167bfc4e5cd22f7b9138",
          "body": "Vendor moved from blatui/* to anousss007/* to match the GitHub owner.\nProduct name (BlatUI) and component prefix unchanged.",
          "is_bot": false,
          "headline": "Rename Composer package to anousss007/blatui",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-16T13:40:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d37096a7d985b0235677fe83bd3760710626bb23",
          "body": "…o v1.13.1)",
          "is_bot": false,
          "headline": "fix(mobile): audio-player + stepper responsive fixes (synced from dem…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T22:52:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a14bc987bd83b691a1363dd8f7f930535917eba",
          "body": "…r fit narrow screens\n\nFull 156-component responsive audit at 320/360/390px. audio-player seek bar shrinks\n(min-w-0) + volume slider hidden below sm; horizontal stepper scrolls; scroll-area &\nonboarding-tour examples + site header fit to 320px.",
          "is_bot": false,
          "headline": "fix(mobile): audio-player/stepper/scroll-area/onboarding-tour + heade…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T22:52:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6296a4be293cc49b9bc0bc4c2d86441413523495",
          "body": "… (synced from demo)",
          "is_bot": false,
          "headline": "fix(mobile): audio-player + stepper no longer overflow narrow screens…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T22:52:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0417dc4da267f79948afa6a43f6fb28f9f514b77",
          "body": null,
          "is_bot": false,
          "headline": "sync: BlatUI v1.13.0 component set (156 components)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T21:35:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8bedfe449bb557f887872f80eafe57b1c531e330",
          "body": null,
          "is_bot": false,
          "headline": "release: v1.13.0 — 156 components (changelog, counts, registry rebuild)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T21:35:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ed10fb9cfdf96c72fb0cd5f9aca6c958e37c870",
          "body": "New AI / Effects / E-commerce / Media families plus Forms/Data/Nav/Layout/Feedback\nadditions. Stubs + registry.json regenerated; foundations unchanged. blatui:add <name>.",
          "is_bot": false,
          "headline": "sync: v1.13.0 — +75 components (156 total) from demo",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T21:35:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1d68bc49db3734577ba87097b2470ec16ec0d76",
          "body": "…ta (gantt, scheduler, org-chart) + effects (meteors, animated-beam, parallax)\n\nSelf-contained Alpine/CSS + tokens (light/dark), full ARIA/keyboard, RTL-safe.\nqr-code = dependency-free SVG generator (Nayuki port, scannability verified); map =\nkeyless OSM embed. All WCAG 2 AA (axe 0). No release.",
          "is_bot": false,
          "headline": "feat: add Media (audio-player, image, qr-code, map) + charts-style da…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T18:22:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc488e84fe4ecda53301707805df8b860783de55",
          "body": "…nature-pad, mention-input, segmented-control, knob, repeater) + presence, onboarding-tour, infinite-scroll\n\nSelf-contained Alpine + tokens (light/dark), full ARIA/keyboard, RTL-safe. WCAG 2 AA (axe 0).\nmarkdown-editor engine registered via Alpine.data in an @once <script> (HTML-entity strings\ncorrupt inside x-data attributes); mention-input textarea uses role=combobox. No release.",
          "is_bot": false,
          "headline": "feat: add heavy form controls (rich-text-editor, markdown-editor, sig…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T18:02:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47c5645e4bd6b05d429cd3a30af8ff832c8d7967",
          "body": "…-selector, add-to-cart, mini-cart) + Feedback (cookie-consent, top-progress, loading-overlay, notification-center)\n\nSelf-contained Alpine + tokens (light/dark), full ARIA/keyboard, RTL-safe. New\nE-commerce category. product-card sale badge uses opaque AA-safe fills (solid\ndestructive is too light in dark). All WCAG 2 AA (axe 0). No release.",
          "is_bot": false,
          "headline": "feat: add E-commerce (product-card, price, quantity-selector, variant…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T17:40:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dc7387caf253b6e544555fd11d48047cc209fe6",
          "body": "…n-slider, masonry, diff-viewer, kanban, tree-table)\n\nSelf-contained Alpine/CSS + tokens (light/dark), full ARIA/keyboard, RTL-safe.\nkanban native HTML5 DnD; diff-viewer LCS; tree-table recursive rows. WCAG 2 AA (axe 0).\nFootgun fixed: @js($var) inside a nested <x-component> attribute loses parent scope. No release.",
          "is_bot": false,
          "headline": "feat: add data-display heavy (avatar-group, meter, heatmap, compariso…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T17:23:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8c613e1899c1a88ca2644be719349d3c6ca7178",
          "body": "…-hidden) + Navigation (scrollspy, bottom-navigation, dock, speed-dial, back-to-top)\n\nSelf-contained Alpine/CSS + tokens (light/dark), full ARIA/keyboard, RTL-safe.\nTailwind-literal class lookups for layout primitives. All WCAG 2 AA (axe 0). No release.",
          "is_bot": false,
          "headline": "feat: add Layout (container, stack, bento-grid, page-header, visually…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T17:07:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56f0d1ddf36e2c6ffb766e2bdb822c35ed875c18",
          "body": "…, spotlight-card, tilt-card, flip-card, confetti, dot-pattern, grid-pattern, aurora)\n\nSelf-contained Alpine/CSS with scoped @once keyframes; prefers-reduced-motion\nrespected; decorative layers aria-hidden. All WCAG 2 AA (axe 0). Demo only; no release.",
          "is_bot": false,
          "headline": "feat: add Effects category (gradient-text, number-ticker, border-beam…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T16:59:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b96efbde738d59d4b30f99adc78fb3b76efef61",
          "body": "… tool-call, citation) + data-display (stat, tree, json-viewer, description-list)\n\nSelf-contained Alpine + tokens (light/dark), full ARIA/keyboard, RTL-safe. New AI\ncategory in config/docs.php. All WCAG 2 AA (axe 0). Demo source-of-truth; no release.\nFootgun fixed: <x-...> tags in @props // comments get compiled by Blade — reworded.",
          "is_bot": false,
          "headline": "feat: add AI category (chat, prompt-input, streaming-text, reasoning,…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T16:49:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9907569a2a679a676887292804f4a75413e630a",
          "body": "…password-strength, file-upload, autosize-textarea, editable)\n\nSelf-contained Alpine + design tokens (light/dark), full ARIA/keyboard, RTL-safe,\nhidden form inputs. All WCAG 2 AA (axe 0). Registered in config/docs.php. Demo\nsource-of-truth; not yet synced to the package (no release).",
          "is_bot": false,
          "headline": "feat: add 7 form components (number-input, tags-input, color-picker, …",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-15T16:27:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab993d48654713c8d8a2b11e5dd61df862fb3014",
          "body": "…Bar' stops wrapping\n\nThe default context-menu example used w-52 (208px); the 'Show Bookmarks Bar' + ⌘⇧B\ncheckbox row had too little room and wrapped to two lines. w-64 matches the shadcn\nreference for this menu and keeps every row on one line.",
          "is_bot": false,
          "headline": "demo(context-menu): widen browser example to w-64 so 'Show Bookmarks …",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-14T14:32:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65ccfab5617829229428cf2879f75366ff8937c7",
          "body": "…er clipped\n\nSyncs the blatui #2 submenu fix into the starter kit.",
          "is_bot": false,
          "headline": "fix: dropdown/context submenus teleport to <body> so they are no long…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-14T14:23:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a16d2b49a7b10cec271e3e6ae26169f9c96244ec",
          "body": "… parent panel\n\nThe dropdown-menu / context-menu / menubar sub-content flyout lived inside the\nparent menu panel (fixed, max-h-96, overflow-y-auto), so x-anchor positioned it\nbut the parent clip/scroll swallowed it. It now teleports to <body> with fixed\npositioning (mirroring the top-level panel) and a short cancellable close delay\n(closeSoon/cancelClose) lets the pointer cross the gap to the flyout.\n\nFixes #2",
          "is_bot": false,
          "headline": "fix: submenus teleport to <body> so they are no longer clipped by the…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-14T14:23:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9c157c05ec0e368769536ffa3426066e564ee49",
          "body": "… parent panel\n\nThe dropdown-menu / context-menu / menubar sub-content flyout lived inside the\nparent menu panel (fixed, max-h-96, overflow-y-auto), so x-anchor positioned it\nbut the parent clip/scroll swallowed it. It now teleports to <body> with fixed\npositioning (mirroring the top-level panel) and a short cancellable close delay\n(closeSoon/cancelClose) lets the pointer cross the gap to the flyout.\n\nFixes #2",
          "is_bot": false,
          "headline": "fix: submenus teleport to <body> so they are no longer clipped by the…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-14T14:23:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3083d67b90fab5a52b9cc8156eb887fc2955013d",
          "body": "Synced from the demo's axe-core audit (0 critical / 0 serious):\n- foundations/app.css: darkened destructive/success/warning/info status tokens for AA contrast\n- alert: drop /90 opacity on alert-description\n- kbd: passed aria-label rendered as sr-only text\n- time-field: forward aria-label onto the real <input type=time>\n- select: :options shorthand trigger gets an accessible name\n- data-table: aria-labels on checkbox buttons\n- item-group: drop role=list",
          "is_bot": false,
          "headline": "Release v1.12.1 — WCAG 2.1 AA accessibility pass",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T18:13:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a40cd389be4771c8f73fc56759953ba38c9d3443",
          "body": "…onents\n\nFull axe-core sweep of every component + variant page. Fixes:\n- app.css :root status tokens (destructive/success/warning/info) darkened to clear\n  AA 4.5:1 on white and on the /10 soft tint\n- alert: drop /90 opacity on alert-description text\n- kbd: render passed aria-label as sr-only text (\n[…]\nombobox role\n- data-table: aria-labels on select-all / per-row checkbox buttons\n- item-group: drop role=list (children aren't listitems)\n- example pages: explicit labels/aria-labels and AA-safe colors",
          "is_bot": false,
          "headline": "a11y: WCAG 2.1 AA audit pass — 0 critical / 0 serious across all comp…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T18:13:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d02578f6a6186e17fde44521d075b480cb434ca7",
          "body": null,
          "is_bot": false,
          "headline": "README: refresh counts (81 components, 416 variants, 283 files)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T16:11:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9706cd7874d5ba8980793ffe602e805568f1b39a",
          "body": "…arts)",
          "is_bot": false,
          "headline": "README: refresh counts (81 components, 416 variants, 64 blocks, 70 ch…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T16:11:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37b2461c813ea363459a4a05ad10be6cccc440b9",
          "body": "Homepage now derives components/variants/blocks/charts/templates counts (and the\nversion) from the real sources, so the marketing numbers can't drift again. Adds\na Variants stat. Updates the brand meta description + the demo README table.",
          "is_bot": false,
          "headline": "Update counts everywhere + make the homepage numbers dynamic",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T16:10:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e61fca7f8b86f5deaa23bd57a856aefe9f6e85f",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.12.0",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T15:49:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8710382cbc9a1649a9ef713839ea8416abd0e0aa",
          "body": "…textarea\n\ncomparison-table: data-driven feature matrix (tiers x rows, check/dash/text, highlight).\naccent: a display:contents wrapper that recolors any subtree from one color token.\ninput/select/textarea gain a color prop (local focus-ring/primary override), matching button.",
          "is_bot": false,
          "headline": "Add comparison-table + accent components, color prop on input/select/…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T14:08:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6ca3a7b5299d7eb23462e29b7f7e90ac0776b5f9",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.11.0",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T13:44:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5d6c87bed9af294cd4a130573dd9aad30dec19c",
          "body": "…ing + button color\n\nNew components distilled from patterns the showcase templates hand-rolled. Plus a\ncircular variant on progress, a color prop on button (local primary-token override),\nand a table comparison example. Registered in docs + registry (86 families).",
          "is_bot": false,
          "headline": "Add components: countdown, timeline, terminal, sparkline + progress r…",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T13:43:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e150c55c224bb5fa0454d1e8ae47d5b376103b5d",
          "body": "Templates assemble hundreds of components; cache the rendered HTML so repeat\nhits are a static serve (faster TTFB → better Core Web Vitals / ranking).\nKeyed on the asset-manifest mtime so every deploy busts it automatically;\nproduction-only so local dev stays fresh. Closure-route serialization verified\n(route:cache succeeds).",
          "is_bot": false,
          "headline": "Full-page cache the template pages (raw + viewer)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T13:14:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12db2cbbdef79064afec9d0ab78a15d3ff318b9b",
          "body": "SEO:\n- robots meta (index/follow/max-image-preview; noindex on /raw duplicates)\n- canonical strips /raw and query strings → one indexable URL per page\n- JSON-LD: add Organization + BreadcrumbList (per-path) alongside WebSite/SoftwareApplication\n- sitemap.xml: per-URL lastmod (source mtime), changefr\n[…]\ntypo in the Get Started description\n\nVitrine consistency:\n- x-site.footer added to the blocks/templates/charts/themes gallery pages\n- mono '// section' brand eyebrows replace the generic primary pills",
          "is_bot": false,
          "headline": "SEO overhaul + finish vitrine consistency (footers, mono eyebrows)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T13:11:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "934aec50302ad3dcb7b66cdc33127dd076a6bcf8",
          "body": "Rethink the marketing chrome so it no longer looks like a default shadcn docs\nsite: monospace (JetBrains Mono) wordmark + labels, a terminal-window hero,\ndotted-grid backgrounds, a themeable green brand accent, code-block showcase\nand a flaunt of the 20 templates. Fully theme-aware (light + dark via\n[…]\noter.\n- Brand tokens + mono/terminal utilities live in the demo app layout only\n  (NOT the synced package foundation).\n- Component previews stay token-based so the Customizer still restyles them live.",
          "is_bot": false,
          "headline": "Redesign the showcase site with a Forge dev-tool identity (light + dark)",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T12:46:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "247af0ec2fbb93fc80c3354516c88350b3e97013",
          "body": "Vol. II: lumen (podcast), prism (NFT), atlas (travel), estate (real estate),\nsprout (kids edtech), verdure (sustainability), pulse (telemedicine),\nbrew (coffee), helix (biotech), mono (photography). Showcase tier now 20.\n\nFix: Quantum sidebar nav items had a duplicate class attribute (browser kept\nonly the first), dropping flex/items-center — icon and label were misaligned.\nMerged into a single @class directive.",
          "is_bot": false,
          "headline": "Add 10 more Showcase templates (Vol. II) + fix Quantum sidebar alignment",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T11:53:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8d8fcc92cfd71a3f80aca2ac88227ece18b10cd",
          "body": "Cinematic space tourism, high-fashion editorial lookbook, Y2K vaporwave\ngame studio, and a dark terminal-aesthetic developer platform. Showcase\ntier now totals 10 art-directed templates. Demo-only.",
          "is_bot": false,
          "headline": "Add 4 more Showcase templates: cosmos, atelier, arcade, forge",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T10:51:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8f6270c8fc3b22ec30f449c439ee1f1cb132b24",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.10.0",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T10:39:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16293bad46fa170fa27fd90712c6482459c85a88",
          "body": null,
          "is_bot": false,
          "headline": "Changelog for v1.10.0",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T10:39:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bacd8094636b15e644c7ebb24a2235583ca6aad",
          "body": "Six extravagant, art-directed full-page templates, each in a distinct bold\nstyle (glassmorphism, cyberpunk/web3, retro-editorial, neo-brutalism,\neditorial-serif luxury, claymorphism). Demo-only showcase tier; registered\nunder a new Showcase category in config/templates.php.",
          "is_bot": false,
          "headline": "Add Showcase templates: aurora, quantum, vinyl, brut, terroir, bloom",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-11T09:54:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6408a70b60da9d3eb211e99ed355793b471c6544",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.9.2",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-10T10:41:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a87842b230c1bb4738f50f5866c7ccb8387e80fc",
          "body": null,
          "is_bot": false,
          "headline": "Add multi-select (multiple) to select, combobox and autocomplete",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-10T10:40:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad95a12c9d2b8b707fa8c7b2632d6faa98ece221",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.9.1",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-10T10:11:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "510eb8b9cc5e015c73b6fd98397e2e3158265b23",
          "body": null,
          "is_bot": false,
          "headline": "Changelog for v1.9.1",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-10T10:11:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a532896417fae12c12ce6d924c0135785112a37f",
          "body": "Add `disabled` prop to the combobox component (mirrors select/autocomplete):\nrenders the `disabled` attribute on the trigger and adds\n`disabled:cursor-not-allowed disabled:opacity-50`. New\nexamples/combobox/disabled.blade.php is auto-discovered by the docs page.",
          "is_bot": false,
          "headline": "feat(combobox): support disabled state + add Disabled example",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-10T09:41:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96bfa770b5d1f855b515082439607c655c399efb",
          "body": null,
          "is_bot": false,
          "headline": "Release v1.9.0",
          "author_name": "anousss",
          "author_login": "anousss007",
          "committed_at": "2026-06-10T08:02:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 37,
      "commits_last_year": 202,
      "latest_release_at": "2026-07-27T22:19:48Z",
      "latest_release_tag": "v1.18.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 8,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 4.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 71,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "anousss007/blatui",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ui",
            "cli",
            "components",
            "laravel",
            "blade",
            "tailwindcss",
            "alpinejs",
            "shadcn",
            "blatui"
          ],
          "ecosystem": "packagist",
          "matches_repo": true,
          "registry_url": "https://packagist.org/packages/anousss007/blatui",
          "is_deprecated": false,
          "latest_version": "v1.17.1",
          "repository_url": "https://github.com/anousss007/blatui",
          "versions_count": 36,
          "total_downloads": 2328,
          "dependents_count": 3,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2162,
          "first_published_at": null,
          "latest_published_at": "2026-07-22T07:29:40Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 10,
      "stars": 211,
      "watchers": 6,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-23",
            "count": 3
          },
          {
            "date": "2026-06-24",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 2
          }
        ],
        "complete": true,
        "collected": 10,
        "total_forks": 10
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 72302,
      "source_files_sampled": 2241,
      "oversized_source_files": 11,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "composer.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "packagist"
      ],
      "dependencies": [
        {
          "name": "illuminate/console",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^11.0 || ^12.0 || ^13.0"
        },
        {
          "name": "illuminate/support",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^11.0 || ^12.0 || ^13.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 8,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "anousss007",
          "commits": 203,
          "avatar_url": "https://avatars.githubusercontent.com/u/4137453?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": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "composer.lock",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "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/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "a87ce2e9d147e04600f88d1e936e3d2bd669335b",
        "ran_at": "2026-07-27T22:22:25Z",
        "aggregate_score": 2.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T22:19:51Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/anousss007/blatui",
    "host": "github.com",
    "name": "blatui",
    "owner": "anousss007"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": "The weighted overall 55 is calibrated to 57 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 55,
            "calibrated": 57,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 57,
      "inputs": {
        "security": 25,
        "vitality": 76,
        "community": 57,
        "governance": 44,
        "calibration": "2026-08-02",
        "engineering": 71,
        "ai_readiness": 41,
        "weighted_overall_raw": 55
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 76,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "commits_last_year": 202,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 8
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "8/52 weeks with commits",
                "points": 5.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "202 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 202
                    }
                  }
                ],
                "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": 37,
              "latest_release_tag": "v1.18.0",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 4.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "37 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 37
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "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": "moderate",
        "name": "Community & Adoption",
        "value": 57,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "forks": 10,
              "stars": 211,
              "watchers": 6,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "211 stars",
                "points": 37.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 211
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "10 forks",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "6 watchers",
                "points": 3.9,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "weak",
            "name": "Ecosystem adoption (downloads)",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "packages": [
                "anousss007/blatui"
              ],
              "dependents": 3,
              "ecosystems": "packagist",
              "total_downloads": 2328,
              "monthly_downloads": 2162
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,162 downloads/month across packagist",
                "points": 44.5,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2162,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "3 packages depend on it",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "registry_dependents",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": 44,
        "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": "weak",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 48,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 8,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 1,
              "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": "100% of issues closed",
                "points": 42,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "0/1 decided PRs merged",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 0,
                      "decided": 1
                    }
                  }
                ],
                "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/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 34,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "anousss007",
              "public_repos": 4,
              "account_age_days": 4854
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of anousss007",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "anousss007"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "4 public repos, account ~13 yr old",
                "points": 17.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 4
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "anousss007/blatui"
              ],
              "ecosystems": "packagist",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on packagist",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "36 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 36
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 71,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 25,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 25,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 2.6
            },
            "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "weak",
        "name": "AI Readiness",
        "value": 41,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "weak",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.74,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "74 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 39.5,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 74,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "weak",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 36,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "composer.lock",
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Blade",
              "largest_source_bytes": 72302,
              "source_files_sampled": 2241,
              "oversized_source_files": 11
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Blade without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Blade"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "11/2241 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 2241,
                      "oversized": 11
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "weak",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "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": {
      "labels": [
        "library",
        "cli"
      ],
      "scores": {
        "cli": 4,
        "library": 6
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:packagist",
          "weight": 6
        },
        {
          "tier": "description",
          "label": "cli",
          "source": "description:cli",
          "weight": 2
        },
        {
          "tier": "tags",
          "label": "cli",
          "source": "tag:cli",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T22:22:30.111327Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/anousss007/blatui.svg",
  "full_name": "anousss007/blatui",
  "license_state": "custom",
  "license_spdx": null
}

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

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