All notable changes to this blog will be documented here.
[2.3.0] - 2026-03-14
Features
- feat: Enable external link icons for outbound links
- feat: Custom OG image generation per article (later disabled — low value)
- feat: Restrict search engine indexing to homepage only (meta noindex + robots.txt)
- feat: Hidden
<img>in body for QQ/WeChat link preview compatibility
Fixes
- fix: OG image type header had extra dot (
image/.png→image/png) - fix: OG title showed site name instead of article title on article pages
- fix: OG image format changed from WebP to PNG for Chinese social platform compatibility
- fix: Percent-encode Chinese characters in OG image URLs
- fix: Explorer crash from accessing undefined
frontmatterproperty on client-side - fix: Explorer sort now uses
orderfield from contentIndex (not nested frontmatter) - fix: Explorer fallback sort by publish date instead of alphabetical
- fix: Navigation wikilinks had redundant path prefix causing doubled
blog-setup/blog-setup/URLs - fix: Prev/next navigation links separated with line break for readability
Meta
- perf: Compress og-image.png (149KB → 58KB via color quantization)
- meta: Remove
og:description,twitter:description,itemprop:descriptiontags - meta: Remove all Twitter card meta tags (twitter:card, twitter:title, twitter:image, etc.)
- config: Disable custom OG image generation (keep default og-image.png only)
Content
- docs: Simplify article navigation to prev/next only (no full series list)
- docs: Add wikilink path duplication pitfall to troubleshooting article
[2.2.0] - 2026-03-13
Features
- feat: Staleness warning component — articles not updated for 90+ days show a notice
- feat: Article copyright footer — auto-generated title, permalink, CC BY-NC-SA 4.0 license
- feat: Word count in content meta alongside reading time
- feat: RobotsTxt emitter plugin — auto-generates
/robots.txtwith sitemap reference - feat: Drafts folder — files under
content/drafts/are automatically excluded from build
UI/UX
- refactor: Remove numeric prefixes from filenames, use frontmatter
orderfield for sorting - refactor: Explorer sidebar displays frontmatter
titleinstead of raw filename - fix: Folder page auto-listing now respects frontmatter
orderfield - fix: Wikilinks in index pages had doubled path prefix causing 404
- fix: Replace emoji with inline SVG icons on 404 page
- style: Remove category icons from homepage for cleaner layout
Performance
- perf: Replace Remix Icon font with inline SVG (~301KB savings, zero network requests)
[2.1.0] - 2026-03-12
UI/UX
- perf: Self-host Remix Icon font (no CDN dependency)
- style: Navbar icons switched from emoji to Remix Icons
- fix: Improve dark-mode inline code contrast
- fix: Add font preload to reduce icon flash on SPA navigation
[2.0.0] - 2026-03-11
UI/UX
- style: Add Remix Icon, replace emoji with icon font on navigation pages
- style: Add background contrast for code blocks (light: #fafafa, dark: #1e2228)
[1.5.0] - 2026-02-13
Performance
- perf: Font CSS non-blocking load (media=print→all trick)
- perf: KaTeX CSS non-blocking load (moved from render-blocking link to async JS)
- perf: Add
deferto all afterDOMReady external scripts (copy-tex.min.js, postscript.js) - perf: Giscus comments lazy-load with IntersectionObserver (only loads when near viewport)
- perf: TOC scroll: cache link elements in Map, skip redundant highlight updates
- perf: Explorer: cache FileTrieNode across SPA navigations
- perf: Resize pusheencode.gif 400×300→175×131 (35K→13K)
- perf: Resize shizi321.png 200×200→64×64 retina (28K→5K)
- perf: Add giscus.app preconnect (saves ~370ms connection time)
- perf: PageTitle icon
loading="lazy"
UI/UX
- style: Extract CSS variables (border-radius, transition-speed, shadow, icon-opacity, code-font-size)
- style: Dark mode: image shadow + external link icon opacity adaptation
- style: Smoother line-height transition (desktop 1.8 → mobile 1.75)
- style: BackToTop safe-area-inset-bottom for notch devices
- style: Explorer folder icon color from hardcoded #e8a838 to CSS variable
- style: Use Sass tablet variables instead of hardcoded breakpoints
- style: Homepage Pusheen GIF enlarged (150→300px, responsive)
- style: iOS tap highlight removed (-webkit-tap-highlight-color: transparent)
Fixes
- fix: Remove crossorigin from giscus preconnect (script, not CORS)
- fix: TOC aria-expanded string value instead of boolean
- fix: Merge duplicate blockquote/link CSS rules
- fix: GIF explicit width+height to prevent CLS
Accessibility
- a11y: Body element changed from
<div>to<main>landmark - a11y: Unify code font-size across codebase via CSS variable
SEO
- seo: Add description frontmatter to all index pages
- seo: CDN font fallback for China accessibility (jsdelivr → zzko → elemecdn)
[1.4.0] - 2026-02-13
Performance
- perf: Compress icon.png (598K→23K) and shizi321.png (598K→27K)
- perf: Add dns-prefetch for cdn.jsdelivr.net
- perf: Mobile code blocks touch-action optimization
UI/UX
- style: Switch code highlight theme to one-dark-pro / one-light
- style: External links open in new tab with ↗ indicator (hidden on mobile)
- style: TOC active heading highlight with colored border
- style: Dark mode table border contrast improvement
- style: Add tablet breakpoint (600-800px) responsive styles
- style: Mobile breadcrumb overflow horizontal scroll
- style: Search shortcut hint adapts to platform (⌘K on Mac, Ctrl K on others)
- feat: Enhanced 404 page with navigation links (Home, Tags, Timeline)
- feat: Update OG social share image to shizi avatar
Fixes
- fix: OG meta tag
name→propertyfor og:site_name - fix: Code line number color follows theme variable
- fix: Tag page limit raised from 10 to 50
- fix: TOC only highlights current section instead of all read sections
SEO
- seo: Add canonical URL meta tag
- seo: Add robots meta tag (index, follow)
- seo: Add theme-color meta for mobile browsers
Cleanup
- chore: Remove unused .recent-notes CSS
- chore: Remove unnecessary
!importantdeclarations - a11y: Improve logo alt text to “Shizi’s Blog”
- fix: Disable built-in external link SVG icon (keep ↗ text only)
- fix: Remove duplicate
position: relativein base.scss - fix: File icon color adapts to dark mode (currentColor + opacity)
- perf: Add dns-prefetch for giscus.app
- style: theme-color meta adapts to light/dark mode
[1.3.0] - 2026-02-13
Performance
- perf: Add image lazy loading for all content images
- perf: Consolidate fonts to single CDN (jsDelivr), fix fontOrigin config
UI/UX
- feat: Add back-to-top button (fixed, bottom-right)
- style: Add mobile responsive styles (typography, code blocks, tables, images, spacing)
- style: Adjust code font size closer to body text
[1.2.0] - 2026-02-12
Features
- feat: Add Timeline page showing all notes sorted by date
- feat: Explorer folder icon click toggles expand/collapse, title click navigates
Fixes
- fix: Disable
parseTagsto prevent#include/#definebeing treated as tags - fix: Replace Explorer fold arrows with yellow folder SVG icons
- style: Remove RecentNotes from sidebar (replaced by Timeline)
[1.1.0] - 2026-02-12
UI/UX
- feat: Add shizi icon to page title and favicon
- feat: Add Tags page and navigation link
- feat: Add Changelog page
- style: Switch UI language to English
- fix: Fix transparent background for shizi icon
[1.0.0] - 2026-02-12
Initial Release
- feat: Blog launched, built with Quartz v4.5.2
- feat: Deployed to Cloudflare Pages with custom domain shiziblog.cn
- feat: Giscus comment system integrated
UI/UX
- style: OneDark dark theme + One Light light theme
- style: LXGW WenKai font for Chinese text
- style: JetBrains Mono for code blocks
- feat: Top navigation bar (Home, Index, Tags, Changelog, About)
- fix: Remove Explorer sidebar, move search to right
- fix: Remove Quartz footer branding
Format reference: Keep a Changelog & Conventional Commits

