diff --git a/AGENTS.md b/AGENTS.md
index 52e3022..1586a1f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -106,22 +106,36 @@ same change: that note's table, and the versions in the install lines of `quicks
version is where breaking changes go. When the SDK tags `vX.Y.0`:
1. `npm run docusaurus docs:version X.Y`. It copies `docs/` into `versioned_docs/version-X.Y/`
- and writes `versioned_sidebars/` and `versions.json`.
-2. In the docs preset in `docusaurus.config.js`, set `lastVersion: 'X.Y'` so readers land on the
- release, and label `versions.current` as `Next (unreleased)`. With `routeBasePath: '/'` the
- release is served at `/` and `master` at `/next/`.
+ and writes `versioned_sidebars/` and `versions.json`. Cut it from an up-to-date `master`, as
+ the last step before the pull request: every merge into `docs/` makes an uncut snapshot stale,
+ and there is no refresh command, only delete and cut again.
+2. In the docs preset in `docusaurus.config.js`, add `versions: { current: { label: 'Next
+ (unreleased)' } }`. Do **not** set `lastVersion`: it defaults to the newest name in
+ `versions.json`, so each later cut moves readers on its own. With `routeBasePath: '/'` the
+ release is then served at `/` and `master` at `/next/`, both by default.
3. Replace the hardcoded `v1.0` navbar badge with `{ type: 'docsVersionDropdown', position: 'right' }`.
+ Not before the first snapshot: with none, the dropdown renders as a lone link labelled after
+ the development version, which reads as a release.
4. Rewrite the quick start note in `docs/`: from the first snapshot on, `master` is the "Next"
- version and the note says so.
+ version and the note says so. Give the snapshot's own copy of the note the versions that
+ shipped, and the same for the install lines it froze.
5. Build, and check that search and the `/next/` pages both work before `sync-docs` publishes it.
+ Each version gets its own index (`build/search-index.json`, `build/next/search-index.json`);
+ search from a `/next/` page and confirm the hit stays under `/next/`.
+
+Snapshots are cut for released versions only. A version the SDK has not tagged never gets one,
+so the version a reader picks in the navbar is always one they can install.
A snapshot is changed only where it was wrong for its own release, a patch release that changes
behaviour included. A new feature goes into `docs/`, never back into a snapshot.
**Where this stands.** No snapshot exists yet, so the published site describes `main`, and a
-reader on 0.2.0 can meet calls their version lacks; the quick start note warns them. Nothing
-checks these rules automatically yet. The doc tests being added under `doctests/` are meant to,
-by building against pinned SDK and platform commits.
+reader on 0.2.0 can meet calls their version lacks; the quick start note warns them. The steps
+above are all that is left to run, and `editCurrentVersion` is already set so a snapshot's "Edit
+this page" will point at `docs/`. The first cut waits on the first tagged release; the SDK has
+tagged only `v0.2.0`, and bumped `main` past it without releasing, so no number in between gets a
+snapshot. Nothing checks these rules automatically yet. The doc tests being added under
+`doctests/` are meant to, by building against pinned SDK and platform commits.
## Every example has to be runnable
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 6c5c3a6..0a38d58 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -28,10 +28,21 @@ const config = {
docs: {
sidebarPath: './sidebars.js',
routeBasePath: '/', // docs at site root, GitBook-style
+ // No `versions` block and no snapshot yet: `docs/` is the only version
+ // and is served at '/'. AGENTS.md has the three lines to add when the
+ // first release is tagged. Leave `lastVersion` out then too — it
+ // defaults to the newest name in versions.json, so cutting a snapshot
+ // moves readers onto it with nothing here to keep in step.
+
// Adds "Edit this page" to every doc. Docusaurus appends the file's
// path relative to this site directory. Note the branch here is
// master, unlike datahub-docs which is main.
editUrl: 'https://github.com/IntelliStream-DataHub/datahub-sdk-docs/edit/master/',
+ // Send every "Edit this page" to docs/, including from a snapshot once
+ // one exists: a snapshot takes corrections for its own release, but a
+ // new feature belongs in docs/, and the stock link would invite the
+ // wrong edit. No effect until the first snapshot.
+ editCurrentVersion: true,
},
blog: false, // SDK docs site — no blog
theme: { customCss: './src/css/custom.css' },
@@ -77,8 +88,10 @@ const config = {
// which pushState's the URL and then renders this site's own 404 —
// the href looks right in the HTML but the click never leaves the SPA.
{ type: 'html', position: 'right', value: 'Platform documentation' },
- // Simple version indicator. When the docs start tracking multiple releases,
- // replace this with a docsVersionDropdown via `npm run docusaurus docs:version`.
+ // The site's own version, not an SDK version. Swap it for
+ // { type: 'docsVersionDropdown', position: 'right' } once a snapshot
+ // exists — with none, the dropdown renders as a lone link labelled
+ // after the development version, which reads as a release.
{ type: 'html', position: 'right', value: 'v1.0' },
// This site's own repo, so "GitHub" is unambiguous. The old link went
// to the SDK code on Gitea; if a code link is wanted too it needs its