Jamdesk Documentation logo

Changelog

What's new in Jamdesk, the docs-as-code platform for MDX, GitHub, and API documentation. Feature releases, CLI updates, and platform changes.

Get Jamdesk release notes

New features and platform changes, straight to your inbox.

getPage takes the url from search. The MCP getPage tool accepts a url parameter alongside slug. Pass the url a searchDocs result returned, a full page URL, or a .md link from llms.txt. Agents no longer need to turn search results back into slugs. MCP server →

Clearer failures for pushes from non-members. The failed build names who pushed and how to fix it. The project owner gets an email with an invite link, at most once a week per person. GitHub →

Rename the Ask AI button and give it your own icon. Add chat.label and chat.icon to docs.json. The label replaces "Ask AI" on the chat button, the panel header and the search shortcut. The icon can be a Font Awesome name, an image URL or an image in your project. AI Chat →

Center or right-align the top tabs. Set tabsAlignment to "center" or "end" when your tabs sit in the header. The default, "start", keeps them on the left. Navigation →

Open a Mermaid diagram full screen. Click a diagram, or focus it and press Enter, to see it larger. Close it with Escape. Add noZoom to a <Mermaid> component to turn it off for that diagram. Colors you set with style and classDef now stay the same in dark mode. Mermaid →

Search API and MCP on login-protected sites. The Search API and the MCP server now accept your project API key in place of a login. You no longer need /_api/search in your public paths. Send the key to the MCP server as Authorization: Bearer <key>. A request without the key gets a 401 that says what to send, not a redirect to your login page. MCP Server →

Full pages and Markdown links for AI tools on login-protected sites. MCP getPage returns the whole page as Markdown, and your project API key opens .md URLs, llms.txt and llms-full.txt. Send the key as Authorization: Bearer <key>; requests with a key share 120 per minute. HTML pages and the AI chat still need a login. llms.txt →

Custom JavaScript runs in jamdesk dev. Requires CLI 1.1.222 or later. Custom JavaScript →

Set your own page title format. Add seo.titleTemplate to docs.json to change the title shown in the browser tab and in search results. Every %s becomes the page title. "%s | Acme" gives Getting started | Acme. "%s" alone leaves out the site name. Link preview titles still show the page title alone. SEO →

Build warning for text in SVG logos. The social card can't draw text inside an SVG logo. The build now suggests converting text in the logo to outlines (paths). The suggestion appears in the dashboard Suggestions list, in jamdesk validate and in jamdesk dev. Logos set to a full URL aren't checked. SEO →

A fifth theme: Dusk. Set "theme": "dusk" in docs.json for a flat look. Type is Inter for body text and IBM Plex Serif for headings. The accent is ink blue. Content sits on one tinted surface with 1px borders instead of raised cards. Custom colors, fonts, and CSS overrides work the same as on Jam, Nebula, Pulsar, and Halo. Theming →

Customize your social cards. Add seo.socialCard to docs.json. Color the bar and section badge with colors.primary, switch to a dark card, hide the bar or the site name, or use your own og:image as the whole card with no text. SEO →

Custom CSS and JavaScript examples. A new guide shows how to add a branded header and a floating Ask AI button, with screenshots. You need a style.css, a script.js and a few lines of docs.json. The examples target stable hooks, not class names. They keep working when Jamdesk updates. CSS & JS Examples →

One llms-full.txt per language. /fr/llms-full.txt now holds only the French pages of a multilingual site. /en/llms-full.txt holds the default language. The root /llms-full.txt still holds every language. The default language's index also answers at /en/llms.txt. Single-language sites are unchanged. llms.txt →

Send readers straight to their own language. Set "localization": { "autoRedirect": true } in docs.json. First-time visitors land on their browser's language, such as /fr, instead of your default. The choice sticks for a year. Picking a language from the switcher overrides it. Only the site root redirects. Crawlers are never redirected. Your hreflang tags still decide what gets indexed. Requires two or more languages. Automatic language routing →

