Skip to content

Add animated SVG banner - #16

Merged
marcuspat merged 2 commits into
mainfrom
svg-banner
Oct 7, 2026
Merged

marcuspat merged 2 commits into
mainfrom
svg-banner

Conversation

@marcuspat

Copy link
Copy Markdown
Owner

Adds a 1200x400 neon-aurora animated SVG banner above the README title.

  • pure SMIL animation — no JS, animates through GitHub's camo image proxy
  • generated by the estate banner generator (turbo-rig/animated-svgs), XML-validated and render-QA'd in headless Chrome
  • asset only: no code, no config, no behavior change

@marcuspat

Copy link
Copy Markdown
Owner Author

Gate review — reviewer: claude

Lanes: reviewed by claude

GATE USAGE reviewer=claude in=2 cached=47,058 out=1,856 20s model=claude-opus-5-5 $0.332 API-equiv (not billed on subscription)

Review: PR #16 (adds assets/banner.svg and a banner line in README.md)

The diff is an asset plus one line of README markup. It contains no logic and needs no tests.

Security: clean. The SVG has no <script>, no <foreignObject>, no href/xlink:href and no external URLs or fonts. It only uses SMIL animation and gradients/filters defined inside the file. GitHub loads it through <img>, which sandboxes it anyway. There are no secrets in either file.

Correctness: checked against the diff.

  • Timing (assets/banner.svg:98-105): the moving dot starts at the top node. With sweep-flag=1 it travels clockwise, reaching PLAN at 0.25, APPROVE at 0.5 and ACT at 0.75 of the 7s cycle. The APPROVE ring pulses at keyTimes 0.46–0.62 and DENY switches to ALLOW at 0.5. Both line up with the dot reaching APPROVE.
  • keyTimes (:90-91, :95, :96, :103-106): every values list has the same number of entries as its keyTimes, and each starts at 0. The linear-mode animations end at 1. The discrete ones (:95-97) end at 0.85, which SMIL allows for discrete mode.
  • Fit within the 1200×400 canvas: the APPROVE label sits at y=398 (308 + 90) and has no descenders. The pulse ring reaches at most y=400 (308 + 58 + 34). The audit chain spans x 900–1036 and the DENY pill spans x 138–242. Nothing is clipped.

Minor issues (none block the merge):

  • assets/banner.svg:76: the 19px subtitle is about 113 characters with 0.4 letter-spacing, so I estimate it's roughly 1100px wide on a 1200px canvas. Fallback fonts could push it to the edges. I haven't rendered it, so this is unverified.
  • assets/banner.svg:22,27: two stars sit almost on top of each other (658,53 and 651,56). This is cosmetic.
  • The animations loop forever and ignore prefers-reduced-motion. This is an accessibility nicety.
  • README.md:1: the alt text is fine, and the SVG's role="img", <title> and aria-label are all present.

VERDICT: APPROVED


VERDICT: APPROVED

@marcuspat
marcuspat merged commit 324b23e into main Oct 7, 2026
2 checks passed
@marcuspat
marcuspat deleted the svg-banner branch October 7, 2026 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant