Skip to content

feat: compose saved editions into one versioned site - #381

Draft
brendanclement wants to merge 5 commits into
brendan/release-records-and-editions-r2from
brendan/compose-versioned-site
Draft

brendanclement wants to merge 5 commits into
brendan/release-records-and-editions-r2from
brendan/compose-versioned-site

Conversation

@brendanclement

@brendanclement brendanclement commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Problem

We can save documentation for a release, but those editions still need to become one website that readers can browse by product and version.

Solution

Add make compose to build that site using Mintlify's product and version selectors. Each edition keeps its pages, badges and drafts, and gets an About this version page. Links and assets stay within the selected edition; old unversioned links go to the preferred Enterprise edition.

compose.yaml chooses the preferred editions. Adding a release does not change that choice automatically. The composer checks saved-edition checksums and rejects unsafe links, redirect loops and unsupported link syntax.

This is PR 2 of 4, stacked on #379. It adds no real editions or publication workflow. PR 3 will connect the composed site to staging and approved production promotion; PR 4 will prepare editions from qualified releases.

Validation

  • 332 tests pass locally.
  • Five sample editions compose successfully. Existing sample output is unchanged by the latest link fixes.
  • Local Mint validation, links, anchors and redirects passed on the earlier byte-identical sample output.
  • Dedicated hosted preview: 49 HTTP checks pass, covering sampled edition pages, Markdown, images, redirects, downloads and draft exclusion. Nine existing tutorial downloads also match their source files.
  • Desktop and mobile version switching work. Both search samples stayed in the selected edition. Three assistant questions returned the expected values and cited the right versions (OSS 0.98, Enterprise 8.1 and 8.2).
  • Test versions and compatibility values are synthetic. These are sampled hosted checks, not a guarantee of every search or assistant answer. Production and shared staging are unchanged.

Mintlify switches to the preferred landing page when changing products. Opening its assistant sidebar can still truncate the product label at narrower widths. The preview uses JSON for its test download because the site's current plan did not serve TXT.

The Assemble workflow currently runs only for PRs targeting main, so this stacked draft does not get that hosted check yet.

`scripts/compose.py`, run with `make compose`, publishes every saved
edition as saved under `/<product>/v<major>-<minor>-<patch>/`, with
Mintlify's own product and version selectors, and adds an "About this
version" page made from its record. Nothing is rebuilt, and an edition
that does not match its record is not composed.

`compose.yaml` orders the products, Enterprise first, and names each
product's preferred edition, which only that file changes. Links,
images and imports are pointed into their own edition; a link that
would leave it stops composition. Code is left as written, and a file
an example downloads stays at its address, the same for every edition.
Each edition keeps its redirects and drafts. Unversioned paths redirect,
temporarily, to the same page of the default edition, and paths it
lacks are listed rather than redirected.
README.md says how to compose, check and preview the site, how links,
downloads, site-wide files, redirects and drafts are handled, and where
the preferred editions are set. VERSIONING.md marks the step in place,
though nothing publishes its site yet.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant