Skip to content

editing

Content guide

Where hero copy, features, docs, and desk notes are edited.

Authored product copy is TypeScript, so a change is reviewable.

FileWhat it feeds
src/content/site.tsName, warning, store link, listing facts, contract facts, the store/release/status-doc tracks and the unverified block, nav
src/content/features.tsFeature groups and status badges
src/content/routes.tsThe 14-route table
src/content/security.tsPrinciples, gaps, signing notes
src/content/architecture.tsFive-layer flow and contract breaks
src/content/ai.tsMCP policy tables
src/content/roadmap.tsNumbered open and blocked steps
src/content/changelog.tsAuthored release history
src/content/docs.tsDocs hub markdown
src/content/smoke.tsSmoke checklist seed and open doc slots

Desk

/desk writes Postgres: field notes and smoke-check marks. The gate requires an explicit DESK_PASSWORD; there is no default password. Without both DATABASE_URL and DESK_PASSWORD, the desk remains read-only. The gate does not protect a wallet. It only slows casual edits to the ledger.

Do not put secrets in a desk note. Notes are rendered publicly on the changelog.

The canonical install URL is exported as chromeStoreUrl from src/content/site.ts. Header, homepage, install page, footer, JSON-LD, llms files, and /api/catalog all read that constant. If the listing moves, change it once.

Release tracks

site.ts exports five things that must not be edited as if they were one:

  • site.listing — only ever what the live Chrome Web Store page says. Re-read the page before touching it and record the date in verifiedOn. A submission, a merge, and a GitHub release are all forbidden from writing here; on 2026-10-04 a changed public page did.
  • storeStatus — the package in front of the store and the date it was published. state runs upload-pending → in-review → published, and reaching published is the only thing that licenses an edit to site.listing.
  • site.contract — the code facts on the extension's main branch, with auditedCommit and auditedOn deliberately lagging while the status document does.
  • release — the merged, tagged source release, with its PR number, merge commit, and tag.
  • auditedDoc and unverified — what the repository still claims about itself, and what nobody has checked. Both exist so that "shipped" is never allowed to read as "verified".

releaseTracks renders the first three on the status page and the homepage. When two of them converge — as the store and the source did on 2026-10-04 — say so explicitly rather than deleting a track; the convergence is the news.