Resolve owned namespaces from org memberships with the admin role instead of
assuming a fixed owner list, so repos under orgs I own are included.
- starred: owned public non-fork repos with at least one star, by stars then
most recent push
- linked: owned public non-fork repos exposing a homepage or Pages URL, by most
recent push
- contributed: public repos owned by others, by my merged PR count then most
recent push
Private repos are excluded everywhere; forks are excluded from the owned lists
because their homepage belongs to upstream. Split the generator into API access
and rendering modules.
- rename content/page/pages → content/page/projects, keep /pages alias
- list owned + contributed repos (GraphQL repositoriesContributedTo)
- filter by URL (homepage or has_pages), not just GitHub Pages enabled
- rename script/workflow to update-projects-list.mjs / update-projects.yml
Fetch repos server-side via GitHub API using PAGES_FETCH_TOKEN and
inject the pages list into content/page/pages/index.md between HTML
markers. Runs daily at 00:00 Asia/Saigon and on manual dispatch.