open-design/plugins/_official/examples
Jane ceb636aa1b
feat(landing-page): plugin detail page interactive preview + share dialog (#2958)
* feat(landing-page): plugin detail page interactive preview + share dialog

The new `/plugins/<manifest-id>/` detail page that shipped in #2926
landed without the two affordances PR #2679 added to the legacy
`/skills/<slug>/` and `/templates/<slug>/` pages: a click-to-expand
iframe of the live artifact, and a share dialog with brand-keyword
copy plus four-channel jump buttons (X / LinkedIn / Reddit /
Facebook). This restores both, sourced from the bundled-plugin
manifest under `plugins/_official/<bucket>/<slug>/open-design.json`.

## Interactive preview

Three preview-type behaviours, gated on `od.preview.type`:

  - `video` (Cloudflare Stream URLs already in the manifest) —
    inline `<video controls poster=...>` with the playable MP4 as
    `<source>`. Detail-page row is unchanged from #2926; controls
    double as the open-full affordance.
  - `html` (a local `example.html` referenced by `od.preview.entry`,
    only the `examples/` bucket today) — `<details>` toggle wraps the
    poster image as the summary; clicking opens a sandboxed
    `<iframe>` that loads the entry HTML lazily, with an
    "Open in new tab ↗" pill in the frame's top-right corner so the
    artifact can be inspected at full screen.
  - `image` or no entry — static `<img>` (existing behaviour).

`copy-example-html.ts` is extended to mirror the local entry and any
`./assets/...` siblings to `out/plugins/<manifest-id>/<entry>` so the
iframe URL resolves on Cloudflare Pages instead of SPA-falling-back to
the homepage. The four examples carrying sibling-asset references
(flowai-live-dashboard-template, trading-analysis-dashboard-template,
open-design-landing, open-design-landing-deck) all render in-place.

## Share dialog

Same `<dialog data-share-dialog>` markup the legacy detail pages use,
so the global click handlers in `header-enhancer.astro`
(`data-share-open` / `data-share-copy` / `data-copy-link`) wire up
the open / copy actions automatically — no extra client bundle. Four
platform jumps (X / LinkedIn / Reddit / Facebook) plus a Copy-text /
Copy-link pair, with a single English template for now (the new
`/plugins/...` routes only generate English pages; localisation can
land alongside the i18n catch-all follow-up).

## Bundled in

- The `copy-example-html.ts` sibling-assets fix from open PR #2880.
  Without it the existing `/skills/<slug>/` iframe still 404s on
  Cloudflare Pages for after-hours-editorial-template and the four
  others; bundling it here means the same script handles both
  sources in one pass and sidesteps two PRs touching identical
  helper code.

* fix(plugins): remove dangling preview.entry from example-hyperframes

The hyperframes example folder ships a SKILL.md (it's an instruction
manual for using the HyperFrames HTML format) but no runnable
`example.html`. The manifest still claimed `preview.type: html` /
`preview.entry: ./example.html`, which made the marketing site try
to iframe a non-existent file and forced the preview pipeline into
its `Path 3` fallback card — leaving the catalog row visually
inconsistent with the eleven sibling `video-template-hyperframes-*`
plugins that have real Cloudflare-Stream poster URLs.

Drop the preview block entirely so the manifest stops promising a
demo it can't deliver. The landing-page detail row continues to
render the typographic fallback card (sourced from title /
description / mode), which is now the honest representation:
"this is an instruction skill, not a renderable template".

* fix(landing-page): address PR #2958 review feedback on plugin preview pipeline

Two blocking issues called out in code review:

1) `bundled-plugins.ts` exposed `previewEntryUrl` for every manifest
   that declared `preview.type: "html"`, even when the entry file
   wasn't shipped. Several first-party manifests fall in this state
   (example-design-brief's `./brief-preview.html`, example-x-research,
   example-pptx-html-fidelity-audit, example-hatch-pet,
   example-last30days, example-guizang-ppt, example-replit-deck,
   example-live-artifact, example-html-ppt, example-dcf-valuation).
   The detail page then rendered a click-to-expand iframe and popout
   link to a file that copy-example-html.ts had skipped, so the
   iframe URL SPA-fell-back to the homepage on Cloudflare Pages.

   `entryRelativeUrl()` now `existsSync()`-checks the resolved local
   path before returning a URL. When the file's missing the detail
   page falls through to the static thumbnail branch, exactly like
   plugins that ship no preview entry at all.

