- docs.js (new): sync sidebar .active pill with location.hash on load, click, and hashchange so in-page anchor links (Architecture, Discount codes, Backups, etc.) update the pill instead of leaving it stuck on whatever was statically marked
- Wire docs.js into every page just before </body>
- license.html: sidebar Project/Operate order matches every other page (Project first)
- pricing.html: rewritten to use the standard docs layout (full sidebar groups, prose main, breadcrumb) instead of a one-off shell that felt detached from the rest of the docs
- Reference section: remove Admin API + SDKs anchor links (they masqueraded as separate pages but just scrolled within integrate.html); Wire format stands alone
- Pricing copy: Zaprite reframed as "expanded payment options including card payment capabilities", "shipping in v0.3" removed (it shipped), Patron rephrased as perpetual (never expires or renews)
- "Toggling inactive" cap-evasion language replaced — admin UI exposes delete only, no soft-disable affordance for products
- ~70 em-dashes removed across 8 pages using a small pattern set (elaboration→period, list-intro→colon, tight clarification→comma, parentheticals→parens). Decorative stamp ornaments and references to actual third-party UI labels are kept verbatim.
- New license.html: plain-English summary of the Keysat
Source-Available License 1.0 (daemon) and MIT (SDKs +
template). TL;DR table, "what you can do / can't do" lists,
contribution-flow explainer, links to each repo's LICENSE
file on GitHub. Anchor sections + on-this-page TOC.
- New "Project" sidebar group (Pricing + License) inserted
above the existing Operate group on every docs page so the
/license page is discoverable from anywhere in the docs.
Nine wording fixes:
- Hero lede: drop "Bitcoin payment via BTCPay" → "payment via
BTCPay" (matches landing-page de-emphasis); split the dense
one-paragraph lede into two.
- Products: "price in sats" → "price (sats / USD / EUR)";
introduce the entitlements catalog concept.
- Policies table: add is_recurring + renewal_period_days,
marketing_bullets, hidden_entitlements. Fix "default slug is
canonical" myth — multi-tier ladders (Basic / Pro / Max) are
first-class and the buy page renders a tier picker for products
with 2+ public policies. Note tier_rank + drag-and-drop ordering.
Split "private policies" out as a paragraph.
- Discounts: add set_price as a 4th kind. Note discount_currency
on fixed-amount codes. Add multi-policy scope. Add featured
/ launch-special section (ribbon, auto-apply, pre-filled input).
- Revocation: "v0.2 will ship recurring renewals" → past-tense.
Recurring is shipped.
- New "Operator tiers" section: explains Keysat self-licenses
(Creator / Pro / Patron), notes caps are enforce-on-create
(existing rows grandfathered), and lists four canonical sources
for the live tier list (keysat.xyz, pricing.html, the public
/v1/products/keysat/policies endpoint, the admin /v1/admin/tier
endpoint). "As of this writing" framing for the current cap
values so they don't go stale silently.
- TOC: add #operator-tiers anchor.
Pricing.html, install.html, integrate.html, wire-format.html,
operate.html — not touched; this is the introduction page only.
A separate pass should audit those too.
Ports the in-repo KEYSAT_AGENT_GUIDE.md into the docs site as a
first-class page rather than linking out to a raw markdown file on
GitHub. The page covers authentication, scoped API keys, OpenAPI
discovery, error envelope conventions, common workflows (issue /
revoke / find / cancel / change-tier / free-machine), webhook
event types + signature verification, robust-agent patterns, a
"comp-license-via-email" recipe, and the operator-only
operations that aren't exposed to any scoped key.
Sidebar gains an "Agent integration" entry under Get started on
every page (index, install, integrate, wire-format, operate, agent
itself). Docs index "These docs cover" + "Where to next" grids
each gain a third card pointing at the agent guide so it's
discoverable from the introduction page even for visitors who
don't scan the sidebar.
The left sidebar already covers Install / Integrate / Wire format /
Operate across its four groups (Get started, Concepts, Reference,
Operate). The top-right nav duplicated those links one level up. On
mobile it was already hidden via @media rule, so the sidebar was
always the canonical navigation. Now it's the only navigation —
cleaner topbar, no duplication.
Standard docs-site convention: top-left brand goes to the marketing
home, the 'Docs' badge next to it signals you're in the docs section.
The separate 'Marketing' nav item is no longer needed once the brand
itself handles that link.