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/.pngimage/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 frontmatter property on client-side
  • fix: Explorer sort now uses order field 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:description tags
  • 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.txt with sitemap reference
  • feat: Drafts folder — files under content/drafts/ are automatically excluded from build

UI/UX

  • refactor: Remove numeric prefixes from filenames, use frontmatter order field for sorting
  • refactor: Explorer sidebar displays frontmatter title instead of raw filename
  • fix: Folder page auto-listing now respects frontmatter order field
  • 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 defer to 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 nameproperty for 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 !important declarations
  • a11y: Improve logo alt text to “Shizi’s Blog”
  • fix: Disable built-in external link SVG icon (keep ↗ text only)
  • fix: Remove duplicate position: relative in 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 parseTags to prevent #include/#define being 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