feat(docs): add a capabilities matrix page generated from runtime facts
Summary
Adds website/docs/docs/capabilities.md: which commands each target supports ā iOS sim/physical, Android emulator/physical, Android TV/Fire OS, tvOS, Vega OS, HarmonyOS, macOS desktop/app, Linux, web, and Limrun, BrowserStack, AWS Device Farm, TestMu AI sessions. Identical targets merge into one column; each row links to the doc section that proves it.
Every cell is generated, not written: scripts/capability-matrix/ loads each platform/provider runtime against a stub host and a scripted provider wire, calls the same inspectFacts(device) the capabilities command answers from, and maps facts to commands through the registry rule (command-registry/fact-support, extracted from the capabilities inventory so both share one owner; it judges the declared uses given to it, so importing it adds no eagerly-loaded modules). Non-fact data (labels, limit notes, doc links) lives in annotations.ts keyed by command id, so removing or renaming a capability fails the gate. Host seams that decide cells fail closed: a runtime that starts reading a new seam fails the run rather than reading a fabricated answer.
Also: check:capabilities-matrix in the docs lane (regenerate-and-diff + repo-guard with negative proofs), sidebar + README links, llms.txt coverage comes from the sidebar.
Follow-ups, not blocked here:
<link rel="alternate" type="text/markdown">per page would need a@callstack/rspress-presetchange (.mdmirrors already ship andllms.txtlists the page).- The release lane never rewrites the page's version/date stamp, so it silently ages; the drift mask hides that by design. A release-time
generate:capabilities --writewould fix it. - HarmonyOS facts mark
perfframes/memory-snapshot available whilecommands.mdsays those report unavailable inside the run; a row note now says a Yes means the command runs, not every metric. Deciding the HarmonyOS facts themselves is separate work.
Validation
- Head
cbd21be5d4(baseed798f9cfe):pnpm check:affected --run --head cbd21be5d4ā all runnable checks passed,exactCommit=true(receipt.tmp/validation/run-QeHekO). - Docs-only page; runtime device lanes are GitHub-authoritative at the PR head.
- Guard proven to fail: flipped cell, dropped/renamed annotation command, and a synthetic split row each turn it red; the version/date mask alone stays quiet.
š¤ Generated with Claude Code