Commit Graph
6214 Commits
Author SHA1 Message Date
zooqueenandHanzo Dev 55423249ea docs: tidy LLM.md indexes; CLAUDE.md -> LLM.md symlink convention
Co-authored-by: Hanzo Dev <[email protected]>
2026-06-17 22:12:29 -07:00
zooqueenandHanzo Dev 87a3fca0a4 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-17 22:12:29 -07:00
zooqueenandHanzo Dev 59f665d73a 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-17 22:12:29 -07:00
zeekay 27aeb58538 ingress: drop dead traefik.* annotations (hanzoai/ingress parses ingress.kubernetes.io/* only; these were inert router.tls/entrypoints/v1-redirect syntax) 2026-06-15 11:33:07 -07:00
zeekay ead382e5c8 ci: route to canonical native arcd labels [self-hosted, linux, <arch>]
Replaces non-canonical scale-set / org-prefixed labels with the
existing labels every arcd host registers with. Matches evo for
amd64 and spark for arm64. No new labels added.
2026-06-10 20:12:05 -07:00
zeekay 5756e81984 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
Fuma NamaGitHubIsmail Ghallougithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Avner Matan
c2a24508d7 Sync (#3332)
* fix types

* fix(openapi): newer scalar client

* Merge pull request #3318 from smakosh/feat/llmgateway-ai-provider

Docs: support LLMGateway for AI chat

* docs: document LLM_GATEWAY_MODEL for Ask AI (#3319)

* fix(core): improve source API utils & types

* feat(core): support `invalidate` & `revalidate` on dynamic loader

* fix(preview): fix invalid content type in `/img` endpoint

* chore: bump deps

* fix(mdx): respect `root` in Vite config

* docs: fix build

* Version Packages (#3324)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 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]>

* feat(openapi): better Webhook UI

* Version Packages (#3331)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs: mention fumapress

---------

Co-authored-by: Ismail Ghallou <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Avner Matan <[email protected]>
2026-06-02 18:26:46 +08:00
Fuma Nama 5fcff06803 docs: mention fumapress 2026-06-02 18:23:18 +08:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
62c95e3d08 Version Packages (#3331)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
[email protected]
2026-06-02 17:54:12 +08:00
Fuma Nama 185b058632 feat(openapi): better Webhook UI 2026-06-02 17:48:58 +08:00
zooqueenandHanzo Dev c53f3d856d fix(search): point native Hanzo search/index client at the live /v1 API
The native 'hanzo' search + sync clients defaulted to dead endpoints (cloud-api.hanzo.ai/api/search-docs, api.cloud.hanzo.ai/api/index-docs). Repoint to the live hanzoai/ai gateway (verified vs routers/router.go): search -> https://api.hanzo.ai/v1/search, index -> https://api.hanzo.ai/v1/index.

Co-authored-by: Hanzo Dev <[email protected]>
2026-06-02 00:12:56 -07:00
zeekay f906e9e100 merge: dev (aggressive theirs) 2026-06-01 18:31:05 -07:00
zeekay 08a00ea797 merge: add/liquid-docs (aggressive theirs) 2026-06-01 18:30:52 -07:00
59983551b6 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
zeekay 89bf1b8bfa feat(pulsar-docs): add Fumadocs site for luxfi/pulsar at apps/pulsar-docs
Scaffold cloned from apps/zen-docs. Port 3008. Content authored from the
settled state of ~/work/lux/pulsar/main (README, EC README, bridge doc,
extraction roadmaps, NIST-SUBMISSION, SUBMISSION, CHANGELOG, SECURITY,
postmortem). Math rendered with KaTeX. Information architecture: intro
-> getting-started -> protocol -> reference -> proofs -> security -> nist-mptc
-> postmortem -> changelog.

Build clean: pnpm --filter=pulsar-docs build && pnpm --filter=pulsar-docs dev.
2026-05-31 11:26:44 -07:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
756384341b Version Packages (#3324)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
[email protected] @fumadocs/[email protected] @fumadocs/[email protected] [email protected] [email protected] [email protected] [email protected]
2026-05-29 19:49:33 +08:00
Fuma Nama ccc3fc38c6 docs: fix build 2026-05-29 18:33:21 +08:00
Fuma Nama 512cc21eb8 fix(mdx): respect root in Vite config 2026-05-29 18:23:25 +08:00
Fuma Nama c86e79f1a2 chore: bump deps 2026-05-29 18:22:54 +08:00
Fuma Nama e4e5024c20 fix(preview): fix invalid content type in /img endpoint 2026-05-29 17:48:15 +08:00
Fuma Nama 184022fd4d feat(core): support invalidate & revalidate on dynamic loader 2026-05-29 16:47:48 +08:00
Fuma Nama 0f79c36f92 fix(core): improve source API utils & types 2026-05-29 16:20:57 +08:00
Ismail GhallouandGitHub 0ffb0f6bdd docs: document LLM_GATEWAY_MODEL for Ask AI (#3319) 2026-05-29 11:53:29 +08:00
Ismail GhallouandGitHub d15211d081 Merge pull request #3318 from smakosh/feat/llmgateway-ai-provider
Docs: support LLMGateway for AI chat
2026-05-29 01:52:19 +08:00
Fuma Nama 839e9d3584 fix(openapi): newer scalar client 2026-05-28 16:38:17 +08:00
Fuma Nama 3b668c674a fix types 2026-05-28 16:25:42 +08:00
Fuma NamaandGitHub fe6c616c4a Merge pull request #3316 from fuma-nama/dev
Sync
2026-05-28 15:45:33 +08:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
802186a87d 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 c8005a43ec fix(shadcn): performance 2026-05-28 15:40:44 +08:00
Fuma Nama 03dbc589a2 feat(story): support Webpack/Turbopack plugin 2026-05-28 15:14:41 +08:00
Fuma Nama 1920a3ae92 feat(shadcn): support docgen for Shadcn UI 2026-05-27 19:27:48 +08:00
Fuma Nama 7224185d1a feat(core): expose icon transformer 2026-05-27 19:27:48 +08:00
Fuma Nama 28ed43b412 fix(openapi): improve loader API types 2026-05-27 19:27:48 +08:00
Fuma Nama 56a3828e2c fix(ui): consistent toc size when empty 2026-05-27 19:27:47 +08:00
Fuma Nama af323918b1 fix(ui): types 2026-05-27 19:27:47 +08:00
zeekay 6ea410af8f chore: remove apps/zap-docs — moved to zap-proto/dev
ZAP docs are a zap-proto brand surface, not hanzoai. Per-language SDK
content (c, cpp, csharp, erlang, go, haskell, java, javascript, ocaml,
python, rust) is migrated to zap-proto/dev under /sdks/<lang>.mdx and
deployed at https://zap-proto.dev. The zap.hanzo.ai DNS entry can be
retired or 301-redirected at the edge.
2026-05-27 03:35:23 -07:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
677b782534 Version Packages (#3309)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@fumadocs/[email protected] [email protected] [email protected]
2026-05-26 22:23:32 +08:00
Fuma Nama 3dcea7f393 feat(story): New Vite plugin for non-RSC environment 2026-05-26 21:54:05 +08:00
Fuma Nama 383f8e614f chore: bump deps 2026-05-26 19:49:18 +08:00
Fuma Nama 50755051b7 fix(sanity): types 2026-05-26 17:40:19 +08:00
github-actions[bot] 043c101b9b chore(zen-models): sync pricing from pricing.hanzo.ai
Automated daily pricing sync. Changes detected and changeset created.
2026-05-26 05:51:47 +00:00
Fuma Nama 0a1605de8f docs: multiple orgs to one user 2026-05-25 19:18:48 +08:00
Fuma Nama e74307de23 feat(mdx): support _fumadocs_skipViteConfig flag for Vite plugin 2026-05-25 17:50:40 +08:00
github-actions[bot]andGitHub 21cc8fb0c2 Merge pull request #3307 from fuma-nama/changeset-release/dev
Version Packages
@fumadocs/[email protected]
2026-05-25 13:27:01 +08:00
Fuma Nama d4c06a7db3 fix(sanity): sanity peer deps 2026-05-25 13:24:53 +08:00
Fuma Nama 203d3969f7 docs: introduce pagesIndex 2026-05-24 20:33:46 +08:00
Fuma Nama aca480e293 docs: update sponsors 2026-05-24 20:11:18 +08:00
Fuma Nama b4e1db757e docs: show past sponsors 2026-05-24 19:23:23 +08:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
18264c031c Version Packages (#3304)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
[email protected]
2026-05-23 22:18:29 +08:00
Fuma Nama 6b4ad47e39 fix(cli): lower eslint version 2026-05-23 22:15:27 +08:00