feat: animation/delight pass + selectools.dev custom domain#40
Merged
johnnichev merged 2 commits intomainfrom Apr 6, 2026
Merged
feat: animation/delight pass + selectools.dev custom domain#40johnnichev merged 2 commits intomainfrom
johnnichev merged 2 commits intomainfrom
Conversation
Applies /animate + /delight skills following the new .impeccable.md design context. Nine focused changes across landing page and docs: landing/index.html - prefers-reduced-motion support (WCAG AA) - scroll progress bar + nav hide-on-scroll-down - hero stats count-up (152 models, 4612 tests, ...) on scroll-in - tactile button feedback (1px press, ease-out-quart, colored glow) - pip copy upgraded: text swap, cyan pulse, green success - card hover lift (translateY + deeper shadow) - nav logo hover wink (3deg rotate) - styled console.log easter egg with NichevLabs contact docs/stylesheets/extra.css - admonition hover lift + shadow - card hover lift - animated underline on body links - code-copy button scale, nav link slide-right, content fade-in - matching prefers-reduced-motion block .impeccable.md (new) - persistent design context: brand, palette, principles, a11y All motion uses cubic-bezier(0.16, 1, 0.3, 1). No layout-animating properties (transform/opacity only). Reduced motion fully respected per the WCAG AA target in .impeccable.md.
Switches the canonical URL from johnnichev.github.io/selectools to
selectools.dev across the entire public surface.
- docs/CNAME (new) — mkdocs auto-copies to site/CNAME at build time,
which is what GitHub Pages reads to enforce the custom domain
- mkdocs.yml site_url
- pyproject.toml Documentation URL (sbom.json regenerates from this)
- sbom.json url
- landing/index.html — canonical, og:url, og:image, twitter:image,
JSON-LD schema, FAQ answer (6 refs)
- landing/simulations/index.html (6 refs)
- docs/llms.txt (37 refs) and llms-full.txt (2 refs)
- docs/robots.txt sitemap directive
- docs/QUICKSTART.md, docs/modules/builder.md
- README.md (5 badges + links)
- ROADMAP.md, CLAUDE.md, SECURITY.md
66 URL replacements in total. Mechanical find-replace, no other content
changed. Verified `mkdocs build` clean, site/CNAME present, sitemap.xml
emits selectools.dev URLs.
DNS + GitHub Pages settings still required (see PR description).
This was referenced Apr 6, 2026
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
Two related changes bundled on this branch per the "one branch until release-ready" workflow:
ff06696)8679d44)1. Animation + delight (commit
ff06696)Applies
/animate+/delightskills guided by a new.impeccable.mddesign context. Nine focused changes, no destructive refactors, no existing animations touched.Landing page (
landing/index.html)prefers-reduced-motionsupport — WCAG AA requirement per.impeccable.mdcubic-bezier(0.16, 1, 0.3, 1), colored glows on primary and cyan CTAstranslateY(-2px)+ deeper shadowconsole.logwith NichevLabs contact for devs who open DevToolsDocs site (
docs/stylesheets/extra.css)::after+transform: scaleX())prefers-reduced-motionblockNew file
.impeccable.md— persistent design context: brand (Bold/Developer-First/Complete), palette, typography, 5 design principles, WCAG AA target. Auto-consumed by future design skills.2. selectools.dev custom domain (commit
8679d44)66 URL replacements:
https://johnnichev.github.io/selectools→https://selectools.devacross the entire public surface.Files changed (15 total)
docs/CNAME(new) — single lineselectools.dev. MkDocs auto-copies non-markdown files fromdocs/tosite/, so this becomessite/CNAMEon every build, which is what GitHub Pages reads to enforce the custom domain. No workflow edit required.mkdocs.yml—site_urlpyproject.toml—DocumentationURL (regeneratessbom.jsonon next release)sbom.json—urllanding/index.html— canonical, og:url, og:image, twitter:image, JSON-LD schema, FAQ answer (6 refs)landing/simulations/index.html— 6 refsdocs/llms.txt— 37 refs (the LLM-readable site index)docs/llms-full.txt— 2 refsdocs/robots.txt— sitemap directivedocs/QUICKSTART.md,docs/modules/builder.md— 1 ref eachREADME.md— 5 badges + linksROADMAP.md,CLAUDE.md,SECURITY.md— 1 ref eachVerified locally
mkdocs build→ 0 errors, 0 warnings (besides pre-existing README/index conflict)site/CNAMEpresent after buildsite/sitemap.xmlemitsselectools.devURLs⚠ Manual steps still required (after merge)
These cannot be automated from the codebase — they have to happen on Hostinger and GitHub:
1. Hostinger DNS records for
selectools.devAdd these in Hostinger → Domains → selectools.dev → DNS Zone Editor:
185.199.108.153185.199.109.153185.199.110.153185.199.111.1532606:50c0:8000::1532606:50c0:8001::1532606:50c0:8002::1532606:50c0:8003::153johnnichev.github.ioThe IPv4 A records are required. The IPv6 AAAA records are optional but recommended (faster for IPv6 clients). The www CNAME makes
www.selectools.devredirect to the apex.Remove any default Hostinger A records that point to Hostinger's parking IPs before adding the GitHub ones.
2. GitHub Pages settings
After DNS propagates (usually 5–60 min, can be up to 24h):
selectools.dev→ Save3. Verification
Then visit https://selectools.dev — you should see the landing page with all the new animations.
4. Post-merge follow-ups (separate PRs)
https://selectools.dev/sitemap.xml)DocumentationURL inpyproject.tomlis already updated and will flow through on the next release).private/(out of scope for this PR)Test plan
Pre-merge — local mobile testing (in progress):
@media (hover: hover)guard as follow-up)Pre-merge — desktop:
mkdocs servedocs site — admonitions, cards, code blocks, linkspip install selectoolsbutton copies to clipboardPost-merge — domain rollout:
selectools.devhttps://selectools.devserves the landing pagehttps://selectools.dev/QUICKSTART/serves the docshttps://selectools.dev/builder/serves the visual builderhttps://www.selectools.devredirects tohttps://selectools.devjohnnichev.github.io/selectoolsURLs still redirect (GitHub auto-handles this)Regression:
mkdocs buildsucceeds cleanlysite/CNAMEandsite/sitemap.xmlcorrect after buildWhat's NOT in this PR
.revealanimations (intentionally untouched).impeccable.mdprinciple feat: v0.16.0 — Memory & Persistence #4 "no visual noise").private/blog posts and launch materials with old URLs (out of scope; not user-facing)docs/→ MkDocs copy, nodocs.ymledit needed)