Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ Every version listed here must correspond to a slice in [`PLAN.md`](./PLAN.md) w

---

## [0.9.8] — 2026-05-29

### Added
- **Launch landing sections.** Beneath the hero: a "see it in action" row of example profiles linking to live reports, a "how it works" methodology section, and a "Star on GitHub" call-to-action.

---

## [0.9.7] — 2026-05-28

### Added
Expand Down
18 changes: 18 additions & 0 deletions PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
| **v0.9.5** | Security review + hardening (OAuth scope ↓ `read:user`, HTTP security headers) | ✅ shipped |
| **v0.9.6** | Load-test harness (warm /analyze; full 100 RPS run = operator step) | ✅ shipped |
| **v0.9.7** | Privacy policy + terms + global footer | ✅ shipped |
| **v0.9.8** | Launch landing sections (examples + how-it-works + star CTA) | ✅ shipped |
| **v1.0.0** | Public launch | pending |

---
Expand Down Expand Up @@ -705,6 +706,23 @@ The narrative-mode CHECK constraint was a third drift in the same family — the

---

## v0.9.8 — Launch landing sections (shipped 2026-05-29)

**Goal:** Below-the-fold launch landing sections beneath the existing hero.

**Delivered:** `ExampleProfiles` (clickable example-profile cards → live `/u/<username>` reports — the honest proof), `HowItWorks` (deterministic-methodology feature grid), `StarCta` ("Star on GitHub" → repo). Hero/search/stats untouched; `/` still static-prerendered; responsive. No testimonials/usage-stats (none real). Shipped as v0.9.8, keeping 1.0.0 for the actual launch.

**Design spec:** [`docs/superpowers/specs/2026-05-28-v0.9.8-launch-landing-design.md`](./docs/superpowers/specs/2026-05-28-v0.9.8-launch-landing-design.md).
**Sub-plan:** [`docs/superpowers/plans/2026-05-28-v0.9.8-launch-landing.md`](./docs/superpowers/plans/2026-05-28-v0.9.8-launch-landing.md).

**Exit criteria:**
- [x] Three sections render beneath the hero; hero unchanged; `/` still static.
- [x] Example cards link to live reports; star CTA → repo (new tab).
- [x] Smoke test passes; frontend lint/tsc/test/build clean; mobile verified.
- [x] Docs ritual + version bump to 0.9.8; tag + release.

---

## v1.0.0 — Public launch

**Goal:** Ship it.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Engineering insight first. AI flavor second. Scoring is deterministic and explai

## Status

Pre-alpha. Latest shipped release is **v0.9.7** (a Privacy Policy and Terms of Service, linked from a new site-wide footer). v0.9.6 before it added a reusable load-test harness for the warm `/analyze` path (full 100 RPS run is an operator step); v0.9.5 ran a full pre-launch security audit — no high/critical findings — tightening the GitHub OAuth scope to read-only and adding HTTP security headers; v0.9.4 made the DB connection pool size env-tunable and genuinely fixed the back-nav search spinner; v0.9.3 added deletable `/me` history with undo, a golden "creator" scorecard for the project's creator account, and a first (incomplete) attempt at the back-nav spinner fix. Live at https://skill-issue-tau.vercel.app — GitHub OAuth sign-in, Neon Postgres persistence, `/me` history, opt-in `/share/[slug]` public links. The AI narrative layer (Roast + Mentor) runs on **Groq** (`llama-3.3-70b-versatile`). v0.7.0 added Upstash Redis caching (warm `/analyze` ≤ 200 ms); v0.7.2 prod-certified the perf budget (CLS 0.080 → **0** structurally, perf 90 → 94, LCP 2,804 → 2,773 ms); v0.8.0 shipped Sentry (FE+BE), PostHog (events + web vitals), structlog JSON logging, on-voice 404, and a full axe a11y pass; v0.8.1 ships the nightly cron with bearer auth; v0.8.2 pairs it with the manual force-refresh button on `/me`; v0.8.3 hotfixes the empty-repo crash; v0.8.4 fixes the silent narrative misattribution; v0.8.5 closes the post-deploy-Sentry loop with a pre-merge CI gate; v0.8.6 closes v0.7.1's deferred share-page caching; v0.8.7 modernizes project config; v0.9.0 opens Beta hardening with bounded GH fan-out; v0.9.1 closes the /me N+1 + adds per-namespace Report cache versioning; v0.9.2 adds rate limiting (per-IP for anonymous, higher per-user caps for signed-in) on `/analyze` and `/narrative`; v0.9.3 adds deletable `/me` history with undo, attempts the back-nav search-spinner fix, and gilds the creator's scorecard. v0.9.4 makes the DB connection pool size env-tunable (defaults unchanged — RUM showed no pool exhaustion) and lands the real back-nav spinner fix (the v0.9.3 attempt addressed the wrong mechanism); v0.9.5 runs a full pre-launch security audit (no high/critical findings), tightens the OAuth scope to `read:user`, and adds HTTP security headers; v0.9.6 adds a reusable load-test harness for the warm `/analyze` path (the full 100 RPS run is an operator step); v0.9.7 adds a Privacy Policy and Terms of Service, linked from a new global footer. **v1.0.0 — public launch** is next. See [`CHANGELOG.md`](./CHANGELOG.md) for shipped slices, [`PLAN.md`](./PLAN.md) for the full roadmap, and [`docs/PROGRESS_LOG.md`](./docs/PROGRESS_LOG.md) for the most recent session handoff.
Pre-alpha. Latest shipped release is **v0.9.8** (launch landing sections — example reports, a "how it works" methodology section, and a GitHub-star CTA). v0.9.7 before it added a Privacy Policy and Terms of Service, linked from a new site-wide footer; v0.9.6 added a reusable load-test harness for the warm `/analyze` path (full 100 RPS run is an operator step); v0.9.5 ran a full pre-launch security audit — no high/critical findings — tightening the GitHub OAuth scope to read-only and adding HTTP security headers; v0.9.4 made the DB connection pool size env-tunable and genuinely fixed the back-nav search spinner; v0.9.3 added deletable `/me` history with undo, a golden "creator" scorecard for the project's creator account, and a first (incomplete) attempt at the back-nav spinner fix. Live at https://skill-issue-tau.vercel.app — GitHub OAuth sign-in, Neon Postgres persistence, `/me` history, opt-in `/share/[slug]` public links. The AI narrative layer (Roast + Mentor) runs on **Groq** (`llama-3.3-70b-versatile`). v0.7.0 added Upstash Redis caching (warm `/analyze` ≤ 200 ms); v0.7.2 prod-certified the perf budget (CLS 0.080 → **0** structurally, perf 90 → 94, LCP 2,804 → 2,773 ms); v0.8.0 shipped Sentry (FE+BE), PostHog (events + web vitals), structlog JSON logging, on-voice 404, and a full axe a11y pass; v0.8.1 ships the nightly cron with bearer auth; v0.8.2 pairs it with the manual force-refresh button on `/me`; v0.8.3 hotfixes the empty-repo crash; v0.8.4 fixes the silent narrative misattribution; v0.8.5 closes the post-deploy-Sentry loop with a pre-merge CI gate; v0.8.6 closes v0.7.1's deferred share-page caching; v0.8.7 modernizes project config; v0.9.0 opens Beta hardening with bounded GH fan-out; v0.9.1 closes the /me N+1 + adds per-namespace Report cache versioning; v0.9.2 adds rate limiting (per-IP for anonymous, higher per-user caps for signed-in) on `/analyze` and `/narrative`; v0.9.3 adds deletable `/me` history with undo, attempts the back-nav search-spinner fix, and gilds the creator's scorecard. v0.9.4 makes the DB connection pool size env-tunable (defaults unchanged — RUM showed no pool exhaustion) and lands the real back-nav spinner fix (the v0.9.3 attempt addressed the wrong mechanism); v0.9.5 runs a full pre-launch security audit (no high/critical findings), tightens the OAuth scope to `read:user`, and adds HTTP security headers; v0.9.6 adds a reusable load-test harness for the warm `/analyze` path (the full 100 RPS run is an operator step); v0.9.7 adds a Privacy Policy and Terms of Service, linked from a new global footer; v0.9.8 adds launch landing sections (example reports, a how-it-works section, a GitHub-star CTA). **v1.0.0 — public launch** is next. See [`CHANGELOG.md`](./CHANGELOG.md) for shipped slices, [`PLAN.md`](./PLAN.md) for the full roadmap, and [`docs/PROGRESS_LOG.md`](./docs/PROGRESS_LOG.md) for the most recent session handoff.

---

Expand Down Expand Up @@ -76,7 +76,7 @@ cp .env.example .env # then edit .env and add your GITHUB_TOKEN and OPENA
uv run uvicorn app.main:app --reload --port 8000
```

Verify: `curl http://localhost:8000/health` → `{"status":"ok","version":"0.9.7","db":"up"|"down","cache":"up"|"down"|"unconfigured"}`. The `db` field reports DB reachability when `DATABASE_URL` is configured; the `cache` field reports Upstash reachability (`unconfigured` when `UPSTASH_REDIS_REST_URL` isn't set — perfectly fine for local dev, the in-process fallback covers it).
Verify: `curl http://localhost:8000/health` → `{"status":"ok","version":"0.9.8","db":"up"|"down","cache":"up"|"down"|"unconfigured"}`. The `db` field reports DB reachability when `DATABASE_URL` is configured; the `cache` field reports Upstash reachability (`unconfigured` when `UPSTASH_REDIS_REST_URL` isn't set — perfectly fine for local dev, the in-process fallback covers it).
Hit the analyzer: `curl http://localhost:8000/analyze/octocat`.

### Frontend (`:3000`)
Expand Down
2 changes: 1 addition & 1 deletion backend/app/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from pydantic_settings import BaseSettings, SettingsConfigDict

VERSION = "0.9.7"
VERSION = "0.9.8"


class Settings(BaseSettings):
Expand Down
2 changes: 1 addition & 1 deletion backend/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "skill-issue-backend"
version = "0.9.7"
version = "0.9.8"
description = "Skill Issue backend — FastAPI service that ingests a GitHub profile and returns a deterministic engineering report."
readme = "README.md"
authors = [
Expand Down
2 changes: 1 addition & 1 deletion backend/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 24 additions & 0 deletions docs/PROGRESS_LOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,30 @@ Format:

---

## 2026-05-29 — Claude (Opus 4.7) — v0.9.8 shipped (launch landing sections)

**Slice:** v0.9.8 — below-the-fold launch sections beneath the hero. First v1.0.0-prep piece (the user picked "marketing landing variant"); the launch itself stays human-gated as v1.0.0.

**Done:**
- Three new client section components under `frontend/src/components/landing/`: `ExampleProfiles` (clickable cards for torvalds/gaearon/sindresorhus/antfu/yyx990803/tj → live `/u/<username>` reports), `HowItWorks` (4-point deterministic-methodology grid), `StarCta` ("Star on GitHub" → repo, new tab). Wired into `page.tsx` after the hero (hero container changed from `flex-1` fill to a `min-h-[calc(100vh-header)]` section; fragment + 3 sections below).
- 1 smoke test (`example-profiles.test.tsx`) — mocks `framer-motion` to plain divs (the happy-dom `m.*` lesson) and asserts 6 cards + the `/u/torvalds` link. Frontend vitest 57 → 58.
- Docs ritual + version bump to 0.9.8.

**Decisions:**
- **Honest proof only** — example reports (live, clickable), no testimonials/usage-stats (user confirmed none real). The repo wasn't selected as a proof asset, but the user separately asked for a **Star-on-GitHub CTA** to grow stars — added as the closing section.
- **Static star button, no live count** — a live count needs a GitHub-API server fetch, which trips the Cache-Components prerender guard (cf. the v0.9.7 `new Date()` lesson); static keeps `/` cleanly static. Count is a later enhancement.
- **Hero untouched; shipped v0.9.8, not 1.0.0** — 1.0.0 is reserved for the actual launch (its exit criteria are about live traffic). Avatars via plain `<img>` (`github.com/<u>.png`) to skip an image-config change.

**Verified:**
- Frontend `lint` + `tsc` clean; vitest 58 passed; `next build` clean with `/` still `○ Static`. Backend untouched (290 pass).
- Visual check of the three sections (desktop + mobile): operator quick-confirm on prod after deploy — the smoke test + build only cover structure, not appearance.

**Blocked / open:** none for v0.9.8. v1.0.0 (public launch) is human-gated.

**Next:** v1.0.0 — public launch (domain + SSL, launch posts, 72h-stable traffic, on-call, retro). Pre-launch reminders still open: professional legal review; run the full 100 RPS load test.

---

## 2026-05-28 — Claude (Opus 4.7) — v0.9.7 shipped (privacy + terms)

**Slice:** v0.9.7 — the final pre-1.0 slice. Privacy Policy + Terms of Service pages + a new global footer.
Expand Down
Loading
Loading