Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
335ff5d
Add donation campaign page design spec
alexwolson May 4, 2026
9493659
Add donation campaign implementation plan
alexwolson May 5, 2026
11cf918
feat: scaffold Cloudflare Worker for donation campaign
alexwolson May 5, 2026
0776784
feat: implement validateAmount with tests
alexwolson May 5, 2026
999e81a
feat: implement incrementTotal and verifyStripeSignature with tests
alexwolson May 5, 2026
5fd1db8
feat: implement Worker routing and endpoint handlers
alexwolson May 5, 2026
b0bd7e0
feat: add donation campaign page with embedded Stripe checkout
alexwolson May 5, 2026
934e394
chore: inject Stripe public key and Worker URL at build time
alexwolson May 5, 2026
7d55f6c
chore: set real Cloudflare KV namespace ID
alexwolson May 5, 2026
541cf5c
Update dependencies
alexwolson May 5, 2026
9e9548d
fix: allow 127.0.0.1 CORS origin; derive return_url from request origin
alexwolson May 5, 2026
741d17b
fix: copy updates and amount correction for donate page
alexwolson May 5, 2026
e848ede
chore: gitignore .wrangler/ cache directory
alexwolson May 5, 2026
a5f7feb
Delete docs/superpowers/specs/2026-05-04-donation-campaign-design.md
alexwolson May 5, 2026
3f4f97e
Update maximum donation limit to $3,500.00
alexwolson May 5, 2026
9bfd4db
Update test for maximum donation limit
alexwolson May 5, 2026
b76b99f
chore: remove unused native build dependencies from worker
alexwolson May 5, 2026
d3a2909
fix: use constant-time HMAC verification for Stripe webhook signatures
alexwolson May 5, 2026
4c3131d
fix: update stale $10,000 maximum test to match $3,500 limit
alexwolson May 5, 2026
1adbc58
test: add unit tests for verifyStripeSignature
alexwolson May 5, 2026
b2c6bdb
fix: omit CORS header for disallowed origins instead of reflecting ci…
alexwolson May 5, 2026
79e4fc0
fix: handle invalid JSON in webhook body with 400 instead of 500
alexwolson May 5, 2026
22dedec
fix: validate /total response and clamp progress bar to goal
alexwolson May 5, 2026
95830c1
fix: harden Stripe signature header parsing and enforce timestamp tol…
alexwolson May 5, 2026
6b088f7
Potential fix for pull request finding
alexwolson May 5, 2026
f7e5a0d
fix: fail CI fast when donate page secrets are missing
alexwolson May 5, 2026
521f179
fix: guard against malformed hex in Stripe signature v1 values
alexwolson May 5, 2026
e8ef6d5
fix: treat corrupted KV total as 0 instead of propagating NaN
alexwolson May 5, 2026
1765206
fix: deduplicate Stripe webhook events using event.id in KV
alexwolson May 5, 2026
0926236
fix: validate amount_total before incrementing KV total
alexwolson May 5, 2026
4cecf96
fix: return 200 + log on invalid amount_total instead of 400
alexwolson May 5, 2026
ba2f6bd
fix: guard against missing Stripe config before initialising SDK
alexwolson May 5, 2026
e136532
fix: add aria-pressed to amount selection buttons for screen readers
alexwolson May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,17 @@ jobs:
# chmod +x _scripts/thumbnail_sizes.sh
# ./_scripts/thumbnail_sizes.sh

- name: Inject feedback token
- name: Inject config secrets
run: |
: "${STRIPE_PUBLIC_KEY:?STRIPE_PUBLIC_KEY secret is not set}"
: "${WORKER_URL:?WORKER_URL secret is not set}"
echo "feedback_token: \"$FEEDBACK_TOKEN\"" >> _config.yml
echo "stripe_public_key: \"$STRIPE_PUBLIC_KEY\"" >> _config.yml
echo "worker_url: \"$WORKER_URL\"" >> _config.yml
env:
FEEDBACK_TOKEN: ${{ secrets.FEEDBACK_TOKEN }}
STRIPE_PUBLIC_KEY: ${{ secrets.STRIPE_PUBLIC_KEY }}
WORKER_URL: ${{ secrets.WORKER_URL }}
Comment thread
alexwolson marked this conversation as resolved.
Comment thread
alexwolson marked this conversation as resolved.

# Outputs to the './_site' directory by default
- name: Build Jekyll site
Expand Down
Loading
Loading