From 674f27bb2549425360b3e373bd2967025fcdaeda Mon Sep 17 00:00:00 2001 From: mehnoorsiddiqui Date: Mon, 19 Oct 2026 11:31:54 +0500 Subject: [PATCH 1/3] feat(portal): redesign the API reference pages and show the OAuth redirect URI in the playground Upgrades fumadocs-openapi from 12.1.1 to 12.4.1, which carries the fixes for fuma-nama/fumadocs#3661 and #3663, and the API page redesign of 12.2 to 12.4. shiki and lucide-react move to the versions it requires, so each keeps a single copy. - The playground's OAuth panel shows the redirect URI it sends, base path included, with a copy button. - An image in an operation's description no longer crashes Fumadocs' own renderer. ApiMarkdown stays, because that image still gets no base path. - The playground opens in a dialog from a "Try in Playground" button, and the schemas, responses and parameters are shown in cards. Co-Authored-By: Claude Opus 5.5 (1M context) --- .ai/plans/portal-subpath-hosting.md | 14 +- package.json | 6 +- pnpm-lock.yaml | 227 +++++++++--------- .../src/components/api-markdown.tsx | 2 +- portal-template/src/lib/request-examples.ts | 5 +- test/e2e/portal-build.test.ts | 2 +- test/portal-template/request-examples.test.ts | 5 +- 7 files changed, 132 insertions(+), 129 deletions(-) diff --git a/.ai/plans/portal-subpath-hosting.md b/.ai/plans/portal-subpath-hosting.md index ffb672f74..294677468 100644 --- a/.ai/plans/portal-subpath-hosting.md +++ b/.ai/plans/portal-subpath-hosting.md @@ -507,9 +507,10 @@ follow-up. ### 5.10 Images Fumadocs leaves out (added 2026-10-06) -- **Images in the specification's descriptions.** Fumadocs renders descriptions with `img` - mapped to `undefined`, so one image fails the whole operation page, at the root too, with - React error #130. A root-relative image there would also miss the base. +- **Images in the specification's descriptions.** Up to fumadocs-openapi 12.4.0, Fumadocs + rendered descriptions with `img` mapped to `undefined`, so one image failed the whole operation + page, at the root too, with React error #130. 12.4.0 maps it to a plain `img`, which no longer + crashes, but a root-relative image there still misses the base. - `api-page.tsx` passes `components.Markdown` = `ApiMarkdown` (`components/api-markdown.tsx`). It is built on Fumadocs' own `createMarkdownRenderer` with `remarkGfm`, and its `img` gives a root-relative `src` the base through `withBasePath`. Code blocks go through `DynamicCodeBlock`, @@ -518,8 +519,8 @@ follow-up. `rehype-code-titles.ts` it put the highlighter on every page, through the route's chunk. The default e2e build checks that no page preloads `shiki-bundle`. - The e2e fixture's operation has an image and a code block in its description. - - Filed as fuma-nama/fumadocs#3661 (section 10). `ApiMarkdown` can go once Fumadocs renders - images and gives them the base. + - Filed as fuma-nama/fumadocs#3661, whose fix in 12.4.0 covers the crash alone (section 10). + `ApiMarkdown` can go once Fumadocs gives the image the base. - **Reference-style images (`![alt][ref]`).** Fumadocs' `remarkImage` sizes and imports inline images only, so a reference kept a root-relative `src` that misses the base. - `remarkImageReferences` (`lib/remark-image-references.ts`) writes each one as an inline image @@ -836,8 +837,9 @@ with the MDX components, but not in its copy. | fuma-nama/fumadocs#3620, from PR #3572 (ui 16.15.13) | Fixed 2026-09-29 in fumadocs-ui 16.15.17 (commit `6791d6f`): the popover prefixes `markdownUrl` with `withBasePath` again, in both `radix-ui` and `base-ui` | Since 2026-10-08 we pass the page's path and rely on that `withBasePath`; `page-actions.test.ts` fails if an upgrade drops it again (5.2) | | TanStack/router#4888, docs PR #7882 | Docs only | None | | TanStack/router#8448, PR #8450 | Both open (checked 2026-10-07); the PR has no review yet. The issue reports a second loader run; we saw the address rewritten too | When it ships, `searchOptions` can go (5.11) | -| fuma-nama/fumadocs#3661 | Filed 2026-10-07: an image in an operation's description crashes the page | When it ships with the base, `ApiMarkdown` can go (5.10) | +| fuma-nama/fumadocs#3661 | Fixed 2026-10-09 in fumadocs-openapi 12.4.0, installed since 2026-10-19 (12.4.1): `img` maps to `'img'`, so the page no longer crashes. The image gets no base | `ApiMarkdown` stays for the base alone (5.10) | | fuma-nama/fumadocs#3662 | Filed 2026-10-07: processed Markdown prints images as `__img0` | When it ships, ticket 5 is fixed by the upgrade (section 9) | +| fuma-nama/fumadocs#3663 | Fixed 2026-10-09 in fumadocs-openapi 12.4.0, installed since 2026-10-19 (12.4.1): the OAuth panel shows the `redirect_uri` of the authorization code and implicit flows, with a copy button | It shows `oauthRedirectUrl`, which carries the base (5.2), against the page's origin: the one callback a portal owner registers | **The fixes:** - **Fumadocs:** filed by the user as fuma-nama/fumadocs#3620, from a draft made here, and fixed diff --git a/package.json b/package.json index 6338f58eb..b32f3a72d 100644 --- a/package.json +++ b/package.json @@ -79,12 +79,12 @@ "fs-extra": "^11.3.0", "fumadocs-core": "16.15.17", "fumadocs-mdx": "15.4.0", - "fumadocs-openapi": "12.1.1", + "fumadocs-openapi": "12.4.1", "fumadocs-ui": "16.15.17", "get-port": "^7.1.0", "is-in-ci": "^2.0.0", "isomorphic-git": "^1.37.2", - "lucide-react": "1.47.0", + "lucide-react": "1.54.0", "mustache": "^4.2.0", "neverthrow": "^8.2.0", "open": "^8.4.0", @@ -96,7 +96,7 @@ "remark": "15.0.1", "remark-mdx": "3.1.1", "semver": "^7.8.0", - "shiki": "4.4.3", + "shiki": "4.5.0", "striptags": "^3.2.0", "tailwindcss": "4.3.3", "tmp-promise": "^3.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61cda5135..0ee74b669 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,7 +39,7 @@ importers: version: 5.3.0 '@fumadocs/api-docs': specifier: 0.2.8 - version: 0.2.8(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 0.2.8(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@oclif/core': specifier: 4.11.0 version: 4.11.0 @@ -93,16 +93,16 @@ importers: version: 11.3.5 fumadocs-core: specifier: 16.15.17 - version: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) + version: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) fumadocs-mdx: specifier: 15.4.0 - version: 15.4.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react@19.2.8)(rolldown@1.2.8)(vite@8.2.2(@types/node@24.13.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.1)) + version: 15.4.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react@19.2.8)(rolldown@1.2.8)(vite@8.2.2(@types/node@24.13.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.1)) fumadocs-openapi: - specifier: 12.1.1 - version: 12.1.1(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: 12.4.1 + version: 12.4.1(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8) fumadocs-ui: specifier: 16.15.17 - version: 16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) + version: 16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) get-port: specifier: ^7.1.0 version: 7.2.0 @@ -113,8 +113,8 @@ importers: specifier: ^1.37.2 version: 1.37.6 lucide-react: - specifier: 1.47.0 - version: 1.47.0(react@19.2.8) + specifier: 1.54.0 + version: 1.54.0(@types/react@19.3.0)(react@19.2.8) mustache: specifier: ^4.2.0 version: 4.2.0 @@ -149,8 +149,8 @@ importers: specifier: ^7.7.0 version: 7.8.0 shiki: - specifier: 4.4.3 - version: 4.4.3 + specifier: 4.5.0 + version: 4.5.0 striptags: specifier: ^3.2.0 version: 3.2.0 @@ -1122,8 +1122,8 @@ packages: json-schema-typed: optional: true - '@fumadocs/json-schema@0.2.0': - resolution: {integrity: sha512-I3sB2wwJr1Up5JSmaAThmQ2CSP4j2pM01igpbsuKDG3kHYuoHDXiKGEoFWmYK3a81VjQ98AOYx60SEs6xEXr7A==} + '@fumadocs/json-schema@0.3.0': + resolution: {integrity: sha512-EWQKJs5WPotQg4mLb8TcYX8IKyVsCeODlmLlBdOvPTCsXvkYXFtDdnfDMIFuyCa95rp1fPoGpK9Vicjh0xHZ1A==} peerDependencies: json-schema-typed: '*' react: ^19.2.0 @@ -1972,24 +1972,24 @@ packages: resolution: {integrity: sha512-4zPzuNTXObDUtZS93xzAoK83ddHDgBGifv/vKFe6bHqEl5i+IMLTTtEHOaaOZK4dusPEXcXsU5TBSaY/I6Mi+A==} engines: {node: '>=22'} - '@scalar/helpers@0.12.0': - resolution: {integrity: sha512-rcX0rFLiWWc0VBr/E+HkatubL0I0ZzxASQkd3032NWEMAEfNd2TiJ9kH46HwbSAOOl696ghxymWegjpjjvxwzA==} + '@scalar/helpers@0.16.2': + resolution: {integrity: sha512-jHSF4KZI/EcVI7WhhgNyw9vvuVCXmwP4rkMXwcaZJjMg1tFPHSOWqIcq123CsUwCMR34SEBAGSJR+Eskrz+7Qg==} engines: {node: '>=22'} '@scalar/json-magic@0.13.4': resolution: {integrity: sha512-pOZdlzkgLB+/4OlIlzMToV/cr4vsvWy/MtbtJoRcNHIzDnT8sfNtv/cH8MR2pNDg/29sPpTV1HaE4SZ8b9jUOQ==} engines: {node: '>=22'} - '@scalar/json-magic@0.13.5': - resolution: {integrity: sha512-w5eENfKAkc4CYiLva3nGUhTaJfyi3szmZ3E7+EHlzahOUnbDmB9rAWyzt8GFCXbwxeTuR+1m7lO1PyV/QAid4A==} + '@scalar/json-magic@0.15.6': + resolution: {integrity: sha512-rMCnkOtEnSolwHMFiOC4e97GBFfKOt3/4ba2Z4juVLTL0vCHs+Ei04Ofj5NBZUxOzjz1Ok2NqOt6ad0gIjpe7g==} engines: {node: '>=22'} - '@scalar/openapi-types@0.9.6': - resolution: {integrity: sha512-hge0dhllV70dwqgUiucmDY5yZLq91BOV/78lWSqQMTY67x+LHcQplJUZDomfFi5oepROpWDs5iaKMr7ubqDBOA==} + '@scalar/openapi-types@0.9.7': + resolution: {integrity: sha512-UVSgxRxcTaIbTZGtNRdQJHZC60uyYi29zfDqQVp0lxx07BNczIHbf9jycgI/+W3Uxxod+yUUt7hzxnKllOHE0w==} engines: {node: '>=22'} - '@scalar/openapi-upgrader@0.2.17': - resolution: {integrity: sha512-HoSgjb57UNH2OACVmbo4yLPnvP3BPnvtSMJVqRhjOspJhz945XEZYnfwgk2C3hET0bFvkc7aLSabm/K1nbjp8Q==} + '@scalar/openapi-upgrader@0.4.3': + resolution: {integrity: sha512-EaFh3mtJweVhlXGEae+lpGdX0daHAce/hgRg0Vg+HtQkZ45oujHY7+lqLNRFKDw90gJZyzfOukOjTZTcYp5t0w==} engines: {node: '>=22'} '@sec-ant/readable-stream@0.4.1': @@ -2023,32 +2023,32 @@ packages: peerDependencies: semantic-release: '>=20.1.0' - '@shikijs/core@4.4.3': - resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==} + '@shikijs/core@4.5.0': + resolution: {integrity: sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw==} engines: {node: '>=20'} - '@shikijs/engine-javascript@4.4.3': - resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==} + '@shikijs/engine-javascript@4.5.0': + resolution: {integrity: sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA==} engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.4.3': - resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==} + '@shikijs/engine-oniguruma@4.5.0': + resolution: {integrity: sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw==} engines: {node: '>=20'} - '@shikijs/langs@4.4.3': - resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==} + '@shikijs/langs@4.5.0': + resolution: {integrity: sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==} engines: {node: '>=20'} - '@shikijs/primitive@4.4.3': - resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==} + '@shikijs/primitive@4.5.0': + resolution: {integrity: sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg==} engines: {node: '>=20'} - '@shikijs/themes@4.4.3': - resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==} + '@shikijs/themes@4.5.0': + resolution: {integrity: sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==} engines: {node: '>=20'} - '@shikijs/types@4.4.3': - resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==} + '@shikijs/types@4.5.0': + resolution: {integrity: sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==} engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': @@ -2919,6 +2919,7 @@ packages: resolution: {integrity: sha512-dSb5o6D9JugPmKRsjVLDLpgHRdSd1oCvNhY6AP6+OCzMwn0kbiNxhf2DwXYtt4xIBjliYQnw+ZsvIy1d0lHtSg==} cpu: [x64] os: [win32] + deprecated: yuku-analyzer runs on yuku-core since 0.14 '@yuku-toolchain/types@0.9.5': resolution: {integrity: sha512-KiuLNNgX9uNealaWAR+G3/cMXnRk9x4TY2EkYe/KIag+UPdwiA0RRf1hr1WAxzTP8KGzCTkqUdLPvqh32sEO3w==} @@ -3312,6 +3313,11 @@ packages: engines: {node: '>=20'} hasBin: true + cn@0.4.0: + resolution: {integrity: sha512-qOAeUhPwPzBxx6jaeQdo646XIKliKHc2j1ZF7Ngb1o0pJZKH5gq8FkA0aVdUdPFUDXNXyUCXpCtoJISo6dhizg==} + engines: {node: '>=20'} + hasBin: true + collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} @@ -4084,8 +4090,8 @@ packages: vite: optional: true - fumadocs-openapi@12.1.1: - resolution: {integrity: sha512-7NirdbnoE2cxxTdzUSfAFJEdSqjQq74IamNsaRXBrMHtHZ/2l2sMnD3TTE0eB5YK9dQBc3PB/aHcx4fQTAv59w==} + fumadocs-openapi@12.4.1: + resolution: {integrity: sha512-fFDvQkWem2kp4Tr0w2ynOPZ2A75jBKmPD+34mox7HAFKzOzEMZ99i1goHrOOxKJuDKvv/WptF1Np/C+vtOohqg==} peerDependencies: '@scalar/api-client-react': ^2.0.20 '@types/react': '*' @@ -5026,10 +5032,14 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@1.47.0: - resolution: {integrity: sha512-o8C23aXpNQypRY73W7fW02EyvWJinEMXgKeGjFoKym0zj3Q73hD97A1IQps1g8C14HTGsOpZL0Am+xjfgFZAbg==} + lucide-react@1.54.0: + resolution: {integrity: sha512-kVmnVCBoLztTGe3S76xu8utwxijRLOinknNq9e8btZ0R2fm6WCgxY+weaLiA50odo/yi+apm/4B2A/LsFZhTrw==} peerDependencies: + '@types/react': '*' react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -5225,9 +5235,6 @@ packages: micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - micromark-util-types@2.0.3: resolution: {integrity: sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==} @@ -6099,8 +6106,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@4.4.3: - resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==} + shiki@4.5.0: + resolution: {integrity: sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ==} engines: {node: '>=20'} side-channel-list@1.0.1: @@ -6525,10 +6532,6 @@ packages: resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==} engines: {node: '>=18.17'} - undici@7.27.0: - resolution: {integrity: sha512-+t2Z/GwkZQDtu00813aP66ygViGtPHKhhoFZpQKpKrE+9jIgES+Zw+mFNaDWOVRKiuJjuqKHzD3B1sfGg8+ZOQ==} - engines: {node: '>=20.18.1'} - undici@7.29.1: resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==} engines: {node: '>=20.18.1'} @@ -7999,7 +8002,7 @@ snapshots: optionalDependencies: '@types/react': 19.3.0 - '@fumadocs/api-docs@0.2.8(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@fumadocs/api-docs@0.2.8(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@base-ui/react': 1.8.0(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@fuma-translate/react': 1.0.2(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) @@ -8007,10 +8010,10 @@ snapshots: '@scalar/json-magic': 0.13.4 class-variance-authority: 0.7.1 cn: 0.2.6 - fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) - fumadocs-ui: 16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) + fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) + fumadocs-ui: 16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) github-slugger: 2.0.0 - lucide-react: 1.47.0(react@19.2.8) + lucide-react: 1.54.0(@types/react@19.3.0)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: @@ -8019,10 +8022,10 @@ snapshots: - '@date-fns/tz' - date-fns - '@fumadocs/json-schema@0.2.0(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@fumadocs/json-schema@0.3.0(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@fuma-translate/react': 1.0.2(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@scalar/json-magic': 0.13.5 + '@scalar/json-magic': 0.15.6 optionalDependencies: react: 19.2.8 transitivePeerDependencies: @@ -8878,7 +8881,7 @@ snapshots: '@scalar/helpers@0.11.3': {} - '@scalar/helpers@0.12.0': {} + '@scalar/helpers@0.16.2': {} '@scalar/json-magic@0.13.4': dependencies: @@ -8886,19 +8889,19 @@ snapshots: pathe: 2.0.3 yaml: 2.9.1 - '@scalar/json-magic@0.13.5': + '@scalar/json-magic@0.15.6': dependencies: - '@scalar/helpers': 0.12.0 + '@scalar/helpers': 0.16.2 pathe: 2.0.3 undici: 7.29.1 yaml: 2.9.1 - '@scalar/openapi-types@0.9.6': {} + '@scalar/openapi-types@0.9.7': {} - '@scalar/openapi-upgrader@0.2.17': + '@scalar/openapi-upgrader@0.4.3': dependencies: - '@scalar/helpers': 0.12.0 - '@scalar/openapi-types': 0.9.6 + '@scalar/helpers': 0.16.2 + '@scalar/openapi-types': 0.9.7 '@sec-ant/readable-stream@0.4.1': {} @@ -8936,7 +8939,7 @@ snapshots: p-filter: 4.1.0 semantic-release: 25.0.3(@typescript/typescript6@6.0.2) tinyglobby: 0.2.17 - undici: 7.27.0 + undici: 7.29.1 url-join: 5.0.0 transitivePeerDependencies: - supports-color @@ -8974,40 +8977,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@shikijs/core@4.4.3': + '@shikijs/core@4.5.0': dependencies: - '@shikijs/primitive': 4.4.3 - '@shikijs/types': 4.4.3 + '@shikijs/primitive': 4.5.0 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@4.4.3': + '@shikijs/engine-javascript@4.5.0': dependencies: - '@shikijs/types': 4.4.3 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@4.4.3': + '@shikijs/engine-oniguruma@4.5.0': dependencies: - '@shikijs/types': 4.4.3 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@4.4.3': + '@shikijs/langs@4.5.0': dependencies: - '@shikijs/types': 4.4.3 + '@shikijs/types': 4.5.0 - '@shikijs/primitive@4.4.3': + '@shikijs/primitive@4.5.0': dependencies: - '@shikijs/types': 4.4.3 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 - '@shikijs/themes@4.4.3': + '@shikijs/themes@4.5.0': dependencies: - '@shikijs/types': 4.4.3 + '@shikijs/types': 4.5.0 - '@shikijs/types@4.4.3': + '@shikijs/types@4.5.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -10379,6 +10382,8 @@ snapshots: cn@0.3.3: {} + cn@0.4.0: {} + collapse-white-space@2.1.0: {} color-convert@1.9.3: @@ -11174,7 +11179,7 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4): + fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4): dependencies: '@fumari/image-size': 0.1.1 estree-util-value-to-estree: 3.5.0 @@ -11188,7 +11193,7 @@ snapshots: remark-gfm: 4.0.1 remark-rehype: 11.1.2 scroll-into-view-if-needed: 3.1.0 - shiki: 4.4.3 + shiki: 4.5.0 tinyglobby: 0.2.17 unified: 11.0.5 unist-util-visit: 5.1.0 @@ -11202,21 +11207,21 @@ snapshots: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@types/react': 19.3.0 - lucide-react: 1.47.0(react@19.2.8) + lucide-react: 1.54.0(@types/react@19.3.0)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) zod: 4.5.4 transitivePeerDependencies: - supports-color - fumadocs-mdx@15.4.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react@19.2.8)(rolldown@1.2.8)(vite@8.2.2(@types/node@24.13.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.1)): + fumadocs-mdx@15.4.0(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react@19.2.8)(rolldown@1.2.8)(vite@8.2.2(@types/node@24.13.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.1)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 chokidar: 5.0.0 esbuild: 0.28.2 estree-util-value-to-estree: 3.5.0 - fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) + fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) github-slugger: 2.0.0 magic-string: 1.2.3 mdast-util-mdx: 3.0.0 @@ -11241,28 +11246,28 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-openapi@12.1.1(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + fumadocs-openapi@12.4.1(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: '@base-ui/react': 1.8.0(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@fuma-translate/react': 1.0.2(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@fumadocs/json-schema': 0.2.0(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@fumadocs/json-schema': 0.3.0(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@fumari/json-schema-ts': 1.0.2 '@fumari/stf': 1.1.1(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@scalar/json-magic': 0.13.5 - '@scalar/openapi-upgrader': 0.2.17 + '@scalar/json-magic': 0.15.6 + '@scalar/openapi-upgrader': 0.4.3 chokidar: 5.0.0 class-variance-authority: 0.7.1 - cn: 0.3.3 - fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) - fumadocs-ui: 16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) + cn: 0.4.0 + fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) + fumadocs-ui: 16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) github-slugger: 2.0.0 hast-util-to-jsx-runtime: 2.3.6 - lucide-react: 1.47.0(react@19.2.8) + lucide-react: 1.54.0(@types/react@19.3.0)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) remark: 15.0.1 remark-rehype: 11.1.2 - shiki: 4.4.3 + shiki: 4.5.0 yaml: 2.9.1 optionalDependencies: '@types/react': 19.3.0 @@ -11271,7 +11276,7 @@ snapshots: - date-fns - supports-color - fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3): + fumadocs-ui@16.15.17(@types/mdx@2.0.14)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(fumadocs-core@16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3): dependencies: '@fuma-translate/react': 1.0.2(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@fumadocs/tailwind': 0.1.2(tailwindcss@4.3.3) @@ -11287,8 +11292,8 @@ snapshots: '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) class-variance-authority: 0.7.1 cn: 0.3.3 - fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.47.0(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) - lucide-react: 1.47.0(react@19.2.8) + fumadocs-core: 16.15.17(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.33(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.3.0)(lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) + lucide-react: 1.54.0(@types/react@19.3.0)(react@19.2.8) motion: 13.4.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) next-themes: 0.4.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 @@ -11296,7 +11301,7 @@ snapshots: react-remove-scroll: 2.7.2(@types/react@19.3.0)(react@19.2.8) rehype-raw: 7.0.0 scroll-into-view-if-needed: 3.1.0 - shiki: 4.4.3 + shiki: 4.5.0 unist-util-visit: 5.1.0 optionalDependencies: '@types/mdx': 2.0.14 @@ -12220,9 +12225,11 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@1.47.0(react@19.2.8): + lucide-react@1.54.0(@types/react@19.3.0)(react@19.2.8): dependencies: react: 19.2.8 + optionalDependencies: + '@types/react': 19.3.0 magic-string@0.30.21: dependencies: @@ -12458,7 +12465,7 @@ snapshots: micromark-util-character: 2.1.1 micromark-util-sanitize-uri: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-extension-gfm-footnote@2.1.0: dependencies: @@ -12469,7 +12476,7 @@ snapshots: micromark-util-normalize-identifier: 2.0.1 micromark-util-sanitize-uri: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-extension-gfm-strikethrough@2.1.0: dependencies: @@ -12478,7 +12485,7 @@ snapshots: micromark-util-classify-character: 2.0.1 micromark-util-resolve-all: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-extension-gfm-table@2.1.1: dependencies: @@ -12486,11 +12493,11 @@ snapshots: micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-extension-gfm-tagfilter@2.0.0: dependencies: - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-extension-gfm-task-list-item@2.1.0: dependencies: @@ -12498,7 +12505,7 @@ snapshots: micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-extension-gfm@3.0.0: dependencies: @@ -12509,7 +12516,7 @@ snapshots: micromark-extension-gfm-tagfilter: 2.0.0 micromark-extension-gfm-task-list-item: 2.1.0 micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.3 micromark-extension-mdx-expression@3.0.1: dependencies: @@ -12674,8 +12681,6 @@ snapshots: micromark-util-symbol@2.0.1: {} - micromark-util-types@2.0.2: {} - micromark-util-types@2.0.3: {} micromark@4.0.2: @@ -13657,14 +13662,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@4.4.3: + shiki@4.5.0: dependencies: - '@shikijs/core': 4.4.3 - '@shikijs/engine-javascript': 4.4.3 - '@shikijs/engine-oniguruma': 4.4.3 - '@shikijs/langs': 4.4.3 - '@shikijs/themes': 4.4.3 - '@shikijs/types': 4.4.3 + '@shikijs/core': 4.5.0 + '@shikijs/engine-javascript': 4.5.0 + '@shikijs/engine-oniguruma': 4.5.0 + '@shikijs/langs': 4.5.0 + '@shikijs/themes': 4.5.0 + '@shikijs/types': 4.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.5 @@ -14138,8 +14143,6 @@ snapshots: undici@6.26.0: {} - undici@7.27.0: {} - undici@7.29.1: {} unicode-emoji-modifier-base@1.0.0: {} diff --git a/portal-template/src/components/api-markdown.tsx b/portal-template/src/components/api-markdown.tsx index 884582c22..bf2c7c00f 100644 --- a/portal-template/src/components/api-markdown.tsx +++ b/portal-template/src/components/api-markdown.tsx @@ -17,7 +17,7 @@ const components = { pre: CodeBlock }; -/** The specification's descriptions as Fumadocs renders them, but for its `img: undefined`, which fails the page. */ +/** The specification's descriptions as Fumadocs renders them, but with the base on a root-relative image, which Fumadocs leaves out. */ export function ApiMarkdown({ md }: { md: string }) { return {md}; } diff --git a/portal-template/src/lib/request-examples.ts b/portal-template/src/lib/request-examples.ts index 5f569431b..8fb76372e 100644 --- a/portal-template/src/lib/request-examples.ts +++ b/portal-template/src/lib/request-examples.ts @@ -1,5 +1,4 @@ -import type { ParameterObject } from 'fumadocs-openapi'; -import type { ExampleRequest, OperationParameters } from 'fumadocs-openapi/operation'; +import type { ExampleRequest, OperationParameter, OperationParameters } from 'fumadocs-openapi/operation'; import { isJsonObject } from './json'; export type RequestExample = Pick; @@ -28,7 +27,7 @@ export class Parameter { return groups.flatMap((group) => group.items.map((item) => Parameter.from(group.in, item, resolve))); } - private static from(location: Location, item: ParameterObject, resolve: Resolve): Parameter { + private static from(location: Location, item: OperationParameter, resolve: Resolve): Parameter { const examples = Object.entries(item.examples ?? {}) .map(([id, example]): [string, unknown] => [id, resolve(example)]) .filter(isExampleEntry); diff --git a/test/e2e/portal-build.test.ts b/test/e2e/portal-build.test.ts index fb785eac9..8b974c78c 100644 --- a/test/e2e/portal-build.test.ts +++ b/test/e2e/portal-build.test.ts @@ -844,7 +844,7 @@ const stylesheetOf = (output: DirectoryPath) => { expect(read('authentication/index.html')).to.match(/]* src="\/api\/assets\/diagram[^"]*\.png"/); }); - // Fumadocs' own renderer fails the whole page over an image in a description; `ApiMarkdown` stands in for it. + // Fumadocs renders a description's image without the path; `ApiMarkdown` gives it the path. it('renders an image and a code block in a description, the image under the path', () => { const page = read('api/apimatic-calculator/simple-calculator/Calculate/index.html'); diff --git a/test/portal-template/request-examples.test.ts b/test/portal-template/request-examples.test.ts index 209e90651..5fa26c0b2 100644 --- a/test/portal-template/request-examples.test.ts +++ b/test/portal-template/request-examples.test.ts @@ -1,6 +1,5 @@ import { expect } from 'chai'; -import type { ParameterObject } from 'fumadocs-openapi'; -import type { OperationParameters } from 'fumadocs-openapi/operation'; +import type { OperationParameter, OperationParameters } from 'fumadocs-openapi/operation'; import { Parameter, requestExamples, type RequestExample } from '../../portal-template/src/lib/request-examples'; type Location = OperationParameters['in']; @@ -8,7 +7,7 @@ type Location = OperationParameters['in']; const example = (id: string): RequestExample => ({ id, name: id }); // Fumadocs groups an operation's parameters by location. -const group = (location: Location, item: Omit): OperationParameters => ({ +const group = (location: Location, item: Omit): OperationParameters => ({ in: location, items: [{ ...item, in: location }] }); From cac721eb958d8df149cd392ad183a14c8ba7175e Mon Sep 17 00:00:00 2001 From: WasifIsrar Date: Mon, 19 Oct 2026 15:58:35 +0500 Subject: [PATCH 2/3] chore: update test repo branch --- .github/workflows/portal_tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/portal_tests.yml b/.github/workflows/portal_tests.yml index 59f23579b..dfc811aa5 100644 --- a/.github/workflows/portal_tests.yml +++ b/.github/workflows/portal_tests.yml @@ -82,6 +82,7 @@ jobs: uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: repository: apimatic/v4-test-automation + ref: chore/update-for-fum12.5 path: tests - name: install test dependencies From 0bcd88e21acaf93329f1c96900fd8b2f8b539e2a Mon Sep 17 00:00:00 2001 From: mehnoorsiddiqui Date: Mon, 19 Oct 2026 17:07:05 +0500 Subject: [PATCH 3/3] fix(deps): drop isomorphic-git, which the merge from dev brought back --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index b32f3a72d..5f8c291a4 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,6 @@ "fumadocs-ui": "16.15.17", "get-port": "^7.1.0", "is-in-ci": "^2.0.0", - "isomorphic-git": "^1.37.2", "lucide-react": "1.54.0", "mustache": "^4.2.0", "neverthrow": "^8.2.0",