Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-25 14:00 UTC

ximu3 / kisaki

A multifunctional media management project designed to provide a unified user interface and database model to record, manage, build, sync, and showcase your media collection and memories.

TypeScript · VueKeine Lizenz erkannt★ 26 Sterne⑂ 2 Forksseit Feb. 2026Auf GitHub ansehen ↗

ximu3/kisaki erreicht einen Gesundheitsindex von 57 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (83/100) ab, am schwächsten bei Community & Adoption (35/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 Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

57
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende 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.

Eigentümerschaft

ximuPersönliches Konto
46 Follower6 öffentliche Reposseit Nov. 2023

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
npmkisaki0.0.0101vor 913 Tagen
npm@kisaki3/extension-api0.0.112.18411vor 5 Tagenkisakiextensionapicontracts
npm@kisaki3/extension-cli0.0.111.86711vor 5 Tagenkisakiextensionclikisx
npm@kisaki3/extension-sdk0.0.111.78411vor 5 Tagenkisakiextensionsdk
npm@kisaki3/extension-ui-vue0.0.111.61710vor 5 Tagenkisakiextensionwebviewuivue
npm@kisaki3/extension-registry0.0.111.96811vor 5 Tagenkisakiextensionregistry
npmcreate-kisaki-extension0.0.111.81111vor 5 Tagenkisakiextensioncreatescaffolding

Metriken nach Kategorie

Vitalität

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

83Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
15.2/36Commit-Rhythmus — 22/52 Wochen mit Commits
18/18Commit-Volumen — 398 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year398
human_commit_share0,97
days_since_last_push0
active_weeks_last_year22
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 17 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 5 Tagen
27/27Release-Rhythmus — ein Release etwa alle 1,8 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count17
latest_release_tagdesktop-v0.0.6
releases_from_tagsnein
days_since_latest_release5
mean_days_between_releases1,8

Community & Verbreitung

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

35Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
22.7/60Stars — 26 Stars
0/25Forks — 2 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks2
stars26
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
0/22.5Lizenz — keine Lizenzdatei erkannt
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licensenein
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
54/80Downloads pro Monat — 11.241 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packageskisaki, @kisaki3/extension-api, @kisaki3/extension-cli, @kisaki3/extension-sdk, @kisaki3/extension-ui-vue, @kisaki3/extension-registry, create-kisaki-extension
dependents
ecosystemsnpm
total_downloads
monthly_downloads11.241
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

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

47Gefährdet · 24 % 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
15.6/46.8Issue-Lösungsquote — 33 % der Issues geschlossen
38.2/38.3PR-Annahme — 3/3 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs3
open_issues2
closed_issues1
issue_closed_ratio0,333
closed_unmerged_prs0
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
12/25Reichweite des Inhabers — 46 Follower von ximu3
11.5/25Kontohistorie — 6 öffentliche Repos, Kontoalter ca. 2 Jahre
Verwendete Eingangsdaten
followers46
owner_typeUser
is_verified
owner_loginximu3
public_repos6
account_age_days968
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 7 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 11 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packageskisaki, @kisaki3/extension-api, @kisaki3/extension-cli, @kisaki3/extension-sdk, @kisaki3/extension-ui-vue, @kisaki3/extension-registry, create-kisaki-extension
ecosystemsnpm
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

71Gut · 20 % 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?

46Gefährdet · 16 % des Gesamtindex

Sicherheitslage

46Gefährdet
Wie die Bewertung erfolgt
6/7.5Binary-Artifacts — binaries present in source code
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
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Lizenz — license file not detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
4/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0/7.5Vulnerabilities — 27 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,6
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

75Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 97 von 97 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes6.187
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — apps/desktop/tsconfig.json, extensions/bangumi/tsconfig.json, packages/create-kisaki-extension/templates/extension/base/tsconfig.json, packages/create-kisaki-extension/templates/extension/webview/base/patches/tsconfig.json, packages/create-kisaki-extension/templates/workspace/base/tsconfig.json, packages/create-kisaki-extension/tsconfig.json, packages/extension-api/tsconfig.json, packages/extension-cli/tsconfig.json, packages/extension-registry/tsconfig.json, packages/extension-sdk/tsconfig.json, packages/extension-ui-vue/tsconfig.json, tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
8/8Automatisierte Wartung — 3 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
8/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespnpm-lock.yaml
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configsapps/desktop/tsconfig.json, extensions/bangumi/tsconfig.json, packages/create-kisaki-extension/templates/extension/base/tsconfig.json, packages/create-kisaki-extension/templates/extension/webview/base/patches/tsconfig.json, packages/create-kisaki-extension/templates/workspace/base/tsconfig.json, packages/create-kisaki-extension/tsconfig.json, packages/extension-api/tsconfig.json, packages/extension-cli/tsconfig.json, packages/extension-registry/tsconfig.json, packages/extension-sdk/tsconfig.json, packages/extension-ui-vue/tsconfig.json, tsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0,03
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — TypeScript (statisch typisiert)
55/55Handhabbare Dateigrößen — 0/1.229 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageTypeScript
largest_source_bytes33.276
source_files_sampled1.229
oversized_source_files0

Eckdaten

26GitHub-Sterne
1Mitwirkende
398Commits, letzte 12 Monate
0Tage seit letztem Push
17Releases
1Bus-Faktor
2offene Issues
npmPaket-Ö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

OpenSSF Scorecard 4.6 / 10
4.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-25 13:59 UTC

8Binary-Artifactsbinaries present in source code
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
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
8Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 8
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities27 existing vulnerabilities detected
Direkte Abhängigkeiten 45
RegistryPaketVersionsvorgabeManifest
npm@kisaki3/extension-apiworkspace:*apps/desktop/package.json
npm@kisaki3/extension-registryworkspace:*apps/desktop/package.json
npm@ximu3/process-list^0.0.2apps/desktop/package.json
npmasync-mutex^0.5.0apps/desktop/package.json
npmbetter-sqlite3^12.11.1apps/desktop/package.json
npmchokidarcatalog:apps/desktop/package.json
npmcron-parser^5.6.1apps/desktop/package.json
npmcross-spawncatalog:apps/desktop/package.json
npmdrizzle-orm^0.45.2apps/desktop/package.json
npmelectron-log^5.4.4apps/desktop/package.json
npmelectron-updater^6.8.9apps/desktop/package.json
npmelectron-window-state^5.0.3apps/desktop/package.json
npmfflatecatalog:apps/desktop/package.json
npmfile-type^22.0.1apps/desktop/package.json
npmi18next^26.3.6apps/desktop/package.json
npmnanoid^5.1.16apps/desktop/package.json
npmsemvercatalog:apps/desktop/package.json
npmsharp^0.35.3apps/desktop/package.json
npmsharp-phash^2.2.0apps/desktop/package.json
npmsmartcrop-sharp^2.0.8apps/desktop/package.json
npm@clack/prompts^1.7.0packages/create-kisaki-extension/package.json
npm@kisaki3/extension-apiworkspace:*packages/create-kisaki-extension/package.json
npm@kisaki3/extension-registryworkspace:*packages/create-kisaki-extension/package.json
npmcommandercatalog:packages/create-kisaki-extension/package.json
npmcross-spawncatalog:packages/create-kisaki-extension/package.json
npmkoloristcatalog:packages/create-kisaki-extension/package.json
npmsemvercatalog:packages/extension-api/package.json
npm@kisaki3/extension-apiworkspace:*packages/extension-cli/package.json
npm@kisaki3/extension-registryworkspace:*packages/extension-cli/package.json
npmchokidarcatalog:packages/extension-cli/package.json
npmcommandercatalog:packages/extension-cli/package.json
npmcross-spawncatalog:packages/extension-cli/package.json
npmfflatecatalog:packages/extension-cli/package.json
npmkoloristcatalog:packages/extension-cli/package.json
npmsemvercatalog:packages/extension-cli/package.json
npmvitecatalog:packages/extension-cli/package.json
npm@kisaki3/extension-apiworkspace:*packages/extension-registry/package.json
npmsemvercatalog:packages/extension-registry/package.json
npm@kisaki3/extension-apiworkspace:*packages/extension-sdk/package.json
npm@vueuse/corecatalog:packages/extension-ui-vue/package.json
npmclass-variance-authoritycatalog:packages/extension-ui-vue/package.json
npmclsxcatalog:packages/extension-ui-vue/package.json
npmreka-uicatalog:packages/extension-ui-vue/package.json
npmtailwind-mergecatalog:packages/extension-ui-vue/package.json
npmtw-animate-csscatalog:packages/extension-ui-vue/package.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": 34898,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 39380,
        "Vue": 2180286,
        "HTML": 1823,
        "NSIS": 1111,
        "TypeScript": 3636265
      },
      "pushed_at": "2026-07-25T08:42:31Z",
      "created_at": "2026-02-19T15:49:57Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T15:50:27Z",
      "description": "A multifunctional media management project designed to provide a unified user interface and database model to record, manage, build, sync, and showcase your media collection and memories.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Vue"
      ]
    },
    "owner": {
      "blog": "https://blog.ximu.dev/",
      "name": "ximu",
      "type": "User",
      "login": "ximu3",
      "company": null,
      "location": null,
      "followers": 46,
      "avatar_url": "https://avatars.githubusercontent.com/u/152481053?v=4",
      "created_at": "2023-11-30T08:22:07Z",
      "is_verified": null,
      "public_repos": 6,
      "account_age_days": 968
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "desktop-v0.0.6",
          "kind": "other",
          "published_at": "2026-07-19T15:58:54Z"
        },
        {
          "tag": "extension-tooling-v0.0.11",
          "kind": "other",
          "published_at": "2026-07-19T15:57:26Z"
        },
        {
          "tag": "desktop-v0.0.5",
          "kind": "other",
          "published_at": "2026-07-04T12:07:28Z"
        },
        {
          "tag": "extension-tooling-v0.0.10",
          "kind": "other",
          "published_at": "2026-07-04T09:09:46Z"
        },
        {
          "tag": "extension-tooling-v0.0.9",
          "kind": "other",
          "published_at": "2026-07-04T07:03:41Z"
        },
        {
          "tag": "extension-tooling-v0.0.8",
          "kind": "other",
          "published_at": "2026-07-04T06:39:20Z"
        },
        {
          "tag": "extension-tooling-v0.0.7",
          "kind": "other",
          "published_at": "2026-07-04T05:35:35Z"
        },
        {
          "tag": "extension-tooling-v0.0.6",
          "kind": "other",
          "published_at": "2026-07-03T13:46:00Z"
        },
        {
          "tag": "extension-tooling-v0.0.5",
          "kind": "other",
          "published_at": "2026-07-03T13:20:42Z"
        },
        {
          "tag": "extension-tooling-v0.0.4",
          "kind": "other",
          "published_at": "2026-07-03T11:46:21Z"
        },
        {
          "tag": "extension-tooling-v0.0.3",
          "kind": "other",
          "published_at": "2026-06-25T13:18:25Z"
        },
        {
          "tag": "extension-tooling-v0.0.2",
          "kind": "other",
          "published_at": "2026-06-20T11:54:14Z"
        },
        {
          "tag": "extension-tooling-v0.0.1",
          "kind": "other",
          "published_at": "2026-05-23T14:02:30Z"
        },
        {
          "tag": "desktop-v0.0.4",
          "kind": "other",
          "published_at": "2026-05-23T13:55:41Z"
        },
        {
          "tag": "desktop-v0.0.3",
          "kind": "other",
          "published_at": "2026-03-28T08:23:04Z"
        },
        {
          "tag": "desktop-v0.0.2",
          "kind": "other",
          "published_at": "2026-02-27T09:00:21Z"
        },
        {
          "tag": "desktop-v0.0.1",
          "kind": "other",
          "published_at": "2026-02-20T11:26:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "5641e798e4536a1c3dab460b9d8604350504ae01",
          "body": "…ansition flicker\n\nRoute pages now declare data loaders on route meta, awaited by a global\nbeforeResolve guard: the previous page stays visible until the next page's\ndata settles, so first frames render success/not-found/error only and\npending/loading branches disappear from all route page templates\n[…]\nto route loaders; in-page parameter changes (tabs, period,\n  filters) refetch non-blockingly with old data kept until settled\n- gate all empty states on settled data, removing loading-as-empty flashes",
          "is_bot": false,
          "headline": "refactor(renderer): load route data during navigation to eliminate tr…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-20T15:47:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f573e65bcae57cae4da6f6c3c487ae47e7251940",
          "body": null,
          "is_bot": false,
          "headline": "release(desktop): v0.0.6",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-19T15:51:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ddf0633b17d1e45884ef0a71048375f2e46cceef",
          "body": null,
          "is_bot": false,
          "headline": "publish(extension-tooling): v0.0.11",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-19T15:39:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "470ba5e91d8676b7ea39187d6c1bca45f35d56f6",
          "body": "…tory errors\n\nA persisted registry manifest snapshot that no longer parses under the\ncurrent schema was silently read back as null: the repository still looked\nhealthy while contributing zero packages to the catalog, and its surviving\netag/last-modified validators let a 304 response strand it in tha\n[…]\n is usable\n  (readable and allowed by the URL policy), forcing a full refetch otherwise\n- treat a 304 without a usable local snapshot as a refresh failure,\n  mirroring the existing addRepository guard",
          "is_bot": false,
          "headline": "fix(extension): surface stale repository manifest snapshots as reposi…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-19T15:15:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e3459a09f2a8630d5d7fd06e4ed3b051e9dfd91",
          "body": "…ge processing\n\n- Updated Electron runtime from version 39 to 41 in AGENTS.md and SKILL.md.\n- Improved comments in protocol.ts and service.ts to clarify CORS handling for ambient color extraction and attachment responses.\n- Refined styles in context-menu and dropdown-menu components for better visual consistency.\n- Adjusted leap year calculation in statistics-hero.vue for improved accuracy.",
          "is_bot": false,
          "headline": "chore: update Electron version to 41 and enhance CORS handling in ima…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-19T14:55:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d2a7b3efbb64141fdfb407ae7324d814d7b470a",
          "body": "- Introduced a scoped claim system for ambient light management, ensuring only the most recent claim can modify the light state.\n- Enhanced the `useAmbientLight` composable to utilize the new claim interface, improving palette extraction and cleanup processes.\n- Updated the light controller to manag\n[…]\ndates during page transitions and ensuring smoother visual transitions.\n- Improved documentation for ambient light functionality, clarifying the new claim-based approach and its impact on UI behavior.",
          "is_bot": false,
          "headline": "refactor(light): improve ambient light management with scoped claims",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-19T14:07:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "14d057d53b580c94a443bf2a904785385e8d93bd",
          "body": "- restructure all report pages into full-width bands partitioned by page\n  grid lines only, dropping the outer frame and card-style arrangement\n- add a hero band anchored by the period's most played cover, with total\n  duration delta, composition strip, and a spacing-separated fact row\n- replace pie\n[…]\nemove the unused categorical ramp and recharts remnants\n- fix weekly report charts (trend + heatmap), expand heatmap granularity\n  per report, and switch heatmap intensity to relative quantile scaling",
          "is_bot": false,
          "headline": "refactor(statistics): redesign report pages with editorial band layout",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-18T15:19:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec0a7188556a4c3c4af7455090fc9c26df6bb02f",
          "body": "- Updated ambient light extraction to return a raw palette of hue anchors, improving the handling of cover-derived colors.\n- Refactored the light controller to manage the new ambient palette format, allowing for smoother transitions and cross-fading effects.\n- Adjusted the `AmbientLight` component t\n[…]\ning, ensuring consistent application of light overrides.\n- Improved documentation for ambient light functionality, clarifying the integration of the new palette system and its impact on UI aesthetics.",
          "is_bot": false,
          "headline": "refactor(light): enhance ambient light extraction and palette management",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-18T10:18:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0f010cc5a950980cef88fe5331723b219df847db",
          "body": "…tency\n\n- Modified styles in `field-separator`, `switch`, and `tabs-trigger` components to enhance visual consistency by using `bg-muted` and `bg-primary-foreground`.\n- Updated shadow utilities in various components to ensure proper application of elevation treatments, specifically for opaque slabs.\n- Improved documentation regarding shadow tiers and their application to maintain clarity in design principles.",
          "is_bot": false,
          "headline": "refactor(ui): update component styles and shadow utilities for consis…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-18T08:54:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8f941ca2a0e41be3a6b5fe1e9613925d21fd77a",
          "body": "- Updated the `AmbientLight` component to utilize reactive state for palette management, enabling smoother transitions between color palettes.\n- Refactored the light controller to manage dynamic color states more efficiently, allowing for cross-fading effects during palette changes.\n- Improved CSS s\n[…]\n transition system that enhances visual performance during route changes.\n- Adjusted documentation comments for clarity on the ambient light functionality and its integration with the lightbox design.",
          "is_bot": false,
          "headline": "refactor(light): enhance ambient light handling and improve performance",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-18T08:32:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fe720f7c573fe3376a8d86d0d91ba40b71ea7cd6",
          "body": "…gression\n\nElectron 41.2.1+ adds external resize bands to frameless windows on\nWindows (electron/electron#50706, aggravated by #51503 in 41.5.2/42.3.3/43),\nwhich leak black edges along the left/right/bottom of the window under\nDPI scaling (electron/electron#51892). Pin the exact last clean version\nuntil the upstream fix lands, and allow electron's install script in\npnpm so the binary download runs.",
          "is_bot": false,
          "headline": "fix(deps): pin electron to 41.2.0 to dodge frameless window border re…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-18T07:58:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb0ced76023bbe7156fdaab986b0f6a452b20200",
          "body": "- Updated the `AmbientLight` component to reflect the new lightbox design, incorporating a light and diffuser layer for improved visual depth.\n- Removed deprecated card components and replaced them with streamlined alternatives, enhancing maintainability and consistency across the UI.\n- Refactored s\n[…]\nomponents, providing clearer feedback during loading and empty states.\n- Adjusted various UI elements to align with the new design principles, ensuring a cohesive aesthetic throughout the application.",
          "is_bot": false,
          "headline": "refactor(ui): enhance lightbox design and streamline component structure",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-18T07:17:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "042e39018a10a60049f0ae198a89fb3b90380758",
          "body": "…esthetics\n\n- Added an `AmbientLight` component to create a soft glow effect under the UI, improving visual depth.\n- Implemented glass-like effects across various components using new shadow and glass utilities.\n- Updated layout components to incorporate the ambient light layer, ensuring consistent \n[…]\n Replaced deprecated empty state components with a unified `StateView` for better user feedback in search scenarios.\n- Enhanced dialog and context menu components with glass effects for a modern look.",
          "is_bot": false,
          "headline": "feat(ui): introduce ambient light and glass effects for enhanced UI a…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-13T11:47:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aa30fcd47f01ed409c207da6a8ad0f6f90cbfcf6",
          "body": "…or states\n\n- Replaced custom loading and error states with a unified StateView component across various character-related dialogs and tabs.\n- Updated character card component to utilize MediaCard and MediaCardButton for improved layout and functionality.\n- Removed deprecated components and optimized the structure of character detail tabs for better maintainability.\n- Enhanced the handling of empty states in character-related sections, providing clearer user feedback.",
          "is_bot": false,
          "headline": "refactor(character): streamline UI components and enhance loading/err…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-13T04:33:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "364dc674a4e77c393b2e69e746965ce5a6b40919",
          "body": "…markdown changelogs\n\nRestore plain-text package descriptions and release changelogs across the registry contract, CLI, scaffolding, and desktop UI.\n\nBREAKING CHANGE: localized registry document sets, releasePage, and Markdown changelog directory options are no longer supported.",
          "is_bot": false,
          "headline": "refactor(extension-tooling)!: remove localized registry metadata and …",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-11T09:34:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8fff5db57ff8d309a635c469a24a09893fcdf44",
          "body": "- centralize shared dependency versions with pnpm catalogs\n- upgrade Electron, TypeScript, Vite, ESLint, Vue, and related tooling\n- replace legacy archive and filesystem dependencies with modern alternatives\n- align lint, formatting, build, CI, and extension scaffold configurations\n\nBREAKING CHANGE: extension tooling packages now publish ESM-only builds.",
          "is_bot": false,
          "headline": "chore(deps)!: modernize workspace dependencies and tooling",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-11T09:16:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce5d900d62d43b833a3f8c1c48bb2181a4c25be5",
          "body": "- Updated build and release process to utilize the in-repo Vite bundler located at `apps/desktop/tools/bundler`.\n- Removed references to `electron-vite` and adjusted related documentation and scripts accordingly.\n- Cleaned up `pnpm-lock.yaml` by removing unused dependencies and configurations.\n- Updated IPC bridge in preload scripts to reflect new naming conventions.\n- Enhanced logging and error handling in various services to improve maintainability.",
          "is_bot": false,
          "headline": "refactor(build): transition to in-repo Vite bundler",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-10T16:22:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12c34b76d05c124a8fafa5bf91d8b2b499a0d13a",
          "body": null,
          "is_bot": false,
          "headline": "release(desktop): v0.0.5",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T11:47:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22afe3b01fe74f1c5a59f13bfc2e07b513394328",
          "body": "- replace split install/update IPC with release plan/apply APIs\n- support install, update, reinstall, downgrade, and local .kisx import through one flow\n- allow discovery details to apply specific extension releases\n- let user-installed packages override built-in extension fallback\n- add dedicated changelog dialog and clone-safe renderer IPC payloads",
          "is_bot": false,
          "headline": "feat(extension): unify release apply flow",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T11:33:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50d89123c5585209860f526587182b3069ec82d3",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.10",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T08:51:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "561d57b9cc2465b0c0f710b71565ddc24470c235",
          "body": "- Read extension changelog summaries from top front matter\n- Use v-prefixed changelog version directories in scaffold publish flows\n- Update CLI help, README, and scaffold publishing docs",
          "is_bot": false,
          "headline": "fix(extension-tooling): align extension changelog release format",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T08:44:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c216cdfd702d1e8d45dab93501017179864103c",
          "body": null,
          "is_bot": false,
          "headline": "fix(renderer): align extension card author spacing",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T08:16:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69bbb02b61460e0a29d1487334dda5d4b95f7318",
          "body": "Update the official extension repository URL and wire the repository panel button to add it through the existing repository IPC flow.",
          "is_bot": false,
          "headline": "feat(extension): enable official repository add button",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T07:52:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9dda9b2a472ef18a20f9afd10d0c2c17f8f19a7",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.9",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T06:58:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a0408f3c81ef66be4d4049a18cf839992b7b6a0",
          "body": "Remove remote canonical schema IDs from packaged extension and registry\nschemas, and stop createExtensionRegistryManifest from hardcoding the remote\nregistry schema URL.\n\nGenerate local @kisaki3/extension-registry schema references from scaffolded\nworkspaces and kisx registry init, add the registry package to generated\nworkspace dev dependencies, and update registry docs for the packaged schema\nreference.",
          "is_bot": false,
          "headline": "refactor(extension-tooling): use packaged schema references",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T06:57:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e931eb99d9f4a9d396cfe44dbddf47c279308d38",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.8",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T06:31:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cdfcd4631a4f1bb2cafb2315cf3a2d4e8fee77d9",
          "body": "Rename extension compatibility declarations from engines.kisaki to\nengines.kisakiExtensionApi across manifest contracts, registry releases,\nCLI tooling, signing payloads, install validation, catalog filtering,\nscaffold templates, built-in extension manifests, UI details, and docs.\n\nThis is a breaking extension tooling/API contract change and does not keep\nbackward compatibility for the old field.",
          "is_bot": false,
          "headline": "refactor(extension): rename Kisaki engine compatibility to extension API",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T06:26:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "131d8f2e6ffb6385bf170089e8ad8327ed819f16",
          "body": "- Move full changelog writing rules into the Kisaki skill reference\n- Keep changelog README focused on human-facing directory structure\n- Enforce Entry Wording in release validation, excluding v0.0.1 initial releases\n- Normalize existing non-v0.0.1 changelog entries to the wording contract",
          "is_bot": false,
          "headline": "docs(changelog): move changelog contract into Kisaki skill",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T06:03:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09e72c9cc980195d2697dd9727e681686c1dae8c",
          "body": null,
          "is_bot": false,
          "headline": "docs(agents): clarify change quality standards",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T05:30:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c205060ff6789e61073be1a10d7394ce8c596f43",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.7",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T05:29:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f5917b9fc699b467e599aacc175af2e964ce302",
          "body": null,
          "is_bot": false,
          "headline": "chore(create-kisaki-extension): use tag-based GitHub publishing",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T05:28:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b976432d294438106c27fe09151412176246c45c",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): use tag-based repository releases",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T05:28:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea374d78e0d391d2edee29d60f6b4e6130526569",
          "body": null,
          "is_bot": false,
          "headline": "chore(extension-tooling): allow intentional cjs build warnings in ci",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T03:48:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc2e787fc1066f17339964e6459bee1d4c5fda47",
          "body": null,
          "is_bot": false,
          "headline": "chore: unify lefthook automation",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T03:38:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "325c9ad4139718d5bc971d5244a41983b5721d21",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.7",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T03:36:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b0214aaae53a4a3b694afcdf610628eacb031e0",
          "body": null,
          "is_bot": false,
          "headline": "chore: format repository",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T03:33:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9075e90d71efd74a9f00f2b7e72668d8b910b42",
          "body": "- update the generated GitHub publish workflow to validate registry changes before creating a release\n- remove the separate early tag creation script\n- normalize publishedAt timestamps to UTC ISO strings\n- refresh generated publish documentation",
          "is_bot": false,
          "headline": "fix(scaffold): defer GitHub release until registry validation",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-04T02:32:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1360aeb9dccd62d262f58d6993d3d0b4547716c3",
          "body": null,
          "is_bot": false,
          "headline": "chore(create-kisaki-extension): typecheck generated workflow scripts",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T16:40:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b6848a0223710ab5cf6e1cc92ea5b337f2ced5bd",
          "body": null,
          "is_bot": false,
          "headline": "feat(create-kisaki-extension): align generated workspace checks",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T16:24:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2184b34fdf2bedc18e54ee3fce4d48f732385efb",
          "body": null,
          "is_bot": false,
          "headline": "feat(create-kisaki-extension): add workspace signing key command",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T15:37:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d436d417f67fd96be4b543af0bad7a50b80fb847",
          "body": "- unify workspace and extension engines on Node 24\n- generate Node and pnpm versions from scaffold toolchain defaults\n- install pnpm explicitly in generated GitHub Actions workflows\n- update Node type dependencies and lockfile",
          "is_bot": false,
          "headline": "chore(tooling): standardize extension toolchain on Node 24",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T15:14:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14b6c4a1b0c5fe02a3911d78b68505c28fa66512",
          "body": "- ignore .kisx and .sig files from custom pack output paths\n- ignore npm tarballs and temporary directories in generated workspaces",
          "is_bot": false,
          "headline": "fix(create-kisaki-extension): ignore extension package artifacts",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T14:32:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0592a8e8c5b7fe519076744f69197087dc61341f",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.6",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T13:38:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5f2c35e3c3830b1a138d80ee1d4221430f6e1e7",
          "body": "- treat empty text prompt answers as the shown initial value\n- validate cleared inputs against the same default value\n- keep placeholder behavior aligned after typing and deleting input",
          "is_bot": false,
          "headline": "fix(create-kisaki-extension): submit text prompt defaults consistently",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T13:34:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "284eec5cda84997c8aba08e616f5650891c23d7f",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.5",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T13:15:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "957d9c4e321beff5ecbcb1247c02e248cd4af606",
          "body": "…n add\n\n- make init create only the extension workspace and registry\n- make add own extension creation with a positional extension id\n- rename scaffold provider config and templates to publishProvider\n- route implicit CLI usage to add inside valid workspaces\n- fail clearly when a workspace boundary is present but invalid",
          "is_bot": false,
          "headline": "refactor(create-kisaki-extension): split workspace init from extensio…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T13:01:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "803005449a7c21d7bd27a76fa52bea51c9a5912f",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.4",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-03T11:38:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54f5c8aea527df8f8c42c856706a8226a93c26ec",
          "body": "- Replace package summary/description strings with localized description documents\n- Model release changelogs as localized Markdown files with a separate releasePage\n- Update add-release CLI and GitHub/manual scaffolds for changelogs/<version>/<locale>.md\n- Preserve registry metadata in install snapshots and render localized Markdown in desktop",
          "is_bot": false,
          "headline": "feat(extension-registry)!: use localized descriptions and changelogs",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-07-01T15:20:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c94d26fb4c3dc798996997a6d4dbe7f97d9ff978",
          "body": "Move extension webview font delivery to an explicit resources/webview-fonts\nartifact generated by a dedicated build tool. Remove the renderer static-copy\nfont path, wire dev/build flows to generate the resource tree, and serve fonts\nfrom app.asar.unpacked resources in packaged builds.",
          "is_bot": false,
          "headline": "refactor(desktop): serve extension webview fonts from packaged resources",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-29T13:20:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f02647d53d68dbcfa4c5d302ba5508e4d8f5585",
          "body": "Route development webview documents through the app-owned extension UI protocol,\nproxy loopback Vite assets from main, and isolate UI build tooling into a\ndedicated build/ui module.\n\nReplace probe-and-rebind port selection with an owned HTTP listener shared by\nVite middleware and HMR, and scrub inherited debugger NODE_OPTIONS before\nlaunching Kisaki.",
          "is_bot": false,
          "headline": "refactor(extension-cli): unify dev webview serving model",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-28T15:19:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27f0877355318c29401b4af6cd2c9afe0521cde8",
          "body": null,
          "is_bot": false,
          "headline": "refactor(extension-cli): align kisx config with host and ui targets",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-27T13:56:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c92bf705da37d71427a0fde098f7252c94e1a0c4",
          "body": "…nance\n\n- move release logic into workflow-owned TypeScript scripts\n- generate provider-specific GitHub publishing tools\n- add registry yank and unyank operations\n- simplify scaffold configuration and tooling ownership",
          "is_bot": false,
          "headline": "feat(extension-tooling): unify release automation and registry mainte…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-27T04:02:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e2495cb3f113fe4245a91facecce7d3b712f878",
          "body": "Split registry workspace and extension scaffold configs, derive package\nmetadata from manifest identifiers, and rename template tokens to reflect\ntheir technical targets.\n\nFlatten scaffold templates around the single workspace model and remove\nobsolete layout-specific variants and redundant metadata plumbing.",
          "is_bot": false,
          "headline": "refactor(create-kisaki-extension): unify scaffold metadata flow",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-26T11:29:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f07289176c25a69ca65e6bc6c6d9ba72aec4488",
          "body": "… layer model\n\nRewrite the interactive scaffold on @clack/prompts and restructure the\nwebview templates into composable framework/addon layers, with the option\nmetadata consolidated as a single source of truth.\n\nCLI and TUI:\n- Replace enquirer with @clack/prompts; text defaults now render as a dim\n \n[…]\n-ui-vue requires vue) and override the framework app shell.\n- Standardize template tokens to {{UPPER_SNAKE_CASE}} and align the\n  extension-tooling contract to the renamed addon path and token format.",
          "is_bot": false,
          "headline": "refactor(create-kisaki-extension): modernize scaffold CLI and webview…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-26T08:07:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3938b61404cf8b64aadfd32a1e7303f20df065d",
          "body": "- publish canonical tarballs through a single SemVer-derived npm dist-tag\n- remove separate preflight and post-publish dist-tag sync paths\n- rely on npm trusted publishing instead of long-lived npm tokens\n- canonicalize packed package metadata for stable release checksums\n- align release docs and changelogs with the new flow",
          "is_bot": false,
          "headline": "refactor(extension-tooling): simplify trusted publishing release flow",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T14:43:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "958d91e5a86821fba03cdf5f5962d87456cbf97d",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.3",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T11:10:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41b2c401c6ce5f72cf976779e48fe0ab4e4bec5e",
          "body": "- Rewrite zh-Hans, en, and ja changelogs in the desktop release note style\n- Document changelog entry wording and scope prefix guidance",
          "is_bot": false,
          "headline": "docs(changelog): align extension tooling v0.0.3 release notes",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T11:07:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4288f9d653cb205f75991d4c1adc395e0639904a",
          "body": "- add AGENTS.md and .agents skills as the maintained guidance source\n- route extension tooling release artifacts through .tmp/release\n- simplify ignored local agent and temporary output paths",
          "is_bot": false,
          "headline": "chore: consolidate agent guidance and temp outputs",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T10:49:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e3542cd8afc4db3dae2706b1dc241d149e2fab9",
          "body": "Add apps/desktop/resources/extensions to .gitignore and remove the\npreviously committed bangumi and vnite-importer build outputs, since\nthese are generated artifacts that should not live in version control.",
          "is_bot": false,
          "headline": "chore(desktop): untrack built-in extension build artifacts",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T05:58:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63ffe5297048736facfbb0dc760efd4247f2c79e",
          "body": "…action-gh-release-718ea10b132b3b2eba29c1007bb80653f286566b\n\nchore(deps): bump softprops/action-gh-release from 7c4723f7a335432393329f8f1c564994ce50185d to 718ea10b132b3b2eba29c1007bb80653f286566b",
          "is_bot": false,
          "headline": "Merge pull request #6 from ximu3/dependabot/github_actions/softprops/…",
          "author_name": "ximu",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T04:58:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b32f4bc7e0a5cdbe49ac8e2d819c4179f363d9fe",
          "body": "…eckout-7.0.0\n\nchore(deps): bump actions/checkout from 6.0.3 to 7.0.0",
          "is_bot": false,
          "headline": "Merge pull request #7 from ximu3/dependabot/github_actions/actions/ch…",
          "author_name": "ximu",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T04:58:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fde5eb11adb56ea6caf2f1ec2bdd7ea772725875",
          "body": "…n-setup-0ebf47130e4866e96fce0953f49152a61190b271\n\nchore(deps): bump pnpm/action-setup from b0f76dfb45f55f8421693e4803ac7bb65143bd34 to 0ebf47130e4866e96fce0953f49152a61190b271",
          "is_bot": false,
          "headline": "Merge pull request #5 from ximu3/dependabot/github_actions/pnpm/actio…",
          "author_name": "ximu",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T04:58:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dce40dfe6c5af38dcc4c03b964cbda6d4490f129",
          "body": "The v0.0.3 scaffold rework renamed vue-kit/package.patch.json to\npatches/package.json, but the tooling version contract still referenced\nthe old path, causing `pnpm typecheck` (build:extension-tooling) to fail\nwith \"Missing file\". Update the contract path.",
          "is_bot": false,
          "headline": "fix(extension-tooling): point version contract at renamed patch path",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T04:57:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5b411c7e158f38b06c6d5f32fe0913fe6f520ad",
          "body": "…it/add subcommands\n\nRework the extension scaffold around an explicit `template.json` merge\nprotocol and split repository layout from release provider, matching the\nv0.0.3 extension-tooling release.\n\nBreaking changes:\n- `create-kisaki-extension` now uses subcommands; create repositories with\n  `pnpm\n[…]\nling staging directory with one\n  final rename, with Windows-transient rename retries, so template failures\n  never leave a partial target.\n\nAdd the v0.0.3 extension-tooling changelog (en/ja/zh-Hans).",
          "is_bot": false,
          "headline": "feat(create-kisaki-extension): manifest-driven scaffold layers and in…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-25T04:41:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1595c439bff4141ceeb4b7b347d9ac691e9f31fa",
          "body": null,
          "is_bot": false,
          "headline": "fix(release): align GitHub and npm release channels",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-23T15:07:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f677320e177221f7ac9e3eba9e70fa65ab89c55",
          "body": null,
          "is_bot": false,
          "headline": "refactor(extension-tooling): unify CLI, scaffolding, and build workflows",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-23T13:02:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ec3c86cd2a3bfc9a8c37eab8b1f5d60ecbd11be",
          "body": null,
          "is_bot": false,
          "headline": "fix(release): trust successful npm publish results",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-20T12:14:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c965a2c006123b1ed6f5c43e84646ecd9992c11",
          "body": "Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 7c4723f7a335432393329f8f1c564994ce50185d to 718ea10b132b3b2eba29c1007bb80653f286566b.\n- [Release notes](https://github.com/softprops/action-gh-release/releases)\n- [Changelog](https://github.com/softprops/action-\n[…]\nependency-name: softprops/action-gh-release\n  dependency-version: 718ea10b132b3b2eba29c1007bb80653f286566b\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump softprops/action-gh-release",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-20T11:48:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2dcc3cdb2013de8364d9b7307580e67bccfb449a",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b43\n[…]\n- dependency-name: actions/checkout\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/checkout from 6.0.3 to 7.0.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-20T11:48:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cce5ac538dd8962203ec282c33ffec0278be1a56",
          "body": "Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from b0f76dfb45f55f8421693e4803ac7bb65143bd34 to 0ebf47130e4866e96fce0953f49152a61190b271.\n- [Release notes](https://github.com/pnpm/action-setup/releases)\n- [Commits](https://github.com/pnpm/action-setup/compare/b0f76dfb45f55f8421693e4\n[…]\nncies:\n- dependency-name: pnpm/action-setup\n  dependency-version: 0ebf47130e4866e96fce0953f49152a61190b271\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump pnpm/action-setup",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-20T11:47:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c471e8c3a52b0271b298ff9cea8658f552f5423d",
          "body": null,
          "is_bot": false,
          "headline": "release(extension-tooling): v0.0.2",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-20T11:46:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02a2b4a4116c4c6ff3bb8e30d72efde06371ed3b",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): harden extension tooling release pipeline",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-20T11:31:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e15f4a746e50b8c60e184af47fb855a6c9705979",
          "body": null,
          "is_bot": false,
          "headline": "fix(extension-tooling): enforce UI kit lockstep versioning",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-20T09:59:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9169168a154336c1ba296e81b456da37b54bfbd7",
          "body": "Redesign the Vnite importer wizard around structured preview rows, per-row detail dialogs, diagnostics, and host-backed pagination.\n\nAlso refresh import configuration, running/done states, backup analysis display, and localized diagnostics for graph conflicts.",
          "is_bot": false,
          "headline": "refactor(vnite-importer): redesign import wizard webview UI",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-14T14:47:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ad97e657353f1ec8c6e7b76d33c75a6893d6912",
          "body": null,
          "is_bot": false,
          "headline": "feat(extensions): support 2xl webview dialogs",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-14T12:26:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7a44ce102d5b4e1997d7ed49ec7032709c2f98a",
          "body": null,
          "is_bot": false,
          "headline": "feat(extensions): add task run cancelOwn API",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-14T12:23:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ce9378d4e87016518357dda96b7fbe59d828c63",
          "body": "Centralize extension tooling metadata and make desktop built-in extension builds resolve required workspace tooling packages from extension package.json files. This prevents clean CI builds from missing generated package entrypoints such as extension-cli/config and extension-ui-vue.",
          "is_bot": false,
          "headline": "fix(build): derive built-in extension tooling build deps",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-14T10:58:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5306f771a6253bb41e28c6ce2fd8e6008500a58",
          "body": "Ensure desktop builds generate the extension CLI config export required by built-in extension configs in clean CI environments. Add a unified extension tooling output verification command and reuse it in CI/release workflows.",
          "is_bot": false,
          "headline": "fix(build): rebuild extension CLI before packaging built-in extensions",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T15:00:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45a3fa10f76387bc99b89aab66643928264d9dcc",
          "body": null,
          "is_bot": false,
          "headline": "feat(bangumi): redesign settings webview",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T14:40:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2037b1a03f1a922c655c14041a8ae890c25be825",
          "body": null,
          "is_bot": false,
          "headline": "feat(extensions): support webview HMR in builtin dev",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T14:39:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "238e2c0399ba07b55b54a7753be8a074abbd4b9a",
          "body": null,
          "is_bot": false,
          "headline": "chore: ignore Cursor workspace metadata",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T14:38:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6319d2f4483d786979ba2c9f42a324d65a477b5",
          "body": "Document the finished Vnite importer features, import flow, behavior notes, and development commands in English.",
          "is_bot": false,
          "headline": "docs(vnite-importer): update README for completed importer",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T12:11:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf366cb720d6603da8c688a099d23a26198a72da",
          "body": "- add pnpm packageManager metadata to generated extensions\n- update scaffold docs, CLI next steps, VS Code launch configs, and publish workflows to use pnpm\n- enable pnpm via corepack in generated GitHub Actions workflows\n- use std output capture for VS Code debug launch noise reduction",
          "is_bot": false,
          "headline": "chore(extension-tooling): standardize scaffolds on pnpm",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T12:07:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aaf670c6eea8191e7766f27a66e3e7b462e8ea63",
          "body": "Replace the old publication/current.json flow with direct development loading\nfrom extension project roots and flat built-in package output.\n\n- pass development extensions through KISAKI_DEV_EXTENSIONS\n- add pending-reload tracking for development extension changes\n- make host reload restart reliabl\n[…]\n icon changes\n- tighten dev-server origin parsing to loopback HTTP origins\n- update CLI output/build/dev commands and documentation\n- remove obsolete publication helpers and stale --dev-extension docs",
          "is_bot": false,
          "headline": "refactor(extension): simplify dev loading and package output",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T11:11:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4affbe562be156c6742fbbd5edb0e5e2bd5751c5",
          "body": "Scrollbars: on Electron 39 (Chromium 140) the standard scrollbar-width /\nscrollbar-color properties take precedence over ::-webkit-scrollbar, so the\npseudo-element rules were dead code (or fell back to the chunky classic\nscrollbar). Drop them and set scrollbar-width / scrollbar-color directly; since\n[…]\nrollbar actually resolved to here.\n\nFonts: load the Noto Sans SC / Noto Sans Mono Fontsource packages through\n@import in globals.css instead of runtime injection, which is robust in both\ndev and prod.",
          "is_bot": false,
          "headline": "fix(ui): correct global scrollbar styling and app font loading",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T07:35:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "421155ee56aaadfe9ddb87096d2f6ed24cf0478d",
          "body": "…-run results\n\nRebuild the extension webview UI/styling system end to end, bound task-run\nresults, and rewrite the two builtin extensions on the new foundation. No\nbackward compatibility kept.\n\nAppearance bridge & styling:\n- Mirror the full resolved app appearance (color tokens, radius, fonts, base\n\n[…]\nf polling task runs;\n  previews no longer fake a task run through notifications.\n\nScaffold:\n- Add the vue-kit UI variant (Vue + UI kit, iconify prewired); templates\n  assemble base.css + tailwind.css.",
          "is_bot": false,
          "headline": "refactor(extension): overhaul webview UI, appearance bridge, and task…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-13T06:51:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "15303da5347e988b3c30af4eecf583a724ec3444",
          "body": "- rename RPC/webview message types to *Envelope and RpcMessageChannel to RpcChannel\n- normalize every outgoing main<->host value via new toRpcValue inside RpcChannel\n- make webview.postMessage and the renderer relay the JSON gates for documents\n- drop facade-level normalization and delete sdk-bridge\n[…]\nze limits and rename secret field data to ciphertext\n- assert main<->renderer extension DTOs are strictly JSON via new JsonSafe<T>\n- fix pending-request leaks when a transport send fails synchronously",
          "is_bot": false,
          "headline": "refactor(extension): centralize wire serialization at transport gates",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-12T11:47:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0b2e6b2bfee210129cedec0587d1dc19d25fcb2c",
          "body": "- freeze the webview iframe bootstrap URL so theme switches no longer\n  reload open documents and drop their state\n- rename the extension-api ExtensionTaskRun* family to TaskRun*; main-side\n  task-run adapters alias the public types where both vocabularies meet\n- enforce extension host/ui/shared bou\n[…]\n a shared\n  slot helper and unify the webviews capability on createUnavailableError\n- add file header comments to extension webview components and mark\n  superseded extension design docs as historical",
          "is_bot": false,
          "headline": "refactor(extension): tighten webview UI conventions and layer boundaries",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-12T09:31:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3d19d5785d2693d45ad63820ec5ef6ecd4abd414",
          "body": "…sion UI\n\n- remove the settingsPanels contribution and DSL; add cardActions plus\n  kisaki.webviews with main-owned dialog/page sessions and the\n  kisaki-extension-ui:// asset scheme\n- add the SDK /webview document client, createWebviewRpc, and the theme.css\n  Tailwind bridge\n- rebuild kisx on embedd\n[…]\nk dev loop (UI HMR, host\n  republish); scaffold gains vanilla/vue webview UI variants\n- migrate bangumi settings and the vnite-importer wizard to the\n  host/shared/ui layout with Vue webview documents",
          "is_bot": false,
          "headline": "refactor(extension): replace settings panels with webview-based exten…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-12T08:45:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3094b139c2af69ced85cc3a29466d2d05815802a",
          "body": "…ndary\n\n- add compile-time WireSafe assertions covering every RPC method and event map\n- tighten contract gaps the assertions exposed: task-run output and scanner\n  snapshot rules become JsonValue, network response data defaults to RpcValue\n- consolidate the JSON value model into shared/json.ts as i\n[…]\ntics, and document boundary casts and the strict JSON value contract\n- drop dead code: unused RPC error payload validators and the unreferenced\n  extension:get-settings-panel-contributions IPC channel",
          "is_bot": false,
          "headline": "refactor(extension): enforce wire-safe value contracts across the bou…",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-10T15:43:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ad74894a6d5e7b84a8855a78d0a515ef147f880d",
          "body": "Remove the separate analysis layer from the Vnite importer UI and replace the old flow steps with config and preview. Keep configuration focused on import options, drop analysis distribution/coverage display, and sync related design docs.",
          "is_bot": false,
          "headline": "refactor(vnite-importer): simplify settings import flow",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-09T11:09:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f56f2533d222fd0703bc93d7d226b22478e3438b",
          "body": null,
          "is_bot": false,
          "headline": "fix(bangumi): explicitly set non-preview settings fields to horizontal",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-08T15:28:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67b5cea53d74521860d6c408ecee2e3c66b3baf1",
          "body": "- preflight external ID ownership conflicts during graph matching\n- mark conflicted entity nodes as failed instead of aborting the whole import\n- dedupe Vnite import diagnostics and surface error counts consistently",
          "is_bot": false,
          "headline": "fix(library): contain graph external id conflicts per node",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-08T14:59:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7e82bf4775be513687a534f3037d8b5463a0a1a",
          "body": "…- add footerActions contract, validation, normalization, and renderer support - move Vnite importer flow controls into panel footer actions - remove advanced cleanup state and stale settings history behavior - refine Vnite preview and diagnostics UI for import planning - close the settings panel after starting a Vnite import task",
          "is_bot": false,
          "headline": "feat(extension-settings): support footer actions in settings panels  …",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-08T11:42:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e487a5ef456d29b5508eaf843aa6cda97efc15a",
          "body": null,
          "is_bot": false,
          "headline": "feat(extension-settings): default fields to vertical layout",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-08T08:55:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77708e3ead372eb45862ab86cdf408ee23d1dcb2",
          "body": "Publish dev extension output as immutable versions switched by current.json,\nresolve dev/built-in publications before runtime load, and limit filesystem\nreload watching to development-mode extensions.\n\nBREAKING CHANGE: installed extensions no longer reload from package directory\nfile changes; runtime changes now flow through install/update/enable/disable.",
          "is_bot": false,
          "headline": "refactor(extension): make hot reload dev-only and atomic",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-08T08:39:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0c75bed669d7d0ea7c0bb69dae284f9d99c1a6f",
          "body": "- validate settings panel models before JSON serialization\n- register onClick/onChange callbacks during settings normalization\n- keep resolved settings payloads JSON-only with callbackId\n- avoid reshaping Vnite button nodes after creation",
          "is_bot": false,
          "headline": "fix(extension): normalize settings panel callbacks before serialization",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-07T13:40:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b3bb92f02c9d75986cac56628a4eb4ef003aad3",
          "body": "- move Vnite backup file selection into the field-level control\n- use footer next action for the importer first step\n- stop dev output watcher from watching generated dist artifacts\n- ignore generated dependency paths in extension reload watcher logs",
          "is_bot": false,
          "headline": "fix(extension): stabilize vnite import flow and dev output watching",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-07T13:34:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc3e93360c6a804b81a5ac2c81d70d6321c93cc2",
          "body": "- replace Serializable* contracts with JsonValue and JsonObject\n- centralize extension JSON serialization and validation helpers\n- tighten storage and secrets APIs to JSON-bounded values\n- normalize host, renderer, tooling, and built-in extension usage\n- preserve validation_failure semantics for task run JSON payload errors",
          "is_bot": false,
          "headline": "refactor(extension): unify extension JSON value contracts",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-07T11:40:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be6a2743629c3252e6021aebde8ebe2f7ebe19d3",
          "body": "Add the Vnite importer configuration flow, preview UI, completion summary,\nfield options, advanced settings, and persisted import defaults. Wire import\ncommands through the new settings runtime and apply configured merge behavior\nduring import execution.\n\nModernize extension package/runtime handling\n[…]\nh constants, and sharing unpacked/archive package layout logic across the\nCLI. Runtime dependencies are now copied into extension outputs consistently\nfor dev, built-in, and packaged extension builds.",
          "is_bot": false,
          "headline": "feat(vnite-importer): complete phase 8 import configuration",
          "author_name": "ximu3",
          "author_login": "ximu3",
          "committed_at": "2026-06-07T08:43:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 17,
      "commits_last_year": 398,
      "latest_release_at": "2026-07-19T15:58:54Z",
      "latest_release_tag": "desktop-v0.0.6",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 22,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 1.8
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "kisaki",
          "exists": true,
          "license": "ISC",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": null,
          "registry_url": "https://www.npmjs.com/package/kisaki",
          "is_deprecated": false,
          "latest_version": "0.0.0",
          "repository_url": null,
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 10,
          "first_published_at": "2024-01-23T16:47:49.104000Z",
          "latest_published_at": "2024-01-23T16:47:49.245000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 913
        },
        {
          "name": "@kisaki3/extension-api",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "kisaki",
            "extension",
            "api",
            "contracts"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@kisaki3/extension-api",
          "is_deprecated": false,
          "latest_version": "0.0.11",
          "repository_url": "https://github.com/ximu3/kisaki",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2184,
          "first_published_at": "2026-05-23T14:01:57.768000Z",
          "latest_published_at": "2026-07-19T15:56:26.911000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@kisaki3/extension-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "kisaki",
            "extension",
            "cli",
            "kisx"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@kisaki3/extension-cli",
          "is_deprecated": false,
          "latest_version": "0.0.11",
          "repository_url": "https://github.com/ximu3/kisaki",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1867,
          "first_published_at": "2026-05-23T14:02:10.712000Z",
          "latest_published_at": "2026-07-19T15:56:45.606000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@kisaki3/extension-sdk",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "kisaki",
            "extension",
            "sdk"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@kisaki3/extension-sdk",
          "is_deprecated": false,
          "latest_version": "0.0.11",
          "repository_url": "https://github.com/ximu3/kisaki",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1784,
          "first_published_at": "2026-05-23T14:02:06.300000Z",
          "latest_published_at": "2026-07-19T15:56:36.191000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@kisaki3/extension-ui-vue",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "kisaki",
            "extension",
            "webview",
            "ui",
            "vue"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@kisaki3/extension-ui-vue",
          "is_deprecated": false,
          "latest_version": "0.0.11",
          "repository_url": "https://github.com/ximu3/kisaki",
          "versions_count": 10,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1617,
          "first_published_at": "2026-06-20T11:53:46.924000Z",
          "latest_published_at": "2026-07-19T15:56:40.705000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@kisaki3/extension-registry",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "kisaki",
            "extension",
            "registry"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@kisaki3/extension-registry",
          "is_deprecated": false,
          "latest_version": "0.0.11",
          "repository_url": "https://github.com/ximu3/kisaki",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1968,
          "first_published_at": "2026-05-23T14:02:01.762000Z",
          "latest_published_at": "2026-07-19T15:56:31.483000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "create-kisaki-extension",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "kisaki",
            "extension",
            "create",
            "scaffolding"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/create-kisaki-extension",
          "is_deprecated": false,
          "latest_version": "0.0.11",
          "repository_url": "https://github.com/ximu3/kisaki",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1811,
          "first_published_at": "2026-05-23T14:02:14.378000Z",
          "latest_published_at": "2026-07-19T15:56:51.209000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 26,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-02-20",
            "count": 2
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 6
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "apps/desktop/tsconfig.json",
        "extensions/bangumi/tsconfig.json",
        "packages/create-kisaki-extension/templates/extension/base/tsconfig.json",
        "packages/create-kisaki-extension/templates/extension/webview/base/patches/tsconfig.json",
        "packages/create-kisaki-extension/templates/workspace/base/tsconfig.json",
        "packages/create-kisaki-extension/tsconfig.json",
        "packages/extension-api/tsconfig.json",
        "packages/extension-cli/tsconfig.json",
        "packages/extension-registry/tsconfig.json",
        "packages/extension-sdk/tsconfig.json",
        "packages/extension-ui-vue/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 33276,
      "source_files_sampled": 1229,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 6187
    },
    "dependencies": {
      "manifests": [
        "package.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": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@kisaki3/extension-api",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@kisaki3/extension-registry",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@ximu3/process-list",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.2"
        },
        {
          "name": "async-mutex",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.5.0"
        },
        {
          "name": "better-sqlite3",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.11.1"
        },
        {
          "name": "chokidar",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "cron-parser",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.6.1"
        },
        {
          "name": "cross-spawn",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "drizzle-orm",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.45.2"
        },
        {
          "name": "electron-log",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.4.4"
        },
        {
          "name": "electron-updater",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.8.9"
        },
        {
          "name": "electron-window-state",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.3"
        },
        {
          "name": "fflate",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "file-type",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^22.0.1"
        },
        {
          "name": "i18next",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^26.3.6"
        },
        {
          "name": "nanoid",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.1.16"
        },
        {
          "name": "semver",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "sharp",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.35.3"
        },
        {
          "name": "sharp-phash",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.0"
        },
        {
          "name": "smartcrop-sharp",
          "manifest": "apps/desktop/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.8"
        },
        {
          "name": "@clack/prompts",
          "manifest": "packages/create-kisaki-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "@kisaki3/extension-api",
          "manifest": "packages/create-kisaki-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@kisaki3/extension-registry",
          "manifest": "packages/create-kisaki-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "commander",
          "manifest": "packages/create-kisaki-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "cross-spawn",
          "manifest": "packages/create-kisaki-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "kolorist",
          "manifest": "packages/create-kisaki-extension/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "semver",
          "manifest": "packages/extension-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "@kisaki3/extension-api",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@kisaki3/extension-registry",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "chokidar",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "commander",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "cross-spawn",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "fflate",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "kolorist",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "semver",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "vite",
          "manifest": "packages/extension-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "@kisaki3/extension-api",
          "manifest": "packages/extension-registry/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "semver",
          "manifest": "packages/extension-registry/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "@kisaki3/extension-api",
          "manifest": "packages/extension-sdk/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@vueuse/core",
          "manifest": "packages/extension-ui-vue/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "class-variance-authority",
          "manifest": "packages/extension-ui-vue/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "clsx",
          "manifest": "packages/extension-ui-vue/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "reka-ui",
          "manifest": "packages/extension-ui-vue/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "tailwind-merge",
          "manifest": "packages/extension-ui-vue/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        },
        {
          "name": "tw-animate-css",
          "manifest": "packages/extension-ui-vue/package.json",
          "ecosystem": "npm",
          "version_constraint": "catalog:"
        }
      ],
      "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": 4,
        "merged_prs": 3,
        "open_issues": 2,
        "closed_ratio": 0.333,
        "closed_issues": 1,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "ximu3",
          "commits": 395,
          "avatar_url": "https://avatars.githubusercontent.com/u/152481053?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": [
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "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": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 8,
            "reason": "dependency not pinned by hash detected -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "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": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "27 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "5641e798e4536a1c3dab460b9d8604350504ae01",
        "ran_at": "2026-07-25T13:59:59Z",
        "aggregate_score": 4.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-25T08:42:36Z",
      "oldest_open_prs": [
        {
          "number": 4,
          "created_at": "2026-04-25T16:28:11Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 8,
          "created_at": "2026-07-18T08:42:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 9,
          "created_at": "2026-07-18T08:42:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 10,
          "created_at": "2026-07-25T08:42:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-06-25T04:59:00Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 1,
          "created_at": "2026-02-19T16:20:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 3,
          "created_at": "2026-02-22T04:11:33Z",
          "last_comment_at": "2026-02-22T05:34:32Z",
          "last_comment_author": "ximu3"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ximu3/kisaki",
    "host": "github.com",
    "name": "kisaki",
    "owner": "ximu3"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 57,
      "inputs": {
        "security": 46,
        "vitality": 83,
        "community": 35,
        "governance": 47,
        "engineering": 71
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 83,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "commits_last_year": 398,
              "human_commit_share": 0.97,
              "days_since_last_push": 0,
              "active_weeks_last_year": 22
            },
            "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": "22/52 weeks with commits",
                "points": 15.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 22
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "398 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 398
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 17,
              "latest_release_tag": "desktop-v0.0.6",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 1.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "17 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~1.8 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 1.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 35,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "forks": 2,
              "stars": 26,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "26 stars",
                "points": 22.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 26
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "packages": [
                "kisaki",
                "@kisaki3/extension-api",
                "@kisaki3/extension-cli",
                "@kisaki3/extension-sdk",
                "@kisaki3/extension-ui-vue",
                "@kisaki3/extension-registry",
                "create-kisaki-extension"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 11241
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "11,241 downloads/month across npm",
                "points": 54,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 11241,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 47,
        "weight": 0.24,
        "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": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "merged_prs": 3,
              "open_issues": 2,
              "closed_issues": 1,
              "issue_closed_ratio": 0.333,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "33% of issues closed",
                "points": 15.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 33
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "3/3 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 3,
                      "decided": 3
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "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": 42,
            "inputs": {
              "followers": 46,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "ximu3",
              "public_repos": 6,
              "account_age_days": 968
            },
            "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": "46 followers of ximu3",
                "points": 12,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 46,
                      "login": "ximu3"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "6 public repos, account ~2 yr old",
                "points": 11.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 6
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 2
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "kisaki",
                "@kisaki3/extension-api",
                "@kisaki3/extension-cli",
                "@kisaki3/extension-sdk",
                "@kisaki3/extension-ui-vue",
                "@kisaki3/extension-registry",
                "create-kisaki-extension"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "7 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 7,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "11 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "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.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "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": 46,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 46,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "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 dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 4,
                "status": "partial",
                "details": [],
                "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": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "27 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "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": "good",
        "name": "AI Readiness",
        "value": 75,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 6187
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "97 of 97 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 97,
                      "sampled": 97
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "apps/desktop/tsconfig.json",
                "extensions/bangumi/tsconfig.json",
                "packages/create-kisaki-extension/templates/extension/base/tsconfig.json",
                "packages/create-kisaki-extension/templates/extension/webview/base/patches/tsconfig.json",
                "packages/create-kisaki-extension/templates/workspace/base/tsconfig.json",
                "packages/create-kisaki-extension/tsconfig.json",
                "packages/extension-api/tsconfig.json",
                "packages/extension-cli/tsconfig.json",
                "packages/extension-registry/tsconfig.json",
                "packages/extension-sdk/tsconfig.json",
                "packages/extension-ui-vue/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.03
            },
            "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": "apps/desktop/tsconfig.json, extensions/bangumi/tsconfig.json, packages/create-kisaki-extension/templates/extension/base/tsconfig.json, packages/create-kisaki-extension/templates/extension/webview/base/patches/tsconfig.json, packages/create-kisaki-extension/templates/workspace/base/tsconfig.json, packages/create-kisaki-extension/tsconfig.json, packages/extension-api/tsconfig.json, packages/extension-cli/tsconfig.json, packages/extension-registry/tsconfig.json, packages/extension-sdk/tsconfig.json, packages/extension-ui-vue/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "apps/desktop/tsconfig.json, extensions/bangumi/tsconfig.json, packages/create-kisaki-extension/templates/extension/base/tsconfig.json, packages/create-kisaki-extension/templates/extension/webview/base/patches/tsconfig.json, packages/create-kisaki-extension/templates/workspace/base/tsconfig.json, packages/create-kisaki-extension/tsconfig.json, packages/extension-api/tsconfig.json, packages/extension-cli/tsconfig.json, packages/extension-registry/tsconfig.json, packages/extension-sdk/tsconfig.json, packages/extension-ui-vue/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "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": "3 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 3,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 33276,
              "source_files_sampled": 1229,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/1229 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1229,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T14:00:07.275078Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/x/ximu3/kisaki.svg",
  "full_name": "ximu3/kisaki",
  "license_state": "absent",
  "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 v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.