Files
lefarcen da7c4ae051 fix(web): rank Community "Newest" by shipped publishedAt, not local install timestamps (#5597)
* fix(web): rank Community "Newest" by shipped publishedAt, not local install timestamps

The Community gallery Newest toggle sorted by the installed-record
updatedAt/installedAt. Those are stamped when a machine seeds its own
database, so a fresh install (or an upgrade that re-stamps the catalog)
writes the whole bundled catalog milliseconds apart in folder-walk
order — Newest showed reverse walk order (roughly reverse-alphabetical),
unrelated to publication recency.

Root-cause fix: bundled templates now ship a real publication date.

- packages/contracts: add optional manifest field publishedAt (ISO 8601).
- apps/web sortByNewest: freshness = publishedAt when parseable, else
  updatedAt (right signal for user-installed plugins); tie-breaks and
  stability unchanged.
- plugins/_official: backfill publishedAt into all 460 bundled manifests
  from each folder's first-appearance commit date in upstream git
  history.
- e2e: repository-resource guard requiring every bundled manifest to
  declare a parseable publishedAt, so the signal cannot silently erode.
- docs: field reference entries in plugins-spec (en + zh-CN).

Issue: https://plane.powerformer.net/open-design/projects/49832a02-3158-4faf-bf2f-d0e39c40c7e6/issues/ca0778af-97f5-4fc0-bc63-739280904979

Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)

* worker: 模板用最新筛选,筛选出来的不是最新的

Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)

* fix(web): keep shipped appeal order inside same-publishedAt batches

Review follow-up (#5597, nettee): after the freshness tie on an equal
publishedAt, the comparator still consulted local updatedAt/installedAt,
which a fresh install stamps in folder-walk order — so every
same-publication batch (largest: 322 manifests on one catalog date)
re-sorted per machine instead of keeping the shipped visual-appeal
ranking. Same-publishedAt records now preserve their incoming position;
local timestamps break ties only when at least one side has no usable
publishedAt. Adds the requested regression spec pinning
same-publishedAt / different-updatedAt records.

Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)

* fix(web): gate publishedAt freshness to bundled records; untrack oversized looper attachment