Override the "last updated" date on a page. metadata.timestamp shows a "Last updated on …" line taken from the page's last Git commit. Add lastUpdatedDate: "2026-09-01" to a page's frontmatter to replace that date. The date also goes into your sitemap's <lastmod> and the page's structured-data dateModified, even when the footer line is off. Use it after you review a page, or when a formatting-only commit moved the date. Frontmatter →

Turn off the copy button on a code block. Add nocopy to the code block's opening line. It works with a title and every other option. It applies per tab inside a <CodeGroup>. Use it for terminal transcripts, redacted examples, and "don't do this" snippets. Code Blocks →

Sign readers in with your own login. Turn on auth.jwt in docs.json. Generate an Ed25519 signing key in Settings. Your backend signs a short-lived JWT at sign-in. Jamdesk verifies the token. Sessions last up to 30 days. Add groups: ["admin"] to a page to restrict it to tokens with that group. Other visitors get a 404. The page is hidden from their sidebar. Public paths, frontmatter public: true, and public navigation groups stay open to everyone. Pre-fill the API playground with credentials from the token. Included on every plan. Switch from password protection without downtime. JWT Authentication →

The site root exports Markdown too. Fetch your docs root, or a language root such as /fr, with Accept: text/markdown or as /index.md. You get the first page in that navigation, the same page the HTML root shows. Sites without an index.mdx used to return a 404 here. That broke the first request most agents make. Markdown Source →

Jamdesk translates your docs into 27 languages. Pick up to five languages per project in Settings → Translations. Jamdesk commits the translated pages to your GitHub repository after each build. Later builds retranslate only pages whose English source changed. Existing and hand-edited translations are kept until you click Replace with AI translation. Included on every plan. AI Translation →

Choose your own docs URL. Subpath hosting is no longer tied to /docs. Enter one path segment, such as help or guide, in the subpath field on the Custom Domain card. /docs keeps serving. Canonical URLs move to the new path right away. Only the most recent custom subpath redirects to the new one. Subpath Hosting →

Fix with AI, now faster. Reopening the fix preview is close to instant. Jamdesk keeps the scan results until your docs change. The first open is also quicker, including on large sites. Fix with AI →

A fourth theme: Halo. Set "theme": "halo" in docs.json for a rounded look. Type is Figtree. Content sits on a raised card over a sand background. Corners are the roundest of any built-in theme. Custom colors, fonts, and CSS overrides work the same as on Jam, Nebula, and Pulsar. Theming →

Serve your docs only from your own domain. Turn on Custom domain only in the Custom Domain card. Direct visits to YOUR_SLUG.jamdesk.app then return a 404. Your CNAME or proxy keeps working. Jamdesk checks your live domain before the toggle turns on. The subdomain serves again while your DNS is broken. Use password protection or JWT authentication to restrict who can read your docs. Custom domain only →

Build your whole API reference from a spec. Point a navigation tab at your OpenAPI file with "openapi": { "source": "/openapi/api.yaml", "generate": true }. Each build creates a page per operation, grouped in the sidebar by tag. Endpoint pages you already committed keep their slugs. Migrate one page at a time. A renamed path redirects from its old URL instead of returning a 404. Generated API pages →

Code samples follow the selected API server. A picker appears beside the endpoint URL when the spec lists more than one servers entry. Choosing a server updates the copy button, every code sample, and the playground request. Single-server endpoints are unchanged. API Playground →

Markdown in every OpenAPI description. Parameter, request-body, response, and schema descriptions now render tables, lists, links, code, and bold, like operation descriptions already did. OpenAPI Example →

Endpoint Markdown exports carry authentication. The .md version of an API reference page now ends with an ## Authentication section. It lists the schemes the operation needs: type, header name, bearer format, OAuth 2 scopes, and which combinations are valid. An agent can build a working request without opening your spec. Markdown Source →

