mirror of
https://github.com/tiennm99/ghstats.git
synced 2026-08-31 16:26:16 +00:00
project-roadmap.md went from a 146-line phase-by-phase history to a 48-line focused view: what's planned, what's out of scope. Completed work is already in git log + GitHub Releases — the doc re-telling it was the thing most likely to rot and least likely to be read. project-overview-pdr.md: "Open questions" section dropped its stale bullet list and now just points at project-roadmap.md (single source of truth for planned work). code-standards.md: drop the ".claude/ directory" commit rule — that's a per-user workflow detail, not a project-level standard. Docs are for users of the CLI/Action and coworkers of this repo, nothing else.
49 lines
2.4 KiB
Markdown
49 lines
2.4 KiB
Markdown
# Roadmap
|
||
|
||
What's planned next and what's intentionally out of scope. Completed work lives in the git log and GitHub Releases; this file doesn't rehash it.
|
||
|
||
## Planned
|
||
|
||
### Per-commit file classification (`-accurate-languages`)
|
||
|
||
Fix the Markdown-blog misattribution case (and any repo where linguist's byte view disagrees with the files the user actually edited).
|
||
|
||
- **Approach**: `GET /repos/{owner}/{repo}/commits/{sha}` per commit → classify each file with `go-enry`. Weight by `additions + deletions`.
|
||
- **Cost**: ~1 REST call per commit. At current defaults (30 seed repos × 500 commits = 15 000 commits worst case) this is heavy; opt-in flag, schedule weekly not daily.
|
||
- **Research**: `plans/reports/researcher-260418-2001-accurate-language-stats.md`.
|
||
- **Status**: designed, not implemented.
|
||
|
||
### Partial bare clone for lifetime language stats (`-deep`)
|
||
|
||
Lifetime language stats across every repo a user has committed in, without the 500-commits-per-repo cap.
|
||
|
||
- **Approach**: `git clone --filter=blob:none --bare` per seed repo + `git log --author --numstat` → go-enry.
|
||
- **Cost**: ~5 % of full-clone disk (trees only); 3–5 min runtime for 100 repos; zero REST calls.
|
||
- **Trade-off**: needs disk + git binary on runner.
|
||
- **Status**: researched only; would land behind `-deep`.
|
||
|
||
### User-configurable repo exclusion (`-exclude-repo`)
|
||
|
||
Drop throwaway repos (experiments, stashed forks) from stats without turning off `include_forks` globally.
|
||
|
||
- **Approach**: `-exclude-repo owner1/name1,owner2/name2` flag. Client-side filter on the seed list before probing.
|
||
- **Status**: pending user demand.
|
||
|
||
### Expanded `ownerAffiliations`
|
||
|
||
Catch work in org repos where the user is a collaborator rather than owner.
|
||
|
||
- **Approach**: expose `-affiliations OWNER,COLLABORATOR,ORGANIZATION_MEMBER`.
|
||
- **Blocker**: decide whether to display private org work on a public profile card by default.
|
||
- **Status**: blocked on that privacy call.
|
||
|
||
## Out of scope (by design)
|
||
|
||
| Limitation | Reason |
|
||
| --- | --- |
|
||
| Markdown/prose excluded from byte counts | Linguist's default — we defer to it |
|
||
| No real-time API / server mode | Scheduled batch renderer, not a service |
|
||
| No WakaTime integration | Other tools already cover this (`athul/waka-readme`, `anmol098/waka-readme-stats`) |
|
||
| No 7×24 heatmap variant of productive time | 24-hour bar chart matches the reference project |
|
||
| Hard 340 px card width | Matches github-profile-summary-cards; customising would cascade through every chart's geometry |
|