2) `copy-example-html.ts` recognised only `(src|href|poster)="./assets/..."`
   and then bulk-copied the entry's sibling `assets/` folder, so it
   missed two real ref shapes: bare-relative (`href="assets/styles.css"`,
   `src="assets/deck-stage.js"` under example-html-ppt-zhangzara-pin-and-paper)
   and cross-folder (`src="../open-design-landing/assets/hero.png"`
   under example-open-design-landing-deck).

   Replaced the heuristic with a generic walker that:
   - Parses every relative ref in the entry HTML
     (`(src|href|poster|srcset|data-src)=` plus `url(...)`), splitting
     srcset on whitespace/commas so multi-URL attrs are honoured.
   - Resolves each ref against `dirname(entrypointSrc)` for the source
     and against `dirname(iframeAbsPath)` for the destination —
     identical to how a browser resolves the same ref against the
     iframe URL. Files outside the source root or the iframe root
     are dropped.
   - Recurses into copied HTML / CSS / JS / SVG so multi-step chains
     (entry → assets/template.html → assets/fonts/foo.woff) don't
     strand intermediate files.
   - Tracks visited *destinations* rather than sources, so a single
     source that legitimately needs to land at two different out-paths
     (same-folder copy at /plugins/example-X/assets/foo.png AND a
     cross-folder copy at /plugins/open-design-landing/assets/foo.png
     for sibling decks that use `../open-design-landing/assets/foo.png`)
     gets both copies.

Verified manually:
- /plugins/example-html-ppt-zhangzara-pin-and-paper/assets/styles.css
  and assets/deck-stage.js → 200 (bare-relative)
- /plugins/open-design-landing/assets/hero.png and assets/about.png
  → 200 (cross-folder destination, no manifest-id prefix because
  iframe URL `..` collapses the prefix)
- /plugins/example-design-brief/ renders the static thumbnail only,
  no click-to-expand iframe (broken entry guard)
- /plugins/example-flowai-live-dashboard-template/assets/template.html
  → 200 (existing same-folder behaviour preserved)

Build now reports `copied 266 entry files + 65 referenced files`,
where the 65 includes both the same-folder `./assets/...` payloads
the previous heuristic captured and the bare-relative + cross-folder
shapes it didn't.

---------