Keep a page out of search without hiding it. Add search: false to the page's frontmatter. AI chat answers and the MCP server skip it too. The sidebar, sitemap, and llms.txt still list it. Use it for a superseded page you still want linked and indexed. Hidden and noindexed pages are now also left out of AI answers. Keep a page out of search only →

jamdesk validate flags ignored config. It names docs.json keys that Jamdesk accepts but never renders, such as asyncapi. It also catches api.mdx.server entries after the first. CLI overview →

Edit your docs right in the dashboard. The web editor is now available to everyone. It needs no setup. Open Editor in the sidebar to browse your connected repo, edit MDX with a live preview, and commit to your GitHub branch. Each commit starts a build automatically. Web Editor →

Fix build warnings with AI, from the dashboard. A Fix with AI banner now appears on a build that finishes with broken links or pages missing a description. It shows how many issues can be repaired. Open it to preview each proposed edit (rewritten anchors and suggested page descriptions). Apply the ones you approve. Jamdesk commits them to your GitHub branch and starts a new build. Anything it can't resolve unambiguously is listed separately for you to fix by hand. Fix with AI →

Unlimited team members. Every project on every plan now includes unlimited team members at no extra charge. The previous 10-member cap and per-seat pricing are gone.

Let trusted bots publish your docs. Automation accounts like Dependabot, Renovate, or a CMS publishing bot aren't Jamdesk members. Their pushes don't trigger a build by default. A build that turns one away now shows a one-click Authorize Bot Account button. Approve it to publish that account's pushes to your live site, like a team member's. Only project members can authorize an account. Review or revoke access anytime under Allowed automation accounts in your project's GitHub settings.

Your docs get an AI Score on every build. Jamdesk now scores how well AI agents can read your published docs after every build. The grade follows the open AFDocs standard. See your 0–100 score and letter grade in the dashboard, and watch the trend across builds. Every issue comes with a plain-language fix and a Copy prompt to fix button. The button hands the finding to your AI coding agent. Turn on Email team when score changes to get an email when a build meaningfully moves your score. AI Score →

Fix broken links automatically. One command now fixes broken internal-link warnings with an unambiguous target, such as typo'd anchors and cross-locale anchor drift. Preview planned changes with jamdesk fix --dry-run. Apply them with jamdesk fix. It only touches warnings where the correct anchor resolves to a real heading. Ambiguous cases are left for manual review. CLI overview →

Announce anything with a banner. Add a banner to your docs.json to pin a message bar to the top of every page. It sits above the header in your theme's accent color. Use links, bold, and italic inline. Set dismissible: true to give readers a close button. A closed banner stays closed until you change the message. Banner →

Show when each page was last updated. Set metadata.timestamp: true in your docs.json to add a "Last updated on June 15, 2026"-style line to every page footer. The date comes from the last Git commit that changed the page. It stays accurate on each build with no manual upkeep. Page Metadata →

Style your navigation icons. Sidebar, group, tab, anchor, and search icons now honor the style on an icon object ({ "name": "rocket", "style": "duotone" }) or a style prefix (duotone/rocket). Use light, thin, duotone, and the sharp family, not only solid. Icons →

Customize the search bar. Set your own placeholder text with search.prompt. Pick the quick links in the empty search panel with search.popularPages. Each link has a title, a page slug, and a Font Awesome icon. Search configuration →

Collect email signups with no embed required. Connect Resend, Mailchimp, Kit, Loops, beehiiv, Brevo, or SendGrid in Integrations → Email Signups. A Jamdesk-hosted form adds readers straight to your own audience. Your API key stays on our backend, never in your published site. Add the EmailSubscribe component to any page, or set placement: changelog to put a signup box on every changelog page. Email Signups →

Gate analytics behind cookie consent. Add an integrations.cookies key to your docs.json. Jamdesk then withholds every analytics and tracking script until a visitor consents. That covers Google Analytics, GTM, Plausible, Crisp, custom JavaScript, and Jamdesk's own built-in analytics. Consent is read from a localStorage flag your consent banner sets. You can also load an Osano or Termly banner from docs.json. A short bridge snippet flips the flag the moment a reader accepts. Scripts load with no page reload. Cookie Consent →

llms.txt, organized. Every site's llms.txt now follows the llmstxt.org structure. Your navigation tabs and groups become ## sections. AI agents see your docs the way your sidebar organizes them. Multilingual sites get one index per language. The root file lists your default language and links each translated index (for example /fr/llms.txt). Each index stays small enough that no agent truncates it. llms.txt →

Agents find your docs faster. Every page now carries an invisible, screen-reader-silent directive pointing AI agents at llms.txt and the .md version of the page. Every Markdown export opens with a blockquote linking the index. Agents that fetch your HTML no longer have to guess that a Markdown path exists. AI Overview →

Embed your changelog anywhere. Add a "What's new?" launcher to your own app with one <script> tag. It opens your Jamdesk changelog in a modal, with a per-visitor unread dot. Generate the snippet from Integrations → What's New widget. Tune the launcher mode, corner, modal size, and dot color with data- attributes. In your Jamdesk docs, the <Widget> MDX component adds the same live launcher to any page with one tag and no script. Embed Your Changelog →

Download your API specs as a zip. The AI Actions menu on API reference pages now has a Download API spec option. It bundles every OpenAPI spec your site references, local files and remote URLs, into one api-specs.zip. Multi-file specs keep their $ref folder structure. The download drops straight into Postman, a client generator, or your own tooling. AI Actions →

OpenAPI specs validated at build time. Every deploy now strictly validates the OpenAPI specs your docs.json references. A problem shows up as a non-fatal build warning instead of failing the build. Your docs still publish. You get the exact error (a YAML parse error with line and column, an unresolved $ref, or a duplicate operationId) by email and in the dashboard's build list. Locally, jamdesk dev still stops on an invalid spec. You catch it before pushing. CLI overview →

Ask AI straight from search. Type in search, then press ⌘/Ctrl+Enter or click Ask AI in the search footer. The question goes to the AI chat instead of opening a result. It is appended to your chat conversation. Plain Enter still jumps to the top result. AI Chat →

Copy answers and transcripts. Every AI chat answer has a copy button for its Markdown source. Copy the whole conversation as role-labeled Markdown with Copy transcript in the chat header. AI Chat →

Smarter chat auto-scroll. The chat follows a streaming answer only when you're already at the bottom. Scroll up to re-read an earlier reply. The chat stays put instead of yanking you down. Scroll back to the bottom to re-pin it.

Custom CSS in local preview (CLI). jamdesk dev applies your custom CSS the same way the published build does. Check styling before you deploy. Drop any .css file in your project root, such as style.css. Several files are combined alphabetically. The CSS loads on browser refresh. No docs.json entry is needed, matching how Mintlify includes root stylesheets. Custom CSS →

Custom social previews from frontmatter. Set any Open Graph or Twitter/X meta tag in a page's frontmatter: og:title, og:description, og:image, twitter:card, keywords, and the full metatag set. Use flat top-level keys or a nested seo: block. Per-page values override your docs.json defaults. SEO →

Hidden pages. Keep drafts, internal handbooks, or deprecated guides out of your sidebar and search results without deleting them. Add hidden: true to a page's frontmatter, or to a group or tab in docs.json. Hidden pages stay reachable by direct URL. They disappear from navigation, sitemap, on-site search, and AI context. They also get an automatic noindex tag. Add searchable: true alongside hidden for a hidden group whose pages still rank in search. Hidden pages →

Grid and windows decorations. Two new background patterns join the Jam theme's gradient default. Set background.decoration to "grid" for a subtle 24px dot grid, or "windows" for two Windows 11–style frosted spots in the upper corners. The gradient and the "none" flat fill still work as before. Background →

Background customization. A new background block in docs.json disables the Jam light-mode gradient, overrides the page color per mode, or tunes the gradient's color, size, position, and opacity. No custom CSS is needed. Background →

