Blog Changes in 2025

A running review of 2025 blog changes, covering Markdown rendering, images, themes, fonts, responsive design, and performance work.

Markdown

At the beginning of this year, I switched the Markdown rendering engine to markdown-it, mainly to use the Obsidian Callout plugin.

Later, based on markdown-it, I spent time building inline code highlighting. Because markdown-it does not support async rendering, the plugin implementation was a bit awkward.

Later still, while browsing Twitter, I found that SerKo had rewritten the engine in TypeScript and added async rendering support. So I developed the corresponding Hexo renderer plugin and migrated the plugin to the Markdown Exit ecosystem. The good news is that CI build time also dropped from 110s to 90s. I also learned more about the markdown-it ecosystem. This year I added or replaced the following markdown-it plugins:

  • Math formula rendering: switched to markdown-it-mathjax3-pro, with server-side generation support.
  • Heading anchors: use markdown-it-anchors to add in-page links to h1-h6.
  • Tabs: use @mdit/tabs instead of Hexo Custom Tag.
  • Footnotes: support markdown-it-footnote.
  • Preview effects for these plugins are shown in markdown preview.

Image

  • On February 22, I introduced medium-zoom, implementing Medium-like click-to-zoom image previews and significantly improving the image browsing experience.
  • Responsive and progressive loading
    • July 24: added responsive image design for different devices.
    • September 6: implemented progressive image loading, prioritizing low-resolution placeholders or ThumbHash placeholders to improve first-screen speed.
  • Performance-related optimizations
    • Standardized image formats to avif/webp, replacing traditional jpg/png/gif and significantly reducing file size.
    • Migrated image hosting to Bitiful OSS, with distribution through EdgeOne/Bitiful CDN.
    • Used responsive loading and progressive loading to reduce bandwidth consumption and improve loading experience.
    • Lazy-loaded original images, showing smaller thumbnails or Base64 placeholders first.

Color

  • Since February 17, the theme has supported the Catppuccin Mocha color scheme. Later I added Tokyo Night, Nord, and several other themes. Press Ctrl/Cmd + Shift + P to switch themes.
  • Multi-theme adaptation covers:
    • Inline code
    • Code blocks
    • Blog Logo
    • Twikoo comments
    • Obsidian Callout
    • Most SVG images
    • Mermaid: waiting for upstream support, mermaid Issue #6677

Font

For fonts, I mainly use OS built-in fonts. Because most systems do not ship Nerd Fonts, the code font uses the Maple Mono NF CN web font.


Serif Font 衬线

Sans Serif Font 无衬线

Handwriting Font 手写

Monospace Font 等宽


Responsive Design

Mobile adaptation is also important. In 2025, I mainly made the following improvements:

  • TOC: added a button in the bottom-right corner on mobile; tapping it opens the table of contents.
  • Navbar Burger: on mobile, tapping it expands the menu below the navbar.

20260104230550174
20260104230550174

End

There were also some miscellaneous changes:

  • Replaced Hexo-Minifier-All with ESBuild and Minify-HTML; related post: post-build
  • Removed unused styles from Bulma CSS and split CSS loading across different device targets to improve performance.
  • Rewrote the Footer style.
  • Replaced FontAwesome icons with iconify-icon.
  • Removed the Hexo Category plugin; future posts will use only Tags.
  • Modified the Archive page to archive by year-season.
  • Completed ICP filing and joined 开往.
  • To Be Continued?..

Some details are not listed here. They are in ChangeLog - GnixAij-Blog. If I am diligent later, I will add more notes there.