Files
nexu-io__open-design/plugins/_official/examples/dashboard/open-design.json
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

133 lines
8.3 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-dashboard",
"title": "Dashboard",
"title_i18n": {
"zh-CN": "仪表盘",
"zh-TW": "儀表板",
"ja": "ダッシュボード",
"ko": "대시보드",
"de": "Dashboard",
"fr": "Tableau de bord",
"ru": "Панель управления",
"es": "Panel de control",
"pt-BR": "Painel",
"it": "Dashboard",
"vi": "Bảng điều khiển",
"pl": "Panel administracyjny",
"id": "Dashboard",
"nl": "Dashboard",
"ar": "لوحة التحكم",
"tr": "Gösterge Paneli",
"uk": "Панель керування",
"en": "Dashboard"
},
"version": "0.1.0",
"publishedAt": "2026-05-12T05:25:44Z",
"description": "Admin / analytics dashboard in a single HTML file. Fixed left sidebar, top bar with user/search, main grid of KPI cards and one or two charts. Use when the brief asks for a \"dashboard\", \"admin\", \"analytics\", or \"control panel\" screen.",
"description_i18n": {
"zh-CN": "单文件 HTML 管理/分析仪表盘。固定左侧边栏,顶部用户/搜索栏,主区域显示 KPI 卡片网格和图表。适用于需要'仪表盘'、'管理后台'、'数据分析'或'控制面板'界面的场景。",
"zh-TW": "單檔 HTML 管理/分析儀表板。固定左側邊欄,頂部使用者/搜尋列,主區域顯示 KPI 卡片網格和圖表。適用於需要『儀表板』、『管理後台』、『數據分析』或『控制面板』畫面的場景。",
"ja": "単一HTMLファイルの管理/分析ダッシュボード。固定左サイドバー、ユーザー/検索機能付きトップバー、KPIカードとチャートのメイングリッド。『ダッシュボード』『管理画面』『分析』『コントロールパネル』が必要な場合に使用。",
"ko": "단일 HTML 파일 관리/분석 대시보드. 고정 좌측 사이드바, 사용자/검색 기능이 있는 상단바, KPI 카드 그리드 및 차트로 구성. '대시보드', '관리자', '분석' 또는 '제어판' 화면이 필요할 때 사용.",
"de": "Admin-/Analyse-Dashboard in einer einzelnen HTML-Datei. Feste linke Seitenleiste, obere Leiste mit Benutzer/Suche, Hauptraster mit KPI-Karten und Diagrammen. Verwenden Sie es für 'Dashboard', 'Admin', 'Analytics' oder 'Systemsteuerung'.",
"fr": "Tableau de bord administrateur/analytique dans un seul fichier HTML. Barre latérale gauche fixe, barre supérieure avec utilisateur/recherche, grille principale de cartes KPI et graphiques. À utiliser pour un écran de 'tableau de bord', 'admin', 'analytique' ou 'panneau de contrôle'.",
"ru": "Панель администрирования и аналитики в одном HTML-файле. Фиксированная левая боковая панель, верхняя панель с поиском и пользователем, основная сетка KPI-карточек и графиков. Используйте для экранов 'панели управления', 'админки', 'аналитики' или 'контрольной панели'.",
"es": "Panel de administración y análisis en un solo archivo HTML. Barra lateral izquierda fija, barra superior con usuario/búsqueda, cuadrícula principal de tarjetas KPI y gráficos. Úselo para pantallas de 'panel de control', 'administración', 'analítica' o 'panel de gestión'.",
"pt-BR": "Painel administrativo e analítico em um único arquivo HTML. Barra lateral esquerda fixa, barra superior com usuário/busca, grade principal de cartões KPI e gráficos. Use para telas de 'painel', 'admin', 'analytics' ou 'painel de controle'.",
"it": "Dashboard amministrativa e analitica in un singolo file HTML. Barra laterale sinistra fissa, barra superiore con utente/ricerca, griglia principale di schede KPI e grafici. Da usare per schermate di 'dashboard', 'admin', 'analytics' o 'pannello di controllo'.",
"vi": "Bảng điều khiển quản trị/phân tích trong một file HTML duy nhất. Thanh bên trái cố định, thanh trên có người dùng/tìm kiếm, lưới chính các thẻ KPI và biểu đồ. Sử dụng khi cần màn hình 'bảng điều khiển', 'quản trị', 'phân tích' hoặc 'bảng điều khiển'.",
"pl": "Panel administracyjny i analityczny w jednym pliku HTML. Stały lewy pasek boczny, górny pasek z użytkownikiem/wyszukiwaniem, główna siatka kart KPI i wykresów. Użyj dla ekranów 'panelu', 'admina', 'analityki' lub 'panelu sterowania'.",
"id": "Dashboard admin/analitik dalam satu file HTML. Sidebar kiri tetap, bar atas dengan pengguna/pencarian, grid utama kartu KPI dan grafik. Gunakan untuk layar 'dashboard', 'admin', 'analytics', atau 'panel kontrol'.",
"nl": "Admin-/analysedashboard in één HTML-bestand. Vaste linkerzijbalk, bovenbalk met gebruiker/zoeken, hoofdraster met KPI-kaarten en grafieken. Gebruik voor 'dashboard', 'admin', 'analytics' of 'configuratiescherm'.",
"ar": "لوحة تحكم إدارية وتحليلية في ملف HTML واحد. شريط جانبي أيسر ثابت، شريط علوي للمستخدم/البحث، شبكة رئيسية لبطاقات KPI والرسوم البيانية. استخدمها لشاشات 'لوحة التحكم' أو 'الإدارة' أو 'التحليلات' أو 'لوحة التحكم'.",
"tr": "Tek HTML dosyasında yönetici/analitik gösterge paneli. Sabit sol kenar çubuğu, kullanıcı/arama içeren üst çubuk, ana KPI kart ızgarası ve grafikler. 'Gösterge paneli', 'yönetici', 'analitik' veya 'kontrol paneli' ekranları için kullanın.",
"uk": "Адміністративна та аналітична панель в одному HTML-файлі. Фіксована ліва бічна панель, верхня панель з користувачем/пошуком, основна сітка KPI-карток і графіків. Використовуйте для екранів 'панелі керування', 'адміністрування', 'аналітики' або 'контрольної панелі'.",
"en": "Admin / analytics dashboard in a single HTML file. Fixed left sidebar, top bar with user/search, main grid of KPI cards and one or two charts. Use when the brief asks for a \"dashboard\", \"admin\", \"analytics\", or \"control panel\" screen."
},
"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/dashboard",
"tags": [
"example",
"first-party",
"prototype",
"operations",
"web",
"desktop",
"dashboard",
"admin-panel",
"analytics",
"control-panel",
"untitled"
],
"compat": {
"agentSkills": [
{
"path": "./SKILL.md"
}
]
},
"od": {
"kind": "scenario",
"taskKind": "new-generation",
"mode": "prototype",
"platform": "desktop",
"scenario": "operations",
"surface": "web",
"preview": {
"type": "html",
"entry": "./example.html"
},
"useCase": {
"query": {
"en": "Admin / analytics dashboard in a single HTML file. Fixed left sidebar, top bar with user/search, main grid of KPI cards and one or two charts. Use when the brief asks for a \"dashboard\", \"admin\", \"analytics\", or \"control panel\" screen.",
"zh-CN": "使用这个插件完成以下任务:Admin / analytics dashboard in a single HTML file. Fixed left sidebar, top bar with user/search, main grid of KPI cards and one or two charts. Use when the brief asks for a \"dashboard\", \"admin\", \"analytics\", or \"control panel\" screen."
},
"exampleOutputs": [
{
"path": "./example.html",
"title": "Dashboard"
}
]
},
"context": {
"skills": [
{
"path": "./SKILL.md"
}
],
"designSystem": {
"primary": true
},
"craft": [
"state-coverage",
"accessibility-baseline",
"laws-of-ux"
],
"assets": [
"./example.html"
]
},
"pipeline": {
"stages": [
{
"id": "generate",
"atoms": [
"file-write",
"live-artifact"
]
}
]
},
"capabilities": [
"prompt:inject",
"fs:write"
]
}
}