Files
saphid--frame-control/site
saphidandClaude Opus 5.5 2b89eeba1d Website: fix visual bugs found in a page-by-page review
- Gradient buttons showed a dark sliver on the right: the background shorthand reset
  background-origin, so the gradient repeated under the transparent border.
- Phone header: keep the brand on one line and drop the GitHub button under 480px.
- Hero pill: put the platform list on its own line on phones instead of orphaning one item.
- Privacy page: plain sections instead of open accordions whose x looked like a close button.
- Same header (GitHub button) and footer links on every page; legend spacing on the form.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:26:43 +10:00
..

Website

The Frame Control website, https://frame-control.pages.dev, on Cloudflare Pages.

  • public/: static pages. / is the landing page, /feedback/ the feedback form, /privacy/ the privacy note.
  • functions/api/feedback.js: POST /api/feedback, which turns the form into a GitHub issue labelled feedback.
  • lib/feedback.js: validation and issue formatting, tested by test/feedback.test.mjs.
  • public/js/site.js: settings, including the Ko-fi page name for the donate buttons.

Feedback → GitHub issues

The function needs a GITHUB_TOKEN secret: a fine-grained token with Issues: read and write on saphid/frame-control only. Issues are opened as the token's owner, so they pass the contributor gate (.github/workflows/issue-gate.yml) and stay open. Without the token the form answers 503 and offers a prefilled GitHub issue instead.

cd site
npx wrangler pages secret put GITHUB_TOKEN --project-name frame-control

Spam protection: a hidden honeypot field, a 3-second minimum fill time, 5 submissions per hour per IP (a salted hash, kept in the FEEDBACK_RL KV namespace for about an hour), and 100 a day in total. User text has @mentions and #123 references broken so nobody gets pinged.

Run and deploy

cd site
node --test test/*.test.mjs
npx wrangler pages dev --port 8788           # local; put GITHUB_TOKEN/GITHUB_REPO in .dev.vars to test issues
npx wrangler pages deploy --branch main      # production

Point GITHUB_REPO in .dev.vars at a scratch repo when testing locally so test issues don't land on the real tracker.