Skip to content

Add a per-version compatibility page to the API reference - #70

Merged
cb1kenobi merged 1 commit into
mainfrom
chris/ti-94-sdk-compatibility-page
Sep 17, 2026
Merged

cb1kenobi merged 1 commit into
mainfrom
chris/ti-94-sdk-compatibility-page

Conversation

@cb1kenobi

Copy link
Copy Markdown
Member

Adds a Compatibility link beside "Release notes" on every Titanium API entry page (/docs/sdk, /docs/sdk/13.4.0, ...), pointing at a generated /docs/sdk/<version>/compatibility.

Closes TI-94.

Why

/docs/reference/compatibility (TI-75) already generates this data, but across every release at once. That is the right shape for "when did Java 17 become the floor" and the wrong one for a reader already standing on /docs/sdk/13.4.0 — they picked a release and want its column. Until now the reference linked to the compatibility data not at all.

tidev/titanium-docs#269 is the argument for generating it rather than writing it: that PR hand-patched the legacy matrix to say Android API 36 for 13.4.0+, a fact registry/sdk/13.4.0/toolchain.json already recorded. Every number the old matrix carries by hand is captured per release by scripts/capture-toolchain.ts.

What the page shows

Per release, read out of its own toolchain.json:

Section Rows
Your machine Node.js, Titanium CLI
Android Java, Android SDK, build tools, platform tools, tools, NDK
iOS Xcode, iOS SDK
What it builds for min Android API, compiles against API, min iOS, min watchOS

Ranges are printed as the SDK declares them, which is the string ti info prints beside "Supported:". ti info is offered at the top of the page, ahead of the tables: it reads the same declarations and reports them against the machine the reader is actually sitting at.

Notes on the shape

  • Nothing restates a range. compat.ts turns one toolchain.json into rows, and minimumCli decides the CLI floor for this page and the cross-release one alike. The generated partials are byte-identical (pnpm docs:compat:check passes untouched).
  • Three sections, not one table. The old matrix ran Node, Java, Xcode and the Android SDK down a single column, which reads as one checklist when it is really three — a Linux reader has no Xcode to compare against. An empty section is dropped rather than rendering a heading over nothing.
  • Java leads the Android section rather than trailing it, where the SDK's own package.json authoring order would put it.
  • An unknown vendor key still gets a row. ToolchainSchema keeps vendor loose because the key set is the SDK's to change; a release adding a component appears rather than vanishing until someone edits a list.
  • Every compiled version has a capture, main included, so the pages prerender with dynamicParams = false and the link is unconditional where the release-notes link is gated.
  • Served but not indexed outside the reference's own cutoff (isIndexedVersion): twenty near-identical tables are twenty ways to land on the wrong one. The sitemap lists only the indexed set, so it cannot contradict the page's own noindex.

Wiring

links.ts resolves the new segment (so a post or guide linking to it is checked rather than reported dead), sitemap.ts lists the indexed ones, and ia.test.ts now holds both release-notes and compatibility reserved against type names.

Checks

pnpm check, pnpm lint, pnpm test (638 pass), pnpm check:docs, pnpm check:em-dash, pnpm docs:compat:check all pass. Pages verified rendering at 13.4.1, 13.4.0, 12.5.0 and main; uncaptured versions 404.

🤖 Generated with Claude Code

The Titanium API entry pages gained a "Compatibility" link beside "Release
notes", pointing at /docs/sdk/<version>/compatibility: what that one release
needs from your machine, and what it builds for.

/docs/reference/compatibility (TI-75) already generated this data, but across
every release at once. That is the right shape for "when did Java 17 become the
floor" and the wrong one for a reader already standing on /docs/sdk/13.4.0, who
has picked a release and wants its column. Until now the reference linked to the
compatibility data not at all.

tidev/titanium-docs#269 is the argument for generating it rather than writing
it: that PR hand-patched the legacy matrix to say Android API 36 for 13.4.0+, a
fact registry/sdk/13.4.0/toolchain.json already recorded. Every number the old
matrix carries by hand is captured per release by scripts/capture-toolchain.ts.

Nothing here restates a range. compat.ts turns one toolchain.json into rows, and
minimumCli decides the CLI floor for this page and the cross-release one alike;
the generated partials are byte-identical. Ranges are printed as the SDK
declares them, which is the string `ti info` prints beside "Supported:".

Three sections rather than one table: the old matrix ran Node, Java, Xcode and
the Android SDK down a single column, which reads as one checklist when it is
really three - a Linux reader has no Xcode to compare against. Java leads the
Android section rather than trailing it, where the SDK's own package.json order
would put it. A vendor key this repository has never heard of still gets a row,
since the key set is the SDK's to change.

All 20 compiled versions carry a capture, main included, so the pages are
prerendered with dynamicParams off and the link is unconditional where the
release-notes link is gated. Older versions are served but not indexed, on the
same reasoning as the reference itself: twenty near-identical tables are twenty
ways to land on the wrong one.

TI-94

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 17, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
titaniumsdk.com Ready Ready Preview Sep 17, 2026 4:12pm UTC

@cb1kenobi
cb1kenobi merged commit 3c2d427 into main Sep 17, 2026
7 checks passed
@cb1kenobi
cb1kenobi deleted the chris/ti-94-sdk-compatibility-page branch September 17, 2026 16:25

This branch was successfully deployed

1 active deployment
Preview — 41720506 Deployed Sep 17, 2026 by vercel[bot]
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