wyattowalsh docs

Animated Art

CSS-animated SVGs seeded from paginated commit history.

Modules

  • scripts/animated_art.py — top-level orchestrator
  • scripts/art/animate.py — animation primitives and CSS keyframe generation
  • scripts/art/shared.py — shared seed utilities

How it works

  1. fetch_history paginates the GitHub commit history → history.json (time-series)
  2. The commit cadence is used as the entropy source for seed_hash()
  3. CSS keyframe animations are generated inline — no JavaScript required
  4. Light and dark variants are written separately

CLI

# Fetch history first
uv run python -m scripts.fetch_history \
  --owner wyattowalsh \
  --repo wyattowalsh \
  --output /tmp/history.json

# Generate animated SVGs
uv run python -m scripts.cli generate animated \
  --history-path /tmp/history.json

Output files

FileDescription
.github/assets/img/animated-activity.gifGitHub-safe animated activity art preview (light)
.github/assets/img/animated-activity-dark.gifGitHub-safe animated activity art preview (dark)
.github/assets/img/animated-activity.svgAnimated activity art (light)
.github/assets/img/animated-activity-dark.svgAnimated activity art (dark)
.github/assets/img/animated-community.gifGitHub-safe animated community art preview (light)
.github/assets/img/animated-community-dark.gifGitHub-safe animated community art preview (dark)
.github/assets/img/animated-community.svgAnimated community art (light)
.github/assets/img/animated-community-dark.svgAnimated community art (dark)

Animation approach

The source assets use CSS @keyframes and SMIL embedded directly in the SVG. For GitHub README compatibility, the CLI also renders timeline-matched GIF previews from snapshot frames generated by the same reveal logic.

Dev profiles

scripts/art/_dev_profiles.py contains a PROFILES dict of mock metrics used for local testing without a live GitHub token:

from scripts.art._dev_profiles import PROFILES

mock_metrics = PROFILES["high_activity"]

Use dev profiles to test art generation locally without a GITHUB_TOKEN. Available profiles include various activity levels and repo compositions.