latest 2026.09.25 (561)
Changelog
Release notes for this site, generated from the commit history. One release per day that shipped something visible.
$(click to copy command)git log --format=release | head -27⌘C
- 2026.09.25
- fixblog: align the RAG post's vault stories with the vault config0b82c6c
- fixadapt dependency updates to Astro 7 markdown and preview859a3ec
- fixcontent: say Astro 7 and drop the literal "--" in the shell hint5168ad0
- fixblog: correct LazyGraphRAG and GraphRAG cost claims in RAG post1cb316c
- fixblog: apply audit style findings to the RAG postf60b4e5
- fixblog: address remaining review findings in the RAG post6a1e215
- fixblog: address remaining review findings in the network post30c6ede
- fixblog: tighten style of the network post in both languagesb96664c
- fixblog: polish the Russian RAG post after review85d670f
- fixblog: correct RAG post facts and em-dash rendering83c0c21
- 2026.09.05
- fixa11y: restore Lighthouse accessibility 100 on the home page6a1997c
- featprojects: show real release data from GitHub per projectd88e259
- featchangelog page generated from conventional commits1d00955
- featui: one reveal order for every panel: frame, rule, contentc31779f
- featblog: figure captions open with a FIG field code82e3e8e
- featblog: show the machine-readable twins in the post header1bcc3e5
- featblog: set post and index titles in Piazzolla140eaeb
- featblog: monochrome syntax highlighting for code blocks4f62625
- featblog: remember reading position and offer to resume987e575
- featui: vim-style status line replaces progress chrome34294c5
- featui: split hero, sticky project index, cleaner navb415228
- perfship blog metadata to islands, stop hero layout shiftd71c8a2
- fixsettings: render persisted preferences only after mount7c24912
- 2026.08.02
- fixblog: sync corrected Russian diagramsedecbc7
- 2026.07.27
- 2026.07.11
- 2026.07.07
- featblog: add network-isnt-broken-just-here post with diagrams17c23a8
- 2026.06.21
- 2026.06.20
- featseo: strengthen GEO/AI-crawler discoverability across the site2a68ce1
- 2026.06.19
- fixa11y: give the experience view-all link an accessible name7298681
- fixa11y: meet 44px touch target on contact links49f77ce
- fixa11y: drop inappropriate role=group on terminal formfd21144
- fixa11y: resolve label-in-name on view-all links (WCAG 2.5.3)e19ff21
- fixa11y: give every standalone page a single h11953720
- fixblog: stop infinite render loop on posts with imagesc2c03c9
- fixgithub: correct cache-HIT header, align tests with Cache APIcc6ebdc
- fixseo: json-ld, og/twitter meta, hreflang, robots, rssa3c3f25
- perfcache API for github routes, font preload, lighter motionbaec9a9
- fixsecurity: auth hardening, hashed sessions, proxy fixes6ddf13a
- fixdesign: demote font-mono; remove glass and scale motiond1a2195
- fixa11y: aria state, dialog, labels, focus, contrast1a2263d
- fixcontent: seed recurses en/ru, add lang schema, validation66cbf4b
- 2026.05.23
- fixci: restore useInView import and replace dropped lucide brand icons687db22
- 2026.05.18
- fixaddress audit findings1fed305
- 2026.05.17
- 2026.04.24
- fixaddress project audit findings860dfbc
- 2026.04.19
- fixog: cache-bust default card URL to evict Telegram preview cachef0f1ce7
- fixog: render default card instead of blank placeholder5e00414
- fixdecorations: make zero-event activity bars visibleb5bad7a
- fixblog: remove picture flicker and mobile horizontal overflow086b75b
- fixcontent: shrink rag mobile figures to content sizeaa0c561
- fixblog: sync picture source media with site theme class1f70c49
- fixblog: satisfy tsc strict checks in ImageLightbox3b6483e
- featblog: migrate post figures to astro:assets with BlogFigure63b96bb
- featblog: lightbox thumbnail strip and ?fig=N deep-linking9ae51e1
- perfblog: inject width/height on post images for zero CLSa66a209
- fixcontent: re-self-close <source> / <img> in RAG post after resync76ec13b
- perfblog: preload neighbour figures in the lightbox23053f4
- fixblog: pick the right picture variant for viewport × theme859b39e
- featblog: prefer sibling Figure caption over alt in the lightbox424bd24
- featcontent: regenerate rag article with mobile image sourcesf7a76f2
- featblog: mouse pan at natural image size in the lightbox90cabb2
- featblog: follow site theme for lightbox image variant0839732
- featblog: return focus to the triggering image on lightbox closeea09e4e
- featblog: swipe to navigate images in the lightbox11c08e4
- featblog: click-to-zoom lightbox for article images2a5019d
- fixcontent: self-close <source> and <img> in RAG post MDX4a97733
- featcontent: publish rag-breaks-earlier-than-people-think (EN + RU)9c8eea6
- 2026.04.18
- featblog: piazzolla prose, toc sidebar, wider reading columnb8b763c
- perffonts: harden cyrillic fallback chain89dea48
- perfdecorations: defer GitHub fetches until after window.load7e0b5e0
- feathero: enrich BuildStats and LatestRelease sidebar widgetseb86fb2
- feathero: enrich LatestPost and Activity sidebar widgetsaa4832d
- perfloading: preload Geist + lift katex from critical CSSb1b3d2a
- fixmotion: remove banned geometry reveals and pulse loops1415844
- fixseo: clean robots.txt and make Link header hreflang absolute661bd85
- fixtheme: drop border-radius from focus ring for sharp corners62bb82e
- perfdecorations: defer hero sidebar GitHub fetches to idle05bd7f2
- perfhero: paint LCP identity panel from SSR HTML11b49d8
- fixseo: use absolute URLs for hreflang RSS alternates6f64e50
- fixhome: remove phantom trailing space below blog-statsf0c26a7
- featagents: expose site tools via WebMCP and a JSON site index0fe2a8a
- featseo: declare Content-Signal preferences in robots.txta3d2052
- featseo: add Link response headers for agent discovery2a64659
- fixprojects: key project links by href to avoid React collision0db1f1d
- featsite: swap favicon to swiss-style 4 mark5aacccb
- feattheme: default site to light theme8db7e79
- featskills: adapt logo-generator for claude + codexf8ae6fa
- featblog: copy-as-markdown button and reading polishf88858b
- featblog: improve article reading screen UX1d8f3fa
- featseo: emit self-referential hreflang on all posts26ca231
- featseo: generate per-post OG images at build time5220d68
- featseo: noindex admin routesa922a07
- featseo: add SoftwareApplication JSON-LD for projectsd8a7623
- featseo: add raw-markdown route for Russian blog postsc720723
- featseo: add og:locale and og:site_name3290bba
- featseo: use ISO dates and enrich BlogPosting JSON-LD557d4ec
- featseo: add RSS feeds for en and ru blog posts1ba670b
- featseo: add per-bot robots.txt directives62405da
- fixadmin: inject react-refresh preamble for dev-mode renderingdc1ec74
- featanalytics: server-side pageview fallback from the Worker44455b5
- 2026.04.17
- featanalytics: drop CF beacon, wire custom events, tighten tracker9e7c1c4
- fixapi: return empty result on GitHub proxy failureebb9c83
- featanalytics: serve Umami tracker via first-party cloaked path23342ec
- fixhome: show full release URL in LatestReleasePanel7154e9c
- fixhome: drop content-visibility placeholder on null-prone sectionsb82b3da
- fixblog: remove duplicate language switcher on article pages0113ca7
- 2026.04.16
- featblog: add arXiv links and LaTeX math to article6e7dcdf
- fixhero: add padding to sidebar panels and truncate release URL33862c4
- featui: animated checkmark, terminal cursor, tag glow trails1b0b9a2
- featui: nav sliding indicator, scroll gradient, 404 flicker2f69e7b
- featcursor: add spring smoothing and reactive sizing to cursor glow1f65938
- featnav: add radial wipe theme switch and sliding language indicator44d4b2a
- fixblog: merge EN/RU posts in home preview6fa4aa7
- fixblog: language switcher, list links, CSP font-src7909b2c
- feathome: replace tag heatmap with GitHub activity calendar8686637
- fixblog: show post content, replace CPU widget, clean footer21264da
- fixhero: fix panel padding, truncation, and undefined roleCountd18e9b4
- fixhero: fix infinite re-render in VisitorContext7bd75b0
- feathome: replace fake widgets with real GitHub data4a4607b
- feathero: replace static boot block and sidebar with real data784de1f
- fixblog: remove broken skeleton loader from blog list pagesde56ab6
- fixe2e: simplify blog list hydration test348f095
- fixe2e: update tests for published blog contentf6c748d
- featanalytics: add Cloudflare Web Analytics and Umami tracking54bc73f
- fixarch: security hardening, indexes, build robustnessded227d
- featblog: add first article -- RAG breaks earlier than people think12f8be7
- fixui: empty blog state, a11y focus, hero cleanupe362997
- featskills: add design skills and signal-deck systemcd8d0d9
- fixsecurity: patch hono vulnerabilities in accesslint-mcp4fa56c2
- fixsecurity: patch hono vulnerabilities in cms-mcp50ea0e4
- 2026.04.15
- featblog: add GFM, LaTeX math, and figure support to MDX pipelinef7e591a
- 2026.04.11
- featdecorations: add five real-data homepage widgets87a13fa
- featterminal: gibson-cyberpunk texture and density upgradeda45c17
- feathero: replace fake system widgets with real data sourcesce8980a
- fixlogin: wrap request.json() in try/catch to return 400 on bad JSON4665091
- featlinks: add app store placeholder in parity with google playbba153f
- fixdecor: remove infinite scale pulse on booted iOS simulator labels295f02b
- fixdecor: slow NetworkGraph update interval from 500ms to 3s0ac93dd
- fixadmin-handler: log unhandled errors with clearer 500 messagea71d5f3
- fixauth: distinguish bad requests from server errors in passkey verify3df6fab
- fixhero: bump name heading to text-2xl for visible prominenceb3fb9bd
- fixlayout: alternate content and decorative sections on the homepagef9a39ba
- fixa11y: raise /40 opacity to /70 on informational UI text for WCAG AA267a843
- fixmotion: respect in-app reduceMotion for homepage section reveals2bd664a
- featauth: enforce per-session capability scoping in withAdmin2534c23
- fixauth: stop refreshing setup-token lifetime in register-options2b19642
- fixtests: resolve TypeScript errors under noUncheckedIndexedAccessb61d141
- fixe2e: realign data assertions and stabilize blog filterf81e6be
- fixpatch basic-ftp CRLF injection vulnerabilities95817b5
- 2026.04.08
- fixbump astro group and patch defu prototype pollution vulnerabilityc35b0b0
- 2026.04.06
- fixclose missing bracket in html tag in MainLayout.astro8bdb32f
- 2026.04.04
- 2026.04.03
- fixe2e: resolve strict mode violation for duplicate name texted9c460
- fixtests: align tests with withAdmin, passkey, and schema changesc1f2d2d
- featadd favicon with terminal prompt designc9a0961
- featauth: add passkey (WebAuthn) authentication for admin panel8a81aca
- featmcp: add CMS server for file-based content management48d1229
- fixa11y: raise footer and nav label contrast to pass WCAG AA7d2abfe
- fixa11y: raise functional text contrast and bump accent for WCAG AA5b2d9c0
- fixp3 polish (reduced-motion, throttle, clipboard, DRY types)4e7398e
- fixsecurity: require Origin or X-Requested-With on mutations57d20ff
- fixapi: add jsonError helper and set Content-Type on all errors9de3dd3
- fixtypes: resolve TypeScript errors in production code57523f9
- fixsecurity: add URL/email/date validation to Zod schemas62f3ccf
- perfdefer non-critical island hydration to client:idle1758fe3
- fixa11y: raise contrast on functional project text elements04e13c4
- featadd ErrorBoundary to key React islandsb357b83
- fixapi: add in-memory cache to GitHub repos endpoint63af121
- fixseo: add canonical URL, OG image, and Twitter Card meta tags9fe6dd5
- fixhydration: add useClientValue hook for SSR-safe valuesbf6c757
- fixparallax, toolchain config, theme toggle polish238abdd
- feathero: add visible heading, CTAs; trim sections and fonts47ef892
- fixa11y: raise text opacity to meet WCAG AA contrastfc7e8b7
- fixhydration: use useSyncExternalStore for Date valuesaa55671
- fixtheme: unwrap Zustand persist format in inline scriptsf507fb2
- perfasync font loading, lazy-load shortcuts dialog, inline cursor glow7e5e69e
- 2026.04.02
- fixdeploy: add custom domain route to wrangler configb4b353d
- fixmigrate API routes from locals.runtime.env to cloudflare:workers7d27554
- fixci: remove deprecated --commit-dirty flag from wrangler deployc15f7bc
- fixsecurity: use single-pass HTML entity decoding (CodeQL #1)d1a0df4
- fixsecurity: patch tmp symlink vulnerability (GHSA-13)17a58ab
- perfadd resource hints, prefetch, and optimize hydration5570ab7
- fixa11y: add skip link, ARIA states, form labels, headings222614e
- featadd content-visibility, safe area insets, and font optimization87c3030
- featsecurity: add rate limiting, CSRF protection, and session rotationc20873f
- featenhance mobile layout, touch feedback, and typography408afb9
- fiximprove mobile responsiveness across public site and admin panelcf6b0f4
- fixupdate project-specific skills with correct paths and workflow4eba767
- featauto-generate blogData.ts from MDX content files0f1efe8
- fixdeploy: switch to worker deploy using Astro-generated wrangler.jsonf33b535
- fixdeploy: configure pages_build_output_dir to fix 404 on deploy5ea238d
- fixci: set wranglerVersion to 4 for deploy action6a12df5
- 2026.04.01
- fixpin vite to v7 via overrides to prevent build failure38cb369
- 2026.03.30
- featadd custom sub-agents for automated code quality workflowsd5ddb35
- featadd project-specific Claude Code skillsc38dc8a
- fixresolve build and lint issuesb6e16af
- featExperience: add animated count-up on numeric metrics71a0a6e
- featTerminal > OutputBlock: add click-to-copy on output blocksab629dd
- featadd subtle cursor glow effectf374741
- featExperience: add SVG connection lines between matching tags2770587
- featadd global keyboard shortcuts with help overlay3fff4d9
- featTerminal > Cmd: add per-character typing reveal on command prompts6550fb4
- featDecorations: add scroll-driven reactive system load7435382
- featadd LLM discoverability and structured data7f2fef1
- featDecorations: add draggable panel reordering with Alt+drag1facf04
- featTerminal: expand into site exploration tool030c807
- 2026.03.28
- perflazy-load decorative components with React.lazyeb2904e
- fixadd server-side session cleanup on logoute4e3203
- fixresolve all TypeScript compilation errorsc77b912
- featadd 12 animation and visual style improvements7d91e6c
- fixadd Zod input validation to admin API routes6da279d
- fixresolve all ESLint errors across codebase0d4ae8c
- featadopt new dependency features and fix deprecated APIs2056f0a
- featadd Astro View Transitions for SPA-like navigation9b8c0f5
- featintegrate TanStack Query with Cloudflare D1 backendb0c88d4
- featadd taste-skill design skills for Claude Code and Codexc3d846b
- featadd Impeccable design skills for Claude Code and Codex3b4c1b6
- featintegrate MotionConfig for reduce-motion and SSR-safe scroll863a919
- featmigrate from React SPA to Astro with React islands architecture6c140f7
- featadd project files from Figma Make exportefe30e2