Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-26 04:50 UTC

Rorogogogo / nomoreide

AI-native service workbench: MCP server + shared daemon for Claude Code, Codex, and Gemini. CLI, TUI, and web dashboard for running services, logs, git, and databases.

TypeScriptAGPL-3.0★ 6 Sterne⑂ 1 Forkseit Mai 2026Auf GitHub ansehen ↗

Rorogogogo/nomoreide erreicht einen Gesundheitsindex von 62 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Engineering Quality (89/100) ab, am schwächsten bei Community & Adoption (40/100). Zuletzt vor 5 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

62
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.

62
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

RobertPersönliches Konto
27 Follower18 öffentliche Reposseit März 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
npmnomoreide0.1.885.51686vor 6 Tagenaiterminalmcpgitdeveloper-tools

Metriken nach Kategorie

Vitalität

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

77Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 5 Tagen
7.6/36Commit-Rhythmus — 11/52 Wochen mit Commits
18/18Commit-Volumen — 208 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year208
human_commit_share0,59
days_since_last_push5
active_weeks_last_year11

Release-Disziplin

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

Community & Verbreitung

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

40Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
11.3/60Stars — 6 Stars
0/25Forks — 1 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks1
stars6
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (AGPL-3.0)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templateja
Wie die Bewertung erfolgt
49.9/80Downloads pro Monat — 5.516 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesnomoreide
dependents
ecosystemsnpm
total_downloads
monthly_downloads5.516
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?

56Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0.2/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 99 % der Commits
2.7/13.5Breite der Beitragenden — 2 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled2
top_contributor_share0,992
Wie die Bewertung erfolgt
44.8/46.8Issue-Lösungsquote — 96 % der Issues geschlossen
37.2/38.3PR-Annahme — 108/111 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs108
open_issues3
closed_issues68
issue_closed_ratio0,958
closed_unmerged_prs3
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
10.4/25Reichweite des Inhabers — 27 Follower von Rorogogogo
16/25Kontohistorie — 18 öffentliche Repos, Kontoalter ca. 3 Jahre
Verwendete Eingangsdaten
followers27
owner_typeUser
is_verified
owner_loginRorogogogo
public_repos18
account_age_days1.215
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 — 1 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 6 Tagen
20/20Versionshistorie — 86 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesnomoreide
ecosystemsnpm
any_deprecatednein
min_days_since_publish6

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

89Exzellent · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 3 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — biome.json
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 15 out of 16 merged PRs checked by a CI test -- score normalized to 9
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein

Dokumentation

100Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://nomoreide.com
10/10Repository-Beschreibung
10/10Topics — 5 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsai-agents, claude-code, developer-tools, mcp, mcp-server
has_wikija
homepagehttps://nomoreide.com
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

44Gefährdet · 16 % des Gesamtindex

Sicherheitslage

33Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
2.2/2.5CI-Tests — 15 out of 16 merged PRs checked by a CI test -- score normalized to 9
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
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
2.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 46 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
13.2/25Indirekte Abhängigkeiten ohne bekannte Advisories — 1 betroffen: @hono/node-server 1.19.15 (moderate 5.9)
40/40Keine offenen Advisories — kein Advisory ist länger als 90 Tage öffentlich
Verwendete Eingangsdaten
sourceosv
advisories1
affected_packages1
assessed_packages404
unassessed_packages0
affected_by_severitymoderate 1
direct_affected_packages0
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:nomoreide@0.1.88 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 404 Paketen. Erreichbarkeit wird nicht analysiert.

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.

81Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — CLAUDE.md
15/15Maschinenlesbare Doku (llms.txt) — llms.txt vorhanden
40/40Lesbare Commit-Historie — 58 von 59 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtja
legible_history_share0,983
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes7.264
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — src-tauri/Cargo.toml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — biome.json
11/11Statische Typprüfung — src/web/client/tsconfig.json, tsconfig.json, website/tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 6 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesCargo.lock, package-lock.json
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_configja
typecheck_configssrc/web/client/tsconfig.json, tsconfig.json, website/tsconfig.json
agent_commit_share0,06
toolchain_manifestssrc-tauri/Cargo.toml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — TypeScript (statisch typisiert)
54.6/55Handhabbare Dateigrößen — 4/599 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageTypeScript
largest_source_bytes89.031
source_files_sampled599
oversized_source_files4
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
20/20MCP-Server
0/40Lauffähige Beispiele
Verwendete Eingangsdaten
example_dirs
has_mcp_signalja
api_schema_files

Eckdaten

6GitHub-Sterne
2Mitwirkende
208Commits, letzte 12 Monate
5Tage seit letztem Push
6Releases
1Bus-Faktor
3offene Issues
crates.io, npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'nomoreide' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Weitere Details

OpenSSF Scorecard 3.3 / 10
3.3Gesamtwert

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-26 04:50 UTC

10Binary-Artifactsno binaries found in the repo
k. A.Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
9CI-Tests15 out of 16 merged PRs checked by a CI test -- score normalized to 9
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
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
5Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 5
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities46 existing vulnerabilities detected
Direkte Abhängigkeiten 77
RegistryPaketVersionsvorgabeManifest
npm@codemirror/lang-css^6.3.1package.json
npm@codemirror/lang-html^6.4.11package.json
npm@codemirror/lang-javascript^6.2.5package.json
npm@codemirror/lang-json^6.0.2package.json
npm@codemirror/lang-markdown^6.5.0package.json
npm@codemirror/lang-yaml^6.1.3package.json
npm@tailwindcss/vite^4.3.0package.json
npm@tauri-apps/api^2package.json
npm@types/react^19.2.14package.json
npm@types/react-dom^19.2.3package.json
npm@vitejs/plugin-react^5.2.0package.json
npm@xterm/addon-fit^0.11.0package.json
npm@xterm/xterm^6.0.0package.json
npmclass-variance-authority^0.7.1package.json
npmclsx^2.1.1package.json
npmcodemirror^6.0.2package.json
npmfastmcp^3.0.0package.json
npmframer-motion^12.38.0package.json
npmhighlight.js^11.11.1package.json
npmjs-yaml^4.1.1package.json
npmlucide-react^1.16.0package.json
npmmarked^18.0.4package.json
npmmysql2^3.22.3package.json
npmnode-pty^1.1.0package.json
npmpg^8.21.0package.json
npmreact^19.2.6package.json
npmreact-dom^19.2.6package.json
npmsimple-icons^16.20.0package.json
npmsmol-toml^1.7.0package.json
npmtailwind-merge^3.6.0package.json
npmtailwindcss^4.3.0package.json
npmtw-animate-css^1.4.0package.json
npmvite^7.3.3package.json
npmws^8.21.0package.json
npmzod^3.25.76package.json
crates.iotauri2src-tauri/Cargo.toml
crates.iotauri-plugin-shell2src-tauri/Cargo.toml
crates.iotauri-plugin-process2src-tauri/Cargo.toml
crates.ioserde1src-tauri/Cargo.toml
crates.ioserde_json1src-tauri/Cargo.toml
crates.iotokio1src-tauri/Cargo.toml
crates.ioanyhow1src-tauri/Cargo.toml
crates.iothiserror2src-tauri/Cargo.toml
crates.iodirs5src-tauri/Cargo.toml
crates.iouuid1src-tauri/Cargo.toml
crates.iochrono0.4src-tauri/Cargo.toml
crates.ioreqwest0.12src-tauri/Cargo.toml
crates.ioregex1src-tauri/Cargo.toml
crates.ioportable-pty0.8src-tauri/Cargo.toml
crates.iosqlx0.8src-tauri/Cargo.toml
crates.iourlencoding2src-tauri/Cargo.toml
crates.iobase640.22src-tauri/Cargo.toml
npm@codemirror/lang-css^6.3.1website/package.json
npm@codemirror/lang-html^6.4.11website/package.json
npm@codemirror/lang-javascript^6.2.5website/package.json
npm@codemirror/lang-json^6.0.2website/package.json
npm@codemirror/lang-markdown^6.5.0website/package.json
npm@codemirror/lang-yaml^6.1.3website/package.json
npm@codemirror/language^6.12.3website/package.json
npm@codemirror/state^6.6.0website/package.json
npm@lezer/highlight^1.2.3website/package.json
npm@radix-ui/react-slot^1.1.2website/package.json
npm@tauri-apps/api^2website/package.json
npm@xterm/addon-fit^0.11.0website/package.json
npm@xterm/xterm^6.0.0website/package.json
npmclass-variance-authority^0.7.1website/package.json
npmclsx^2.1.1website/package.json
npmcodemirror^6.0.2website/package.json
npmframer-motion^12.40.0website/package.json
npmhighlight.js^11.11.1website/package.json
npmjs-yaml^4.1.1website/package.json
npmlucide-react^1.16.0website/package.json
npmmarked^18.0.4website/package.json
npmreact^19.2.6website/package.json
npmreact-dom^19.2.6website/package.json
npmsimple-icons^16.21.0website/package.json
npmtailwind-merge^3.6.0website/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

