The Web UI (`play.html`) and clickhouse.com both drop an embedded
`clickhouse-client` session down from the top of the page when `~` is pressed.
The documentation website now does the same: a terminal icon at the left of the
top navigation, before "Home", and the `~` key toggle a panel that embeds
`https://play.clickhouse.com/webterminal?user=play`, the playground terminal
that clickhouse.com connects to as well.
The panel drops down below the navigation bar, so the icon stays visible and
keeps working as the close button; `Escape` inside the terminal and dragging the
bottom edge all the way up close it too. Closing keeps the session alive, and
the panel is remembered across reloads (the top-level tabs navigate with
`window.location`), reopening with a fresh session. It is a desktop feature: the
icon lives in the desktop tab bar, and the panel closes when the window narrows
past the breakpoint that hides that bar.
Note for the deployment: the `Content-Security-Policy` served for
`clickhouse.com/docs` must list `https://play.clickhouse.com` in `frame-src`,
otherwise the browser blocks the iframe and the panel stays empty. That header
comes from the clickhouse.com edge, not from this repository.
Port the Galaxy analytics integration from the legacy Docusaurus site
(clickhouse-docs/src/lib/galaxy) to a Mintlify custom script. The script
tracks docs and knowledge-base page lifecycle events across SPA
navigation, batches them to the Galaxy API (disabled on localhost), and
carries UTM attribution plus the Galaxy visitor ID into ClickHouse Cloud
links.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix "LangFuse" to "Langfuse" in the navigation item, the landing-page
card, and the adopters list. Locale trees are left to the translation
pipeline.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace the inlined English navigation in docs.json with $ref includes of
the per-directory navigation.json fragments, one per menu item. The
fragments were regenerated from the current docs.json content, since they
had drifted from the live sidebar after the docs consolidation (docs.json
was authoritative; the fragments were an inert one-time import).
Nested fragments are referenced relative to their parent fragment:
products/cloud/navigation.json refs ../bring-your-own-cloud/navigation.json,
and integrations/language-clients/navigation.json refs the
python/go/java/csharp fragments. Locale entries already used
{"language": ..., "$ref": "./<locale>/docs.json"} and are unchanged, as
are the Home tab, the Ecosystem item, and href-only menu items.
Verified by re-resolving all refs (dirname-relative, sibling keys
preserved) and deep-comparing with the pre-conversion navigation: the
resolved English navigation is identical. docs.json shrinks from 4060 to
194 lines; 23 fragments rewritten.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix section index pages whose listing tables had drifted from the sidebar
(docs.json):
- Rewrite the stale `guides/clickhouse` overview (former "Advanced guides")
as one row per top-level sidebar entry.
- Remove listing rows that point at pages living in other sections
(Cloud reference, Tools, Concepts, AI/ML guides, core concepts, About).
- Add listing rows for sidebar pages that were missing (`ALTER`, dictionary
layouts, `SELECT` clauses, formats, window functions, functions overview,
delete operations, tools and utilities, native interfaces, Managing
ClickStack, chDB reference, data ingestion, data visualization).
- Link the previously unlinked object-storage rows on the ClickPipes home
page.
- Add `reference/formats/GeoJSON` and
`reference/functions/window-functions/ntile` to the sidebar: both pages
exist and are linked from their section index tables but were absent from
`docs.json`.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remove the top-of-page announcement banner from `docs/docs.json`. It
can be re-added later when there is a new announcement to surface.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The spec marks all ClickStack and Postgres operations with
x-badges: [{"name": "Beta"}] (as shown on the swagger page), so tag
those navigation groups with Mintlify's group-level tag field.
The spec also marks a subset of Service (8/25), Backup (4/8), and
Prometheus (2/4) operations as Beta; Mintlify has no per-endpoint badge
that docs.json can set (it ignores x-badges), so those would need the
API team to add x-mint: metadata to the operations in the spec.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Cloud API reference in the explorer was a single flat auto-populated
group. Mintlify's group display names (x-group) can't produce the
swagger page's grouping: it lives on tag objects inside the OpenAPI
document (which is the API team's hosted spec, not in this repo) and
only renames a single tag's group, it cannot combine several tags into
one group. Instead, use Mintlify's selective endpoints: the 'API
reference' group keeps openapi: https://api.clickhouse.cloud/v1 as the
inherited default spec and nested groups list each endpoint as a
'METHOD /path' page.
Groups mirror https://clickhouse.com/docs/cloud/manage/api/swagger:
Organization (+ Billing, User management, Role management), Service
(+ Backup), OpenAPI, Prometheus, ClickPipes, ClickStack, Postgres —
109 endpoints, every operation in the spec listed exactly once.
Note: newly added API endpoints no longer appear automatically; they
must be added to docs.json.
https://www.mintlify.com/docs/api-playground/openapi-setup
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Move the get-started/quickstarts/home entry to the top of the
"Get started" navigation group, above the "Introduction" group, in
docs.json and its eight locale mirrors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Move the get-started/quickstarts/home entry to the top of the
"Get started" navigation group, above the "Introduction" group, in
docs.json and its eight locale mirrors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mintlify renders a default "Raise issue" feedback link that opens a blank
issue (`issues/new?title=Issue on docs&body=Path: <page>`). Rewrite it
client-side to the repository's Documentation issue form, carrying the
current page path into the form's `page` field.
- `_site/customizations/raise-issue-link.js` finds Mintlify's default link
and repoints its `href` at
`issues/new?template=60_documentation-issue.yaml&page=<path>`. It uses a
`MutationObserver` because Mintlify is a SPA and re-renders the link on
navigation; the rewrite is idempotent and only touches the default link.
- `docs.json` registers the script.
- `60_documentation-issue.yaml` gains a `page` input (id `page`) that the
link pre-fills.
- `README.mdx` documents the script.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The `docs/images` tree is ~218 MB, dominated by ~2,000 screenshots. The PNGs
were already losslessly optimized (oxipng finds no further gains), so the only
lossless lever left is a more efficient container. AVIF is unsupported by
Mintlify, so convert static PNGs to lossless WebP (pixel-identical, universally
supported).
Encoded each PNG with `cwebp -lossless -q 100 -m 6`, keeping the WebP only when
it is smaller than the source (19 PNGs where WebP was larger are left as-is),
and rewrote every reference across English and all locale pages.
converted 2042 PNGs: 131.0 MB -> 92.5 MB (-29.4%)
images/ tree: 218 MB -> 179 MB
3737 text files updated; internal-link check passes with 0 errors
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>