D2 Diagrams. A second diagram language joins Mermaid. Tag a fenced code block d2. Jamdesk renders it as a build-time SVG with light and dark themes baked in. The workflow matches Mermaid. D2 Diagrams →

Grouped search results. Search no longer repeats the same page for every section match. Hits group under their parent page in the search modal. Up to three sections show by default, with an inline expander for the rest. Snippet highlighting is unchanged.

Auto-detect docs.json on connect. Connecting a GitHub repo finds your docs.json wherever it lives. The connect flow scans the whole tree. It flags a Mintlify mint.json if it finds one instead. Monorepos and nested configs need no manual setup. Connecting GitHub →

docs.json location hints in the CLI. jamdesk validate, jamdesk dev, and jamdesk doctor report where your docs.json is, or where it should go, instead of a generic "not found" error. CLI overview →

Standards-compliant hreflang. Hreflang tags now emit valid BCP 47 codes. Locale folders like cn, jp, and ja-jp map to the codes search engines expect (zh, ja). Sitemap URLs are XML-escaped. Every localized page ranks in its own region instead of being treated as duplicate content. Languages →

PDF Export. Render your whole docs site to one PDF from Settings → PDF Exports in the dashboard. Paid plans only. Pick a locale per export on multi-language projects. Results are cached per commit. You get an email with a download link when rendering finishes.

Multi-language OpenAPI Specs. Endpoint pages render translated OpenAPI specs alongside translated MDX. Drop a <spec>.<lang>.<ext> file (e.g., openapi/api.fr.yaml) next to your source spec. Jamdesk uses it on that language's URLs. A missing language variant falls back to the English spec. Operation summaries and parameter, response, and schema descriptions are localized. Setup: Translating OpenAPI Specs.

Visibility Component. New <Visibility for="humans|agents"> component shows content only to human readers or only to AI agents, on the same page. Human-only blocks render in the browser but are stripped from .md exports and llms-full.txt. Agent-only blocks do the reverse. Agents requesting Accept: text/markdown on canonical URLs automatically get the agent view.

Password Protection, rebuilt. Lock your whole site behind a shared password, or gate a few pages and keep the rest public. Set auth.password.enabled: true for whole-site mode. For specific-pages mode, mark individual pages with private: true in frontmatter, or list them under auth.password.private. The Settings page in the dashboard walks you through setting, rotating, and revoking the password. Visitors see a branded unlock screen with your site's logo, primary color, and an optional hint you define in docs.json. Setup guide: Password Protection.

Automatic WebP Image Conversion. Jamdesk can convert your PNG and JPG images to WebP at build time. Converted files are usually 60-80% smaller than the originals with no visible quality loss. Pages load faster with no manual image processing. Opt in with images.convertToWebp: true in docs.json. Favicons, og:image, and twitter:image stay in their original format for social crawler compatibility. A new Optimizing images step shows live progress in the dashboard and CLI during each build. Automatic Image Conversion →

API Playground. Endpoint pages now have an interactive "Try it" button. Fill in parameters, watch code examples update in real time, and send live requests without leaving your docs. Enabled by default on API pages. Works with OpenAPI and MDX-authored endpoints.

Claude Code Plugin. Install the Jamdesk plugin for Claude Code to teach Claude MDX components, docs.json configuration, navigation patterns, and CLI commands. Two-step install from the plugin marketplace. Pairs with CLAUDE.md and the MCP server for AI-assisted doc writing.

Build Warnings for Missing Branding. Builds now warn when favicon or logo paths in docs.json reference files that don't exist in your project. Warnings appear in the dashboard build details and in the CLI via jamdesk dev and jamdesk validate. No email is sent. The warning is informational only.

YouTube Shorts. The <YouTube> component plays vertical Shorts with the short prop. It renders a centered 9:16 player with no black bars. Use <YouTube id="VIDEO_ID" short />.