Co-authored-by: Joey-nexu <joeylee12629@gmail.com>
2026-05-26 07:43:46 +00:00
..
article-magazine Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
audio-jingle feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
blog-post feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
card-twitter Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
card-xiaohongshu Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
clinical-case-report feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
codex-interactive-capability-map Add Codex interactive capability map example (#2657) 2026-05-22 15:49:16 +08:00
critique feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
dashboard feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
data-report Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
dating-web feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
dcf-valuation feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
deck-guizang-editorial Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
deck-open-slide-canvas Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
deck-swiss-international Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
design-brief feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
digital-eguide feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
doc-kami-parchment Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
docs-page feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
email-marketing feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
eng-runbook feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
finance-report feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
flowai-live-dashboard-template feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
frame-data-chart-nyt Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
frame-flowchart-sticky Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
frame-glitch-title Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
frame-light-leak-cinema Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
frame-liquid-bg-hero Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
frame-logo-outro Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
frame-macos-notification Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
gamified-app feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
github-dashboard feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
guizang-ppt chore(featured): curate Featured picks down to top 10 across categories (#1966) 2026-05-18 12:56:26 +08:00
hatch-pet feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
hr-onboarding feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt chore(featured): curate Featured picks down to top 10 across categories (#1966) 2026-05-18 12:56:26 +08:00
html-ppt-course-module feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-dir-key-nav-minimal feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-graphify-dark-graph feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-hermes-cyber-terminal feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-knowledge-arch-blueprint feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-obsidian-claude-gradient feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-pitch-deck fix(daemon,web): block pitch-deck placeholder publishes and unbreak framework decks (#2384) 2026-05-20 16:20:34 +08:00
html-ppt-presenter-mode-reveal feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-product-launch feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-taste-brutalist feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-taste-editorial feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-tech-sharing feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-testing-safety-alert feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-weekly-report feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-xhs-pastel-card feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-xhs-post feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-xhs-white-editorial feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-8-bit-orbit feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-biennale-yellow feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-block-frame feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-blue-professional feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-bold-poster feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-broadside feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-capsule feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-cartesian feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-cobalt-grid feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-coral feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-creative-mode feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-daisy-days feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-editorial-tri-tone feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-grove feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-long-table feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-mat feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-monochrome feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-neo-grid-bold feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-peoples-platform feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-pin-and-paper feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-pink-script feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-playful feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-raw-grid feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-retro-windows feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-retro-zine feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-sakura-chroma feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-scatterbrain feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-signal feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-soft-editorial feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-stencil-tablet feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-studio feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
html-ppt-zhangzara-vellum feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
hyperframes feat(landing-page): plugin detail page interactive preview + share dialog (#2958) 2026-05-26 07:43:46 +00:00
ib-pitch-book feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
image-poster feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
invoice feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
kami-deck chore(featured): curate Featured picks down to top 10 across categories (#1966) 2026-05-18 12:56:26 +08:00
kami-landing chore(featured): curate Featured picks down to top 10 across categories (#1966) 2026-05-18 12:56:26 +08:00
kanban-board feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
last30days feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
live-artifact feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
live-dashboard feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
magazine-poster chore(featured): curate Featured picks down to top 10 across categories (#1966) 2026-05-18 12:56:26 +08:00
meeting-notes feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
mobile-app feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
mobile-onboarding feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
mockup-device-3d Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
motion-frames feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
od-plugin-contribute-open-design feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
od-plugin-publish-github feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
open-design-landing feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
open-design-landing-deck fix: restore Atelier Zero deck plugin prompt (#2822) 2026-05-24 14:20:25 +00:00
orbit-general feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
orbit-github feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
orbit-gmail feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
orbit-linear feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
orbit-notion feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
pm-spec feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
poster-hero Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
ppt-keynote Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
pptx-html-fidelity-audit feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
pricing-page feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
replit-deck feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
resume-modern Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
saas-landing feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
simple-deck Merge origin/main into release/v0.8.0 2026-05-23 12:17:18 +08:00
social-carousel feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
social-media-dashboard feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
social-media-matrix-tracker-template feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
social-reddit-card Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
social-spotify-card Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
social-x-post-card Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
sprite-animation feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
team-okrs feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
trading-analysis-dashboard-template feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
tweaks feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
vfx-text-cursor Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
video-hyperframes Add i18n metadata for official content (#2692) 2026-05-22 16:39:32 +08:00
video-shortform feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
waitlist-page feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
web-prototype [codex] Polish home composer working-directory controls (#2468) 2026-05-21 00:22:46 +08:00
web-prototype-taste-brutalist chore(featured): curate Featured picks down to top 10 across categories (#1966) 2026-05-18 12:56:26 +08:00
web-prototype-taste-editorial feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
web-prototype-taste-soft feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
weekly-update feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
wireframe-sketch feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00
x-research feat(plugins): add specVersion and version fields to plugin and marketplace schemas 2026-05-13 22:24:50 +08:00