In-app marketplace search now uses the same autocomplete panel as the public
site so typing a query can pick plugins or templates without leaving the page.
The icon-only Guide control used by the Dify-embedded Marketplace header
now shows a "Guide" tooltip on hover and keyboard focus, with a matching
accessible name. Opening the docs dropdown is unchanged.
Clicking Install in the embedded plugin detail iframe starts the install
immediately and posts status back to the iframe, instead of opening a second
confirmation modal.
CMS/partner banner links only required a non-empty string, so
javascript: and other schemes could render on the console homepage.
Allow http(s) and same-origin relative paths only.
Publisher plugins and templates were capped at page 1 of 40, so larger
catalogs were silently truncated. Follow the API total through a small
page budget.
A timed-out or 500 publisher request was mapped to notFound(). Only a
successful empty creator response should 404; transport failures should
reach the route error boundary.
Unfiltered search fetched mixed-language pages then filtered in the
client, so totals and pageCount were wrong. Send the UI locale to the
API and keep client filtering only for collection previews.
Console cloud.dify.ai was advertising missing manifest/icons and
swallowing ResizeObserver errors on every route. Keep favicon in
generateMetadata; PWA chrome belongs to marketplace.dify.ai.
Drop leftover Explore carousel overlay, unused CopyIcon className,
dotenv markdown alias, and the unused Trigger plugin icon so this
marketplace PR no longer carries those shared-component diffs.
Settle the wrapping carousel from resetting to idle with rAF plus a
short timeout fallback so loop clones unmount even when animation frames
are delayed.
Use shouldSearchMarketplacePlugins and HERO_GRID_PITCH_PX from production
catalog code, keep getStandaloneCreationHref exported via the marketplace
model entry, drop the test-only language helper, and remove an unused type import.
Un-export file-private creator-profile and banner-viewability symbols.
Restore model-provider hooks tests from origin/main, and mark the
standalone marketplace server helpers as knip entries so production
file checks stay green.
Restore the current skill/agent stack from origin/main after the merge, then fix marketplace lint, formatting, and type mismatches so Style Check can pass.
Keep the green blog label on one line with ellipsis on desktop, let
the title wrap, and drop the mobile Read more control now that the
whole stacked slide is the link.
Tuck the catalog tabs under the sticky search padding so the banner
gap stays, but search and Plugins/Templates tabs no longer add two
gaps on top of each other.
Give the standalone mobile sticky search a 16px padding-bottom and
shift catalog sticky offset by the same amount so banners do not
sit flush against the field.
Keep marketplace card-wrapper dialog and partner-only carousel autoplay.
Take main's skills permissions, skill card actions, and agent orchestrate
layout. Union oxlint suppressions from both sides.
The plugin catalog already used the mobile partner header grid; the
Templates tab still rendered Become a Partner on the description row.
Share the same header styles so both catalogs match.
Keep the standalone mobile search sticky below the header instead of
dropping sticky, and stop Chromium from scrolling the in-flow search box
into view when the desktop header search is focused or typed into.