Skip to content

meta: fetcher roadmap - VCS / Forge #63

Description

@unhappychoice

Version control and forge fetchers. Part of the widget catalog index in #41.

All forge fetchers are Safety::Safe — every request targets a fixed host (e.g. api.github.com, gitlab.com), so config-provided repo = "..." / login = "..." only change which resource inside that host is queried; the auth token can't be redirected off-host. Self-hosted instances use a host option.

git_* — local VCS (on-disk repo only)

  • git_status — branch, dirty, ahead/behind
  • git_stash_count
  • git_recent_commits — feeds timeline renderer
  • git_contributors — last M days
  • git_commits_activity — feeds heatmap renderer
  • git_latest_tag
  • git_worktrees
  • git_blame_heatmap — feeds heatmap renderer
  • git_age — shipped in feat(fetcher): add git_age for repository age from first commit #165. 10 shapes: Text (format = "duration" | "since" | "full"), TextBlock / MarkdownTextBlock / LinkedTextBlock duration breakdowns, Entries (years / months / days / first_commit_date), NumberSeries / Bars (years/months/days), Calendar (highlights first-commit day), Badge (fresh < 30d, young < 1y, mature < 5y, ancient ≥ 5y), Timeline (single "First commit" event).
  • git_churn — shipped in feat(fetcher): add git_churn and enforce single-shape renderers #166. Top files by change count over the last N days (default 30, override via format = "N"), capped at top 10. Shapes: Entries (default) / Bars / TextBlock / Text. Walks the gix rev-walk diff with the same MAX_COMMITS=500 safety cap as git_blame_heatmap. Pairs with code_largest_files (meta: fetcher roadmap - Local / System #62) for "where's the action vs where's the mass" framing.
  • git_branches — local branches ranked by last-commit age; surfaces stale branches you forgot (not prompt territory — prompts show only the current branch). Entries / Bars / TextBlock
  • git_branch_age — age of the current branch (first commit not on the default branch); per-dir "this branch is 3 weeks old". Text / Badge
  • git_commit_times — commit count by hour-of-day / day-of-week ("punch card"); feeds chart_histogram. Distinct cut from git_commits_activity's day-over-time heatmap
  • git_conflicts — currently mid-merge / mid-rebase with unresolved conflicts (realtime; Badge / Entries)
  • git_last_fetch — staleness of the remote-tracking refs (.git/FETCH_HEAD mtime); "your main is 5 days behind a fetch". Text / Badge

github_* — GitHub forge

  • github_my_prs
  • github_review_requests
  • github_notifications
  • github_assigned_issues
  • github_contributions — feeds heatmap (草)
  • github_repo_prs — open PRs for a repo (repo option → fallback to git remote of cwd)
  • github_repo_issues — open issues for a repo (repo option → fallback to git remote of cwd)
  • github_repo_stars — stargazer count + forks / watchers / open-issues rollup
  • github_recent_releases
  • github_good_first_issues
  • github_action_status — CI for current repo
  • github_action_history — feeds heatmap / sparkline
  • github_contributors_monthly
  • github_avatar — shipped in feat(fetcher): add fetchers + shape extensions for 0.x presets #88 (public github.com/<user>.png → cache → Image shape; format detected from magic bytes)
  • github_discussions — GraphQL
  • github_sponsorships — GraphQL
  • github_milestone_progress — open vs closed issues in the active milestone; feeds gauge_*, per-dir
  • github_project_board — Projects v2 board grouped by column; feeds the planned grid_kanban renderer
  • github_actions_usage — Actions minutes / storage consumed this cycle (Ratio / Text); distinct from github_action_status (CI result)
  • github_pr_review_stats — your review throughput over the last N days (Text / Bars)

gitlab_* — GitLab forge (GitLab.com + self-hosted via host option)

bitbucket_*

  • bitbucket_my_prs
  • bitbucket_review_requests
  • bitbucket_repo_prs
  • bitbucket_pipeline_status

gitea_* / forgejo_* / codeberg_*

Codeberg runs Forgejo (a Gitea fork); likely a single family with a host option covers all three. Evaluate at implementation time whether to ship as one gitea_* prefix with host discriminator or three separate prefixes.

  • gitea_my_prs
  • gitea_repo_prs
  • gitea_repo_issues
  • gitea_action_status

sourcehut_* (sr.ht)

  • sourcehut_builds
  • sourcehut_my_todos
  • sourcehut_patches

azure_devops_*

  • azure_devops_my_prs
  • azure_devops_pipelines
  • azure_devops_work_items

gerrit_*

  • gerrit_my_changes
  • gerrit_reviews_waiting

Metadata

Metadata

Assignees

No one assigned

    Labels

    widgetBuilt-in widget

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions