Site spec — as built
This document describes the current Jekyll site after the rebuild and refinements. It supersedes the initial empty-state requirements.
Identity
_config.ymlkeepstitle: bhanuharya@secandauthor: harya; addedurl,baseurl,lang, and the/blog/:title/permalink format.- No Gemfile required for Pages; remains GitHub Pages-safe (minima theme, plain CSS, no unsupported gems). Local build uses
github-pagesgem if available, otherwise CI builds.
Layouts
default— HTML shell with skip link, canonical URL, Open Graph / Twitter meta, JSON-LD (WebSite for pages, BlogPosting for posts), RSS link, header nav (Blog, About, CRT toggle, Theme switcher, Shortcuts modal), footer with RSS and privacy note. Includes toggleable CRT scanline overlay, the locally sourced Joy Division pulsar SVG controller (assets/js/pulsar-waves.js), and retro games/audio synth engine (assets/js/terminal-games.js).home— terminal article (window dots for close/minimize/maximize fullscreen workstation mode, Joy Division PSR B1919+21 pulsar SVG that progressively stacks its lines once per activation, banner, boot sequence decor), whoami / interests / about, ls navigation, accessible visitor CLI with playable retro mini-games (snake,pong,hack), rich Unix utilities (solaris,cde,waves,crt,sound,cowsay,fortune,dmesg,cal,uname), noscript fallback, plus “Latest note” section.post— title, meta (date, reading time, author), tags, progressive TOC from h2/h3 (hidden until JS populates; dedupes slugs, handles empty slugs, hidden via<noscript>when JS disabled), content, code copy buttons, post nav (Back to blog + Home + next/previous).page— title, content, nav (Back to home, Blog).404.html— terminal-styled not-found with links home/blog.
Content
index.md— layout home (terminal + progressively stacked pulsar waves + games + latest).blog.md—/blog/with lead, interactive tag filtering, post cards (title, date, reading time, tags, excerpt, CTA). Empty state kept.about.md—/about/standalone about page;#aboutanchor still exists on home for deep link._posts/— six published posts: agent access revocation, 4B vs 23B on the 3060, local 8B vs Jev, the SAST setup on SonarQube, Dart rules for SonarQube Community, and Slay the Spire 2 on Android and iOS._drafts/next-article-template.md— working template retained.
Design & Retro Aesthetics
- Dark retro terminal & Unix themes:
default,solaris(Sun CDE workstation),pulsar(stark Joy Division monochrome),matrix(phosphor green),amber(warm CRT amber),cyber(neon cyberpunk), andmonochrome(silver/black). - Joy Division Unknown Pleasures (PSR B1919+21) stacked radio frequency wave SVG with a one-shot top-to-bottom reveal, replayed on activation and shown immediately for reduced-motion users.
- Authentic CRT display mode: Scanline raster overlay, phosphor text bloom, tube vignette curvature, degauss flash animation, toggleable via
ckey orcrtcommand. - In-terminal 8-bit games:
snake(high score tracking),pong(1P vs CPU paddle match),hack(memory cipher decryption). - Web Audio API synthesizer for retro mechanical keyclicks, degauss hum, game score chimes, and beeps (opt-in / toggleable via
sound on). - Body monospace globally;
.post-contentand.page-contentuse system sans-serif for readability. - Decorative animations respect
prefers-reduced-motion: reduce. - Touch targets: nav links 44px, input 44px, suggestion buttons 32px, visible focus outlines.
Constraints honored
.github/workflows/jekyll-gh-pages.ymluntouched.- No external fonts/CDN, zero external dependencies, no analytics.
- Sanitized: no secrets/IPs/hostnames in content.
Verification
bundle exec jekyll buildwhere Ruby available; otherwise inspect front matter and generated HTML for one h1 per page, canonical/OG tags, valid internal links. No local Ruby/Jekyll required — GitHub Actions (actions/jekyll-build-pages@v1) is the authoritative build on push tomain.- Manual checks: keyboard nav (
g h,g b,g a,c,w,f,t,?,/), reduced-motion, no-JS fallback, mobile at 320/375/414/768. - Ignored:
session-*.md,_site/,.jekyll-cache/,.bundle/,vendor/(see.gitignore).