Skip to content

season: Halloween, in GitHub's Halloween graph colours - #18

Merged
azank1 merged 1 commit into
mainfrom
feat/halloween
Oct 31, 2026
Merged

azank1 merged 1 commit into
mainfrom
feat/halloween

Conversation

@azank1

@azank1 azank1 commented Oct 30, 2026

Copy link
Copy Markdown
Owner

On 31 October GitHub turns its contribution graph orange for the day. With this change commit.city does too, going by the visitor's own date as GitHub does.

In a city (viewer/src/season.js, wired into main.js behind one flag)

  • GitHub's Halloween graph colours. Beams, ports, pulses and the avatar's rings turn orange. The sky becomes purple-black (#03001c) over a dusky horizon. The nine file types get Halloween colours, and the legend shows them.
  • The daily timeline uses GitHub's four Halloween levels (#631c03, #bd561d, #fa7a18, #fddf68). Each day's level is its quartile among the days with commits. The repo status dots use the same ramp, hottest brightest.
  • A harvest moon above the city, in the open sky at the opening angle. Its bearing follows the camera and its elevation is fixed to the world. Bats circle above the avatar, and four cross the moon.
  • Ghosts: when the replay reaches a deleted file, a ghost rises where that file stood. Big deletions are capped at 6 ghosts per frame, from a pool of 40.
  • The agent lens becomes the ghostwriter lens. Its colours are data, so they stay as they are, and so does every count and height.
  • A 🎃 button turns the look off (in that browser, until next year) or back on. #theme=halloween shows it on any day and #theme=plain hides it. An embed stays plain unless it asks. The 9:16 recorder's overlay uses the orange accent.

On the site

  • A Halloween bar on every page, with a "Turn it off" button. The accent turns orange, the hero reads "Your GitHub, as a haunted city.", bats fly over the hero (they stay still under reduced motion), and the hero's player opens in the Halloween look.
  • The site's cyan is now one variable (--accent-rgb), so the season changes it in one place. The data colours (human, bot, agent, event types) stay literal.
  • An inline head script sets data-season before the first paint, so there's no flash of the plain look.
  • /about lists theme= with the other embed parameters. The README lists season.js.

Not changed: server-rendered images (README cards, link previews, gallery thumbnails) and /events. Their caches outlive the day, so a Halloween card could still be served on 1 November.

Evidence (local dev server, headless Chrome, swiftshader)

  • Viewer self-test with #theme=halloween: 27/27 on sindresorhus, including the new checks. The moon is in the opening view (screen position 0.27, 0.67). The bats move. 2 files deleted over 8 replayed weeks raised 2 ghosts. supabase/supabase-swift also passes 27/27 (0 deletions in that span). The 9:16 recording passes in both runs.
  • Viewer self-test with #theme=plain: 24/24 (the Halloween checks are skipped).
  • Screenshots: the city in both looks at 1440×900 and a repo city at 412 px; home at 1440 px (Halloween and plain) and 400 px; /explore. The plain home is unchanged. It also fixes a gap I briefly introduced in the hero pill (an extra flex item); final check: "The agent lens: see what…".
  • Web suite 63 pass, 0 fail. Typecheck is clean. Python suite 21 OK. node viewer/build.mjs && node web/scripts/site.mjs leaves the tree clean.

On 31 October GitHub turns its contribution graph orange for the day. Now
commit.city does too, by the visitor's own date, the way GitHub does.

In a city (viewer/src/season.js):
- GitHub's Halloween graph colours: orange beams, ports and pulses, a
  purple-black sky (#03001c) over a dusky horizon, and Halloween colours
  for the nine file types, which the legend shows.
- The daily timeline in GitHub's four Halloween levels (#631c03, #bd561d,
  #fa7a18, #fddf68), each day's level its quartile among days with
  commits. Repo status dots take the same levels, hottest brightest.
- A harvest moon above the city, bats circling the avatar and crossing
  the moon, and a ghost that rises where a file is deleted, when the
  replay reaches that deletion.
- The agent lens is the "ghostwriter lens". Its colours are data, so
  they stay as they are, and so do every count and height.
- A pumpkin button turns it off (until next year, in that browser) or
  back on. #theme=halloween shows it any day, #theme=plain hides it, and
  an embed stays plain unless it asks.

On the site: a Halloween bar with "Turn it off", the accent in orange,
"Your GitHub, as a haunted city.", bats over the hero, and the hero's
player in the Halloween look. The site's cyan is now one variable
(--accent-rgb), so the season changes it in one place; the plain look
is unchanged.

The viewer self-test gains three checks: the moon is in the opening
view, the bats fly, and deleted files raise ghosts.
@vercel

vercel Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
commit-city Building Building Preview Oct 30, 2026 8:16pm UTC

@azank1
azank1 marked this pull request as ready for review October 31, 2026 13:38
@azank1
azank1 merged commit c428f65 into main Oct 31, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — b2b956d4 Deployed Oct 30, 2026 by vercel[bot]
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