Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 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 · PHPEigene Lizenz★ 211 Sterne⑂ 10 Forksseit Mai 2026Auf GitHub ansehen ↗
ArtBibliothekKommandozeilenwerkzeugwie das ermittelt wird

anousss007/blatui erreicht einen Gesundheitsindex von 57 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (76/100) ab, am schwächsten bei Security (25/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

57
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer standardisierten Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr gewichtetes Mittel, kalibriert auf die Verteilung des öffentlichen Registers, sodass die Stufen Perzentilbedeutung tragen; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze Gefährdet von 34.

57
Außergewöhnlich93-100Die Spitzengruppe des Registers (≈ obere 5 %); erfüllt im Wesentlichen alle geprüften Kriterien
Exzellent80-92Durchgehend stark; geringfügige Lücken
Gut65-79Gesund; Lücken sind begrenzt und beherrschbar
Mittel50-64Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Schwach35-49Wesentliche Schwächen in mehreren Bereichen
Gefährdet20-34Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-19Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Der gewichtete Gesamtwert 55 wird auf der veröffentlichten Indexskala auf 57 kalibriert (Register-Kalibrierung 2026-08-02).

Eigentümerschaft

Anas B.Persönliches Konto
0 Follower4 öffentliche Reposseit Apr. 2013

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
Packagistanousss007/blatuiv1.17.12.16236vor 5 Tagenuiclicomponentslaravelbladetailwindcssalpinejsshadcnblatui

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

76Gut · 21 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
5.5/36Commit-Rhythmus — 8/52 Wochen mit Commits
18/18Commit-Volumen — 202 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year202
human_commit_share1
days_since_last_push0
active_weeks_last_year8

Release-Disziplin

100Außergewöhnlich
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 37 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 0 Tagen
27/27Release-Rhythmus — ein Release etwa alle 4,6 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count37
latest_release_tagv1.18.0
releases_from_tagsnein
days_since_latest_release0
mean_days_between_releases4,6
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

57Mittel · 17 % des Gesamtindex
Wie die Bewertung erfolgt
37.7/60Stars — 211 Stars
8/25Forks — 10 Forks
3.9/15Watcher — 6 Watcher
Verwendete Eingangsdaten
forks10
stars211
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
16.9/22.5Lizenz — Lizenzdatei vorhanden, keine anerkannte Lizenz
18/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
readme_badges
has_contributingja
has_issue_templatenein
has_code_of_conductnein
readme_badge_services
has_pull_request_templateja
Wie die Bewertung erfolgt
44.5/80Downloads pro Monat — 2.162 Downloads/Monat über packagist
4/20Abhängige in der Registry — 3 Pakete hängen davon ab
Verwendete Eingangsdaten
packagesanousss007/blatui
dependents3
ecosystemspackagist
total_downloads2.328
monthly_downloads2.162

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

44Schwach · 23 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
42/42Issue-Lösungsquote — 100 % der Issues geschlossen
0/30PR-Annahme — 0/1 entschiedene PRs gemergt
0/13Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
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
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): newcomer_pr_acceptance. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
0/25Reichweite des Inhabers — 0 Follower von anousss007
17.1/25Kontohistorie — 4 öffentliche Repos, Kontoalter ca. 13 Jahre
Verwendete Eingangsdaten
followers0
owner_typeUser
is_verified
owner_loginanousss007
public_repos4
account_age_days4.854
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Außergewöhnlich
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf packagist
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 36 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesanousss007/blatui
ecosystemspackagist
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

71Gut · 19 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfigja
has_linter_confignein
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

25Gefährdet · 16 % des Gesamtindex

Sicherheitslage

25Gefährdet
Wie die Bewertung erfolgt
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 — keine Daten
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 — keine Daten
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — keine Daten
0/5Pinned-Dependencies — keine Daten
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — keine Daten
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate2,6
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Trägt ein bewusst kleines Gewicht (4 %): Agenten-Tooling ist ein echtes Pflegesignal, doch ein Repository ohne jedes Signal kann weiterhin 100/100 erreichen.

41Schwach · 4 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
39.5/40Lesbare Commit-Historie — 74 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,74
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — keine Daten
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilescomposer.lock, package-lock.json
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Pinned-Dependencies. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Blade ohne Typprüfungs-Konfiguration
54.7/55Handhabbare Dateigrößen — 11/2.241 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageBlade
largest_source_bytes72.302
source_files_sampled2.241
oversized_source_files11
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

211GitHub-Sterne
1Mitwirkende
202Commits, letzte 12 Monate
0Tage seit letztem Push
37Releases
1Bus-Faktor
0offene Issues
PackagistPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 10 ⇿
0Sterne
10Forks
7Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

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

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.CI-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
k. A.Dangerous-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
k. A.Packagingpackaging workflow not detected
k. A.Pinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
k. A.Token-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 2
RegistryPaketVersionsvorgabeManifest
Packagistilluminate/console^11.0 || ^12.0 || ^13.0composer.json
Packagistilluminate/support^11.0 || ^12.0 || ^13.0composer.json
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "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
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v2.3.1, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenPackagist.