Commit Graph
1425 Commits
Author SHA1 Message Date
zooqueenandHanzo Dev 8c3fed7255 refactor(api)!: rename toFumadocsSource() -> toDocsSource() (brand-neutral)
Renames the public doc-collection method across runtime, types, examples
and create-app templates so the API carries no upstream brand. The
internal helper and all call sites move together; fumadocs-core package
imports are untouched. Pairs with the .docs default outDir change.

BREAKING CHANGE: docs.toFumadocsSource() is now docs.toDocsSource().

Co-authored-by: Hanzo Dev <[email protected]>
2026-06-08 11:16:22 -07:00
zooqueenandHanzo Dev 5050b25c0f fix(mdx): default outDir to .docs and align all templates/examples
The plugin default outDir was 'docs' while every template and example
tsconfig aliased collections/* -> ./.source/*, so a fresh fork could not
resolve `import { docs } from 'collections/server'` without manually
passing createMDX({ outDir }). Standardize on .docs everywhere:

- packages/mdx/src/core.ts: _Defaults.outDir 'docs' -> '.docs'
- 31 template/example tsconfig: collections/* -> ./.docs/*
- align generated-dir .gitignore entries to .docs
- changeset (patch)

Co-authored-by: Hanzo Dev <[email protected]>
2026-06-08 11:02:10 -07:00
zeekay 195365cc6b merge: upstream/main (preserve Hanzo brand, 334 commits)
# Conflicts:
#	apps/docs/app/(home)/sponsors/data.tsx
#	apps/docs/app/(home)/uwu.tsx
#	apps/docs/app/og/[...slug]/generate.tsx
#	apps/docs/app/static.json/route.ts
#	apps/docs/content/blog/customise-ui.mdx
#	apps/docs/content/blog/mdx-v10-summary.mdx
#	apps/docs/content/blog/openapi-v9.mdx
#	apps/docs/content/blog/v15.mdx
#	apps/docs/content/blog/v16-2.mdx
#	apps/docs/content/docs/(framework)/deploying/static.mdx
#	apps/docs/content/docs/(framework)/integrations/content/custom.mdx
#	apps/docs/content/docs/(framework)/integrations/openapi/generate-files.mdx
#	apps/docs/content/docs/(framework)/integrations/openapi/server.mdx
#	apps/docs/content/docs/(framework)/integrations/story/client.story.tsx
#	apps/docs/content/docs/(framework)/integrations/story/index.mdx
#	apps/docs/content/docs/(framework)/integrations/story/next.mdx
#	apps/docs/content/docs/(framework)/search/orama.mdx
#	apps/docs/content/docs/(framework)/what-is-fumadocs.mdx
#	apps/docs/content/docs/cli/index.mdx
#	apps/docs/content/docs/headless/mdx/headings.mdx
#	apps/docs/content/docs/headless/mdx/rehype-code.mdx
#	apps/docs/content/docs/headless/mdx/remark-image.mdx
#	apps/docs/content/docs/headless/source-api/plugins.mdx
#	apps/docs/content/docs/mdx/(integrations)/loader/node.mdx
#	apps/docs/content/docs/mdx/global.mdx
#	apps/docs/content/docs/mdx/index.mdx
#	apps/docs/content/docs/ui/components/banner.mdx
#	apps/docs/content/docs/ui/components/graph-view.mdx
#	apps/docs/content/docs/ui/layouts/flux.mdx
#	apps/docs/content/docs/ui/layouts/home-layout.mdx
#	apps/docs/content/docs/ui/layouts/root-provider.mdx
#	apps/docs/content/docs/ui/theme.mdx
#	apps/docs/eslint.config.mjs
#	apps/docs/scripts/preload.ts
#	apps/docs/scripts/update-orama-index.ts
#	examples/openapi/README.md
#	examples/openapi/scripts/generate-docs.ts
#	examples/react-router-i18n/scripts/preload.ts
#	examples/tanstack-start-story/src/components/callout/story-client.tsx
#	packages/base-ui/scripts/compile-inline.utils.ts
#	packages/cli/src/build/index.ts
#	packages/core/src/content/md/frontmatter.ts
#	packages/create-app/scripts/update-git-repo.js
#	packages/create-app/scripts/update-git-repo.sh
#	packages/mdx-runtime/eslint.config.mjs
#	packages/openapi/scripts/compile-inline.utils.ts
#	packages/openapi/src/server/create.ts
#	packages/openapi/src/ui/full.tsx
#	packages/openapi/src/utils/process-document.ts
#	packages/press/waku.config.ts
#	packages/radix-ui/scripts/compile-inline.utils.ts
2026-06-02 09:55:12 -07:00
zeekay f44711d1f3 merge: dev (aggressive theirs) 2026-06-01 18:31:05 -07:00
23055816e6 feat(openapi): anchor links for request/response/parameter properties (#3327)
* feat(openapi): anchor links on schema properties

Each property rendered inline in a request body, response body, or parameter
now gets a stable id and a hover-revealed link icon, enabling deep links to
specific fields from guides. Ids follow:
  - body-<prop> for request bodies
  - response-<status>-<prop> for responses
  - parameters-<location>-<name> for parameters

A new idPrefix option on SchemaUI opts other Schema renderings into the same
behavior. See fuma-nama/fumadocs#3322.

* feat(openapi): deep-link nested schema properties

Extend the property anchor scheme to support hashes that point inside a
popover or below an array's "Show array" collapsible. Schema-internal
segments are joined with `.` so `#body.user.address.street` resolves
unambiguously regardless of dashes in property names.

On hash match, the inline anchor scrolls into view, the matching popover
auto-opens with its breadcrumb pre-navigated, the array collapsible
expands, and oneOf/anyOf tabs switch to the variant containing the
targeted field. The deep target is consumed after the first auto-open,
so subsequent user clicks on the same trigger get the base view; a
different deep hash re-arms it.

The hover anchor is now a copy-link button (matches fumadocs heading
anchors) that writes the full URL to the clipboard and updates the
address bar via history.replaceState (no hashchange, no popover reset).

* address PR review feedback

- Clarified the changeset: split anchor ID rules by context (request/response property paths vs flat parameter anchors) so dots aren't implied to apply to parameters.
- Namespaced anchors by media type when an operation has multiple request-body or response content types: prefix becomes `<media-slug>-body` / `response-<status>-<media-slug>`, and the content-type SelectTabs auto-switches to the targeted tab when a deep link arrives. Single-content-type operations keep the simple `body` / `response-<status>` form.
- Made findUnionPropMatch validate the *full* remaining path (via new pathResolves helper) so two variants that share the first prop name no longer race; the wrong tab can't be selected for a deep hash anymore.
- Reset SchemaUIPopover breadcrumb state when initialPath changes so a fresh deep hash takes effect on an already-open popover.
- Replaced the lossy slugifyPropertyName with encodeURIComponent (plus % encoding for `.`) so property anchors stay collision-safe across case-only differences, punctuation-only differences, and non-ASCII keys, while `.` remains exclusively a path separator.

* address PR review feedback

- Fix potential hydration mismatch in useTabValueFromHash by initializing state with the fallback value and resolving from the URL hash inside useEffect; the deep-linked tab now corrects after hydration on the client.

* fix(openapi): move useTabValueFromHash into a client component

The previous hydration-mismatch fix put `useEffect`/`useState` directly in
`operation/index.tsx`, which is a Server Component — Next refused to compile
because RSC modules can't import client-only React APIs. Extract the
hash-aware tab wrapper into `operation/hash-tabs.tsx` (with `"use client"`)
and switch both body and response sites to `HashAwareSelectTabs`. The parent
tree stays server-side; only the tab wrapper hydrates on the client.

* address PR review feedback

- Wrap decodeURIComponent in try/catch in both deep-link hash parsers so a malformed percent-encoded fragment (e.g. `#body%`) is treated as "no target" instead of throwing URIError and breaking tab / popover resolution.

* address PR review feedback

- Match the URL hash against DOM ids using the raw fragment first, with the fully-decoded form as a fallback, in both DeepLinkProvider and hash-tabs. Property anchors are generated via slugifyPropertyName (which percent-encodes reserved chars like `.`), so DOM ids contain the encoded form; decoding the hash before lookup caused links like `#body.foo%2Ebar` to miss the matching element.

* redesign

* fix types

---------

Co-authored-by: Fuma Nama <[email protected]>
2026-06-02 03:43:01 +08:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
34b75a0cfb Version Packages (#3324)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-29 19:49:33 +08:00
Fuma Nama 73b9cec605 docs: fix build 2026-05-29 18:33:21 +08:00
Fuma Nama a9f95ffbd9 chore: bump deps 2026-05-29 18:22:54 +08:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
4d5a423c59 Version Packages (#3314)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-28 15:43:53 +08:00
Fuma Nama 4282d79571 fix(shadcn): performance 2026-05-28 15:40:44 +08:00
Fuma Nama c102bdc61f feat(shadcn): support docgen for Shadcn UI 2026-05-27 19:27:48 +08:00
Fuma Nama dc61cd1538 fix(ui): types 2026-05-27 19:27:47 +08:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
35bb0efe3b Version Packages (#3309)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-26 22:23:32 +08:00
Fuma Nama 5c5d319331 feat(story): New Vite plugin for non-RSC environment 2026-05-26 21:54:05 +08:00
Fuma Nama 93a2003df6 chore: bump deps 2026-05-26 19:49:18 +08:00
github-actions[bot]andGitHub 4aa30828a1 Merge pull request #3301 from fuma-nama/changeset-release/dev
Version Packages
2026-05-23 20:16:25 +08:00
Fuma Nama 07a06b41a7 chore: use Waku for stackblitz example 2026-05-21 16:58:06 +08:00
Fuma Nama 5a5e5c8a50 add separate example for demo 2026-05-21 15:55:45 +08:00
Fuma Nama e4710be866 Docs: introduce new i18n API 2026-05-21 15:12:05 +08:00
Fuma Nama 5105164ca3 feat(language): introduce official language packs 2026-05-20 22:34:49 +08:00
Fuma Nama a35da15f56 docs: use new i18n API 2026-05-20 20:22:12 +08:00
Fuma Nama 65c174ec9c MDX: add more notes 2026-05-19 19:30:30 +08:00
Fuma Nama 4fa2013cde Chore: bump deps 2026-05-18 19:44:58 +08:00
Fuma Nama 975b530af3 OpenAPI: Add Source API methods & Dynamic Source support to server 2026-05-18 19:42:18 +08:00
Fuma Nama f5ff88478b chore: bump deps 2026-05-16 00:10:59 +08:00
d4c78e4aef OpenAPI: render deprecated badge for deprecated operations (#3281)
* OpenAPI: render deprecated badge for deprecated operations

Show a yellow "Deprecated" badge for any OpenAPI operation marked
`deprecated: true`. The badge appears in two places: inline with the
operation heading when `showTitle` is true, and as a standalone header
above the playground card when `showTitle` is false (which is the
default for individual operation pages generated by `openapiSource`).

This restores the behaviour originally added in #2417, which was lost
during the v9→v10 move of the operation renderer from
`packages/openapi/src/render/operation/index.tsx` to
`packages/openapi/src/ui/operation/index.tsx`. The parameter-level,
schema-property-level and auth-scheme-level deprecated badges all
survived the refactor; the operation-level one was silently dropped.

The example spec's `deletePlanet` operation already claimed in its
description to be deprecated but never set the flag (inherited from the
upstream Scalar Galaxy fixture). Setting it both fixes the
inconsistency and provides a visible demo for the new badge.

* OpenAPI: improve operation deprecation styles

---------

Co-authored-by: Fuma Nama <[email protected]>
2026-05-14 17:18:41 +08:00
Fuma Nama 3c69c83e3b Chore: Bump deps 2026-05-12 18:51:40 +08:00
Fuma Nama bf604daffa Refactor: pnpm v11 & remove bun 2026-05-12 18:50:36 +08:00
Fuma Nama c5b2ed4109 remove unused example 2026-05-12 02:10:17 +08:00
Fuma Nama 2569154380 Vite: Pre-generate Vite config to prevent CJS compat issues 2026-05-11 22:37:12 +08:00
Fuma Nama bcfa449c62 Chore: add reproduction 2026-05-10 15:07:42 +08:00
Fuma Nama 87829e585f Press: fix HMR 2026-05-09 21:30:38 +08:00
Fuma Nama 3e06c10f0a Press: add i18n support & docs 2026-05-09 00:25:00 +08:00
Fuma Nama 038614061e Press: no longer require fumadocs-mdx 2026-05-08 18:48:49 +08:00
Fuma Nama 3696a7efc8 MDX: Make source config optional in Vite plugin 2026-05-08 16:28:55 +08:00
Fuma Nama b8eeca14d3 Bump deps 2026-05-07 22:40:49 +08:00
Fuma Nama 656c3c1249 Press: make waku.server optional 2026-05-07 21:26:23 +08:00
Fuma Nama 1f1e49a0a8 Press: auto CSS & layout 2026-05-06 20:48:43 +08:00
Fuma Nama 7210d6011c Press: support route configs 2026-05-05 16:39:20 +08:00
Fuma Nama bfaf14c9b7 Chore: unify .mdx suffix to .md 2026-05-05 15:12:14 +08:00
Fuma Nama d44e695b86 Tanstack Start: improve example .md route 2026-05-05 14:22:29 +08:00
Fuma Nama 52e6010e10 Press: make a framework on Waku 2026-05-05 01:08:19 +08:00
Fuma Nama 2a63a16fdf Sanity: ship content types via regsitry 2026-05-02 21:43:17 +08:00
Fuma Nama bdc043b288 Chore: bump deps 2026-04-27 23:21:15 +08:00
Fuma Nama 79d320986f Core: narrow schema types 2026-04-26 18:52:54 +08:00
Fuma Nama 61b15e99d3 Core: fix Shiki languages not loaded under lazy mode 2026-04-25 22:49:02 +08:00
Fuma Nama dcb1c2590e fix: downgrade Tanstack Start 2026-04-24 21:44:59 +08:00
Fuma Nama 6faf2de0ac Bump deps 2026-04-24 20:07:29 +08:00
Fuma Nama 2b879a895e Local MD: add example for Vite 2026-04-23 16:01:16 +08:00
Fuma Nama 6c772494fa Docs: introduce Local MD 2026-04-20 17:25:36 +08:00