Files
lefarcenandGitHub 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

114 lines
5.5 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": "design-system-agentic",
"title": "Agentic",
"title_i18n": {
"zh-CN": "Agentic",
"zh-TW": "Agentic",
"ja": "Agentic",
"ko": "Agentic",
"de": "Agentic",
"fr": "Agentic",
"ru": "Agentic",
"es": "Agentic",
"pt-BR": "Agentic",
"it": "Agentic",
"vi": "Agentic",
"pl": "Agentic",
"id": "Agentic",
"nl": "Agentic",
"ar": "Agentic",
"tr": "Agentic",
"uk": "Agentic",
"en": "Agentic"
},
"version": "0.1.0",
"publishedAt": "2026-05-12T07:18:16Z",
"description": "Conversational AI-first interface with minimal controls, clear outcomes, and delegated task flows for agentic workflows.",
"description_i18n": {
"zh-CN": "对话式 AI 优先界面,控件简洁、结果清晰,支持代理工作流的委派任务流程。",
"zh-TW": "對話式 AI 優先介面,控制項簡潔、結果清晰,支援代理工作流程的委派任務流程。",
"ja": "会話型AI優先のインターフェース。最小限のコントロール、明確な結果、エージェントワークフロー向けの委任タスクフローを提供します。",
"ko": "최소한의 컨트롤과 명확한 결과, 에이전트 워크플로를 위한 위임된 작업 흐름을 갖춘 대화형 AI 우선 인터페이스입니다.",
"de": "Konversations-AI-first-Interface mit minimalen Steuerelementen, klaren Ergebnissen und delegierten Task-Flows für agentische Workflows.",
"fr": "Interface conversationnelle axée sur l'IA avec des contrôles minimaux, des résultats clairs et des flux de tâches délégués pour les workflows agentiques.",
"ru": "Разговорный интерфейс на основе ИИ с минимальным количеством элементов управления, четкими результатами и делегированными потоками задач для агентных рабочих процессов.",
"es": "Interfaz conversacional con IA como prioridad, controles mínimos, resultados claros y flujos de tareas delegados para flujos de trabajo agénticos.",
"pt-BR": "Interface conversacional com IA em primeiro lugar, controles mínimos, resultados claros e fluxos de tarefas delegados para workflows agênticos.",
"it": "Interfaccia conversazionale AI-first con controlli minimali, risultati chiari e flussi di attività delegati per workflow agentici.",
"vi": "Giao diện AI hội thoại ưu tiên với các điều khiển tối thiểu, kết quả rõ ràng và luồng tác vụ ủy quyền cho quy trình làm việc tác nhân.",
"pl": "Konwersacyjny interfejs AI z minimalnymi kontrolkami, jesnymi wynikami i delegowanymi przepływami zadań dla agentowych workflow.",
"id": "Antarmuka AI percakapan dengan kontrol minimal, hasil yang jelas, dan alur tugas yang didelegasikan untuk alur kerja agentik.",
"nl": "Conversationele AI-first interface met minimale bedieningselementen, duidelijke resultaten en gedelegeerde taakstromen voor agentische workflows.",
"ar": "واجهة محادثة تعتمد على الذكاء الاصطناعي أولاً مع عناصر تحكم بسيطة ونتائج واضحة وتدفقات مهام مفوضة لسير العمل الوكيل.",
"tr": "Minimal kontroller, net sonuçlar ve aracı iş akışları için devredilmiş görev akışlarına sahip konuşma tabanlı yapay zeka öncelikli arayüz.",
"uk": "Розмовний інтерфейс на основі ШІ з мінімальними елементами керування, чіткими результатами та делегованими потоками завдань для агентних робочих процесів.",
"en": "Conversational AI-first interface with minimal controls, clear outcomes, and delegated task flows for agentic workflows."
},
"license": "MIT",
"tags": [
"design-system",
"first-party",
"design",
"themed-unique"
],
"od": {
"kind": "scenario",
"taskKind": "new-generation",
"mode": "design-system",
"scenario": "design",
"surface": "web",
"useCase": {
"query": {
"en": "Generate a {{artifactKind}} using the Agentic design system. Stay faithful to its colour palette, typography, spacing, iconography, and component vocabulary as documented in DESIGN.md.",
"zh-CN": "使用这个插件完成以下任务:Generate a {{artifactKind}} using the Agentic design system. Stay faithful to its colour palette, typography, spacing, iconography, and component vocabulary as documented in DESIGN.md."
}
},
"inputs": [
{
"name": "artifactKind",
"label": "Artifact kind",
"type": "select",
"options": [
"landing page",
"dashboard",
"marketing site",
"app screen"
],
"default": "landing page"
},
{
"name": "brief",
"label": "Brief",
"type": "text",
"placeholder": "What should the page communicate?"
}
],
"context": {
"designSystem": {
"ref": "agentic",
"primary": true
},
"assets": [
"./DESIGN.md"
]
},
"pipeline": {
"stages": [
{
"id": "generate",
"atoms": [
"file-write",
"live-artifact"
]
}
]
},
"capabilities": [
"prompt:inject",
"fs:write"
]
}
}