Upgrade Notes
-
Icarus now requires
hexo-component-inferno4.2.1 or later. If you install Icarus from npm, you get it automatically. If you cloned the theme intothemes/icarus, run the install command that the dependency check prints, for examplenpm install --save hexo-component-inferno@^4.2.16ba6d0c -
Waline:
image_uploader,highlighter,tex_rendererandsearchnow work the way the configuration has always described them:truedisables the feature. Before, leaving an option unset or setting it tofalsedisabled the feature, andtrueornullkept Waline's default, which enables it. If you use Waline, check these options:Value in _config.icarus.ymlBefore (4.1.0) Now (4.2.1) not set disabled Waline's default (enabled) falsedisabled Waline's default (enabled) trueWaline's default (enabled) disabled null(empty)Waline's default (enabled) Waline's default (enabled) For example, if you never set these options, image upload, code highlighting, TeX rendering and the GIF search now appear in your comment box. To turn a feature off, set its option to
true5522384 -
Category pages now have pages of
per_pageposts, the site setting, whencategory_generator.per_pageis not set, likehexo-generator-category. Before, they showed all posts on one page. To keep one page, setcategory_generator.per_page: 0in_config.yml5522384 -
og:type: configurations generated by earlier versions have
head.open_graph.type: blog.blogis not an Open Graph type, so every page hadog:type"blog". Icarus now ignores it: posts getarticleand other pages getwebsite. The configuration check prints a one-line warning. Delete thetype: blogline to remove the warning 9e911ca -
Deprecated (each one prints a warning when a page uses it):
- Valine: LeanCloud, where Valine stores the comments, shuts down on January 12, 2027. Switch to Waline, Twikoo or another comment plugin. Icarus still warns that Valine exposes commenters' email addresses, now on a single line 5d9e5ec #788
- Gitment: it is no longer maintained, and its GitHub sign-in proxy no longer works. Use Giscus, Utterances or Gitalk instead
- AddThis: it shut down on May 31, 2023. Use AddToAny or ShareThis instead
- Google FeedBurner
subscribe_emailwidget: FeedBurner stopped email subscriptions in July 2021. Use thefollowitwidget instead. New configurations no longer include it 85b6910
-
widget.archives.showCount,widget.categories.orderBy,showCurrentandshowCount(camelCase) still work, but the documented names are now snake_case:show_count,order_by,show_current
New Features
- Archives widget:
show_count, and thegroup_by(monthly/yearly),order(1/-1) andformatoptions, which worked before but were not in the schema 5522384 - Categories widget:
order_by,order,show_current,show_count, anddepthto show only the first levels of categories 5522384 - Recent posts widget:
limit(default 5) is now documented in the schema 5522384 - Giscus:
termis now documented in the schema. Thespecificandnumbermappings need it
Improvements
- Upgrade
hexo-component-infernoto 4.2.1 5522384 6ba6d0c - Security: values from the configuration and front-matter that go into inline scripts and JSON-LD are now escaped, so a title containing
</script>cannot end a script early. Insight and Algolia search results escape what they index.content.jsonnow holds plain text - Insight search no longer fails on keywords with characters such as
+or(, and highlights matches next to characters such as "İ" correctly - JSON-LD accepts
.jpeg,.avifand.svgimages, and image URLs with a query string - Web app manifest icons and the tile icon are resolved against the site root, which fixes sites that are not at the domain root
- A newly generated
_config.icarus.ymlpasses the configuration check. Without the fix, the new emptygroup_byandorderoptions of the archives and categories widgets failed it 6ba6d0c - Empty options in the configuration no longer fail the check or break the widgets: Valine
avatar, Giscusmapping/inputPosition/theme, Utterancestheme/dark_themeand Walinelang/loginaccept an empty value, and the archives, categories, recent posts and tags widgets use their defaults for options left empty 6ba6d0c - New configurations no longer include
type: blogfor Open Graph - CI: npm trusted publishing failures are now reported clearly. The publish workflow no longer falls back to a placeholder token, and it installs the npm version that trusted publishing needs 8c92980
Bug Fixes
- Fix PJAX keeping the stylesheets and fonts of the previous page when the next page sets another
variantin its front-matter, such as a cyberpunk post on a default site 9e257db - Fix the link to the CDN guide in the comments of the generated
_config.icarus.yml9307e52 - Fix the
{% message %}and{% tabs %}options cutting a value at its second colon, as intitle:Step 1: Install - Fix the tab named in the URL not opening when the page loads, also for non-ASCII tab IDs
- Fix Facebook comments not showing after a PJAX navigation
- Fix Gitalk ignoring
enable_hotkey: false - Fix Isso when
urlincludeshttp://orhttps:// - DisqusJS without
api_keyand Twikoo withoutenv_idnow show the usual "You forgot to set..." message instead of a broken comment box - Fix
&,'and"being escaped twice in thedescriptionandog:descriptionmeta tags, e.g.Tom &amp; Jerry, and HTML entities showing in the JSON-LD description - Fix
og:localebeing set to a two-letter language code that is not a locale, such assv - Fix
head.metacutting a value at a second= - Fix the configuration check failing when the version is written as a number, such as
version: 4.1 - Fix a script that fails to load, for example a comment library, never being retried after a PJAX navigation