Files
open-design/plugins/_official/design-systems/flat/open-design.json
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.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": "design-system-flat",
"title": "Flat",
"title_i18n": {
"zh-CN": "扁平",
"zh-TW": "扁平",
"ja": "フラット",
"ko": "플랫",
"de": "Flat",
"fr": "Flat",
"ru": "Flat",
"es": "Plano",
"pt-BR": "Flat",
"it": "Flat",
"vi": "Phẳng",
"pl": "Płaski",
"id": "Datar",
"nl": "Flat",
"ar": "مسطح",
"tr": "Düz",
"uk": "Плоский",
"en": "Flat"
},
"version": "0.1.0",
"publishedAt": "2026-05-12T07:18:16Z",
"description": "Two-dimensional minimalist style with vibrant colors, clean typography, and no 3D effects for fast, user-friendly interfaces.",
"description_i18n": {
"zh-CN": "二维极简风格,采用鲜艳色彩、简洁字体,无3D效果,打造快速且用户友好的界面。",
"zh-TW": "二維極簡風格,採用鮮豔色彩、簡潔字體,無3D效果,打造快速且使用者友善的介面。",
"ja": "鮮やかな色彩、クリーンなタイポグラフィ、3D効果なしの二次元ミニマリストスタイルで、高速でユーザーフレンドリーなインターフェースを実現。",
"ko": "선명한 색상, 깔끔한 타이포그래피, 3D 효과 없는 2차원 미니멀리스트 스타일로 빠르고 사용자 친화적인 인터페이스를 제공합니다.",
"de": "Zweidimensionaler minimalistischer Stil mit lebendigen Farben, klarer Typografie und ohne 3D-Effekte für schnelle, benutzerfreundliche Oberflächen.",
"fr": "Style minimaliste bidimensionnel avec des couleurs vives, une typographie épurée et sans effets 3D pour des interfaces rapides et conviviales.",
"ru": "Двумерный минималистичный стиль с яркими цветами, чистой типографикой и без 3D-эффектов для быстрых и удобных интерфейсов.",
"es": "Estilo minimalista bidimensional con colores vibrantes, tipografía limpia y sin efectos 3D para interfaces rápidas y fáciles de usar.",
"pt-BR": "Estilo minimalista bidimensional com cores vibrantes, tipografia limpa e sem efeitos 3D para interfaces rápidas e amigáveis.",
"it": "Stile minimalista bidimensionale con colori vivaci, tipografia pulita e senza effetti 3D per interfacce veloci e user-friendly.",
"vi": "Phong cách tối giản hai chiều với màu sắc sống động, kiểu chữ rõ ràng và không có hiệu ứng 3D cho giao diện nhanh, thân thiện với người dùng.",
"pl": "Dwuwymiarowy minimalistyczny styl z żywymi kolorami, czystą typografią i bez efektów 3D dla szybkich, przyjaznych interfejsów.",
"id": "Gaya minimalis dua dimensi dengan warna-warna cerah, tipografi bersih, dan tanpa efek 3D untuk antarmuka yang cepat dan ramah pengguna.",
"nl": "Tweedimensionale minimalistische stijl met levendige kleuren, strakke typografie en zonder 3D-effecten voor snelle, gebruiksvriendelijke interfaces.",
"ar": "نمط بسيط ثنائي الأبعاد مع ألوان نابضة بالحياة، طباعة نظيفة، وبدون تأثيرات ثلاثية الأبعاد لواجهات سريعة وسهلة الاستخدام.",
"tr": "Canlı renkler, temiz tipografi ve 3D efekt içermeyen iki boyutlu minimalist stil ile hızlı, kullanıcı dostu arayüzler.",
"uk": "Двовимірний мінімалістичний стиль з яскравими кольорами, чистою типографікою та без 3D-ефектів для швидких та зручних інтерфейсів.",
"en": "Two-dimensional minimalist style with vibrant colors, clean typography, and no 3D effects for fast, user-friendly interfaces."
},
"license": "MIT",
"tags": [
"design-system",
"first-party",
"design",
"modern-minimal"
],
"od": {
"kind": "scenario",
"taskKind": "new-generation",
"mode": "design-system",
"scenario": "design",
"surface": "web",
"useCase": {
"query": {
"en": "Generate a {{artifactKind}} using the Flat 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 Flat 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": "flat",
"primary": true
},
"assets": [
"./DESIGN.md"
]
},
"pipeline": {
"stages": [
{
"id": "generate",
"atoms": [
"file-write",
"live-artifact"
]
}
]
},
"capabilities": [
"prompt:inject",
"fs:write"
]
}
}