Skip to content

feat(ui): maintainer onboarding — hero install button + config-as-code docs - #648

Merged
JSONbored merged 2 commits into
mainfrom
feat/maintainer-onboarding
Jun 14, 2026
Merged

feat(ui): maintainer onboarding — hero install button + config-as-code docs#648
JSONbored merged 2 commits into
mainfrom
feat/maintainer-onboarding

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

What

Makes installing + configuring Gittensory dead-simple for repo maintainers.

  1. Homepage hero — one-click install. Adds a prominent "Install the GitHub App →" CTA next to the existing Install MCP path, linking straight to https://github.com/apps/gittensory/installations/new. Maintainers no longer have to dig through docs to find the install flow.
  2. Config-as-code docs. The GitHub App docs page (/docs/github-app) now documents .gittensory.yml — the settings: / gate: / review: blocks, precedence (.gittensory.yml > dashboard settings > safe defaults), and the guarantee that custom footer text keeps the Gittensor register link/attribution.
  3. Worked review: example in the repo's own .gittensory.yml (+ the bundled mirror, kept byte-identical) — footer text, intro note, and per-row field toggles, all commented.

This builds on the config-as-code layer from #647.

Validation (from repo root)

  • npm --workspace @jsonbored/gittensory-ui run typecheck — clean
  • npm --workspace @jsonbored/gittensory-ui run lint — clean
  • npm run typecheck (backend) — clean
  • manifest + bundled-alignment tests — pass
  • git diff --check — clean

UI evidence

⚠️ This is a visible UI change (hero CTA + docs section) — please attach hero + docs screenshots before merging (I can't capture them from here). The hero button uses the existing coral primary button style; the docs section uses the standard CodeBlock/DocsPage primitives.

Notes

  • Backend behavior unchanged — the review: example is commented; the hero/docs are presentation only.
  • Follow-up: a dedicated /docs/config route could expand on this if you want config-as-code as its own page rather than a section.

…e docs

- Homepage hero: add a prominent "Install the GitHub App →" CTA (one-click maintainer
  onboarding to github.com/apps/gittensory/installations/new), beside the Install MCP path.
- GitHub App docs page: document `.gittensory.yml` config-as-code — the settings / gate /
  review blocks, precedence (.gittensory.yml > dashboard settings > defaults), and the
  public-safe footer guarantee (custom footer text, Gittensor register link always kept).
- Add a worked, commented `review:` example to the repo's own `.gittensory.yml` (+ the bundled
  mirror, kept byte-identical) showing footer text, intro note, and per-row field toggles.

UI typecheck + lint clean; backend typecheck + manifest/alignment tests pass.
Note: visible UI change — hero/docs screenshots should be attached to the PR before merge.
@ghost

ghost commented Jun 13, 2026

Copy link
Copy Markdown

Note

Gittensory Gate skipped

PR closed before full evaluation. No late first comment was created.

Signal Result Evidence Action
Gate result ⚠️ Skipped #648 is no longer open. No action.

💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →.

Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.

@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@ghost ghost added the gittensory:reviewed label Jun 13, 2026
@ghost

ghost commented Jun 13, 2026

Copy link
Copy Markdown

gittensory · advisory review

Reviewed 4 changed file(s) — two independent AI reviewers.

Suggested action:Safe to merge — both reviewers found no blocking issues.

Reviewer A · gpt-oss-120b — recommends ✅ merge
The PR adds a one‑click GitHub App install button to the hero section, expands the docs with a "Configure as code" guide, and updates example config files with commented review‑panel overrides. The changes are UI‑only, non‑breaking, and respect the public‑safe filter.

Suggestions

  • Add an explicit aria-label or title to the install button for screen‑reader accessibility.
  • Verify that the bg-coral background with text-primary-foreground meets WCAG contrast ratios.
  • Consider adding a lightweight UI test to ensure the new button renders and has the correct href.

Worth double-checking

  • Make sure the public‑safe filter is applied to any maintainer‑supplied footer/note text from the new config fields.
  • Confirm that the new constant GITHUB_APP_INSTALL_URL does not unintentionally expose any secret or internal URL.

Reviewer B · nemotron-3-120b-a12b — recommends ✅ merge
The PR adds a hero install button for maintainer onboarding and documentation on configuring Gittensory via .gittensory.yml. Changes are minimal, focused, and correctly reinforce the public/private boundary by noting that maintainer-supplied text is sanitized. The URL constant and button styling are appropriate.

