diff --git a/CHANGELOG.md b/CHANGELOG.md index f279733aa7..a293b8d771 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,5 +55,7 @@ - Add explicit favicon metadata +- Restore Nightward-style homepage flow + diff --git a/site/.vitepress/theme/custom.css b/site/.vitepress/theme/custom.css index a1b2d55bd1..6251d5bc47 100644 --- a/site/.vitepress/theme/custom.css +++ b/site/.vitepress/theme/custom.css @@ -46,8 +46,10 @@ --vp-code-bg: rgba(101, 108, 118, 0.2); --vp-font-family-base: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; --vp-font-family-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - --vp-home-hero-name-color: var(--gt-text); + --vp-home-hero-name-color: var(--gt-green); --vp-home-hero-name-background: none; + --vp-home-hero-image-background-image: linear-gradient(135deg, rgba(126, 231, 135, 0.24), rgba(63, 185, 80, 0.12)); + --vp-home-hero-image-filter: blur(72px); } * { @@ -253,6 +255,43 @@ body { var(--gt-black); } +.VPHomeHero { + padding-top: 76px !important; + padding-bottom: 36px !important; +} + +.VPHomeHero .container { + max-width: 1120px; +} + +.VPHomeHero .main { + max-width: 740px; +} + +.VPHomeHero .name { + font-size: clamp(44px, 7vw, 78px); + line-height: 0.95; +} + +.VPHomeHero .text { + max-width: 760px; + color: var(--gt-text); + font-size: clamp(32px, 4vw, 54px); + line-height: 1.08; +} + +.VPHomeHero .tagline { + max-width: 680px; + color: var(--gt-muted); + font-size: 16px; + line-height: 1.65; +} + +.VPHome .image-src { + width: 220px; + height: 220px; +} + .VPButton { border-radius: 4px !important; font-family: var(--vp-font-family-mono); @@ -372,274 +411,142 @@ body { background: var(--gt-black); } -.gtn-hero, -.gtn-proof-strip, -.gtn-when, -.gtn-signal-panel { - max-width: 1180px; - margin-right: auto; - margin-left: auto; - padding-right: 24px; - padding-left: 24px; -} - -.gtn-hero { +.gtn-install-strip { display: grid; - grid-template-columns: minmax(0, 1fr) minmax(320px, 460px); - gap: 48px; - padding-top: 96px; - padding-bottom: 54px; + grid-template-columns: minmax(0, 1fr) minmax(280px, 430px); align-items: center; + gap: 24px; + margin: 8px 0 36px; + border: 1px solid var(--gt-line); + border-radius: 8px; + padding: 24px; + background: + linear-gradient(90deg, rgba(126, 231, 135, 0.13), transparent 46%), + var(--gt-panel-soft); } -.gtn-hero__copy { - min-width: 0; -} - -.gtn-eyebrow { - color: var(--gt-green); - font-family: var(--vp-font-family-mono); - font-size: 12px; - font-weight: 700; - letter-spacing: 0.08em; - text-transform: uppercase; -} - -.gtn-hero h1 { - margin: 18px 0 0; +.gtn-install-copy h2 { + margin: 4px 0 8px; + border: 0; + padding: 0; color: var(--gt-text); - font-size: clamp(62px, 11vw, 132px); - font-weight: 800; - line-height: 0.84; - letter-spacing: 0; + font-size: 24px; + line-height: 1.25; + text-transform: none; } -.gtn-hero__lead { - max-width: 760px; - margin: 28px 0 0; - color: #f8fafc; - font-size: clamp(28px, 4vw, 54px); - font-weight: 700; - line-height: 1; -} - -.gtn-hero__body { - max-width: 700px; - margin: 22px 0 0; - color: #a8b0bb; - font-size: 16px; - line-height: 1.75; -} - -.gtn-hero__actions { - display: flex; - flex-wrap: wrap; - gap: 12px; - margin-top: 32px; +.gtn-install-copy p { + margin: 0; + color: var(--gt-muted); } -.gtn-button { - display: inline-flex; - align-items: center; - justify-content: center; - min-height: 46px; - border: 1px solid var(--gt-line-strong); - border-radius: 4px; - padding: 0 18px; - color: var(--gt-text); +.gtn-eyebrow { + margin: 0; + color: var(--gt-green); font-size: 12px; font-weight: 800; - text-decoration: none !important; - text-transform: uppercase; -} - -.gtn-button:hover { - border-color: var(--gt-green); - color: var(--gt-green); -} - -.gtn-button--primary { - border-color: var(--gt-green); - background: var(--gt-green); - color: var(--gt-black); -} - -.gtn-button--primary:hover { - background: #a4f2aa; - color: var(--gt-black); -} - -.gtn-hero__media { - position: relative; - margin: 0; - border: 1px solid rgba(126, 231, 135, 0.34); - border-radius: 8px; - padding: 10px; - background: rgba(0, 0, 0, 0.74); - box-shadow: - 0 0 0 1px rgba(255, 255, 255, 0.04), - 0 28px 72px rgba(0, 0, 0, 0.46); -} - -.gtn-hero__media img { - display: block; - width: 100%; - height: auto; - border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 4px; - background: #000; -} - -.gtn-hero__media figcaption { - position: absolute; - right: 18px; - bottom: 18px; - border: 1px solid rgba(126, 231, 135, 0.32); - border-radius: 4px; - padding: 6px 8px; - background: rgba(0, 0, 0, 0.84); - font-size: 10px; - font-weight: 700; + letter-spacing: 0; text-transform: uppercase; } -.gtn-hero__media a { - color: var(--gt-green); - text-decoration: none !important; -} - -.gtn-proof-strip { +.gtn-install-command { display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 1px; - border: 1px solid var(--gt-line); - background: var(--gt-line); -} - -.gtn-proof-strip article { - min-height: 180px; - padding: 22px; - background: var(--gt-ink); + gap: 8px; + border: 1px solid rgba(126, 231, 135, 0.32); + border-radius: 8px; + padding: 16px; + background: #050a09; } -.gtn-proof-strip span { +.gtn-install-command span { color: var(--gt-green); - font-size: 11px; + font-size: 12px; font-weight: 800; text-transform: uppercase; } -.gtn-proof-strip h2 { - margin: 14px 0 0; - border: 0; - padding: 0; +.gtn-install-command code { + display: block; + overflow-x: auto; + border-radius: 6px; + padding: 12px; + background: rgba(255, 255, 255, 0.07); color: var(--gt-text); - font-size: 20px; - line-height: 1.14; -} - -.gtn-proof-strip p { - margin: 12px 0 0; - color: var(--gt-muted); - font-size: 13px; - line-height: 1.58; + font-size: 14px; + line-height: 1.45; + white-space: nowrap; } -.gtn-when, -.gtn-signal-panel { +.gtn-context-media { display: grid; - grid-template-columns: minmax(0, 0.82fr) minmax(320px, 1fr); - gap: 1px; - margin-top: 28px; - border: 1px solid var(--gt-line); - background: var(--gt-line); - padding: 0; -} - -.gtn-when > div, -.gtn-signal-panel > div { - background: var(--gt-ink); - padding: 30px; + grid-template-columns: minmax(240px, 0.56fr) minmax(340px, 1fr); + align-items: center; + gap: 28px; + margin: 34px 0 42px; } -.gtn-when h2, -.gtn-signal-panel h2 { - margin: 12px 0 0; +.gtn-context-media__copy h2 { + margin: 6px 0 10px; border: 0; padding: 0; color: var(--gt-text); - font-size: clamp(30px, 5vw, 56px); - line-height: 0.98; -} - -.gtn-signal-panel p { - max-width: 640px; - color: var(--gt-muted); - font-size: 16px; - line-height: 1.72; -} - -.gtn-when__grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 1px; - padding: 0 !important; - background: var(--gt-line) !important; + font-size: 26px; + line-height: 1.2; + text-transform: none; } -.gtn-when__grid p { +.gtn-context-media__copy p { margin: 0; - padding: 22px; - background: var(--gt-panel-soft); - color: #c9d1d9; - font-size: 13px; - line-height: 1.65; -} - -.gtn-terminal { - font-family: var(--vp-font-family-mono); - font-size: 12px; + color: var(--gt-muted); } -.gtn-terminal div { +.gtn-context-media__links { display: flex; + flex-wrap: wrap; gap: 12px; - padding: 10px 0; - border-bottom: 1px solid rgba(61, 68, 77, 0.58); + margin-top: 18px !important; } -.gtn-terminal div:last-child { - border-bottom: 0; +.gtn-context-media__links a { + display: inline-flex; + align-items: center; + border: 1px solid var(--gt-line); + border-radius: 999px; + padding: 7px 12px; + color: var(--gt-text); + font-size: 13px; + font-weight: 800; + text-decoration: none; } -.gtn-terminal b { - min-width: 78px; +.gtn-context-media__links a:hover { + border-color: rgba(126, 231, 135, 0.44); color: var(--gt-green); - font-weight: 600; } -.gtn-terminal span { - color: #c9d1d9; +.gtn-context-media__frame { + display: block; + overflow: hidden; + border: 1px solid rgba(126, 231, 135, 0.24); + border-radius: 8px; + background: #05080b; + box-shadow: 0 18px 48px rgba(0, 0, 0, 0.28); +} + +.gtn-context-media__frame img { + display: block; + width: 100%; + height: auto; } @media (max-width: 960px) { - .gtn-hero, - .gtn-when, - .gtn-signal-panel { + .gtn-install-strip, + .gtn-context-media { grid-template-columns: 1fr; } - .gtn-hero { - gap: 28px; - padding-top: 72px; - } - - .gtn-hero__media { - max-width: 520px; - } - - .gtn-proof-strip { - grid-template-columns: repeat(2, minmax(0, 1fr)); + .gtn-context-media { + gap: 18px; } } @@ -675,35 +582,36 @@ body { overflow-wrap: anywhere; } - .gtn-hero, - .gtn-proof-strip, - .gtn-when, - .gtn-signal-panel { - padding-right: 18px; - padding-left: 18px; + .VPHomeHero { + padding-top: 56px !important; } - .gtn-hero h1 { - font-size: 58px; + .VPHomeHero .name { + font-size: 42px; } - .gtn-hero__lead { - font-size: 29px; + .VPHomeHero .text { + font-size: 30px; + line-height: 1.14; } - .gtn-proof-strip, - .gtn-when__grid { - grid-template-columns: 1fr; + .VPHomeHero .actions { + flex-wrap: wrap; + justify-content: center; + gap: 10px; } - .gtn-when > div, - .gtn-signal-panel > div { - padding: 22px; + .VPHome .image-src { + width: 168px; + height: 168px; } - .gtn-hero__media figcaption { - position: static; - margin-top: 8px; - text-align: center; + .gtn-install-strip { + grid-template-columns: 1fr; + padding: 18px; + } + + .gtn-context-media { + grid-template-columns: 1fr; } } diff --git a/site/index.md b/site/index.md index a39d285484..e2c2f4483d 100644 --- a/site/index.md +++ b/site/index.md @@ -1,84 +1,91 @@ --- layout: home ---- -
-
-

Gittensor contribution intelligence

-

Gittensory

-

Decision intelligence for Gittensor contributors and maintainers.

-

- Use MCP and GitHub App signals to help Gittensor miners choose better work, understand score blockers, - reduce maintainer noise, and ship cleaner Gittensor submissions. -

- -
-
- Gittensor homepage showing live miner, reward, and repository activity. -
- Context: Gittensor Subnet 74 -
-
-
+hero: + name: Gittensory + text: Know the Gittensor lane before you submit. + tagline: MCP branch analysis and GitHub App context for score blockers, queue pressure, lane fit, and maintainer review load. Not a Gittensor frontend. + image: + src: /logo.svg + alt: Gittensory logo + actions: + - theme: brand + text: Install MCP + link: /guide/install + - theme: alt + text: Miner Workflow + link: /guide/miners + - theme: alt + text: GitHub App + link: /guide/github-app-setup -
-
- 01 / Gittensor miners -

Pick work with fewer blind spots.

-

Score blockers, lane fit, queue pressure, and local branch preflight before opening another PR.

-
-
- 02 / Maintainers -

See signal without noisy checks.

-

Confirmed-miner comments, configured labels, reviewability context, and public-safe next steps.

-
-
- 03 / Agents -

Ask for repo-aware guidance.

-

Metadata-only MCP branch analysis for Codex, Claude, Cursor, and local automation.

-
-
- 04 / Repo Owners -

Tune intake before it gets loud.

-

Config quality, label readiness, maintainer-lane handling, and contribution intake health.

-
-
+features: + - title: MCP branch preflight + details: Local metadata-only checks for lane fit, stale base risk, validation evidence, and score blockers. + - title: Quiet maintainer surface + details: Confirmed-miner comments and labels without public check-run noise or private signal leakage. + - title: Private scoreability context + details: Current, ungated, and scenario-based scoreability reasoning stays in authenticated MCP/API output. +--- + + -
-
-

When to use it

-

Before the work becomes review load.

+
+
+

Start now

+

Analyze the branch before it becomes review load.

+

One local command gives your agent lane fit, queue pressure, score blockers, and a public-safe PR packet.

-
-

Before opening a PR, check lane fit, linked issue expectations, validation evidence, and duplicate risk.

-

After approvals, rerun scoreability projections with realistic pending-merge assumptions.

-

When open PR pressure is high, decide whether cleanup beats opening new work.

-

When a maintainer wants confirmed-miner context, keep the public surface quiet and sanitized.

+
+ Metadata-only branch analysis + gittensory-mcp analyze-branch --login YOUR_GITHUB_LOGIN --json
-
-
-

What Gittensory is

-

Not a Gittensor frontend.

+Prefer a full setup first? Start with [install](/guide/install), run `gittensory-mcp login`, then add `gittensory-mcp --stdio` to Codex, Claude, or Cursor. + +## Pick A Path + +- [Install the MCP package](/guide/install): get the CLI, authenticate with GitHub Device Flow, and verify local setup with `doctor`. +- [Connect an MCP client](/guide/mcp): print Codex, Claude Desktop, or Cursor config without mutating local files. +- [Check miner work](/guide/miners): run branch analysis, scenario projections, and preflight before opening a PR. +- [Set up the GitHub App](/guide/github-app-setup): give maintainers confirmed-miner comments and labels without noisy checks. +- [Review maintainer behavior](/guide/maintainers): understand quiet-by-default PR visibility and public-safe output boundaries. +- [Read the API contract](/reference/api): inspect the modern private API for decision packs, branch analysis, reviewability, and readiness. + +## Where It Fits + +| Audience | What Gittensory adds | +| --- | --- | +| Gittensor miners | Scoreability blockers, lane fit, queue pressure, local diff quality, and cleanup-first guidance. | +| Maintainers | Confirmed-miner context, sticky public-safe comments, configured labels, and private reviewability packets. | +| Coding agents | Structured MCP tools for repo context, current branch preflight, next actions, and PR packet drafting. | +| Repo owners | Config quality, label readiness, maintainer-lane handling, and contribution intake health. | + +
+
+

Gittensor context

+

Built around the live contribution market, not another dashboard.

- Gittensory is not a Gittensor frontend. It is the private signal layer behind better Gittensor contributions: - official miner context, registry lanes, queue pressure, scoreability projections, - maintainer friction, and public-safe PR packets. + Gittensory reads the Gittensor and GitHub signals that affect contribution quality: + registered repo lanes, miner history, open PR pressure, linked issue context, and maintainer friction. +

+
-
-
lanedirect_pr / issue_discovery / maintainer
-
scoreabilitycurrent, ungated, and scenario-gated
-
riskopen PR pressure, credibility, stale base
-
outputprivate MCP JSON + sanitized PR packet
-
+ + Gittensor homepage showing live miner, reward, and repository activity. +
+ +## Guardrails + +Gittensory is not a Gittensor frontend, public leaderboard, wallet tool, or auto-review bot. Public GitHub output stays sanitized. Private scoreability and reward/risk context stays in authenticated MCP/API surfaces. diff --git a/site/public/images/gittensor-home-signal.webp b/site/public/images/gittensor-home-signal.webp index 7842fd669d..c90caefd64 100644 Binary files a/site/public/images/gittensor-home-signal.webp and b/site/public/images/gittensor-home-signal.webp differ