From 7bfe37700bcc4b85a5873bf499e76dc11cb4f99f Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Thu, 2 Jul 2026 16:54:13 -0700 Subject: [PATCH 1/4] docs(ui): point maintainer CTAs and GitHub App docs at self-hosting as the default path Self-hosting is now the only way to get real, live PR reviews -- the shared "gittensory" GitHub App + brokered relay is private/managed-beta only (#1939). Docs and CTAs across the site still presented installing the shared App as the primary/first onboarding step, which doesn't work for the general public. - Homepage hero and closing CTAs, /maintainers primary + closing CTAs now point at self-hosting setup instead of the shared App install URL. - docs/github-app.tsx now leads with self-hosting as the recommended path and reframes the shared App as private/managed-beta only; the rest of the page (settings, gate modes, config-as-code) is unchanged since it applies identically to either App. - docs/maintainer-workflow.tsx, docs/maintainer-install-trust.tsx, docs/beta-onboarding.tsx, docs/miner-workflow.tsx, docs/index.tsx: CTAs and "next step" links now point to self-hosting first. - docs-nav.tsx: removed the "Hosted app" subgroup label (implied hosted was the default); the same three pages now live in a "GitHub App & managed beta" subgroup listed after the self-hosting subgroups instead of before them. --- .../src/components/site/docs-nav.tsx | 16 +++++----- .../src/routes/docs.beta-onboarding.tsx | 12 ++++--- .../src/routes/docs.github-app.tsx | 32 +++++++++++++------ apps/gittensory-ui/src/routes/docs.index.tsx | 4 +-- .../routes/docs.maintainer-install-trust.tsx | 4 ++- .../src/routes/docs.maintainer-workflow.tsx | 12 ++++--- .../src/routes/docs.miner-workflow.tsx | 2 +- apps/gittensory-ui/src/routes/index.tsx | 13 +++----- apps/gittensory-ui/src/routes/maintainers.tsx | 10 +++--- 9 files changed, 59 insertions(+), 46 deletions(-) diff --git a/apps/gittensory-ui/src/components/site/docs-nav.tsx b/apps/gittensory-ui/src/components/site/docs-nav.tsx index 80c4eb76c1..6ddd410859 100644 --- a/apps/gittensory-ui/src/components/site/docs-nav.tsx +++ b/apps/gittensory-ui/src/components/site/docs-nav.tsx @@ -27,14 +27,6 @@ export const docsNav: DocsGroup[] = [ { title: "Maintainers", subgroups: [ - { - title: "Hosted app", - items: [ - { to: "/docs/maintainer-workflow", label: "Maintainer workflow" }, - { to: "/docs/github-app", label: "GitHub App" }, - { to: "/docs/maintainer-install-trust", label: "Maintainer install & trust" }, - ], - }, { title: "Self-hosting: setup", items: [ @@ -68,6 +60,14 @@ export const docsNav: DocsGroup[] = [ { to: "/docs/self-hosting-security", label: "Security" }, ], }, + { + title: "GitHub App & managed beta", + items: [ + { to: "/docs/github-app", label: "GitHub App configuration" }, + { to: "/docs/maintainer-workflow", label: "Maintainer workflow" }, + { to: "/docs/maintainer-install-trust", label: "Maintainer install & trust" }, + ], + }, ], }, { diff --git a/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx b/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx index 29ca62d67c..e7c4ef0df6 100644 --- a/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx +++ b/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx @@ -107,13 +107,14 @@ gittensory-mcp preflight --login your-login --json`}

Maintainer journey

- Maintainers install the GitHub App, configure per-repo policy, preview what could appear on - a confirmed-miner PR, then pull context on demand. + Maintainers self-host the review stack and install a GitHub App, configure per-repo policy, + preview what could appear on a confirmed-miner PR, then pull context on demand.

  1. - Install the GitHub App. Choose repositories and approve permissions — - default posture is silence. Start with the{" "} + Self-host, then install the GitHub App. Choose repositories and approve + permissions — default posture is silence. Start with{" "} + self-hosting setup, then the{" "} GitHub App first-10-minutes checklist.
  2. @@ -241,7 +242,8 @@ GET /v1/readiness`} Miner workflow
  3. - Maintainers: GitHub App →{" "} + Maintainers: Self-hosting →{" "} + GitHub App →{" "} Maintainer workflow
  4. diff --git a/apps/gittensory-ui/src/routes/docs.github-app.tsx b/apps/gittensory-ui/src/routes/docs.github-app.tsx index 3e491785c8..7a4d5c0924 100644 --- a/apps/gittensory-ui/src/routes/docs.github-app.tsx +++ b/apps/gittensory-ui/src/routes/docs.github-app.tsx @@ -12,13 +12,13 @@ export const Route = createFileRoute("/docs/github-app")({ { name: "description", content: - "Install the Gittensory GitHub App so the gittensory app reviews your pull requests — the Gittensory Orb Review Agent check plus a review comment posted as gittensory[bot]. Choose repos, configure sticky PR panels, advisory checks, and optional review-agent enforcement.", + "How the Gittensory GitHub App reviews pull requests once installed — self-hosted (recommended) or via the private managed-beta shared app. The Gittensory Orb Review Agent check plus a review comment posted as gittensory[bot]. Choose repos, configure sticky PR panels, advisory checks, and optional review-agent enforcement.", }, { property: "og:title", content: "GitHub App setup — Gittensory docs" }, { property: "og:description", content: - "Install the Gittensory GitHub App so the gittensory app reviews your pull requests — the Gittensory Orb Review Agent check plus a review comment posted as gittensory[bot]. Choose repos, configure sticky PR panels, advisory checks, and optional review-agent enforcement.", + "How the Gittensory GitHub App reviews pull requests once installed — self-hosted (recommended) or via the private managed-beta shared app. Choose repos, configure sticky PR panels, advisory checks, and optional review-agent enforcement.", }, { property: "og:url", content: "/docs/github-app" }, ], @@ -32,20 +32,30 @@ function GithubApp() {

    - Once installed, the gittensory app reviews every pull request on the repos - you select. Each review produces two surfaces: the{" "} - Gittensory Orb Review Agent check run (and the advisory{" "} + Once installed, a Gittensory GitHub App reviews every pull request on the + repos you select — whether that's your own self-hosted App (recommended; see{" "} + self-hosting setup) or, for private + managed-beta operators, the shared gittensory App below. Each review produces + two surfaces: the Gittensory Orb Review Agent check run (and the advisory{" "} Gittensory Context check), and a single review comment posted by{" "} gittensory[bot] that updates in place as the PR evolves. Everything on this - page configures that review. + page configures that review, and applies identically whichever App you install.

    Install

    - The hosted deployment uses the GitHub App slug gittensory. Start from{" "} + Self-hosting is the recommended, default path. Run the review stack + yourself, then install your own GitHub App on exactly the repos you choose using the + self-host setup wizard — see{" "} + self-hosting setup. +

    +

    + The shared gittensory App is private / managed-beta only — it + is not open for general public install. If you've been invited into the managed beta, start + from{" "} the GitHub App install flow @@ -332,11 +342,13 @@ GITTENSORY_REVIEW_REPOS="JSONbored/gittensory"`}

    If the install route changes, check the deployed GITHUB_APP_SLUG before - publishing setup copy. For the hosted app, the expected slug is gittensory. + publishing setup copy. Self-hosted deployments use whatever slug you chose during setup; for + the shared managed-beta app the expected slug is gittensory.

    - New maintainers should continue with{" "} + New maintainers should start with{" "} + self-hosting setup, then continue with{" "} Maintainer workflow or the{" "} beta onboarding checklist after the health endpoint reports clean permissions and events. diff --git a/apps/gittensory-ui/src/routes/docs.index.tsx b/apps/gittensory-ui/src/routes/docs.index.tsx index 440fb203b3..f030bf1632 100644 --- a/apps/gittensory-ui/src/routes/docs.index.tsx +++ b/apps/gittensory-ui/src/routes/docs.index.tsx @@ -70,10 +70,10 @@ const AUDIENCES: Audience[] = [ description: "Install, tune, or self-host the review system for your repos.", primary: { to: "/docs/beta-onboarding", label: "Beta onboarding" }, links: [ + { to: "/docs/maintainer-self-hosting", label: "Self-host reviews" }, { to: "/docs/maintainer-install-trust", label: "Install & trust guide" }, - { to: "/docs/github-app", label: "Install the GitHub App" }, + { to: "/docs/github-app", label: "GitHub App configuration" }, { to: "/docs/maintainer-workflow", label: "Maintainer workflow" }, - { to: "/docs/maintainer-self-hosting", label: "Self-host reviews" }, { to: "/docs/self-hosting-rees-analyzers", label: "REES analyzers" }, { to: "/docs/upstream-drift", label: "Upstream drift" }, { to: "/docs/ai-summaries", label: "AI summaries policy" }, diff --git a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx index d266c89885..fd837eac59 100644 --- a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx +++ b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx @@ -43,7 +43,9 @@ function MaintainerInstallTrust() {

    Install the GitHub App

    - Start from GitHub App setup, then keep the first rollout + Start from self-hosting setup (the + recommended, default path — you install your own App) or{" "} + GitHub App configuration, then keep the first rollout narrow until the repo owner has verified permissions, webhook delivery, and public copy.

      diff --git a/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx b/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx index 06fd1b8389..7e9b85d3b6 100644 --- a/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx +++ b/apps/gittensory-ui/src/routes/docs.maintainer-workflow.tsx @@ -114,7 +114,7 @@ GET /v1/repos/:owner/:repo/registration-readiness`} ), nextStep: { miner: { label: "PR packet format", to: "/docs/miner-workflow" }, - maintainer: { label: "Install the GitHub App", to: "/docs/github-app" }, + maintainer: { label: "Self-host reviews", to: "/docs/maintainer-self-hosting" }, }, }, ]; @@ -131,15 +131,17 @@ GET /v1/repos/:owner/:repo/registration-readiness`} the contributor is doing privately via MCP at the same point.

      - New installations should start with GitHub App setup: - install on one repo, verify installation health, preview the public panel, then decide - whether Gittensory Orb Review Agent should become a required check. + New installations should start with{" "} + self-hosting setup, then{" "} + GitHub App configuration: install on one repo, verify + installation health, preview the public panel, then decide whether{" "} + Gittensory Orb Review Agent should become a required check.

      On-demand commands

      diff --git a/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx b/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx index 6c540361b4..c33ca334c2 100644 --- a/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx +++ b/apps/gittensory-ui/src/routes/docs.miner-workflow.tsx @@ -103,7 +103,7 @@ function MinerWorkflow() { ), nextStep: { miner: { label: "Set up your MCP client", to: "/docs/mcp-clients" }, - maintainer: { label: "Install the GitHub App", to: "/docs/github-app" }, + maintainer: { label: "Self-host reviews", to: "/docs/maintainer-self-hosting" }, }, }, ]; diff --git a/apps/gittensory-ui/src/routes/index.tsx b/apps/gittensory-ui/src/routes/index.tsx index c8b0f1cbba..7b433c36fc 100644 --- a/apps/gittensory-ui/src/routes/index.tsx +++ b/apps/gittensory-ui/src/routes/index.tsx @@ -14,9 +14,6 @@ import { TrustStrip } from "@/components/site/trust-strip"; import { describeApiStatus, pingHealth, useApiStatus } from "@/lib/api/status"; import { MCP_PACKAGE_NAME, getLatestMcpVersion, useMcpPackageMetadata } from "@/lib/mcp-package"; -/** Canonical GitHub App install URL (app slug `gittensory`) — dead-simple one-click maintainer onboarding. */ -const GITHUB_APP_INSTALL_URL = "https://github.com/apps/gittensory/installations/new"; - export const Route = createFileRoute("/")({ head: () => ({ meta: [ @@ -80,14 +77,12 @@ function Hero() { Plan better work, preflight branches, and keep maintainer review surfaces quiet.

      - - Install the GitHub App → - + Self-host reviews → +

      - Install Gittensory on a repo and your review surface stays calm. No always-on check + Self-host Gittensory on a repo and your review surface stays calm. No always-on check runs. No public scoring. You opt into confirmed-miner context, packets, and diagnostics with explicit commands.

      - Install the GitHub App + Self-host reviews - Install the GitHub App + Self-host reviews
      From 7995f37ea6e5952c935e11f7ddc9e27f4a80854d Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Thu, 2 Jul 2026 17:07:51 -0700 Subject: [PATCH 2/4] docs(ui): fix self-hosted App permission mismatch, apply gate review nits The new "applies identically whichever App you install" claim on docs/github-app.tsx was wrong for the install/permission steps: a self-hosted direct App needs Pull requests: write and mandatory Checks: write (per docs/self-hosting-github-app.tsx), while this page's install checklist -- written for the shared managed-beta App -- only asks for Pull requests: read and optional Checks: write. A self-hosted maintainer following the new self-host-first CTA could create an under-scoped App. - Narrow the "applies identically" claim to the review-behavior sections only. - Point self-hosted installs at the authoritative self-hosting-github-app checklist instead of the shared-App one, with a callout on the exact permission delta. - Apply the review's remaining nits: rename the page to "GitHub App configuration" to match the nav/CTA copy, and fix maintainer-install-trust.tsx's description to lead with self-hosting instead of undercutting it. --- .../src/routes/docs.github-app.tsx | 24 +++++++++++++------ .../routes/docs.maintainer-install-trust.tsx | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/apps/gittensory-ui/src/routes/docs.github-app.tsx b/apps/gittensory-ui/src/routes/docs.github-app.tsx index 7a4d5c0924..e60efb6c06 100644 --- a/apps/gittensory-ui/src/routes/docs.github-app.tsx +++ b/apps/gittensory-ui/src/routes/docs.github-app.tsx @@ -8,13 +8,13 @@ const GITHUB_APP_INSTALL_URL = "https://github.com/apps/gittensory/installations export const Route = createFileRoute("/docs/github-app")({ head: () => ({ meta: [ - { title: "GitHub App setup — Gittensory docs" }, + { title: "GitHub App configuration — Gittensory docs" }, { name: "description", content: "How the Gittensory GitHub App reviews pull requests once installed — self-hosted (recommended) or via the private managed-beta shared app. The Gittensory Orb Review Agent check plus a review comment posted as gittensory[bot]. Choose repos, configure sticky PR panels, advisory checks, and optional review-agent enforcement.", }, - { property: "og:title", content: "GitHub App setup — Gittensory docs" }, + { property: "og:title", content: "GitHub App configuration — Gittensory docs" }, { property: "og:description", content: @@ -31,7 +31,7 @@ function GithubApp() { return (

      @@ -41,16 +41,20 @@ function GithubApp() { managed-beta operators, the shared gittensory App below. Each review produces two surfaces: the Gittensory Orb Review Agent check run (and the advisory{" "} Gittensory Context check), and a single review comment posted by{" "} - gittensory[bot] that updates in place as the PR evolves. Everything on this - page configures that review, and applies identically whichever App you install. + gittensory[bot] that updates in place as the PR evolves. The review behavior + below this page's Install section (PR panel, checks, gate modes, config-as-code) applies + identically whichever App you install — but the App's{" "} + install steps and required permissions differ, since a self-hosted App needs write + access the shared App does not.

      Install

      Self-hosting is the recommended, default path. Run the review stack yourself, then install your own GitHub App on exactly the repos you choose using the - self-host setup wizard — see{" "} - self-hosting setup. + self-host setup wizard. The direct App's required permissions and events are covered in{" "} + GitHub App and Orb — use that page's + checklist, not the one below, for a self-hosted install.

      The shared gittensory App is private / managed-beta only — it @@ -76,6 +80,12 @@ function GithubApp() { pull_request, and repository.

    + + This checklist is for the shared managed-beta App only. A self-hosted App needs{" "} + Pull requests: write (not read) and Checks: write is mandatory, + not optional — see GitHub App and Orb for + the direct App's exact permission and event list. +

    First 10 minutes

      diff --git a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx index fd837eac59..1f605d70b8 100644 --- a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx +++ b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx @@ -33,7 +33,7 @@ function MaintainerInstallTrust() { Gittensory is advisory-first. It may help you review contribution readiness, but it does not From 6282a30c62c9ebe5bd5613cc0421bf2f86d3de9d Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Thu, 2 Jul 2026 17:18:40 -0700 Subject: [PATCH 3/4] docs(ui): fix the same permission-checklist mismatch in maintainer-install-trust.tsx Same class of bug as the previous gate-review fix on docs/github-app.tsx: this page's paragraph presented self-hosting and the shared managed-beta App as equal alternatives right above a permission checklist that's actually scoped to the shared App only (Pull requests: read, optional Checks: write) -- a self-hosted maintainer following the recommended path here would under-scope their App. Split the two paths explicitly and point self-hosted installs at the authoritative self-hosting-github-app checklist, with a callout on the exact permission delta, mirroring the docs/github-app.tsx fix. --- .../routes/docs.maintainer-install-trust.tsx | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx index 1f605d70b8..7461ac95ef 100644 --- a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx +++ b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx @@ -41,12 +41,18 @@ function MaintainerInstallTrust() { payout, wallet, hotkey, or trust-score claims in public surfaces. -

      Install the GitHub App

      +

      Install the App

      - Start from self-hosting setup (the - recommended, default path — you install your own App) or{" "} - GitHub App configuration, then keep the first rollout - narrow until the repo owner has verified permissions, webhook delivery, and public copy. + Self-hosting is the recommended, default path. Start from{" "} + self-hosting setup — the direct App's + required permissions and events are covered in{" "} + GitHub App and Orb, not the checklist below. + Either way, keep the first rollout narrow until the repo owner has verified permissions, + webhook delivery, and public copy. +

      +

      + The checklist below is for the shared private / managed-beta only App — see{" "} + GitHub App configuration for the install flow.

      1. Install Gittensory on one test repository or a selected repository set.
      2. @@ -64,6 +70,11 @@ function MaintainerInstallTrust() { preview output matches the repo's maintainer policy.
      + + A self-hosted direct App needs Pull requests: write (not read) and{" "} + Checks: write is mandatory, not optional — this checklist's permissions are + scoped to the shared managed-beta App only. + Date: Thu, 2 Jul 2026 17:27:47 -0700 Subject: [PATCH 4/4] docs(ui): apply remaining gate review nits (link target, meta description) - docs.beta-onboarding.tsx's maintainer step 1 sent self-hosted readers to docs/github-app's checklist (shared-App-only) as if it were the self-host install steps; now points to self-hosting setup for install and reframes docs/github-app as review-behavior configuration. - docs.maintainer-install-trust.tsx's meta description still framed generic "Install Gittensory as a maintainer" without the self-host-first positioning the page body now has. --- apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx | 8 +++++--- .../src/routes/docs.maintainer-install-trust.tsx | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx b/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx index e7c4ef0df6..ec5e699469 100644 --- a/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx +++ b/apps/gittensory-ui/src/routes/docs.beta-onboarding.tsx @@ -112,10 +112,12 @@ gittensory-mcp preflight --login your-login --json`}

      1. - Self-host, then install the GitHub App. Choose repositories and approve + Self-host, then install your own App. Choose repositories and approve permissions — default posture is silence. Start with{" "} - self-hosting setup, then the{" "} - GitHub App first-10-minutes checklist. + self-hosting setup, which covers the + direct App's install checklist, then{" "} + GitHub App configuration for the review behavior (PR + panel, checks, gate modes).
      2. Configure settings. Opt in to at most one configured label and one sticky diff --git a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx index 7461ac95ef..2cafe48e86 100644 --- a/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx +++ b/apps/gittensory-ui/src/routes/docs.maintainer-install-trust.tsx @@ -10,7 +10,7 @@ export const Route = createFileRoute("/docs/maintainer-install-trust")({ { name: "description", content: - "Install Gittensory as a maintainer, verify trust boundaries, preview public output, and decide when GitHub App checks are safe to enable.", + "Self-host and install a Gittensory GitHub App as a maintainer, verify trust boundaries, preview public output, and decide when GitHub App checks are safe to enable. Self-hosting is the recommended default path; the shared App is private managed-beta only.", }, { property: "og:title", @@ -19,7 +19,7 @@ export const Route = createFileRoute("/docs/maintainer-install-trust")({ { property: "og:description", content: - "Install Gittensory as a maintainer, verify trust boundaries, preview public output, and decide when GitHub App checks are safe to enable.", + "Self-host and install a Gittensory GitHub App as a maintainer, verify trust boundaries, preview public output, and decide when GitHub App checks are safe to enable. Self-hosting is the recommended default path; the shared App is private managed-beta only.", }, { property: "og:url", content: "/docs/maintainer-install-trust" }, ],