Suggestions

  • Consider adding a test for the new hero button in index.tsx to verify its presence and link (e.g., using vitest/react testing library).
  • Ensure the .gittensory.yml example comments are kept up-to-date if the configuration schema evolves.

Worth double-checking

  • Verify the GitHub App install URL is correct and permanent (apps/gittensory/installations/new).
  • Confirm the button's accessible name is clear (screen readers will read 'Install the GitHub App →').

Before = production · After = this PR's preview deploy.

Route Viewport Before After
/docs/github-app desktop before desktop after desktop
mobile before mobile after mobile
/ desktop before desktop after desktop
mobile before mobile after mobile

@ghost ghost added the gittensory-review label Jun 13, 2026
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 13, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
gittensory-ui 07b77f2 Commit Preview URL

Branch Preview URL
Jun 14 2026, 02:16 PM

@JSONbored JSONbored self-assigned this Jun 13, 2026
JSONbored added a commit that referenced this pull request Jun 14, 2026
#681)

Final round of the BYOK security-audit follow-ups (after #670, #680).

- #673 Stand up a UI test runner (vitest + @testing-library/react + jsdom) in
  the gittensory-ui workspace and add the first component tests: the
  MaintainerPanel role gate (non-maintainer → "Maintainer access required",
  BYOK field never mounts; maintainer → dashboard) and AiReviewSettings (key
  field is write-only/password and never hydrates a stored key; provider/key
  mismatch is rejected client-side without a request; a valid key posts then
  clears). Wired `ui:test` into the CI "UI check" step.

- #678 AI review panel UX + a11y: an initial loading state, an empty-state hint
  when no registered repos are detected, role="status" aria-live on the result
  banner, and aria-busy on the action buttons.

- #675 Maintainer-facing BYOK documentation (docs/maintainer-byok-ai-review.md):
  how the advisory vs consensus layers work, that BYOK calls the provider
  directly and bills the maintainer (consensus always free), encrypted/write-only
  key handling, and dashboard vs .gittensory.yml config. Kept out of
  docs.github-app.tsx to avoid conflicting with the open onboarding-docs PR #648.

Verified: ui:typecheck, ui:lint, ui:test (6 tests), ui:build, ui:openapi:check,
actionlint, npm audit (0 vulns).

Closes #673, #675, #678. Part of #525.
JSONbored added a commit that referenced this pull request Jun 14, 2026
…amp (#701) (#708)

Make the maintainer payoff self-evident at install: a repo-specific demo of what
Gittensory would surface, plus a one-click advisory ramp.

- `src/services/maintainer-activation.ts`: `buildMaintainerActivationPreview` runs
  the deterministic advisory engine (buildPullRequestAdvisory) over the repo's most
  recent PRs and returns "here's what Gittensory would have surfaced on N of your
  last M PRs" — per-PR findings + distinct finding-code counts + the current gate
  mode + whether AI review is configured + the single recommended next action.
  Pure over already-loaded data; NEVER runs AI (no surprise cost) — it only reports
  whether AI review is already on.
- `recommendedAdvisoryActivationSettings()`: the one-click patch — enables the gate
  + deterministic rules in ADVISORY (non-blocking) mode, advisory-first per the
  #525 cross-cutting AC. AI review stays opt-in (separate ai-review route).
- Routes (maintainer-scoped via requireRepoMaintainer; new `isRepoActivationPath`
  in canSessionAccessPath): GET `/v1/repos/:owner/:repo/activation-preview` and
  POST `/v1/repos/:owner/:repo/activation` (merges the advisory patch onto current
  settings, preserving unrelated fields).

Reuses the existing gate engine + repo-settings infra (#647/#648); does not
duplicate settings-preview (which previews ONE hypothetical PR — this previews the
repo's REAL recent PRs). The dashboard rendering of this preview stays owner-led
(visual). Email/AI live-preview remain out of scope.

Tests: service unit (finding summary, recommended-action logic, AI-config flag,
empty repo, sample-size clamp + recency fallback, code-count tie-break) +
integration (maintainer preview + one-click flip persists; non-maintainer 403;
server-to-server allowed). 97% coverage gate green; workers tests pass.
@JSONbored
JSONbored merged commit 3b93684 into main Jun 14, 2026
12 checks passed
@JSONbored
JSONbored deleted the feat/maintainer-onboarding branch June 14, 2026 14:22
@github-project-automation github-project-automation Bot moved this from Todo to Done in gittensory - v1 roadmap Jun 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant