27 Commits

Author SHA1 Message Date
Vinta Chen 0bf9522e5d chore: add uv supply-chain hardening and enforce locked installs
- Set exclude-newer to 3 days and only-binary/:all: in pyproject.toml to
  limit dependency freshness window and block source builds
- Switch uv sync to --locked in Makefile, ci.yml, and deploy-website.yml
  to enforce the lockfile rather than re-resolving on each install
- Regenerate uv.lock with exclude-newer snapshot recorded

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-22 02:21:48 +08:00
Vinta Chen a2303c9389 ci: skip deploy job on forks
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-03 16:16:08 +08:00
Vinta Chen c6004c971f ci: skip tests on non-scheduled deploy runs
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-03 16:03:35 +08:00
Vinta Chen b7b8eb02d1 ci: always run tests and simplify branches syntax in deploy workflow
Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-03 16:00:21 +08:00
Vinta Chen 54864ab37a ci: merge build/deploy jobs and cache stars by date
Collapse the two-job workflow into one, set the github-pages
environment on the single job, and key the star-data cache by
date (YYYY-MM-DD) so it is shared across same-day runs instead
of being per-run-id. Also skip tests on scheduled runs and
validate JSON before serving it.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-03 15:55:46 +08:00
Vinta Chen 32acf942d9 ci: run tests before building and deploying website
Catches parser regressions before any deployment artifact is produced.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-22 01:32:28 +08:00
Vinta Chen 957d685ff4 ci: run fetch-stars step on every workflow trigger
Removed the 'if: github.event_name == schedule' guard so the step also
runs on manual dispatches and push-triggered deploys, not only on the
nightly schedule.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 22:55:29 +08:00
Vinta Chen 0d9dfb2713 ci: consolidate star fetch into deploy workflow using Actions cache
Replace the separate fetch-github-stars.yml workflow (which committed
star data back to git) with an inline fetch step in deploy-website.yml.
Star data is now stored in Actions cache between runs, eliminating the
workflow_run trigger chain and the need to track github_stars.json in
the repository.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 22:44:29 +08:00
Vinta Chen 3c3f371791 fix: use canonical GitHub Actions bot email with numeric ID
The generic email 'github-actions[bot]@users.noreply.github.com' does not
match GitHub's actual bot account. Using the numeric-prefixed form
'41898282+github-actions[bot]@users.noreply.github.com' ensures commits
made by the workflow are correctly attributed to the bot account.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 22:28:25 +08:00
Vinta Chen bfed6a5c81 ci: trigger deploy after fetch-github-stars workflow succeeds
Adds a workflow_run trigger so the site is rebuilt whenever fresh
star data lands on master, in addition to the existing push trigger.
The build job guard ensures it only runs on direct pushes or when
the upstream workflow concluded successfully.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 22:18:10 +08:00
Vinta Chen bbe145cb36 ci: add workflow to fetch and commit GitHub stars daily
Runs on a nightly schedule, installs deps with uv, calls make
fetch_github_stars, and pushes an update commit only when the
star data file actually changed.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 22:18:04 +08:00
Vinta Chen b6d1bf9307 ci: use uv dependency groups and Makefile target for deploy workflow
Switches install step from --no-dev to --group build for explicit
dependency group selection, and replaces the bare python invocation
with `make build` to use the canonical build entrypoint.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 21:33:57 +08:00
Vinta Chen c5caa5a5e1 ci: hardcode deployment URL to https://awesome-python.com
The deploy-pages action outputs http:// despite HTTPS being enforced.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 14:03:50 +08:00
Vinta Chen 2fe0f5c2bd ci: bump actions/checkout to v6 and upload-pages-artifact to v4
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:57:26 +08:00
Vinta Chen 177183d9bd add custom website build system
Replaces MkDocs with a bespoke Python site generator using Jinja2 templates
and Markdown. Adds uv for dependency management, GitHub Actions workflow for
deployment, and Makefile targets for local development (fetch_stars, build,
preview, deploy).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:48:49 +08:00
Vinta Chen 852202a1a4 Remove Claude PR review GitHub Actions workflow
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 01:16:30 +08:00
Vinta Chen 42db7e6559 ci: disable automatic PR trigger for Claude review workflow
Switch from pull_request event to workflow_dispatch only, commenting
out the pull_request trigger. This allows manual invocation while
preventing automatic runs on every PR.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-10 12:04:01 +08:00
Padraic Slattery 97831e1078 docs: Update outdated GitHub Actions version 2026-01-14 17:13:12 +01:00
Vinta Chen e858779e03 fix: quote if condition to fix YAML parsing error
The colon in 'DECISION: REJECT' was causing YAML parsing issues.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 14:32:51 +08:00
Vinta Chen dbb805c624 feat: add structured decision format and auto-close for rejected PRs
Enhance the Claude PR review workflow with:
- Remove redundant criteria mention (already in CONTRIBUTING.md)
- Add file access restrictions to prevent unnecessary file reads
- Require structured DECISION output format for automation
- Auto-close rejected PRs with explanatory comment

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 16:46:33 +08:00
Vinta Chen e05cd240c9 docs: clarify id-token permission comment in workflow
Update comment to better reflect the actual purpose of the id-token
permission for Claude GitHub app functionality.

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:38:19 +08:00
Vinta Chen 43046d9848 ci: update workflow trigger label to 'claude review'
Change label name from 'claude-review' to 'claude review' for consistency
with GitHub's standard label naming convention using spaces.

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:38:09 +08:00
Vinta Chen 7d215c37a5 ci: add id-token write permission for OIDC authentication
Enable OIDC authentication in Claude PR review workflow by adding
id-token write permission.

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:14:04 +08:00
Vinta Chen e5d4d4f2b7 ci: remove Claude mention workflow
Removes the generic Claude mention workflow in favor of more focused,
context-aware workflows already in place.

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:08:39 +08:00
Vinta Chen e65cc4917f ci: add focused Claude workflows with context-aware prompts
Add claude-mention.yml for @claude mentions in issues/PRs and
claude-pr-review.yml for automatic PR reviews.

Key improvements:
- claude-mention: Triggers on @claude with project-specific prompt
- claude-pr-review: Auto-reviews PRs from new contributors with CONTRIBUTING.md criteria
- Both workflows: Restricted permissions (read-only contents, no merge capability)

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:03:05 +08:00
Vinta Chen e803fd3e48 ci: remove generic Claude workflows
Remove claude.yml and claude-code-review.yml in preparation for more
focused workflow separation.

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:02:57 +08:00
Vinta Chen 65eba38143 ci: add Claude Code GitHub Actions workflows
Add two workflow configurations for AI-assisted development:
- claude-code-review.yml: Automatic PR reviews on new/updated PRs
- claude.yml: Interactive Claude assistant via @claude mentions

These workflows integrate with Claude Code to automate PR reviews
and provide on-demand AI assistance in issues and PR comments.

🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 11:23:58 +08:00