Review follow-up (#5597, nettee round 2): publishedAt was overriding
updatedAt for every visible plugin, so a user-installed github/local/
marketplace plugin carrying an old manifest publishedAt would be buried
behind bundled templates despite a newer local install. publishedAtMs
now returns null for non-bundled records — "Newest" means install
recency for user installs, catalog publication for bundled ones. Adds
the requested regression (non-bundled, old publishedAt, newer
updatedAt) and clarifies the field docs (en + zh-CN).

CI repair: commit 578f7a9 tracked .looper-attachments/bug13_1.png
(3.8MB bug screenshot), tripping the Static gate 1MiB blob guard and
the Validate workspace aggregate. Untrack it and gitignore
.looper-attachments/ so harness attachments stay out of the repo.

Generated-By: looper 0.0.0-dev (runner=worker, agent=claude-code)
2026-07-14 08:43:57 +00:00

136 lines
8.8 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "https://open-design.ai/schemas/plugin.v1.json",
"specVersion": "1.0.0",
"name": "example-github-dashboard",
"title": "Github Dashboard",
"title_i18n": {
"zh-CN": "GitHub 仪表板",
"zh-TW": "GitHub 儀表板",
"ja": "GitHub ダッシュボード",
"ko": "GitHub 대시보드",
"de": "GitHub Dashboard",
"fr": "Tableau de bord GitHub",
"ru": "Панель GitHub",
"es": "Panel de GitHub",
"pt-BR": "Painel do GitHub",
"it": "Dashboard GitHub",
"vi": "Bảng điều khiển GitHub",
"pl": "Panel GitHub",
"id": "Dasbor GitHub",
"nl": "GitHub Dashboard",
"ar": "لوحة معلومات GitHub",
"tr": "GitHub Panosu",
"uk": "Панель GitHub",
"en": "Github Dashboard"
},
"version": "0.1.0",
"publishedAt": "2026-05-12T07:18:16Z",
"description": "GitHub repository analytics dashboard — stars, forks, contributors, issues, pull requests, recent activity, and top contributors. Use when the brief asks for a GitHub repo dashboard, open-source growth report, repository health page, or GitHub analytics view.",
"description_i18n": {
"zh-CN": "GitHub 仓库分析仪表板 — 星标、分支、贡献者、议题、拉取请求、近期活动和主要贡献者。适用于 GitHub 仓库仪表板、开源增长报告、仓库健康页面或 GitHub 分析视图。",
"zh-TW": "GitHub 儲存庫分析儀表板 — 星標、分支、貢獻者、議題、拉取請求、近期活動和主要貢獻者。適用於 GitHub 儲存庫儀表板、開源成長報告、儲存庫健康頁面或 GitHub 分析檢視。",
"ja": "GitHub リポジトリ分析ダッシュボード — スター、フォーク、コントリビューター、イシュー、プルリクエスト、最近のアクティビティ、トップコントリビューター。GitHub リポジトリダッシュボード、オープンソース成長レポート、リポジトリヘルスページ、GitHub 分析ビューに使用。",
"ko": "GitHub 저장소 분석 대시보드 — 스타, 포크, 기여자, 이슈, 풀 리퀘스트, 최근 활동 및 주요 기여자. GitHub 저장소 대시보드, 오픈소스 성장 보고서, 저장소 상태 페이지 또는 GitHub 분석 뷰에 사용.",
"de": "GitHub Repository-Analyse-Dashboard — Sterne, Forks, Mitwirkende, Issues, Pull Requests, aktuelle Aktivitäten und Top-Mitwirkende. Verwenden Sie es für GitHub-Repository-Dashboards, Open-Source-Wachstumsberichte, Repository-Integritätsseiten oder GitHub-Analyseansichten.",
"fr": "Tableau de bord d'analyse de dépôt GitHub — étoiles, forks, contributeurs, issues, pull requests, activité récente et principaux contributeurs. À utiliser pour un tableau de bord de dépôt GitHub, un rapport de croissance open source, une page de santé de dépôt ou une vue analytique GitHub.",
"ru": "Панель аналитики репозитория GitHub — звёзды, форки, участники, задачи, пулл-реквесты, последняя активность и топ-участники. Используйте для панели репозитория GitHub, отчёта о росте open-source, страницы состояния репозитория или аналитического представления GitHub.",
"es": "Panel de análisis de repositorio GitHub — estrellas, forks, colaboradores, issues, pull requests, actividad reciente y principales colaboradores. Úselo para panel de repositorio GitHub, informe de crecimiento de código abierto, página de salud del repositorio o vista de análisis de GitHub.",
"pt-BR": "Painel de análise de repositório GitHub — estrelas, forks, colaboradores, issues, pull requests, atividade recente e principais colaboradores. Use para painel de repositório GitHub, relatório de crescimento open-source, página de saúde do repositório ou visualização de análise do GitHub.",
"it": "Dashboard di analisi del repository GitHub — stelle, fork, contributori, issue, pull request, attività recente e principali contributori. Da utilizzare per dashboard di repository GitHub, report di crescita open-source, pagina di salute del repository o vista analitica GitHub.",
"vi": "Bảng điều khiển phân tích kho lưu trữ GitHub — sao, fork, người đóng góp, vấn đề, pull request, hoạt động gần đây và người đóng góp hàng đầu. Sử dụng cho bảng điều khiển kho GitHub, báo cáo tăng trưởng mã nguồn mở, trang tình trạng kho lưu trữ hoặc chế độ xem phân tích GitHub.",
"pl": "Panel analityczny repozytorium GitHub — gwiazdki, forki, współtwórcy, zgłoszenia, pull requesty, ostatnia aktywność i czołowi współtwórcy. Używaj do panelu repozytorium GitHub, raportu wzrostu open-source, strony kondycji repozytorium lub widoku analitycznego GitHub.",
"id": "Dasbor analitik repositori GitHub — bintang, fork, kontributor, issues, pull request, aktivitas terbaru, dan kontributor teratas. Gunakan untuk dasbor repositori GitHub, laporan pertumbuhan open-source, halaman kesehatan repositori, atau tampilan analitik GitHub.",
"nl": "GitHub repository-analysedashboard — sterren, forks, bijdragers, issues, pull requests, recente activiteit en topbijdragers. Gebruik voor GitHub repository-dashboard, open-source groeirapport, repository-gezondheidspagina of GitHub-analyseweergave.",
"ar": "لوحة معلومات تحليلات مستودع GitHub — النجوم، الفروع، المساهمون، المشكلات، طلبات السحب، النشاط الأخير، وأبرز المساهمين. استخدمها للوحة معلومات مستودع GitHub، تقرير نمو المصادر المفتوحة، صفحة صحة المستودع، أو عرض تحليلات GitHub.",
"tr": "GitHub depo analitik panosu — yıldızlar, fork'lar, katkıda bulunanlar, sorunlar, pull request'ler, son aktiviteler ve en çok katkıda bulunanlar. GitHub depo panosu, açık kaynak büyüme raporu, depo sağlık sayfası veya GitHub analitik görünümü için kullanın.",
"uk": "Панель аналітики репозиторію GitHub — зірки, форки, учасники, завдання, пул-реквести, остання активність та топ-учасники. Використовуйте для панелі репозиторію GitHub, звіту про зростання open-source, сторінки стану репозиторію або аналітичного перегляду GitHub.",
"en": "GitHub repository analytics dashboard — stars, forks, contributors, issues, pull requests, recent activity, and top contributors. Use when the brief asks for a GitHub repo dashboard, open-source growth report, repository health page, or GitHub analytics view."
},
"license": "MIT",
"author": {
"name": "Open Design",
"url": "https://github.com/nexu-io"
},
"homepage": "https://github.com/nexu-io/open-design/tree/main/plugins/_official/examples/github-dashboard",
"tags": [
"example",
"first-party",
"prototype",
"operation",
"web",
"desktop",
"github-dashboard",
"repo-dashboard",
"repository-dashboard",
"github-analytics",
"open-source-dashboard",
"github-growth",
"untitled",
"github"
],
"compat": {
"agentSkills": [
{
"path": "./SKILL.md"
}
]
},
"od": {
"kind": "scenario",
"taskKind": "new-generation",
"mode": "prototype",
"platform": "desktop",
"scenario": "operation",
"surface": "web",
"preview": {
"type": "html",
"entry": "./example.html"
},
"useCase": {
"query": {
"en": "Build a GitHub dashboard for nexu-io/open-design — stars, forks, contributors, issues, PRs, recent activity, and top contributors.",
"zh-CN": "使用这个插件完成以下任务:Build a GitHub dashboard for nexu-io/open-design — stars, forks, contributors, issues, PRs, recent activity, and top contributors."
},
"exampleOutputs": [
{
"path": "./example.html",
"title": "Github Dashboard"
}
]
},
"context": {
"skills": [
{
"path": "./SKILL.md"
}
],
"designSystem": {
"primary": true
},
"assets": [
"./example.html",
"./references/README.md",
"./references/artifact-example.json",
"./references/example-data.json",
"./references/provenance-example.json",
"./references/template.html"
]
},
"pipeline": {
"stages": [
{
"id": "generate",
"atoms": [
"file-write",
"live-artifact"
]
}
]
},
"capabilities": [
"prompt:inject",
"fs:write"
]
}
}