AI Actions Menu. A dropdown on every page lets readers copy Markdown, open the page in ChatGPT/Claude/Perplexity, grab the MCP server config, or one-click install it in Cursor or VS Code. Enabled by default. Pick which options show up with contextual in docs.json.

Analytics. Cookie-free page analytics tracking views, traffic sources, and visitor trends with per-page breakdowns. No consent banner is needed. Overview: Analytics.

Integrations. Google Analytics 4, Google Tag Manager, Plausible Analytics, and Slack build notifications (Pro).

RSS Feed for Changelogs. Pages with rss: true in frontmatter now auto-generate a subscribable RSS feed. An RSS icon appears next to the page title. A feed.xml is built from your Update components during each build. Use the new date prop on Update for proper feed dates.

CLI Login & Deploy. jamdesk login authenticates via browser. jamdesk deploy packages your project and triggers a build from the terminal. No GitHub connection is required. The CLI respects .gitignore, warns about secret files, and streams build progress inline.

CLI Spellcheck. jamdesk spellcheck checks your documentation for spelling errors with 180+ built-in tech terms (English only). jamdesk spellcheck --fix launches an interactive mode to fix typos or add words to your ignore list.

Video Embeds. Embed .mp4 and .webm files directly in your docs. Drop them in a /videos directory and use markdown syntax (<Video src="/_jd/videos/demo.mp4?v=mvayckfq" title="Demo" />) or the <Video> component for autoplay, looping, and other controls.

Custom JavaScript. Add client-side scripts for chat widgets, analytics, or third-party integrations via styling.js in docs.json.

AI Chat. Built-in chat assistant on every docs site. Visitors ask questions and get answers with citation links back to source pages. Powered by Claude, enabled on all plans.

AI Integration. Every site generates llms.txt for LLM context windows, exposes raw Markdown at .md URLs, and includes an MCP server at /_mcp with searchDocs and getPage tools. Setup guides for Claude Code, Cursor, and Codex. Also: Writing with AI and Automated Updates.

CLI. jamdesk dev for local preview with hot reload, jamdesk validate for broken links, jamdesk migrate to convert from Mintlify/GitBook/Docusaurus, jamdesk doctor for setup issues. Install via npm, curl, or Homebrew. Full reference →

VS Code Extension. Start, stop, and restart the dev server from the VS Code status bar. No terminal is required.

Custom Domain TXT Verification. All custom domains now require a TXT record (_jamdesk.yourdomain.com) before routing activates. This prevents domain takeover on unclaimed subdomains. The TXT record appears in the dashboard setup flow for newly added domains. See the Custom Domains guide.

Multi-Language Support. Define separate navigation trees and content directories per locale. Readers switch languages from a dropdown in the top bar.

Search Analytics. What readers search for, which queries return nothing, and which results actually get clicked. Useful for finding content gaps.

Jamdesk launches. Write docs in MDX, push to GitHub, get a site on a global CDN. Builds finish in under 60 seconds.

MDX & Components. 20+ built-in components: tabs, accordions, steps, code groups, Mermaid diagrams, KaTeX math, and icons. Syntax highlighting with line numbers in code blocks. Build custom React components with Tailwind and hooks, and reuse content with snippets. Components Overview →

OpenAPI Documentation. Generate API reference pages from your OpenAPI spec via api.openapi in docs.json.

Deployment. Auto-deploy from GitHub on push with 10s debounce. Custom domains with automatic SSL, subpath hosting at /docs (Vercel, CloudFront, Cloudflare, nginx), and monorepo support.

Customization. Three themes (jam, nebula, pulsar) with custom colors, logos, and footer. Custom CSS for style overrides. Flexible navigation with tabs, groups, and icons. Redirects with exact and wildcard matching.

Search & SEO. Cmd+K full-text search, zero config. Sitemaps, OG images, and per-page meta out of the box.

docs.json Reference. Complete configuration reference for all settings and options.

Help Center. Account management, billing, and troubleshooting guides.


Stay Updated

Jamdesk Blog

Detailed announcements and tutorials

GitHub Releases

CLI release notes