v8.0.0

andrewyng/aisuitev8.0.0Sep 15, 2025by yoshinorin

AI Summary

Version 8.0.0 introduces major updates including the removal of older Node.js support, extensive performance optimizations, and new configuration options for the Hexo static site generator.

Key Highlights

  • Drops support for Node.js 16 and 18
  • Significant performance improvements across modules like PostCategory and PostTag
  • Adds a new permalink variable `timestamp`
  • Enforces stricter extension checks for configuration loading

Breaking Changes

  • Drop Node.js 16
  • Drop Node.js 18

New Features

  • Bind hexo context to helper function callback
  • Add URL config validation
  • Add permalink variable `timestamp`
  • Support additional options for Backtick Code Block
  • Enforce stricter extension checks for `load_config`

Full Release Notes

## Breaking Changes

* chore: drop Node.js 16 by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5592
* chore: drop Node.js 18 by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5674

## New Features

* feat: bind hexo context to helper function callback by @dimaslanjaka in https://github.com/hexojs/hexo/pull/5555
* feat: add url config validation by @ShaytonXu in https://github.com/hexojs/hexo/pull/5578
* feat: add permalink variable `timestamp` by @uiolee in https://github.com/hexojs/hexo/pull/5611
* feat: Support additional options for Backtick Code Block by @D-Sketon in https://github.com/hexojs/hexo/pull/5625
* feat(load_config): enforce stricter extension checks by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5591

## Fixes

* fix:changed the judgement of whether it has been injected by @mRNA16 in https://github.com/hexojs/hexo/pull/5573
* fix(escapeAllSwigTags): backtrack when tag is incomplete by @D-Sketon in https://github.com/hexojs/hexo/pull/5618
* fix: `hexo.locals.get('posts')` doesn't show all posts by @D-Sketon in https://github.com/hexojs/hexo/pull/5612
* fix: Parsing error for code blocks in list items by @D-Sketon in https://github.com/hexojs/hexo/pull/5617
* fix(open_graph): sort the tags by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5656
* Escape HTML in title of `code` and `include_code` tags by @tommy351 in https://github.com/hexojs/hexo/pull/5688

## Performances

* perf(external_link): optimize external link filter by @D-Sketon in https://github.com/hexojs/hexo/pull/5598
* perf(PostCategory/PostTag): add binary relation index for performance by @D-Sketon in https://github.com/hexojs/hexo/pull/5605
* perf(listArchives): add cache for posts by @D-Sketon in https://github.com/hexojs/hexo/pull/5624
* perf(escapeAllSwigTags): reducing GC overhead by @D-Sketon in https://github.com/hexojs/hexo/pull/5620
* perf: skip tag render when there is no swigTags by @D-Sketon in https://github.com/hexojs/hexo/pull/5650
* perf: faster text-table by @D-Sketon in https://github.com/hexojs/hexo/pull/5665
* warehouse6
  * perf(model): add caching for data keys by @D-Sketon in [#271](https://github.com/hexojs/warehouse/pull/271)

## Refactor

* refactor(common): delete unused function `ignoreTmpAndHiddenFile` by @yoshinorin in https://github.com/hexojs/hexo/pull/5600
* delete scripts `pretest` by @uiolee in https://github.com/hexojs/hexo/pull/5610
* refactor(moment): remove unused timezone setting by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5654

## Test

* test(box/file): extend the mocha timeout to prevent the async file read test from failing by @yoshinorin in https://github.com/hexojs/hexo/pull/5601
* test: improve coverage by @D-Sketon in https://github.com/hexojs/hexo/pull/5638

## Depenrencies

* chore(deps-dev): bump @types/node to ^20.16.10 by @uiolee in https://github.com/hexojs/hexo/pull/5558
* chore(deps): remove resolve by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5594
* chore(deps): update dependencies by @yoshinorin in https://github.com/hexojs/hexo/pull/5597
* chore(deps): update `cheerio` from `0.22` to `1.0.0` by @yoshinorin in https://github.com/hexojs/hexo/pull/5603
* chore(deps): migrate `husky` from `8.x` to `9.x` by @yoshinorin in https://github.com/hexojs/hexo/pull/5602
* chore(deps): update eslint by @stevenjoezhang in https://github.com/hexojs/hexo/pull/5599
* chore(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/hexojs/hexo/pull/5684
* chore(deps): bump strip-ansi from 6.0.1 to 7.1.0 by @dependabot[bot] in https://github.com/hexojs/hexo/pull/5218
* chore: bump actions/setup-node from 4 to 5 by @dependabot[bot] in https://github.com/hexojs/hexo/pull/5687

## Misc

* chore(lint): apply eslint to test files by @yoshinorin in https://github.com/hexojs/hexo/pull/5655

## New Contributors
* @mRNA16 made their first contribution in https://github.com/hexojs/hexo/pull/5573
* @ShaytonXu made their first contribution in https://github.com/hexojs/hexo/pull/5578

**Full Changelog**: https://github.com/hexojs/hexo/compare/v7.3.0...v8.0.0