SSR only the first publisher page instead of five sequential fetches,
and let the profile load remaining plugins and templates on demand.
Harden social_links and deps_plugins so dirty API payloads cannot crash
the creator page.
The standalone and embedded creator pages call marketplaceClient.creatorDetail,
but those routes were dropped from the marketplace contract. Restore them, skip
avatar fetches when none was uploaded, and add creatorProfile strings to every
plugin locale.
Compose the Plugins and Templates catalog homes from one HomeShell so the
page scaffold cannot drift, split the templates page into category
navigation, pagination and link helpers, and hand the collection list
pre-filtered locale data instead of filtering twice. Replace the
hand-rolled banner payload guards with a zod schema keeping the same
lenient semantics, share the partner-collection constants, label the
plugin type filter group as categories, and backfill the missing Lao
trending title.
Co-authored-by: Cursor <cursoragent@cursor.com>
Break the trending banner into navigation and slide modules with shared
home constants, hoist the marketplace container id and partner-collection
constants for reuse across the catalog, and drop the i18n keys the
redesigned home no longer renders.
Co-authored-by: Cursor <cursoragent@cursor.com>
- resample the 3MB trending background to a 97KB webp and serve a frozen
recommend banner from the E2E stub so the benchmark covers the carousel
- show the on-page filtered count in template search and redirect
out-of-range pages to the last available page
- localize the carousel controls across all 24 locales and replace the
i18n type casts with typed selectors
- surface Marketplace API failures with a retry action instead of
rendering them as empty results
- use iconify marks for the hero decorations, share the carousel
page-size hook to avoid a hydration mismatch, move banner types into
@dify/contracts, scope the Cmd+K shortcut to the standalone platform,
point the embedded logo at /marketplace, pass resolvedTheme to the
detail dialogs, and reveal the detail iframe after a loading timeout
Co-authored-by: Cursor <cursoragent@cursor.com>
- move the marketplace performance E2E lane out of main CI (opt-in workflow_dispatch)
- add server-rendered pagination for template search and validate page/view/sort params at the route boundary
- match template locale filtering by language prefix with an explicit English fallback
- cache the template collection fan-out (TTL + in-flight dedupe), lower per-collection limit and batch requests
- reset the forced search mode atom when the plugin catalog mounts
- clear stale search suggestions during the debounce window
- let the trending Play control override focus/hover pause reasons
- honor prefers-reduced-motion on the eagerly playing first-collection carousel
- give the Creator Center link an accessible, localized name
- replace the nested main landmark on the templates page with a div
- localize banner read-more actions and backfill marketplace.home keys across all 24 locales
Co-authored-by: Cursor <cursoragent@cursor.com>