Repository navigation
Seasonal themes: a themed animation for every week of the year, plus All Things Open - #231
Open
darkmastermindz wants to merge 3 commits into
Open
darkmastermindz wants to merge 3 commits into
darkmastermindz wants to merge 3 commits into
Conversation
Every week of the year gets a theme from config.toml [seasons]: a few themed emoji drift down (or float up) behind the content on every page, and the topographic lines take the theme's two colours. October is spooky, December has the winter holidays, and dated events take over while they run (All Things Open, Oct 19-21 2026). The theme is picked in the browser from today's date, so it changes with no redeploy. CSS animations only, never in the way of a tap, and hidden for reduced motion and data saving. The config is checked at build time like the other sections (emoji, colours, names and dates), with tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nginuw5wmUjUSkmQB1J3pS
github-actions
Bot
force-pushed
the
seasons
branch
from
October 20, 2026 17:53
f083085 to
cb8c54e
Compare
Conflict in package.json scripts: kept main's test:android and this branch's build:seasons step in predev. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nginuw5wmUjUSkmQB1J3pS
darkmastermindz
force-pushed
the
seasons
branch
from
October 21, 2026 05:35
91bdb8c to
fd0f6bc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every week of the year now has a theme:
October is spooky: Hacktoberfest, the pumpkin patch, bats and spiders, then Halloween and Día de Muertos. Dated events take over while they run. All Things Open (Oct 19–21, 2026) shows laptops 💻, Linux penguins 🐧, Raleigh's acorns 🌰 (the City of Oaks), mics 🎤, stars ⭐ and open locks 🔓 in orange and cyan.
Everything lives in
config.tomlunder[seasons], with 52 weekly themes plus events.Related Issue
None. The user asked for it directly.
Changes Made
config.toml[seasons]:enabled, andparticles(12; phones show at most 8).[[seasons.week]]themes, one per week from Jan 1. Each has aname, up to 8emoji, twocolors, and amotion(fallorrise).[[seasons.event]].utils/seasons.mjs:buildSeasonsConfigchecks the config:#rrggbbonly.themeFor(config, day): an event running that day, or else that week's theme. Feb 29 goes with Feb 28's week.particleLayout: a random position, size, speed, sway and spin for each emoji.scripts/build-seasons.mjs: writesdata/seasons.generated.mjs(git-ignored). It's wired intopretestandpredevlike the other config sections.composables/useSeason.js: picks today's theme in the browser (Eastern time). It changes on its own with no redeploy, and the prerendered page has no theme, so it fits any day.components/SeasonalParticles.vue(added to the default layout):pointer-events: none.components/TopoBackground.vue: the gradient takes the theme's colours, or the usual purple-to-green when there's no theme.tests/app/seasons.test.mjs:tests/security/seasons-config.test.mjs, with aHOSTILE_COLORSpayload list:README.md: a Seasonal themes section, plus the build list and background notes.package.jsonscripts. I kept main'stest:androidand this branch'sbuild:seasonsstep inpredev.How to Test
npm test(232 pass, after the merge with main) andnpm run generate. The build log shows[build-seasons] 52 weekly themes, 1 event(s); today: All Things Open.config.tomlfor today.I checked it in Playwright (Chromium) with a fake clock:
#f97316→#22d3ee#f97316→#a855f7#facc15→#ef4444#f97316→#a855f7Android touch tests (
npm run test:android, from #238), on this branch with the All Things Open emoji showing:Additional Notes
aria-hidden), at 55% opacity.🤖 Generated with Claude Code
https://claude.ai/code/session_01Nginuw5wmUjUSkmQB1J3pS