diff --git a/README.md b/README.md index 7e0086e4..0f99c02d 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Cards rendered: | 7 | **Productive time (all time)** | Same as #4 but over lifetime commits | | 8 | **Contributions (all time)** | Area chart across every active year, auto-thinned x-axis labels | -Live dracula sample ships in [`output/dracula/`](./output/dracula). +Live `dracula` sample ships in [`output/dracula/`](./output/dracula). Every available theme rendered against the author's profile — profile details, stats, language donuts, productive-time, contributions — is browsable in the auto-generated [**demo gallery**](./demo). Regenerated on every push to `main` by [`.github/workflows/demo.yml`](./.github/workflows/demo.yml). ## In the wild @@ -146,11 +146,12 @@ ghstats -user tiennm99 -themes dracula,github_dark -tz Asia/Saigon -out output ## Themes -Run `ghstats -list-themes` for the full list (60+ themes ported from +Run `ghstats -list-themes` for the full list (65 themes ported from github-profile-summary-cards). Built-ins include `default`, `dark`, `dracula`, `github`, `github_dark`, `tokyonight`, `onedark`, `nord_dark`, `nord_bright`, `gruvbox`, `radical`, `synthwave`, `monokai`, `solarized`, `solarized_dark`, -`transparent`, and more. +`transparent`, and more. Preview every one against real profile data in the +[demo gallery](./demo). ## Output diff --git a/docs/codebase-summary.md b/docs/codebase-summary.md index 77e31aca..54e5132e 100644 --- a/docs/codebase-summary.md +++ b/docs/codebase-summary.md @@ -33,12 +33,14 @@ ghstats/ │ │ ├── donut_chart.go # renderDonutCard — shared by language cards │ │ └── card_test.go # Rendering + escape + format tests │ └── theme/ -│ └── theme.go # 61-palette map ported from github-profile-summary-cards +│ └── theme.go # 65-palette map ported from github-profile-summary-cards ├── .github/workflows/ │ ├── ci.yml # go vet + go test on push/PR -│ └── release.yml # GHCR image + cross-platform binaries on tag +│ ├── release.yml # GHCR image + cross-platform binaries on tag +│ └── demo.yml # Renders every theme for the repo owner on push to main ├── docs/ # This directory ├── plans/ # Research reports + implementation plans +├── demo/ # Auto-generated gallery — every card × every theme + README └── output/dracula/ # Sample committed; other themes gitignored ``` @@ -78,7 +80,7 @@ Shared helpers: ### `internal/theme` -Static map of 61 themes. Each theme specifies title/text/background/stroke/accent/muted plus `StrokeOpacity` for correct light-theme borders. +Static map of 65 themes. Each theme specifies title/text/background/stroke/accent/muted plus `StrokeOpacity` for correct light-theme borders. ## Card ↔ data flow diff --git a/docs/project-overview-pdr.md b/docs/project-overview-pdr.md index 13ff6be3..717b86ac 100644 --- a/docs/project-overview-pdr.md +++ b/docs/project-overview-pdr.md @@ -35,7 +35,7 @@ Distinguishing traits: | # | Requirement | | --- | --- | | F1 | Render 9 cards per selected theme (see `docs/system-architecture.md`) | -| F2 | Support 60+ themes ported from github-profile-summary-cards | +| F2 | Support 65 themes ported from github-profile-summary-cards | | F3 | Handle the full username→profile→cards flow in a single invocation | | F4 | Package as GitHub Action with `commit_changes` auto-commit of output | | F5 | Expose `-include-forks` / `-include-private` toggles | diff --git a/docs/project-roadmap.md b/docs/project-roadmap.md index f16b9534..1e067cc7 100644 --- a/docs/project-roadmap.md +++ b/docs/project-roadmap.md @@ -8,7 +8,7 @@ - Profile details, repos-per-language, most-commit-language, stats, productive-time. - GraphQL profile query + per-repo commit history. -- Docker-based Action wrapper, release workflow, 61-theme palette. +- Docker-based Action wrapper, release workflow, 65-theme palette. ## Phase 2 — Chart quality (✅ done) @@ -62,6 +62,13 @@ Follow-up after the full-project review (`plans/reports/code-review-260418-2223- - Repo topics expanded for Marketplace discoverability (`ghstats-cards`, `profile-readme`, `stats-cards`, etc.). - An attempted repo rename to `tiennm99/ghstats-cards` was committed and reverted (commits `399a3dc` + `8bd2128` on record) — GHCR path immutability and the cost of breaking pinned consumers outweighed the Marketplace-name cosmetic benefit. +## Phase 7.5 — Demo gallery for theme discovery (✅ done) + +- New `.github/workflows/demo.yml` renders every card for every theme against the repo owner's profile on each push to `main`. +- Output lands in `demo//`, with an auto-generated `demo/README.md` TOC so reviewers can browse palettes side-by-side with real data instead of cloning and running the CLI. +- Loop prevention: workflow skips pushes that only touch `demo/**`, `output/**`, `**.md`, or `LICENSE`; `GITHUB_TOKEN`-driven pushes don't retrigger workflows by design. +- Consumer impact: none — this is a repo-internal discovery aid, not a shipped feature. + --- ## Phase 8 — Per-commit file classification (planned) diff --git a/docs/system-architecture.md b/docs/system-architecture.md index 85dc45df..94e7d4f0 100644 --- a/docs/system-architecture.md +++ b/docs/system-architecture.md @@ -108,7 +108,7 @@ Tension = 0.5 (d3's default). ## Theme model -`theme.Theme` is a pure-data struct — no methods. Cards pull `t.Background`, `t.Text`, `t.Title`, `t.Accent`, `t.Muted`, `t.Stroke`, `t.StrokeOpacity`. The 61 palettes live in a map keyed by snake_case ID. +`theme.Theme` is a pure-data struct — no methods. Cards pull `t.Background`, `t.Text`, `t.Title`, `t.Accent`, `t.Muted`, `t.Stroke`, `t.StrokeOpacity`. The 65 palettes live in a map keyed by snake_case ID. Light themes (`default`, `github`, `nord_bright`, etc.) use `StrokeOpacity: 1` with a visible stroke color; dark themes often use `StrokeOpacity: 0` or a stroke that blends into the background.