Commit Graph

575 Commits

Author SHA1 Message Date
fatelei
5fe4ceb651
fix: fix conflict 2026-09-02 09:09:32 +08:00
CodingOnStar
341a4d0935 fix(web): open in-app marketplace details from the whole card (ECO-483)
Plugin and template cards now open the detail dialog from the card surface
and keyboard, while Install stays its own action.
2026-09-01 19:32:39 +08:00
CodingOnStar
c346306cf8 fix(web): reuse standalone search popup in the embedded marketplace (ECO-482)
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.
2026-09-01 19:32:16 +08:00
CodingOnStar
8c3a046bba fix(web): add Guide tooltip to in-app marketplace header icon
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.
2026-09-01 19:31:53 +08:00
CodingOnStar
d8a376edb3 fix(web): remove the in-app marketplace header account entry (ECO-481)
The embedded marketplace already sits inside Dify chrome, so the extra avatar
in the marketplace header is redundant. Creator Center and docs stay.
2026-09-01 19:31:19 +08:00
CodingOnStar
d77d9a51cf fix(web): install marketplace plugins in place without a confirm dialog (ECO-477)
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.
2026-09-01 19:30:57 +08:00
yyh
765e6338d2
fix(plugin): prevent install dialog error overflow (#41561) 2026-09-01 03:34:23 +00:00
yyh
8f2ff3a8fb
refactor(plugins): migrate credential rename input (#41552) 2026-09-01 01:44:44 +00:00
CodingOnStar
642760f95d fix(web): reject unsafe marketplace banner hrefs
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.
2026-08-31 22:58:50 +08:00
CodingOnStar
a6e14ee3ac fix(web): load remaining creator creations beyond the first page
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.
2026-08-31 22:57:28 +08:00
CodingOnStar
ee60f5dd29 fix(web): surface creator profile API errors instead of 404
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.
2026-08-31 22:56:14 +08:00
CodingOnStar
a2bf4c397b fix(web): paginate template search by locale language
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.
2026-08-31 22:54:59 +08:00
CodingOnStar
3780a9fe84 fix(web): dual-write marketplace banner impressions
Clicks already go to Amplitude and __marketplaceTracking__. Impressions
only hit Amplitude, so marketplace.dify.ai never recorded views.
2026-08-31 22:53:31 +08:00
CodingOnStar
5dec7c76d4 fix(web): finish banner loop reset without rAF
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.
2026-08-31 20:09:01 +08:00
CodingOnStar
6864ba33cd fix(web): keep marketplace knip production exports live
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.
2026-08-31 20:08:22 +08:00
CodingOnStar
c48f932985 fix(web): drop unused marketplace knip exports
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.
2026-08-31 19:54:35 +08:00
CodingOnStar
8765886d6c fix(web): satisfy marketplace lint and restore skill APIs from main
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.
2026-08-31 19:32:32 +08:00
CodingOnStar
65af1ca9ec merge: bring origin/main into feat/creator-profile-home 2026-08-31 19:10:20 +08:00
CodingOnStar
66ed8776a1 fix(web): clamp desktop blog tags and hide mobile read more
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.
2026-08-31 18:51:48 +08:00
CodingOnStar
9301920fec fix(web): wrap mobile blog banner titles (ECO-476)
Let stacked blog titles wrap instead of single-line ellipsis, and grow
the 160px copy frame so the heading stays fully visible.
2026-08-31 18:07:45 +08:00
CodingOnStar
3030ff3e4e fix(web): stop stacking mobile search and tab padding
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.
2026-08-31 17:53:15 +08:00
CodingOnStar
1eccdf60ed fix(web): ellipsize mobile blog tag and title inside copy padding
Keep the green tag and title to one line with ellipsis so they stay
inside the 20px stacked copy inset instead of overflowing the right
edge.
2026-08-31 17:44:03 +08:00
CodingOnStar
9e4d667161 fix(web): keep mobile blog description two lines visible
Reserve 40px for the two-line description and ellipsize the title so
the stacked 160px copy frame no longer clips the second line.
2026-08-31 17:28:44 +08:00
CodingOnStar
1c5ec977ed fix(web): keep bottom padding under stuck mobile search (ECO-475)
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.
2026-08-31 17:20:40 +08:00
CodingOnStar
2b38ddd042 fix(web): clamp mobile blog banner subtitle and description
Ellipsize the subtitle at one line and the description at two lines
on the standalone marketplace mobile stacked blog frame.
2026-08-31 17:12:28 +08:00
CodingOnStar
a515fe0917 fix(web): pin desktop banner art so shrinking clips the right
Keep blog artwork at 400px and event/ad bitmaps at least 1200px on
PC so a narrower overflow-hidden frame trims the right, not the left.
2026-08-31 17:06:45 +08:00
CodingOnStar
006eb63bf2 fix(web): show mobile homepage banners at 800:721
Keep the 800x721 event/ad poster whole with contain instead of
cover-cropping it into the stacked 357px mobile frame.
2026-08-31 16:39:46 +08:00
CodingOnStar
19235d024e fix(web): crop homepage banners from the right
Keep event and ad artwork left-aligned with cover cropping so a narrower
frame trims the right edge on desktop and mobile.
2026-08-31 16:19:22 +08:00
Jingyi
6da1b473e6
fix(web): align tool plugin card layout (#41525) 2026-08-31 07:25:06 +00:00
Jingyi
02222e8fce
fix(web): preserve plugin footer text layout (#41514) 2026-08-31 05:50:29 +00:00
yyh
5a5b9c6fec
fix(web): make plugin detail drawer non-modal (#41473) 2026-08-31 05:46:55 +00:00
CodingOnStar
c244b9d685 Merge origin/main into feat/creator-profile-home
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.
2026-08-31 10:13:38 +08:00
CodingOnStar
b83fb96827 fix(web): autoplay only partner collection carousels
Keep arrows and pagination on every collection carousel. Only the
Partners collection rotates on its own.
2026-08-31 09:57:29 +08:00
yyh
94dff4dddc
fix(web): unify tool plugin selection state (#41470) 2026-08-31 01:24:49 +00:00
CodingOnStar
380b1de3ff fix(web): keep search-results search below the header
Search pages have no hero, so HomeSearch must not overlap the brand bar.
Allow a null catalog tab so neither Plugins nor Templates looks selected.
2026-08-30 10:24:24 +08:00
CodingOnStar
3c4a462ae4 fix(web): put template Partners CTA beside the title (ECO-472)
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.
2026-08-30 00:44:09 +08:00
CodingOnStar
dfb8b2e376 fix(web): pin sticky marketplace search without jumping (ECO-473)
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.
2026-08-30 00:22:57 +08:00
CodingOnStar
d8f30076b5 fix(web): keep partner CTA 12px from title (ECO-472) 2026-08-28 20:40:59 +08:00
CodingOnStar
d9d510e5ac fix(web): keep mobile marketplace search below header (ECO-473) 2026-08-28 20:13:00 +08:00
CodingOnStar
41cb3a8502 fix(web): keep marketplace search scroll stable 2026-08-28 14:48:34 +08:00
CodingOnStar
4a471894a9 fix(web): stabilize catalog tab header handoff (ECO-470) 2026-08-28 14:08:16 +08:00
Jingyi
94fdda18e2
fix(web): prevent tool card footer clipping (#41430) 2026-08-28 05:36:13 +00:00
CodingOnStar
e2add239a8 fix: align marketplace search suggestions (ECO-455) 2026-08-28 11:35:30 +08:00
yyh
290acf1b73
fix(ui): keep scroll area focus indicator visible (#41404) 2026-08-28 01:37:00 +00:00
CodingOnStar
8dc32a121b fix(web): align mobile partner header (ECO-472) 2026-08-27 18:17:22 +08:00
CodingOnStar
87097815c0 fix(web): add mobile banner swipe (ECO-471) 2026-08-27 17:56:29 +08:00
CodingOnStar
2a7025e758 fix(web): smooth catalog tabs into header (ECO-470) 2026-08-27 17:07:19 +08:00
L1nSn0w
66a3c9620a fix(web): stop Marketplace search jitter and indefinite loading
Three independent defects made catalog search feel unstable.

Stale results flash on every search. `isSearchMode` was derived from the raw
nuqs `q` while the request body used the 500ms-debounced value, so keystroke #1
flipped into search mode with an empty query. That fired a full empty-query
search whose generic top-plugins list rendered for the debounce window before
the real results replaced it. Both now read the same debounced value.

Grid unmount on every query change. The infinite query had no
`placeholderData`, so `data` went undefined whenever the key changed and
ListWrapper's `!isLoading` gate tore the whole result grid out, collapsing the
container and jumping the scroll position. Measured against a live catalog, a
sort change blanked the grid for 152 of 360 sampled frames; with
`keepPreviousData` and an `isRefreshing` dim it is 0 of 461.

Requests that never settle. The Marketplace oRPC link called `globalThis.fetch`
with no deadline, so a stalled connection left the query pending forever with
no error state and no retry — the reported permanent spinner. Requests now
carry a 15s deadline composed with (never replacing) react-query's abort
signal. The server prefetch and the banner fetch get their own 2.5s budget:
awaiting them unbounded held the whole RSC response, pushing time-to-first-byte
to ~7s against a 3s-delayed API while the browser sat on the previous page.

Supporting changes:

- `getMarketplacePlugins` and `getMarketplaceCollectionsAndPlugins` no longer
  swallow every rejection into a successful empty page. That turned outages
  and aborted keystrokes into "no plugins found", suppressed retries, cached
  the emptiness for the full staleTime, and killed `getNextPageParam`
  permanently via `total: 0`. ListWrapper now renders a retry affordance.
- The collections fan-out is bounded to 4 concurrent requests instead of
  firing one per collection at once, and per-collection failures degrade to an
  empty carousel rather than a blank catalog.
- Scroll pagination measures once per frame instead of per scroll event. Each
  threshold hit calls `fetchNextPage`, which defaults to `cancelRefetch: true`,
  so an unthrottled burst aborted and restarted the in-flight page request —
  and the backend counts those aborts against its search circuit breaker.
- Cross-page results are deduped by `org/name`; Meilisearch resolves
  `install_count` ties by document order and the sync task rewrites those
  documents every minute, so pages can overlap and collide on React keys.
- Search queries no longer inherit `retry: 3`; ~7s of backoff reads as a hang.
2026-08-27 16:27:42 +08:00
CodingOnStar
cdcafa0827 fix(web): add subtle creator avatar shadow (ECO-469) 2026-08-27 16:24:19 +08:00
CodingOnStar
efb8db8db3 fix(web): keep creator profile background continuous (ECO-468) 2026-08-27 16:22:45 +08:00