Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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 estrellas⑂ 1 forkdesde may 2026Ver en GitHub ↗

Rorogogogo/nomoreide tiene un índice de salud de 62 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (89/100) y la más baja, Community & Adoption (40/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

62
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

62
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

RobertCuenta personal
27 seguidores18 repositorios públicosdesde mar 2023

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npmnomoreide0.1.88551686hace 6 díasaiterminalmcpgitdeveloper-tools

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

77Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
7.6/36Cadencia de commits — 11/52 semanas con commits
18/18Volumen de commits — 208 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year208
human_commit_share0,59
days_since_last_push5
active_weeks_last_year11
Cómo se puntúa
27/27Publica versiones — 6 versiones publicadas
36/36Recencia de las versiones — última versión hace 6 días
27/27Cadencia de publicación — una versión cada ~4,6 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count6
latest_release_tagv0.1.85
releases_from_tagsno
days_since_latest_release6
mean_days_between_releases4,6
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

40En riesgo · 18% del índice global
Cómo se puntúa
11.3/60Estrellas — 6 estrellas
0/25Forks — 1 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks1
stars6
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (AGPL-3.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_template
Cómo se puntúa
49.9/80Descargas mensuales — 5516 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesnomoreide
dependents
ecosystemsnpm
total_downloads
monthly_downloads5516
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

56Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.2/22.5Distribución de commits — el principal contribuyente firma el 99% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,992
Cómo se puntúa
44.8/46.8Resolución de issues — 96% de issues cerradas
37.2/38.3Aceptación de PR — 108/111 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs108
open_issues3
closed_issues68
issue_closed_ratio0,958
closed_unmerged_prs3
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
10.4/25Alcance del propietario — 27 seguidores de Rorogogogo
16/25Trayectoria — 18 repos públicos, cuenta de ~3 años
Datos de entrada utilizados
followers27
owner_typeUser
is_verified
owner_loginRorogogogo
public_repos18
account_age_days1215
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 6 días
20/20Historial de versiones — 86 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesnomoreide
ecosystemsnpm
any_deprecatedno
min_days_since_publish6

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

89Excelente · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — biome.json
0/9.6Hooks de pre-commit
0/6.4.editorconfig
18/20OpenSSF Scorecard: CI-Tests — 15 out of 16 merged PRs checked by a CI test -- score normalized to 9
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://nomoreide.com
10/10Descripción del repositorio
10/10Topics — 5 topics
10/10Wiki
Datos de entrada utilizados
topicsai-agents, claude-code, developer-tools, mcp, mcp-server
has_wiki
homepagehttps://nomoreide.com
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

44En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — sin datos
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.5Licencia — 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 — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 46 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,3
Excluidos de la puntuación (sin datos o no aplicable): branch_protection, signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
13.2/25Dependencias indirectas libres de avisos conocidos — 1 afectados: @hono/node-server 1.19.15 (moderate 5.9)
40/40Sin avisos pendientes — ningún aviso lleva público más de 90 días
Datos de entrada utilizados
sourceosv
advisories1
affected_packages1
assessed_packages404
unassessed_packages0
affected_by_severitymoderate 1
direct_affected_packages0
Se cotejó el cierre de dependencias en tiempo de ejecución de npm:nomoreide@0.1.88 —lo que arrastra la instalación del paquete publicado—: 404 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

81Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
15/15Documentación legible por máquinas (llms.txt) — llms.txt presente
40/40Historial de commits legible — 58 de 59 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txt
legible_history_share0,983
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes7264
Cómo se puntúa
12.6/18Arranque con un solo comando — src-tauri/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
11/11Configuración de lint / formato — biome.json
11/11Verificación estática de tipos — src/web/client/tsconfig.json, tsconfig.json, website/tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 6 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Datos de entrada utilizados
has_nixno
has_tests
lockfilesCargo.lock, package-lock.json
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configssrc/web/client/tsconfig.json, tsconfig.json, website/tsconfig.json
agent_commit_share0,06
toolchain_manifestssrc-tauri/Cargo.toml
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
54.6/55Tamaños de archivo manejables — 4/599 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes89.031
source_files_sampled599
oversized_source_files4
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signal
api_schema_files

Datos clave

6estrellas de GitHub
2contribuidores
208commits en los últimos 12 meses
5días desde el último push
6versiones publicadas
1factor bus
3issues abiertas
crates.io, npmecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

OpenSSF Scorecard 3.3 / 10
3.3agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-26 04:50 UTC

10Binary-Artifactsno binaries found in the repo
n/dBranch-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
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities46 existing vulnerabilities detected
Dependencias directas 77
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Avisos de dependencias 1

Instalar npm:nomoreide@0.1.88 arrastra 404 paquetes, directos y transitivos: 1 tienen avisos conocidos, de los cuales 0 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
@hono/node-server1.19.15indirectamoderada12.0.5

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.