v8.0.0

aaif-goose/goosev8.0.0Sep 15, 2025by yoshinorin

AI Summary

A major version update that drops support for older Node.js versions and introduces new configuration validation and permalink options.

Key Highlights

  • Dropped support for Node.js 16 and 18
  • Introduced helper function context binding
  • Added timestamp variable for permalinks
  • Supported additional options for Backtick Code Blocks

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 in 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