Minor Changes
-
#1238
60c0b2eThanks @ascorbic! - Registry plugins can now declare environment requirements. A plugin's manifest may set a release-levelrequiresblock (e.g.{ "env:emdash": ">=1.0.0", "env:astro": ">=4.16" }), which is published into the release record. When browsing a registry plugin, the admin compares those constraints against the running EmDash and Astro versions: if the host doesn't satisfy them, it shows a compatibility warning and disables the Install button. The server enforces the same check on install and update, refusing an incompatible release withENV_INCOMPATIBLEso the gate can't be bypassed. -
#1239
1a4918fThanks @ascorbic! - Plugins published to the experimental registry can now ship icon, screenshot, and banner images. Declare them inemdash-plugin.jsoncunderrelease.artifactsas file refs;emdash-plugin publish --artifact-base-url <url>measures each image's dimensions, uploads it, and records it in the release. The admin plugin detail page renders the icon, banner, and a screenshot gallery, fetched through a server-side image proxy. The proxy resolves each artifact's URL server-side from the validated release record (the client sends only the artifact's coordinates, never a URL), then applies SSRF defences and an image content-type allowlist before serving the bytes. Supported image types are PNG, JPEG, WebP, GIF, and AVIF; SVG is rejected at both publish and proxy because it is active content. -
#1253
d2f2679Thanks @ascorbic! - Plugins published to the experimental registry can now ship long-form profile sections. Declare them inemdash-plugin.jsoncunder a top-levelsectionsblock with any ofdescription,installation,faq,changelog, andsecurity. Each value is either inline CommonMark Markdown or a{ file: "./path.md" }ref read relative to the manifest at load time. Every section is capped at 20000 bytes and 2000 graphemes, enforced locally (inline strings during schema validation, file refs once their content is read) soemdash-plugin validate/publishfails with a clear message instead of a 400 from the PDS. File refs are resolved within the manifest directory; paths that escape it (via..or an absolute path) are rejected. Sections are profile-level: written to the package profile record on first publish and editable afterward withemdash-registry update-package, like the other profile fields.