Abhängigkeits-Advisories 1

Die Installation von npm:nomoreide@0.1.88 zieht 404 Pakete nach sich, direkt und transitiv: 1 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
@hono/node-server1.19.15indirektmittel12.0.5

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "ai-agents",
        "claude-code",
        "developer-tools",
        "mcp",
        "mcp-server"
      ],
      "is_fork": false,
      "size_kb": 3946,
      "has_wiki": true,
      "homepage": "https://nomoreide.com",
      "languages": {
        "CSS": 20658,
        "HTML": 3094,
        "Rust": 247760,
        "JavaScript": 4236,
        "TypeScript": 3216690
      },
      "pushed_at": "2026-07-20T06:30:30Z",
      "created_at": "2026-05-16T13:50:35Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T06:30:51Z",
      "description": "AI-native service workbench: MCP server + shared daemon for Claude Code, Codex, and Gemini. CLI, TUI, and web dashboard for running services, logs, git, and databases.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "AGPL-3.0",
      "default_branch": "main",
      "license_spdx_raw": "AGPL-3.0",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://robert.jobjourney.me/",
      "name": "Robert",
      "type": "User",
      "login": "Rorogogogo",
      "company": null,
      "location": "Sydney",
      "followers": 27,
      "avatar_url": "https://avatars.githubusercontent.com/u/129162909?v=4",
      "created_at": "2023-03-28T08:58:31Z",
      "is_verified": null,
      "public_repos": 18,
      "account_age_days": 1215
    },
    "license": {
      "state": "standard",
      "spdx_id": "AGPL-3.0",
      "raw_spdx": "AGPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.1.85",
          "kind": "patch",
          "published_at": "2026-07-19T23:00:03Z"
        },
        {
          "tag": "v0.1.84",
          "kind": "patch",
          "published_at": "2026-07-19T22:52:26Z"
        },
        {
          "tag": "v0.1.82",
          "kind": "patch",
          "published_at": "2026-07-19T22:07:11Z"
        },
        {
          "tag": "v0.1.81",
          "kind": "patch",
          "published_at": "2026-07-19T21:54:09Z"
        },
        {
          "tag": "v0.1.80",
          "kind": "patch",
          "published_at": "2026-07-19T13:27:47Z"
        },
        {
          "tag": "desktop-v0.1.60",
          "kind": "other",
          "published_at": "2026-06-27T03:33:29Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "77294b5a5a65ee0110e3406c0cbec07b66d73778",
          "body": "…#182)\n\nLet users recolor the workbench so it feels like theirs. A new accent\ncontrol in Settings → Appearance drives five HSL tokens (primary,\nprimary-foreground, accent, accent-foreground, ring), so picking a color\ninstantly re-tints primary buttons, the active nav pill, accent chips,\nand focus ri\n[…]\n, and the\nper-project row all render, and selecting an accent re-tints the UI.\n\n\nClaude-Session: https://claude.ai/code/session_01XodxVoZKv14iSUoNyPH4kE\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(appearance): customizable accent color, global and per-project (…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-20T06:30:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f191c6ee5883deeab8bab3a8c6d13510a717a41c",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.88",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T04:42:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "631ad368b59167f6e7775a06e45c616a499931ab",
          "body": "… (#181)\n\nFour pre-existing errors surfaced only under the website's stricter\n`tsc -b`:\n\n- tauri-bridge: `mod.invoke/listen as typeof _invoke` cast to `null`,\n  since `_invoke` is narrowed to null inside the `if (!_invoke)` guard.\n  Cast to named InvokeFn/ListenFn types via `unknown` instead.\n- snap\n[…]\nvior change. Website `tsc -b`, client\ntypecheck, and `npm run build` all pass.\n\n\nClaude-Session: https://claude.ai/code/session_01XodxVoZKv14iSUoNyPH4kE\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): resolve website tsc -b type errors in shared client code…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-20T04:41:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1ef8868dfac64234fe7fdbf122df40582cfe0d60",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.87",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T04:19:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f4258b6be91709dee6b8f315b400fb4a46418d07",
          "body": "* feat(dock): add glanceable status cluster to the agent dock strip\n\nSurface the info a user most often wants at a glance in the bottom\nagent dock: current branch + ahead/behind, HEAD CI/pipeline status, the\n5-hour and weekly rate-limit meters, and the active session's\ncontext/cost. Everything reuse\n[…]\ntime change.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01XodxVoZKv14iSUoNyPH4kE\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dock): glanceable status cluster on the agent dock strip (#180)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-20T04:18:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d337b137c1e6d6901ed95b17ad4910642debcc94",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.86",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-20T02:20:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1892228bab24d7c29debf488e35c38f6915abe9",
          "body": "* Add trending skills discovery to the Skills card\n\nSurfaces real community skill directories (SkillsMP, Agent Skill.sh,\nClaude Marketplaces) plus one-click starter ideas in the dock's Skills\ncard. Reuses the existing AI-native add-skill pipeline (buildAddSkillPrompt\n+ sendToAgent) rather than writi\n[…]\nn't reachable instead of erroring.\n- Mirrored the read-on-mount endpoints in website/src/mock-api.ts per the\n  embedded-dashboard convention.\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Trending skills discovery + a Docker page (#179)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-20T02:19:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "20cca5f873c110f72ff2aa400cc0d8157e97bf8d",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.85",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T22:58:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf89294b9be27ee193d8c5eef24174dbaa917a1f",
          "body": "- track every root created by render() and unmount them in afterEach so\n  queued React scheduler work cannot fire against a torn-down window\n- fixes 2 unhandled \"window is not defined\" errors that failed CI on\n  node 20 despite all 844 tests passing\n\nClaude-Session: https://claude.ai/code/session_012B9ejStr97kdUQfMZMoPBt",
          "is_bot": false,
          "headline": "test: unmount dock test roots before happy-dom teardown (ROR-75) (#178)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T22:57:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "05548f140d878622ed4b1d110a8bd0ec533849fa",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.84",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T22:50:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d874575f924ea5db06ec4d10c08bed4b3b6852c5",
          "body": "- give web-server.test.ts teardown maxRetries/retryDelay so a straggling\n  service log write cannot fail the run with ENOTEMPTY\n- force only suppresses ENOENT, so it never covered this race\n\nClaude-Session: https://claude.ai/code/session_012B9ejStr97kdUQfMZMoPBt",
          "is_bot": false,
          "headline": "test: retry temp-dir removal that fails npm publish (ROR-74) (#176)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T22:49:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "616126f2965a4fd9dafe1951a3585152f4a5bb2d",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.83",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T22:43:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2102515623f49483bc21dca8984cdedec1433404",
          "body": "- replace the dock's compose boolean with a \"new\" selection sentinel, so\n  the tab strip's aria-selected always matches the rendered panel\n- keep the split pane rendering while composing; the composer takes the\n  left half instead of blanking both panes\n- add Shell beside Claude/Codex in the compose\n[…]\naimInitialInput\n- stamp kind \"shell\"/\"service\" on terminal sessions server-side, which\n  the create route previously left unset\n\nClaude-Session: https://claude.ai/code/session_012B9ejStr97kdUQfMZMoPBt",
          "is_bot": false,
          "headline": "feat: dock compose tab and plain shell sessions (ROR-72, ROR-73) (#174)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T22:42:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4c19a2c4e68454be8ea5c8846365c79e74cad8a8",
          "body": "* docs: design operation feedback and error inbox\n\n* docs: plan operation feedback implementation\n\n* feat: add loading state to shared button\n\n* feat: track global mutation operations\n\n* feat: show slow operations in app shell\n\n* feat: mount global operation feedback\n\n* test: define error inbox filt\n[…]\nions globally\n\n* feat: standardize core mutation feedback\n\n* feat: track destructive and save operations\n\n* refactor: consolidate loading primitives\n\n* test: wrap settings view with operation provider",
          "is_bot": false,
          "headline": "feat: add global operation feedback and redesign Error Inbox (#173)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T22:41:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f0e2fb2eb7c496ef723811c0bd295115d9de6f34",
          "body": "…(#170)\n\n- replace the leftover PolyForm NC badge with AGPL-3.0 + Commercial, matching LICENSE, package.json, and the README's own licensing section",
          "is_bot": false,
          "headline": "docs: correct README license badge to AGPL-3.0 + commercial (ROR-71) …",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T22:17:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8825a15e3048e858e1671c2818547fb23a049959",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.82",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T22:06:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8dd877eb843464ed0328f34a71c14de5cdc1a36",
          "body": "- add a split control to each non-active task tab that pins its terminal to a right pane beside the active one\n- track one splitTaskId, derived-guarded so the pane drops when the task closes or becomes active\n- keep panes absolutely positioned so viewports stay mounted and xterm refits through its existing observer\n- add dock.splitTaskAria / dock.unsplitTaskAria in en and zh\n- exclude .worktrees from vitest discovery so nested checkouts stop running stale copies of the suite",
          "is_bot": false,
          "headline": "feat: two-pane split view for agent task terminals (ROR-70) (#168)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T22:05:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a1c02a85808da15b533a3c85597f63faeea168f",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.81",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T21:53:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a43d1e3d8568e3de3e4d2dab24e04826c618e2e",
          "body": "…ROR-69) (#166)\n\n* chore: ignore local worktrees\n\n* feat: codex @-skill inserts, provider toggle in composer, tab logos (ROR-69)\n\n- Codex skill inserts now use @skill-name (native @-mention) instead of prose; Claude stays /skill-name\n- move provider switcher from dock header into composer footer — provider choice only affects the next composed task\n- show provider logo on each task tab next to the state dot for mixed-provider scanning",
          "is_bot": false,
          "headline": "feat: codex @-skill inserts, provider toggle in composer, tab logos (…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T21:52:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "483fc9d1fa152d95705d0843e201fdac33e370f3",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.80",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T13:23:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d930e30ab4310f1465e027dc73a06f0fe5c6217e",
          "body": "…fix (ROR-68) (#164)\n\n* docs: design operation feedback and error inbox\n\n* docs: plan operation feedback implementation\n\n* feat: dock capability strip with insert dropdowns, first-prompt argv fix (ROR-68)\n\n- add Skills/MCP/Plugins/Hooks chips under the composer and icon badges in\n  the dock header, \n[…]\ntic\n- replace the provider select with a segmented logo toggle\n- add TerminalViewportHandle.input() for programmatic PTY writes\n\nClaude-Session: https://claude.ai/code/session_01GwS7WZjwBaWt36XjK1qVqi",
          "is_bot": false,
          "headline": "feat: dock capability strip with insert dropdowns, first-prompt argv …",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T13:22:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "482ff9c317476325ece1a8f69bce06930daac2c1",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.79",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T06:25:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67f0ca4a6dba2f0f543bd64732fc804f96563a2f",
          "body": "…path (ROR-67) (#162)\n\n- add plugin category to staged changes: Claude uninstalls via the claude\n  CLI, Codex strips its config.toml plugins section and deletes the cache\n  dir, brainctl-managed plugins remove their installed skills/commands,\n  subagent files, MCP entries, and registry record\n- spli\n[…]\nl writes land in the standard dir and removes/moves\n  clear the legacy copy too; Codex now accepts project-scoped skill targets\n\nClaude-Session: https://claude.ai/code/session_01HSFmaaUox16zSJSWB9JTnb",
          "is_bot": false,
          "headline": "feat: plugin uninstall, Skills/Plugins split, Codex ~/.agents/skills …",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T06:24:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e76ac000bf0bab358a6a2f8a61606bab12fc463a",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.78",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T06:00:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f220286bb3e1bc3959ecfc736ce072d4775c4ea",
          "body": "…-58) (#160)\n\n* feat: add Simplified Chinese localization and CI-failure workflow trigger (ROR-58)\n\n- Localize the entire web client to zh via a dependency-free homegrown i18n system (lib/i18n, 1201 keys, exact en↔zh parity), switchable from Settings → Language\n- Translate every feature dir (Service\n[…]\n catalog keys\n\n* feat: translate agent terminal dock\n\n* feat: translate Agent Environments feature\n\n* feat: translate project switcher, folder picker, terminal viewport\n\n* fix: stamp html lang on boot",
          "is_bot": false,
          "headline": "feat: Simplified Chinese localization, rebased onto current main (ROR…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T05:59:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4b4588bd9b324e3fb6bd4c1f69e2e92976d7b7de",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.77",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T03:20:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e4dccb3e183256cba6f0696f1360e8bd1614fa0",
          "body": "…nces (ROR-66) (#159)\n\n* docs: design expanded settings hub\n\n* docs: plan settings hub implementation\n\n* feat: add versioned app settings store\n\n* fix: serialize app settings writes\n\n* feat: expose scoped settings APIs\n\n* fix: map settings validation errors\n\n* fix: make config writes process safe\n\n*\n[…]\nfore writes\n\n* fix: harden project settings state transitions\n\n* feat: apply expanded appearance preferences\n\n* feat: apply terminal preferences safely\n\n* feat: apply project log and database settings",
          "is_bot": false,
          "headline": "feat: searchable settings hub with versioned store and scoped prefere…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T03:19:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3bac1d7a2f39d610b267c7bd0adc703dcc0eb759",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.76",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T01:35:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "656774a515c12897830a194c10b741397d6c2621",
          "body": "… (#157)\n\n* docs: design expanded settings hub\n\n* docs: plan settings hub implementation\n\n* feat: agent env profiles UX, provenance, and settings editor (ROR-65)\n\n- add official agent logos and reuse them in env columns and profile rows\n- record sourceAgent provenance on profile snapshots and surfac\n[…]\ns editor by default (reveal to edit)\n- rename sidebar entries to Console and Environments; mirror new endpoints in website mock\n\nClaude-Session: https://claude.ai/code/session_01PGJVpYiwsW7RD5RMhXcr5K",
          "is_bot": false,
          "headline": "feat: agent env profiles UX, provenance, and settings editor (ROR-65)…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-19T01:34:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "045b59b8232a96dc9e914625c3aa95fef4c93648",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.75",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T12:28:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b016a61d5b0bbc55c03a0c226043e8f9fa30d068",
          "body": "PR #142's settings page was stranded behind 126 files of i18n\nconflicts, so this rebuilds it clean against the new IA: /settings\npage (shell route + PAGE registries + pinned nav row above the\nsidebar credit) with Appearance, Language, and About sections in\nthe compartment layout.\n\nTheme logic moves \n[…]\ncarry over when the\ntranslation catalogs land; zh shows as coming-soon until then.\ndefault-theme test now reads the store file.\n\nClaude-Session: https://claude.ai/code/session_018TxRmEQ3WbmBPWn1h4NKAR",
          "is_bot": false,
          "headline": "feat: Settings page — appearance, language, about (#155)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-18T12:27:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "14e9bbe6fefb954e5002f4b0f246f72c1b9e67a5",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.74",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-18T12:20:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "486d4b5a028957a3ab3f5cdf3d75665bbc6ea61c",
          "body": "* docs: design native agent terminal dock\n\n* docs: plan native agent terminal dock implementation\n\n* feat: define safe native agent terminal launches\n\n* test: isolate agent binary overrides\n\n* feat: track agent terminal session metadata\n\n* feat: create allowlisted agent terminal sessions\n\n* fix: pre\n[…]\nct/module and no longer rhymes with the folder-plus manage row,\nwhich really is about paths. Trigger's un-picked state matches.\n\nClaude-Session: https://claude.ai/code/session_018TxRmEQ3WbmBPWn1h4NKAR",
          "is_bot": false,
          "headline": "feat: sidebar IA, project-context scope, and dashboard polish (#154)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-18T12:19:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8616a564ca13e92b72bd5fd1a5746b2c75a7df3c",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.73",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-06T10:17:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69377b440368bcd67f9a99cd6b90b19b1e223190",
          "body": "…R-64) (#153)\n\n- nomoreide agents [status|doctor|read] over the read-only agent-env core\n- nomoreide profile list|show|snapshot|apply|export|import|delete|publish|install\n  (same core as UI/MCP; apply supports --dry-run and skip lists)\n- README: Agent Environments CLI section, feature-table rows, MCP tool table\n- docs/brainctl-migration.md: command + MCP tool mapping, storage/registry\n  changes, intentionally dropped run executor\n- website: Agent Environments feature card",
          "is_bot": false,
          "headline": "feat: CLI parity for Agent Environments + brainctl migration docs (RO…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-06T10:16:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aaa13ce2d5f1726b7ef7cf6e76570453db53d23d",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.72",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-06T10:06:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0df9e1200f1ed829f94229ae16dea21e1fb3259b",
          "body": "…s (ROR-63) (#152)\n\n- decision: keep the brainctl platform running as-is; nomoreide talks to it\n- port registry config/token-manager/client from brainctl into core/agent-profiles\n  (reuses ~/.brainctl/config.json and BRAINCTL_* env vars so existing sign-ins work)\n- publish uploads the credential-red\n[…]\nublish,install_from_registry,register_github}\n- UI: registry bar (sign in/out, install by slug) + publish dialog per profile\n- website mock entries for the read-on-mount auth status + registry actions",
          "is_bot": false,
          "headline": "feat: hosted profile registry — sign-in, publish, and install profile…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-06T10:05:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "62fa8a05f77892afe1749a5e1ce2389fb8227e05",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.71",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-06T05:51:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3a86b5b46ed7c48e226f14ba3c76e66dfd01783",
          "body": "…table bundles (ROR-62) (#151)\n\n- add src/core/agent-profiles/ — JSON profile store at\n  ~/.config/nomoreide/agent-profiles/ (CRUD + snapshot-from-agent),\n  credential redaction/resolution ported from brainctl, tar.gz\n  export/import, and conflict-previewed apply through the write-guarded\n  agent-en\n[…]\nply/export/delete) + apply dialog where conflicts default to skip\n- website mock: demo profiles + handlers; 7 tests incl. export→import\n  round-trip asserting the raw secret is absent from the archive",
          "is_bot": false,
          "headline": "feat: Agent Profiles — snapshot, apply, and share agent setups as por…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-06T05:50:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f90c6f4c3496bf913d7d13918e4a35f13375e2c",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.70",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-06T05:09:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01789d991a74f661a5df1bf9caf8c7fee932823e",
          "body": "…ls with preview + apply (ROR-61) (#150)\n\n- add write-guarded core/agent-env-actions.ts (staged PendingChange model,\n  preview validation, batch apply) and core/agent-env-writers.ts (per-agent\n  config mutators ported from brainctl); core/agent-env/ stays read-safe\n- atomic writes (temp + rename) wi\n[…]\now menus (no drag-and-drop) and a\n  staged-changes drawer with live preview, warnings, and Save & apply\n- website mock handlers for preview/apply/snapshot; 8 round-trip tests\n  against tmpdir fixtures",
          "is_bot": false,
          "headline": "feat: Agent Environments staged writes — copy/move/remove MCPs & skil…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-06T05:08:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8c711a24f927f5366e55775bc16614544c90773",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.69",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-06T03:45:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3218b480c32ec1667345dcacc1073e8859d60eb3",
          "body": "…ent (ROR-60) (#149)\n\nPort brainctl's agent-config readers as the first vertical slice of the\nbrainctl absorption (ROR-59): core/agent-env (claude/codex/antigravity\nreaders, availability, doctor), /api/agent-env routes, nomoreide_agents_*\nMCP tools, Agent Env dashboard page, website mock handlers, and reader\ntests with injectable homeDir fixtures. Read-only by design; writes land\nbehind a guarded module in ROR-61.",
          "is_bot": false,
          "headline": "feat: Agent Environments read-only view — live MCPs and skills per ag…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-07-06T03:44:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f4e5170c12ee3fc5b2e62f43d7f932b202e0c83",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.68",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-28T12:49:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bace27c6a4abde81958c16eee8346771bd09413",
          "body": "- loop flush() over 5 macrotasks so the error-incident async chain (configStore.load → readFile) settles before assertions\n- fixes CI / test (24) failures in \"enqueues a pending run\" and \"ackPending removes a queued run\"",
          "is_bot": false,
          "headline": "test: stabilize workflow-triggers flush for Node 24 CI (ROR-57) (#140)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-28T12:49:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5b5b7ab0898a6a7b315f77f81c238908a7e1603",
          "body": "…-55) (#137)\n\n- document that new read-on-mount endpoints must be mirrored in website/src/mock-api.ts to avoid white-screening the embedded dashboard demo",
          "is_bot": false,
          "headline": "docs: note website-mock requirement in vertical-slice convention (ROR…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T13:50:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f4ed927668daf40158017d06ad24161efba4795",
          "body": "…-54) (#135)\n\n- mock /api/github/branches (fixes branches tab reading repository.full_name off the default {ok:true} and blanking the app), plus /api/github/pr-template and /api/github/prs/:n/review with demo data\n- mock /api/git/overview, GET /api/git/branches, and PUT /api/git/board\n- mock /api/errors/:id/fix\n- console.warn any unhandled /api/* path in dev so future feature endpoints get caught before shipping",
          "is_bot": false,
          "headline": "fix: cover all read-on-mount dashboard endpoints in website mock (ROR…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T13:44:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f8554fb753f556150e9e6a084e9b45c2be31190",
          "body": "…R-53) (#133)\n\n- mock /api/snapshots (+ files/diff/restore/rename/delete) with demo checkpoints so the Snapshots tab no longer reads next[0] off undefined and blanks the app\n- mock /api/agent/change-sets (+ /:id, diff, restore) for the Agent Changes tab\n- mock /api/agent/usage/history with demo cost/run data for the Usage tab\n- mock /api/services/:name/env/runtime and /api/services/graph",
          "is_bot": false,
          "headline": "fix: add website mock endpoints for snapshots, change-sets, usage (RO…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T13:34:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65368380a737090c2fd231a0ed3002f7971a4d57",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.67",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T13:28:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "879ab5bc7d5e8646c26558f45f9bbac1ec8682b8",
          "body": "…52) (#131)\n\n- add /api/workflow-triggers and /api/workflow-triggers/pending mock handlers so the embedded dashboard gets correct array shapes\n- coerce non-array seed responses to [] in WorkflowTriggerProvider so a malformed backend response can't white-screen the app root",
          "is_bot": false,
          "headline": "fix: website crash from missing workflow-trigger mock endpoints (ROR-…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T13:27:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a4b859b4475e3c95337314fb1ebdc084d2d156f",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.66",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T12:30:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a391c87a79a53f75ffccb5f93a51c0d09ec4843f",
          "body": "- add core/workflow-triggers.ts: WorkflowTriggerManager subscribes to\n  ErrorInbox + TimelineStore, dedupes bursts, queues pending runs\n- add TimelineStore.subscribe so service crashes flow through the bus\n- add workflowTriggers config schema + save/remove in config-store\n- add workflow-trigger-rout\n[…]\n Triggers\n  panel section; extend the workflows API seam (Tauri stub inert)\n- mark IDEAS #16 shipped and correct stale #9 status\n- add test/workflow-triggers.test.ts (8); fix config-store default test",
          "is_bot": false,
          "headline": "feat: event-driven workflow triggers (ROR-51) (#129)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T12:29:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3e1fdcd1ac44a22cb5806712f099e8bc8deff71",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.65",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T11:37:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27054688d2a5a0168d2fa9f14464ddf05608b4e8",
          "body": "- add core/usage-history.ts UsageHistory (deduped jsonl, cost-per-session)\n- sample usage server-side (warmup + 30s interval, unref'd) into history\n- add GET /api/agent/usage/history with entries + aggregate summary\n- extend agent API seam with getAgentUsageHistory (http; tauri empty)\n- add a Usage sub-tab to the agent view (totals + per-day cost chart)\n- cover usage-history with test/usage-history.test.ts",
          "is_bot": false,
          "headline": "feat: agent cost / run history (ROR-50) (#127)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T11:36:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f4cc272a03909a6e00410a1f3cacde35bbeb2b4",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.64",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T11:25:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1deb43ec7e65ef4b8c501c08455e9cd5284edea0",
          "body": "- add core/env-runtime.ts computeRuntimeEnvStatus (config mtime vs startedAt)\n- add GET /api/services/:name/env/runtime endpoint\n- extend services API seam with getServiceEnvRuntime (http; tauri inherits)\n- surface amber \"Reload service\" banner in the Env tab when config is stale\n- re-check drift after saving an env edit\n- cover env-runtime with test/env-runtime.test.ts",
          "is_bot": false,
          "headline": "feat: reload running service on stale env/config edits (ROR-49) (#125)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T11:24:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ffe48d71759b735fb58171e9f08616e97b69c73",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.63",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T09:37:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "043a94b975dbbb99d65f61e8cb915db2de81107c",
          "body": "… (#123)\n\n- add FixLoop core: build repro bundle, snapshot working tree, record pinned agent session\n- add POST /api/errors/:id/fix and wire FixLoop into RouteServices\n- thread startFix through errors client seam (api/http) with FixPreparation type\n- wire incident \"Fix with AI\" + \"Review changes\" deep-link into Agent Changes tab\n- cover FixLoop.prepare with 3 tests (unknown incident, snapshot+session, non-git fallback)",
          "is_bot": false,
          "headline": "feat: error → fix loop with snapshot + reviewable change-set (ROR-48)…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T09:36:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8854318812715bd3538dec27c5a3c04d5c1233c",
          "body": "- reduce section top/bottom padding and inter-element margins\n- drop the headline from text-7xl to text-6xl and trim the subtext width\n- shrink the CTA gap and the demo's top margin",
          "is_bot": false,
          "headline": "style: tighten hero spacing so the live demo sits higher (ROR-47) (#121)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T04:06:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2249bd934363262d35fec0c05d486dca90cfc13",
          "body": "- frame the hero CTAs as \"Two ways to run it\": Download for macOS or Add to your AI agent (MCP), with a one-line explainer\n- demote live mock / docs / GitHub to secondary text links so the two install paths stand out\n- point the hero macOS button at the #download section (install + unsigned-app bypass steps) instead of the raw .dmg\n- move the Download section up directly below the hero so both paths sit together near the top",
          "is_bot": false,
          "headline": "feat: surface both install paths in the hero (ROR-47) (#120)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T04:02:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dc4ac673df6d2ed106422467d011bf6f189ae47",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.62",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T03:28:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "810461d163f28014655ae62117dd6ccc695f0893",
          "body": "- bump src-tauri/tauri.conf.json to 0.1.60 (was stale at 0.1.56)\n- add a workflow step that derives the app version from the desktop-v* tag before building, so the bundled .dmg filename always matches its release",
          "is_bot": false,
          "headline": "chore: sync desktop app version with release tag (ROR-47) (#119)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T03:27:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3129f97f32afad534e9e5f7579aa28a9d5a9a051",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.61",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T03:03:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b207de694566521714965f7bc15a2af67d2a878",
          "body": "- tauri-action runs `npm run tauri build`, but the repo only had `tauri:build`, so the desktop release failed with \"Missing script: tauri\"\n- add the conventional `\"tauri\": \"tauri\"` passthrough script",
          "is_bot": false,
          "headline": "fix: add npm \"tauri\" script so tauri-action can build (ROR-47) (#118)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T03:02:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82c1b0c50667ca1ca7faa6ca39a6ff4a9e9f527d",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.60",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T02:58:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d484c65a89d18998f3b87a2856c1ef337a07a0e",
          "body": "…R-47) (#117)\n\n- add a Download section promoting the Tauri/React/Rust macOS app with a releases/latest download button\n- explain the unsigned-app first-launch bypass (System Settings → Privacy & Security → Open Anyway), since there is no paid Apple Developer account\n- add desktop-release.yml: build a universal macOS .dmg via tauri-action on desktop-v* tags or manual dispatch, decoupled from the npm publish\n- stub Apple notarization secrets in comments for when a developer account is purchased",
          "is_bot": false,
          "headline": "feat: advertise macOS desktop app on website + desktop release CI (RO…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T02:58:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "40900b3b963282fa4d3e01b20f04a912424c28fa",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.59",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T02:31:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75a0dc6108c0f4b415361ca43b4108ab765cd0a9",
          "body": "…(ROR-46) (#115)\n\n- resolve a Windows drive root's parent to a virtual \"This PC\" root and enumerate available drives (C:–Z:) so the picker can leave C:\n- select path.win32/posix explicitly so drive-root logic is deterministically testable on any host\n- make the folder-explorer path bar an editable input — type/paste an absolute path and press Enter to jump\n- add test/directories.test.ts covering listing, includeFiles, win32 drive-root parent, and drives enumeration",
          "is_bot": false,
          "headline": "fix: support drive-switching in Add-project folder picker on Windows …",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T02:31:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4572603dfbd908d678f3f20a3913c1c840eb6eee",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.58",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-27T02:10:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c627ff2a21896f7771d60ba32b239feaf52538f",
          "body": "…#113)\n\n- add cloneRepository githubToken arg reusing stored GitHub token for HTTPS github.com clones via one-shot git -c extraheader (never persisted)\n- add POST /api/git/clone web route and nomoreide_git_clone MCP tool\n- add Tauri clone_git_repository command (base64 dep) mirroring Node/MCP path\n- extend client transport seam with cloneGitRepository across git-api/http/tauri/bridge\n- add Local path / Clone URL toggle to repository-selector UI",
          "is_bot": false,
          "headline": "feat: clone remote repo (HTTPS/SSH) from Git \"Add project\" (ROR-45) (…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-27T02:09:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "603ba4f0a9646860c00ea82be04ae52e16ae9826",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.57",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-20T00:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af2ff40cdd045740b6e6edfcafc86a8f29665646",
          "body": "* feat: service dependency / startup order (ROR-44)\n\n- add dependsOn to service schema + new core/service-graph topo sort & cycle detection\n- order bundle start by dependencies, waiting for each dep's port before dependents\n- add GET /api/services/graph, dependency-graph SVG dialog, and dependsOn ch\n[…]\nile audit fix (ROR-44)\n\n- npm audit fix (lockfile-only) bumps hono/undici/vite/js-yaml to patched versions\n- clears the CI `audit --audit-level=high` gate; only a low-severity esbuild advisory remains",
          "is_bot": false,
          "headline": "feat: service dependency / startup order (ROR-44) (#111)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-20T00:52:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8fcdcac3a3faa66ab5e7e8562ec4a8ef2a1a87b5",
          "body": "…tive time (ROR-43) (#109)\n\n- compact log timestamps to HH:MM:SS.mmm (full ISO in tooltip, still searchable)\n- replace terminal status badge with a single dot; ghost icon-only Restart/Stop/Expand\n- use StateDot in service rows; file viewer body uses bg-card\n- stop the 5s dashboard poll from re-valid\n[…]\nions/Branches tabs (full-view \"checking\" flicker)\n- signature-guard the runs/jobs poll so unchanged data skips re-render\n- show relative time on Actions run rows via a shared formatRelativeTime helper",
          "is_bot": false,
          "headline": "fix(web): compact log/terminal chrome + GitHub Actions flicker & rela…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-19T23:29:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cee22fdd7f0d3ec54e85b4d8faa20cb85b239d97",
          "body": "…nds (ROR-42) (#107)\n\n- Add new Tauri commands: agent.rs (agent introspection) and system.rs\n- Refactor agent chat across Rust (agent_chat.rs) and TS transport (agent-chat-api/http/tauri, agent-chat-routes)\n- Improve service-detail (service-actions, processes-tab, http-tab, service-list, services-vi\n[…]\n-detail Terminal tab freezing on \"Opening terminal…\" under React StrictMode by resetting mountedRef on remount\n- Update process-manager, core config, and Tauri bridge; add generated macOS Tauri schema",
          "is_bot": false,
          "headline": "fix(tauri): desktop agent chat, services & terminal fixes + new comma…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-16T07:57:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "467005789ebf538bfde1d7ed585aa31e14597380",
          "body": "… (#105)\n\nFollows the git pilot (#104): replaces the per-function `if (isTauri())`\nbranches in every other `lib/api` domain with the same shared-interface\nseam. Each domain is now `<domain>-api.ts` (the interface + types),\n`<domain>-http.ts` (Node HTTP impl), and `<domain>-tauri.ts` (Rust-core\nimpl \n[…]\nanged; two simply moved into\n  the new -tauri files (snapshots restore, terminal create-session).\n\nBuild: `vite build` + server `tsc` pass; client `tsc --noEmit` shows only\nthose 4 pre-existing casts.",
          "is_bot": false,
          "headline": "refactor(web): extend the API transport-seam to all remaining domains…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-15T23:46:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1b684d926f31136571a29a78914d88e12718b4e8",
          "body": "Desktop fixes (Rust + UI), surfaced from bundled-app testing:\n- Tree tab blank: git_commit_files now parses `git show --name-status -z`\n  into Vec<GitFileStatus> so the UI's file.index.trim() no longer throws.\n- Default workflows missing: list/save/delete_workflows embed the 3\n  BUILTIN_WORKFLOWS + \n[…]\ni).\n\nwebsite build: add @tauri-apps/api dep + browser alias so the shared\nclient (now importing it via tauri-bridge) keeps building under website's\nvite config (which aliases @ -> src/web/client/src).",
          "is_bot": false,
          "headline": "fix(tauri): desktop bug fixes + git API transport-seam refactor (#104)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-15T13:53:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d8a78f74345e68e2ff992db7894ea5a180cf6bf8",
          "body": "…end (#103)\n\n- isTauri(): detect window.__TAURI_INTERNALS__ (v2 doesn't inject\n  __TAURI__ without withGlobalTauri), so the desktop app actually calls\n  the Rust backend instead of falling back to a non-existent /api server\n  — fixes every page rendering empty in the bundled app\n- icons: regenerate from the real logo (were blank placeholders)\n- tauri.conf: drop 'resources: ../dist/ → ./' that bundled the unused\n  compiled Node backend (95 .js files) into the app; runtime is pure Rust",
          "is_bot": false,
          "headline": "fix(tauri): correct env detection, real icons, drop bundled node back…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-15T10:35:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87125aeb4ef57557c08438f62a46b1673b5c1281",
          "body": "…parks (#102)\n\n- Expand PR detail (comments, markdown body, notched comment box, AI sparks)\n- Issue detail markdown + comments; actions-view inline 'fix run' AI ask\n- Shared UI: refresh-registry, confirm-dialog, loading, usePersistentState\n- GitHub agent prompts (pr/issue/action) for inline intent → agent dock\n- Minor touch-ups: database/git/usage/service views",
          "is_bot": false,
          "headline": "feat: GitHub page detail pass — PR/issue markdown, comments, CI fix s…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-15T09:52:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93f4e35c45566db45847cffb6528919b5b323b3c",
          "body": "* fix(tauri): get Rust backend compiling cleanly\n\n- Convert PNG icons to RGBA (tauri generate_context! requires alpha channel)\n- Fix detect_default_branch: use git() helper instead of unwrap_or_default()\n  on std::process::Output which doesn't implement Default\n- Rewrite database row decoding: repla\n[…]\nvice\n  + register_database + start_service, streamInstall uses install-output events\n\nhttps://claude.ai/code/session_01AkYton6YVzzPAZ3jNopHUg\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tauri): complete Tauri desktop app implementation",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-15T06:22:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "18bf691c2240dbd6711b6cd6833ec8c3e8f29f9f",
          "body": "* feat: add Tauri desktop app scaffolding (src-tauri/)\n\nCreates a native desktop wrapper around the existing React frontend\nusing Tauri v2. The Rust backend manages the app window, system tray,\nand spawns the Node.js web server as a sidecar in release mode.\n\nNew files:\n- src-tauri/  — Tauri v2 Rust \n[…]\nauri_onTerminalOutput()\nreturns an unlisten handle matching the existing WS pattern.\n\nhttps://claude.ai/code/session_01S5RMqxCfeTrDfPVRe9NV4J\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Tauri standalone desktop app (Rust backend) (#100)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-15T03:44:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c98c603ee0e7516dcb541527b49a742998c526df",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.56",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-11T22:43:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afaa402b0cbbba760355528de3a3212391996f6c",
          "body": "* docs: design github page connection recovery\n\n* feat: multi-repo board git actions + GitHub page features (ROR-40)\n\n- add per-repo stage/unstage/commit/push to git board columns; scope\n  stage/unstage/commit/push routes to an optional repo name\n- add collapsed per-column commit footer and a read-o\n[…]\n+ routes for the new GitHub surface\n- enhance snapshot-manager, routes, and snapshots view\n- add tests across git-manager, github-manager, snapshot-manager,\n  web-server, plus source-level guard tests",
          "is_bot": false,
          "headline": "feat: multi-repo board git actions + GitHub page features (ROR-40) (#98)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-11T22:42:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75e608a736bb6681e436b8e95795da2178f1e5f0",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.55",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-11T11:52:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8cc5ee3a116b78095dca885f1dfcae845ce5625",
          "body": "Working-tree checkpoints under refs/nomoreide/snapshots plus per-agent-\nsession change-set review:\n\n- core/snapshot-manager.ts: snapshot via a temporary GIT_INDEX_FILE (the\n  user's index and HEAD are never touched), list/diff against the live\n  worktree, restore (always preceded by an automatic pre\n[…]\noutes.ts: /api/snapshots CRUD+restore and\n  /api/agent/change-sets list/detail/diff/restore.\n- UI: Snapshots tab in the Git view; Changes tab in the Agent view with\n  \"Restore to before this session\".",
          "is_bot": false,
          "headline": "feat: snapshot/restore + agent change-sets safety loop (ROR-39)",
          "author_name": "roro",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-11T11:49:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8fa109ef33f9cfb735c20e0a85d7a12243c9b39d",
          "body": "- app.tsx: LinkedIn footer svg gets a real <title> instead of the\n  contradictory aria-hidden + role=img (useAnchorContent /\n  noSvgWithoutTitle); the header quick-actions div becomes role=\"toolbar\",\n  which is the accurate role for a row of buttons and has no semantic\n  element equivalent (useSeman\n[…]\n- ai-ask-inline.tsx: replace the autoFocus attribute with a focus-on-mount\n  callback ref - same behavior, and noAutofocus no longer applies (the old\n  eslint-disable comment did nothing under Biome).",
          "is_bot": false,
          "headline": "fix: resolve a11y lint errors so npm run lint passes again",
          "author_name": "roro",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-11T11:27:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c751c3d37f682921f2c192386219dd6651c01af5",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.54",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-08T01:18:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "873a663749ba6a80324ebb623f8fc0e2c6eff830",
          "body": "* Update workflows.ts, use-workflow-runner.ts, workflow-composer.ts +13 more\n\n* Update git-actions.ts, workflows.ts, use-workflow-runner.ts +9 more\n\n* feat: resume paused workflows and run self-contained agent steps isolated\n\n- Add a Resume path so a blocked/failed workflow retries that step and con\n[…]\ne builder\n- Rewrite Ship-it's merge step to find the PR by branch so it no longer depends on the open-pr session\n- Track the in-flight session for tool approvals so isolated turns target the right CLI",
          "is_bot": false,
          "headline": "feat: workflow PR-branch guard, resume, and isolated agent steps (#94)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-08T01:17:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7c70a4527aff8cd60117eef8e09bb9e5277796ef",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.53",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-08T00:52:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c18b913ecbb5ee213e68d0fbf9eb6acd3db22fa",
          "body": "…#93)\n\n* Update workflows.ts, use-workflow-runner.ts, workflow-composer.ts +13 more\n\n* Update git-actions.ts, workflows.ts, use-workflow-runner.ts +9 more",
          "is_bot": false,
          "headline": "Update git-actions.ts, workflows.ts, use-workflow-runner.ts +9 more (…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-08T00:51:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d8ff2d8bb2518a389ab2fbeff56016970ee8d35",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.52",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-07T23:16:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa6a54568b311612093ed3fbd77b46ff18d8fe3a",
          "body": "… more (#92)",
          "is_bot": false,
          "headline": "Update workflows.ts, use-workflow-runner.ts, workflow-composer.ts +13…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-07T23:15:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcaa24b5136f80f1de7526dce6f8225767ef03b8",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.51",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-06T11:26:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ffdae2ffdc7df875733d4056f72f72efb383e8a",
          "body": "… (#90)\n\n- Split the commit step into an agent \"Generate commit message\" pass, an\n  approval gate, then a deterministic commit action (built-ins + composer)\n- Reuse the approved message in the commit action and only stage when\n  nothing is staged (messageForCommitAction / pathsToStageForCommitAction\n[…]\nt message at the approval gate\n- Remove redundant Quick Start sections from README, usage guide, docs\n  site, and llms-full.txt\n- Add workflow-runner commit-message tests and the commit-gate plan/spec",
          "is_bot": false,
          "headline": "feat: gate workflow commits on an approved generated message (ROR-37)…",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-06T11:25:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9968e586c95ba5509e713be3ef85192e303c9b04",
          "body": "- Add website/vercel.json with a catch-all rewrite to /index.html\n- Fixes the platform 404 on /docs; the Vite SPA routes client-side, so\n  unmatched paths must fall through to index.html\n- Real files (docs/ai-guide.md, llms.txt, assets) still serve directly\n  since Vercel checks the filesystem before applying rewrites",
          "is_bot": false,
          "headline": "fix: add Vercel SPA rewrite so /docs resolves (ROR-36) (#88)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-06T06:13:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "124938d309147b57bd5c46bca3f9d4b71a8dfa82",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.50",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-06T06:06:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d96a5f554547e545967ec4688125f3ba2bbf7d95",
          "body": "- Update README, human docs, and AI-agent guide to cover GitHub\n  PR/issue/Actions tools, reusable git/GitHub workflows, and the\n  database/SQL workbench\n- Refresh llms.txt / llms-full.txt and marketing site components\n  (features, hero, how-it-works, docs page, mock-api)\n- Expand safety-boundary no\n[…]\ny DB tools, human-approved\n  SQL writes, GitHub token + explicit intent, config path\n- Fix ai-context.ts git-status mapping to use file.index/file.workingTree\n  instead of the non-existent file.status",
          "is_bot": false,
          "headline": "docs: document GitHub workflows and database workbench (ROR-34) (#84)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-06T06:05:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f570c310214863c0259813d64dc071081201bbfc",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.49",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-06T06:05:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b57ed137c10a019087d26ca06e038f957f928d9",
          "body": "- Bump vitest to ^4.1.8 to clear the critical UI-server file read/exec advisory\n- Apply npm audit fix for hono and qs moderate advisories (transitive, lockfile only)\n- All 423 tests pass and build succeeds under vitest 4",
          "is_bot": false,
          "headline": "fix: resolve npm audit vulnerabilities (ROR-35) (#86)",
          "author_name": "Robert",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-06T06:04:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cebe871d9ffa0d963707c5fba21d94d0b3c83b44",
          "body": null,
          "is_bot": true,
          "headline": "chore: bump version to 0.1.48",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-06T04:38:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0df7a64ef542d06ae9df80d3471e6e56324583cf",
          "body": null,
          "is_bot": false,
          "headline": "chore: add CODEOWNERS and pull request template",
          "author_name": "roro",
          "author_login": "Rorogogogo",
          "committed_at": "2026-06-06T04:37:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 6,
      "commits_last_year": 208,
      "latest_release_at": "2026-07-19T23:00:03Z",
      "latest_release_tag": "v0.1.85",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 11,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 4.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "nomoreide",
          "exists": true,
          "license": "AGPL-3.0-only",
          "keywords": [
            "ai",
            "terminal",
            "mcp",
            "git",
            "developer-tools"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/nomoreide",
          "is_deprecated": false,
          "latest_version": "0.1.88",
          "repository_url": "https://github.com/Rorogogogo/nomoreide",
          "versions_count": 86,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 5516,
          "first_published_at": "2026-05-16T12:51:27.965000Z",
          "latest_published_at": "2026-07-20T04:43:07.518000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 6,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-10",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": null,
      "open_issues_and_prs": 3
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": true,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "src/web/client/tsconfig.json",
        "tsconfig.json",
        "website/tsconfig.json"
      ],
      "toolchain_manifests": [
        "src-tauri/Cargo.toml"
      ],
      "largest_source_bytes": 89031,
      "source_files_sampled": 599,
      "oversized_source_files": 4,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 7264
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "src-tauri/Cargo.toml",
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.15",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "moderate": 1
        },
        "advisory_count": 1,
        "affected_count": 1,
        "assessed_count": 404,
        "malicious_count": 0,
        "assessed_package": "npm:nomoreide@0.1.88",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates",
        "npm"
      ],
      "dependencies": [
        {
          "name": "@codemirror/lang-css",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.3.1"
        },
        {
          "name": "@codemirror/lang-html",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.4.11"
        },
        {
          "name": "@codemirror/lang-javascript",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.2.5"
        },
        {
          "name": "@codemirror/lang-json",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.2"
        },
        {
          "name": "@codemirror/lang-markdown",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.5.0"
        },
        {
          "name": "@codemirror/lang-yaml",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.1.3"
        },
        {
          "name": "@tailwindcss/vite",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.0"
        },
        {
          "name": "@tauri-apps/api",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2"
        },
        {
          "name": "@types/react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.14"
        },
        {
          "name": "@types/react-dom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.3"
        },
        {
          "name": "@vitejs/plugin-react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.0"
        },
        {
          "name": "@xterm/addon-fit",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.0"
        },
        {
          "name": "@xterm/xterm",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.0"
        },
        {
          "name": "class-variance-authority",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "codemirror",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.2"
        },
        {
          "name": "fastmcp",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "framer-motion",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.38.0"
        },
        {
          "name": "highlight.js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.11.1"
        },
        {
          "name": "js-yaml",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.1"
        },
        {
          "name": "lucide-react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.16.0"
        },
        {
          "name": "marked",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.0.4"
        },
        {
          "name": "mysql2",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.22.3"
        },
        {
          "name": "node-pty",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.0"
        },
        {
          "name": "pg",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.0"
        },
        {
          "name": "react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.6"
        },
        {
          "name": "react-dom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.6"
        },
        {
          "name": "simple-icons",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.20.0"
        },
        {
          "name": "smol-toml",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.0"
        },
        {
          "name": "tailwindcss",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.0"
        },
        {
          "name": "tw-animate-css",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.0"
        },
        {
          "name": "vite",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.3.3"
        },
        {
          "name": "ws",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.0"
        },
        {
          "name": "zod",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        },
        {
          "name": "tauri",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-shell",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "tauri-plugin-process",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "serde",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tokio",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "anyhow",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "thiserror",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "dirs",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "5"
        },
        {
          "name": "uuid",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "chrono",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "reqwest",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "regex",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "portable-pty",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "sqlx",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "urlencoding",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "base64",
          "manifest": "src-tauri/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.22"
        },
        {
          "name": "@codemirror/lang-css",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.3.1"
        },
        {
          "name": "@codemirror/lang-html",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.4.11"
        },
        {
          "name": "@codemirror/lang-javascript",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.2.5"
        },
        {
          "name": "@codemirror/lang-json",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.2"
        },
        {
          "name": "@codemirror/lang-markdown",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.5.0"
        },
        {
          "name": "@codemirror/lang-yaml",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.1.3"
        },
        {
          "name": "@codemirror/language",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.12.3"
        },
        {
          "name": "@codemirror/state",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.6.0"
        },
        {
          "name": "@lezer/highlight",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.3"
        },
        {
          "name": "@radix-ui/react-slot",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.2"
        },
        {
          "name": "@tauri-apps/api",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2"
        },
        {
          "name": "@xterm/addon-fit",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.0"
        },
        {
          "name": "@xterm/xterm",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.0"
        },
        {
          "name": "class-variance-authority",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "codemirror",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.2"
        },
        {
          "name": "framer-motion",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.40.0"
        },
        {
          "name": "highlight.js",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.11.1"
        },
        {
          "name": "js-yaml",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.1"
        },
        {
          "name": "lucide-react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.16.0"
        },
        {
          "name": "marked",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.0.4"
        },
        {
          "name": "react",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.6"
        },
        {
          "name": "react-dom",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.6"
        },
        {
          "name": "simple-icons",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.21.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 108,
        "open_issues": 3,
        "closed_ratio": 0.958,
        "closed_issues": 68,
        "closed_unmerged_prs": 3
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "Rorogogogo",
          "commits": 119,
          "avatar_url": "https://avatars.githubusercontent.com/u/129162909?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.992
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "deploy.yml",
        "desktop-release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "biome.json"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 9,
            "reason": "15 out of 16 merged PRs checked by a CI test -- score normalized to 9",
            "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": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 5,
            "reason": "dependency not pinned by hash detected -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "46 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "77294b5a5a65ee0110e3406c0cbec07b66d73778",
        "ran_at": "2026-07-26T04:50:08Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T06:31:25Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-20T06:30:30Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": [
        {
          "number": 51,
          "created_at": "2026-05-25T14:02:56Z",
          "last_comment_at": "2026-05-31T01:27:19Z",
          "last_comment_author": "Snailflyer"
        },
        {
          "number": 95,
          "created_at": "2026-06-10T22:43:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 141,
          "created_at": "2026-07-05T03:40:04Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Rorogogogo/nomoreide",
    "host": "github.com",
    "name": "nomoreide",
    "owner": "Rorogogogo"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 62,
      "inputs": {
        "security": 44,
        "vitality": 77,
        "community": 40,
        "governance": 56,
        "engineering": 89
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 208,
              "human_commit_share": 0.59,
              "days_since_last_push": 5,
              "active_weeks_last_year": 11
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "11/52 weeks with commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "208 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 208
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 6,
              "latest_release_tag": "v0.1.85",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 4.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "6 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "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": 40,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 11,
            "inputs": {
              "forks": 1,
              "stars": 6,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "6 stars",
                "points": 11.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (AGPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "AGPL-3.0"
                    }
                  }
                ],
                "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": 6.3,
                "status": "met",
                "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": 62,
            "inputs": {
              "packages": [
                "nomoreide"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 5516
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "5,516 downloads/month across npm",
                "points": 49.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 5516,
                      "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 56,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 12,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.992
            },
            "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 99% of commits",
                "points": 0.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 99
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "merged_prs": 108,
              "open_issues": 3,
              "closed_issues": 68,
              "issue_closed_ratio": 0.958,
              "closed_unmerged_prs": 3
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "96% of issues closed",
                "points": 44.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 96
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "108/111 decided PRs merged",
                "points": 37.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 108,
                      "decided": 111
                    }
                  }
                ],
                "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": 46,
            "inputs": {
              "followers": 27,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "Rorogogogo",
              "public_repos": 18,
              "account_age_days": 1215
            },
            "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": "27 followers of Rorogogogo",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 27,
                      "login": "Rorogogogo"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "18 public repos, account ~3 yr old",
                "points": 16,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 18
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "nomoreide"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "86 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 86
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 89,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "15 out of 16 merged PRs checked by a CI test -- score normalized to 9",
                "points": 18,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "ai-agents",
                "claude-code",
                "developer-tools",
                "mcp",
                "mcp-server"
              ],
              "has_wiki": true,
              "homepage": "https://nomoreide.com",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://nomoreide.com",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "5 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": 44,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "15 out of 16 merged PRs checked by a CI test -- score normalized to 9",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 2.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "46 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Matched the npm:nomoreide@0.1.88 runtime dependency closure — what installing the published package pulls in — 404 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:nomoreide@0.1.88",
                  "assessed": 404
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "source": "osv",
              "advisories": 1,
              "affected_packages": 1,
              "assessed_packages": 404,
              "unassessed_packages": 0,
              "affected_by_severity": "moderate 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: @hono/node-server 1.19.15 (moderate 5.9)",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@hono/node-server 1.19.15 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 404,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 81,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "has_llms_txt": true,
              "legible_history_share": 0.983,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 7264
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": "llms.txt present",
                "points": 15,
                "status": "met",
                "details": [
                  {
                    "code": "llms_txt_present",
                    "params": {}
                  }
                ],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "58 of 59 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 58,
                      "sampled": 59
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "src/web/client/tsconfig.json",
                "tsconfig.json",
                "website/tsconfig.json"
              ],
              "agent_commit_share": 0.06,
              "toolchain_manifests": [
                "src-tauri/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "src-tauri/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "src-tauri/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "src/web/client/tsconfig.json, tsconfig.json, website/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "src/web/client/tsconfig.json, tsconfig.json, website/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": "6 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 6,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 5,
                "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": 89031,
              "source_files_sampled": 599,
              "oversized_source_files": 4
            },
            "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": "4/599 source files over 60KB",
                "points": 54.6,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 599,
                      "oversized": 4
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch crates package 'nomoreide' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T04:50:20.662342Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/Rorogogogo/nomoreide.svg",
  "full_name": "Rorogogogo/nomoreide",
  "license_state": "standard",
  "license_spdx": "AGPL-3.0"
}

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.