Skip to content

fix(datetime): add missing datetime attribute on time element#2759

Merged
cotes2020 merged 4 commits into
cotes2020:masterfrom
YuryKabernik:bugfix/time-tag-datetime-markup
Jun 28, 2026
Merged

fix(datetime): add missing datetime attribute on time element#2759
cotes2020 merged 4 commits into
cotes2020:masterfrom
YuryKabernik:bugfix/time-tag-datetime-markup

Conversation

@YuryKabernik

@YuryKabernik YuryKabernik commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Improvement (refactoring and improving code)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

Description

The datetime attribute was missing from the time element, which is recommended for semantic HTML. Added it using the date_to_xmlschema Liquid filter to ensure proper ISO 8601 format.

Additional context

Running pages under HTML validator reporting an issue with translating rendered dates into machine-readable format.

image
From line 793, column 1; to line 793, column 7
  Aug 11, 2019↩
</time>↩↩↩   

The attribute allows to translate it to a valid formal: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/time#valid_datetime_values

The datetime attribute was missing from the time element, which is
recommended for semantic HTML. Add it using the date_to_xmlschema
Liquid filter to ensure proper ISO 8601 format.
@YuryKabernik YuryKabernik marked this pull request as ready for review June 22, 2026 20:19
@YuryKabernik

Copy link
Copy Markdown
Contributor Author

The time elements in footer.html and archives.html encode only the year, which remains valid for machine‑readable metadata.

@cotes2020 cotes2020 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The datetime attribute is only required when the HTML element is <time> and its text content does not fall within the range specified in valid datetime values. Therefore, you should add a flag to determine whether the datetime attribute needs to be generated, instead of simply generating it everywhere datetime.html is included, as in your current modification.

You might consider naming this flag datetime_attr with a boolean type.

Example:

{% include datetime.html datetime_attr=true %}

@YuryKabernik YuryKabernik requested a review from cotes2020 June 28, 2026 12:04
@YuryKabernik

YuryKabernik commented Jun 28, 2026

Copy link
Copy Markdown
Contributor Author

Applied the suggested changes, but I ended up having to add the flag everywhere the include is used. At that point it starts to feel redundant, because generating the attribute by default inside the include would produce the same result without requiring extra parameters in every import.

I do agree with the idea of dynamicly determining whether the datetime attribute needs to be generated. One approach I’ve been considering is patching the elements directly by adding another function to locale-datetime.js. That function could validate the content using dayjs (with the CustomParseFormat plugin) and automatically assign the attribute whenever the value fails validation.

What are your thoughts on this direction?

@cotes2020

Copy link
Copy Markdown
Owner

You might have a slight misunderstanding about Liquid here. This flag is completely optional; if you don't explicitly pass <flag>=true, Liquid will read it as false (or null) inside datetime.html. For all other non-<time> elements, you can just keep the include datetime.html usage exactly as it is.

Going the JS route to patch HTML elements feels overly complex. The core design pattern here is that HTML elements should be generated and modified by Liquid during the Jekyll build process, unless it completely hits a wall with Liquid's capabilities. JS should generally only be responsible for handling user interaction events.

@cotes2020 cotes2020 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My apologies, I misread the code earlier. Every place that calls datetime.html actually generates a <time> element, so adding the flag is indeed redundant. In other words, we don't need the flag, nor do we need JS modifications. Your original commit was the most straightforward and elegant solution.

If we want to be more precise about whether to generate the datetime attribute, the logic should be: using Liquid inside datetime.html to check if the output text complies with the MDN standards. Of course, this would add some complexity to the code, so it's entirely up to you if you'd like to go that route.

@YuryKabernik YuryKabernik requested a review from cotes2020 June 28, 2026 22:03
@YuryKabernik

Copy link
Copy Markdown
Contributor Author

Let's keep it simple. The string format is defined via site data locales, which is always provided in a non‑machine‑readable format.

@cotes2020

Copy link
Copy Markdown
Owner

No problem, I will simplify the JS and remove the data-ts attribute that has overlapping roles.

@cotes2020 cotes2020 merged commit 01c62bc into cotes2020:master Jun 28, 2026
7 checks passed
fangkun119 added a commit to fangkun119/tech-page that referenced this pull request Jul 4, 2026
* chore(dev-deps): add eslint config file

* chore: avoid auto-formatting liquid and sass mixed code

* fix: avoid `mathjax` loading failure on page refresh (cotes2020#2389)

* fix: improve accuracy of moving `img` element classes (cotes2020#2399)

* chore: upgrade dependencies to the latest version (cotes2020#2409)

* chore(release): 7.3.0

## [7.3.0](cotes2020/jekyll-theme-chirpy@v7.2.4...v7.3.0) (2025-05-18)

### Features

* **i18n:** add Catalan Spanish locale translation ([cotes2020#2349](cotes2020#2349)) ([167c98c](cotes2020@167c98c))
* **i18n:** add Dutch locale ([cotes2020#2076](cotes2020#2076)) ([981ddba](cotes2020@981ddba))
* **i18n:** add Japanese locale ([cotes2020#2295](cotes2020#2295)) ([571c90f](cotes2020@571c90f))
* **i18n:** add persian language ([cotes2020#2238](cotes2020#2238)) ([7d4d35c](cotes2020@7d4d35c))

### Bug Fixes

* avoid `mathjax` loading failure on page refresh ([cotes2020#2389](cotes2020#2389)) ([401e2af](cotes2020@401e2af))
* improve accuracy of moving `img` element classes ([cotes2020#2399](cotes2020#2399)) ([d0f8f95](cotes2020@d0f8f95))
* prevent the search bar from moving when focused ([cotes2020#2336](cotes2020#2336)) ([f744929](cotes2020@f744929))
* recognize global theme mode ([cotes2020#2357](cotes2020#2357)) ([7708adb](cotes2020@7708adb))
* **search:** avoid missing spaces between paragraphs in search results ([cotes2020#2199](cotes2020#2199)) ([0eb7efa](cotes2020@0eb7efa))
* **ui:** fix incomplete border color on hover for tags ([cotes2020#2359](cotes2020#2359)) ([c626447](cotes2020@c626447))

### Improvements

* **seo:** improve accessibility and aligns with best practices ([cotes2020#2289](cotes2020#2289)) ([54d4d59](cotes2020@54d4d59))

* feat(i18n): add Danish locale (cotes2020#2410)

* feat(i18n): add locale files for some rtl languages (cotes2020#2415)

* fix: correct GoatCounter pageviews extraction (cotes2020#2420)

* fix: resolve discrepancy in lqip between post and main page (cotes2020#2453)

* fix: escape special JSON characters in search results (cotes2020#2481)

Also restore full-text search

* chore(release): 7.3.1

## [7.3.1](cotes2020/jekyll-theme-chirpy@v7.3.0...v7.3.1) (2025-07-26)

### Bug Fixes

* escape special JSON characters in search results ([cotes2020#2481](cotes2020#2481)) ([7615d72](cotes2020@7615d72))

* chore: complete ESLint v9 configuration

* style: unify quote style in rollup config

* ci: migrate eslint and stylelint from codacy to gh-actions

* style: change css color functions to use modern notation

- `rgba()` → `rgb()`

* ci: change filter script to ESM format

Because `"type": "module"` was added to `package.json`

* fix: avoid unconfigured social options in sidebar (cotes2020#2507)

* feat: add support for embed spotify (cotes2020#2515)

* docs: update timezone picker reference (cotes2020#2518)

* fix: restore blurry animation for homepage LQIP (cotes2020#2551)

* chore: remove deprecated URL

* chore: improve ESLint config

* build(deps): bump the gh-actions group across 1 directory with 5 updates (cotes2020#2550)

Bumps the gh-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4` | `5` |
| [actions/setup-node](https://github.com/actions/setup-node) | `4` | `5` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3` | `4` |
| [actions/github-script](https://github.com/actions/github-script) | `7` | `8` |
| [actions/stale](https://github.com/actions/stale) | `9` | `10` |



Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v5)

Updates `actions/setup-node` from 4 to 5
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4...v5)

Updates `github/codeql-action` from 3 to 4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@v3...v4)

Updates `actions/github-script` from 7 to 8
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v7...v8)

Updates `actions/stale` from 9 to 10
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](actions/stale@v9...v10)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor: avoid converting media‘s relative paths to absolute paths (cotes2020#2552)

* fix(search): restore full-text search for posts with description (cotes2020#2557)

* refactor: update favicon files and documentation (cotes2020#2558)

* build(dev-deps): upgrade dependencies

* refactor: resolve various StyleLint warnings

* build(deps): upgrade dependencies

* chore(release): 7.4.0

## [7.4.0](cotes2020/jekyll-theme-chirpy@v7.3.1...v7.4.0) (2025-10-19)

### Features

* add support for embed spotify ([cotes2020#2515](cotes2020#2515)) ([cda62e2](cotes2020@cda62e2))
* **i18n:** add Danish locale ([cotes2020#2410](cotes2020#2410)) ([f5802b8](cotes2020@f5802b8))
* **i18n:** add locale files for some rtl languages ([cotes2020#2415](cotes2020#2415)) ([18c48b4](cotes2020@18c48b4))

### Bug Fixes

* avoid unconfigured social options in sidebar ([cotes2020#2507](cotes2020#2507)) ([5f8ec7f](cotes2020@5f8ec7f))
* correct GoatCounter pageviews extraction ([cotes2020#2420](cotes2020#2420)) ([c706799](cotes2020@c706799))
* resolve discrepancy in lqip between post and main page ([cotes2020#2453](cotes2020#2453)) ([1bac96a](cotes2020@1bac96a))
* restore blurry animation for homepage LQIP ([cotes2020#2551](cotes2020#2551)) ([221ca9f](cotes2020@221ca9f))
* **search:** restore full-text search for posts with description ([cotes2020#2557](cotes2020#2557)) ([604528e](cotes2020@604528e))

* Revert "refactor: avoid converting media‘s relative paths to absolute paths (cotes2020#2552)"

This reverts commit b3d7db3.

* fix: avoid duplicate base URL for homepage preview images (cotes2020#2568)

* chore(release): 7.4.1

## [7.4.1](cotes2020/jekyll-theme-chirpy@v7.4.0...v7.4.1) (2025-10-26)

### Bug Fixes

* avoid duplicate base URL for homepage preview images ([cotes2020#2568](cotes2020#2568)) ([66bf232](cotes2020@66bf232))

* feat: add support for `fediverse:creator` meta tag (cotes2020#2593)

* fix(i18n): localize the title (cotes2020#2610)

* build(deps): update platforms in Gemfile for Windows (cotes2020#2628)

* chore: reduce optional config defaults

* build(dev-deps): upgrade node packages

* style: interpolate sass variable in CSS custom property

* chore: update ESLint dependencies and improve js style

* build(gh-actions): enable `dependabot` to scan the starter workflow

* build(deps): bump the gh-actions group across 2 directories with 4 updates (cotes2020#2678)

Bumps the gh-actions group with 2 updates in the /.github/workflows directory: [actions/checkout](https://github.com/actions/checkout) and [actions/setup-node](https://github.com/actions/setup-node).
Bumps the gh-actions group with 3 updates in the /.github/workflows/starter directory: [actions/checkout](https://github.com/actions/checkout), [actions/configure-pages](https://github.com/actions/configure-pages) and [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact).


Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

Updates `actions/setup-node` from 5 to 6
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v5...v6)

Updates `actions/checkout` from 4 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

Updates `actions/configure-pages` from 4 to 5
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](actions/configure-pages@v4...v5)

Updates `actions/upload-pages-artifact` from 3 to 4
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](actions/upload-pages-artifact@v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/configure-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/upload-pages-artifact
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs: fix typos in tutorial

* refactor: correct typos in comments and identifiers (cotes2020#2681)

- Rename `loadTooptip` to `loadTooltip` in tooltip-loader.js, components.js, and basic.js
- Fix grammar: "This script make" → "This script makes" in search-display.js
- Fix "HomgPage" → "HomePage" in post-paginator.html
- Fix "CND URL" → "CDN URL" in media-url.html
- Fix "locale-dateime.js" → "locale-datetime.js" in datetime.html
- Fix "LaTex" → "LaTeX" in language-alias.html
- Fix "exist <a> tag" → "existing <a> tag" in refactor-content.html
- Fix "Archvies" → "Archives" in _archives.scss
- Fix "underlinke" → "underline" in _syntax.scss

* ci: update ruby version to 3.4

Ruby 3.1 and 3.2 are now EOL
See: https://www.ruby-lang.org/en/downloads/branches/

* chore(deps): update packages to latest version

 @fortawesome/fontawesome-free    7.1.0  ->  7.2.0
 dayjs                          1.11.18  ->  1.11.20
 mermaid                        11.12.0  ->  11.13.0

* chore(release): 7.5.0

## [7.5.0](cotes2020/jekyll-theme-chirpy@v7.4.1...v7.5.0) (2026-03-15)

### Features

* add support for `fediverse:creator` meta tag ([cotes2020#2593](cotes2020#2593)) ([d2db439](cotes2020@d2db439))

### Bug Fixes

* **i18n:** localize the title ([cotes2020#2610](cotes2020#2610)) ([52d160f](cotes2020@52d160f))

* chore: ignore hidden system files and editor backups (cotes2020#2704)

* docs: improve readme

* fix: prevent Firefox from opening blank page on `mailto` links (cotes2020#2642)

* feat: add edit this post link (cotes2020#2517)

* chore: update github issue template

* docs: update readme

* chore(deps): bump mathjax from 3.2.2 to 4.x

* refactor(deps): update CDN URLs to follow production best practices (cotes2020#2740)

* chore: remove funding

* fix(pwa): avoid iOS status bar overlapping PWA content (cotes2020#2173)

Fixes cotes2020#2173

* fix(giscus): synchronize theme state during lazy loading (cotes2020#2742)

Previously, theme switch events were lost if triggered before the
Giscus iframe was fully loaded (e.g., when deferred by lazy loading
or before the client script executed). This resulted in Giscus
rendering with the outdated initial theme once it finally appeared
in the viewport.

This commit handles these edge cases by:
1. Updating the `data-theme` attribute on the Giscus script node
   if the iframe hasn't been created yet.
2. Modifying the `theme` query parameter in the iframe's `src` URL
   if it is currently in a pending/lazy-loading state.

* feat(theme): persist user theme preferences (cotes2020#2756)

- Migrate theme persistence from `sessionStorage` to `localStorage`
- Rename theme HTML attribute to `data-bs-theme` for Bootstrap compatibility
- Trim and compile CSS according to the chosen theme mode

* feat(ui): optimize design of PWA update notification (cotes2020#2757)

* refactor(ui): reduce the size of the 'close' and 'copy' buttons

- The close button in the TOC popup
- The copy button in the code block

* perf(ui): prevent vertical flickering caused by subtitle loading

* chore(deps-dev): update dependencies

 @babel/core                                 ^7.29.0  →   ^7.29.7
 @babel/preset-env                           ^7.29.0  →   ^7.29.7
 @commitlint/cli                             ^20.4.4  →   ^21.0.2
 @commitlint/config-conventional             ^20.4.4  →   ^21.0.2
 @eslint/js                                  ^10.0.0  →   ^10.0.1
 @rollup/plugin-babel                         ^7.0.0  →    ^7.1.0
 concurrently                                 ^9.2.1  →   ^10.0.3
 conventional-changelog-conventionalcommits   ^9.3.0  →    ^9.3.1
 eslint                                      ^10.0.3  →   ^10.5.0
 globals                                     ^17.4.0  →   ^17.6.0
 rollup                                      ^4.59.0  →   ^4.62.2
 semantic-release                            ^25.0.3  →   ^25.0.5
 stylelint                                   ^17.4.0  →  ^17.13.0

* ci(deps): bump the gh-actions group across 2 directories with 5 updates

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/github-script` from 8 to 9
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v8...v9)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/configure-pages` from 5 to 6
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](actions/configure-pages@v5...v6)

Updates `actions/upload-pages-artifact` from 4 to 5
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](actions/upload-pages-artifact@v4...v5)

Updates `actions/deploy-pages` from 4 to 5
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](actions/deploy-pages@v4...v5)

* chore(deps): upgrade static assets

* chore(release): 7.6.0

## [7.6.0](cotes2020/jekyll-theme-chirpy@v7.5.0...v7.6.0) (2026-06-20)

### Features

* add edit this post link ([cotes2020#2517](cotes2020#2517)) ([6bd446c](cotes2020@6bd446c))
* **theme:** persist user theme preferences ([cotes2020#2756](cotes2020#2756)) ([7496dd4](cotes2020@7496dd4))
* **ui:** optimize design of PWA update notification ([cotes2020#2757](cotes2020#2757)) ([5cc9dc6](cotes2020@5cc9dc6))

### Bug Fixes

* **giscus:** synchronize theme state during lazy loading ([cotes2020#2742](cotes2020#2742)) ([ceb2a41](cotes2020@ceb2a41))
* prevent Firefox from opening blank page on `mailto` links ([cotes2020#2642](cotes2020#2642)) ([2685b91](cotes2020@2685b91))
* **pwa:** avoid iOS status bar overlapping PWA content ([cotes2020#2173](cotes2020#2173)) ([3823212](cotes2020@3823212))

### Improvements

* **ui:** prevent vertical flickering caused by subtitle loading ([2db0535](cotes2020@2db0535))

* fix(dom): add missing datetime attribute on time element (cotes2020#2759)

The datetime attribute was missing from the time element, which is
recommended for semantic HTML. Add it using the date_to_xmlschema
Liquid filter to ensure proper ISO 8601 format.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Cotes Chung <11371340+cotes2020@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Nicolai Skødt Holmgaard <24588044+Nicolai9852@users.noreply.github.com>
Co-authored-by: Zakaria Fatahi <zakaria@buzzjective.com>
Co-authored-by: Alexander Fuks <kungfux@users.noreply.github.com>
Co-authored-by: Josh Wickham <josh@i-josh.com>
Co-authored-by: Jason Raveling <jason@webunraveling.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: nakamura <71050561+manabu-nakamura@users.noreply.github.com>
Co-authored-by: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Co-authored-by: Shen Lin <shhenlin@gmail.com>
Co-authored-by: lynkos <kiwi2mii@gmail.com>
Co-authored-by: Yura <yury.kabernik.berazouski@gmail.com>
fangkun119 added a commit to fangkun119/tech-page that referenced this pull request Jul 8, 2026
* chore(dev-deps): add eslint config file

* chore: avoid auto-formatting liquid and sass mixed code

* fix: avoid `mathjax` loading failure on page refresh (cotes2020#2389)

* fix: improve accuracy of moving `img` element classes (cotes2020#2399)

* chore: upgrade dependencies to the latest version (cotes2020#2409)

* chore(release): 7.3.0

## [7.3.0](cotes2020/jekyll-theme-chirpy@v7.2.4...v7.3.0) (2025-05-18)

### Features

* **i18n:** add Catalan Spanish locale translation ([cotes2020#2349](cotes2020#2349)) ([167c98c](cotes2020@167c98c))
* **i18n:** add Dutch locale ([cotes2020#2076](cotes2020#2076)) ([981ddba](cotes2020@981ddba))
* **i18n:** add Japanese locale ([cotes2020#2295](cotes2020#2295)) ([571c90f](cotes2020@571c90f))
* **i18n:** add persian language ([cotes2020#2238](cotes2020#2238)) ([7d4d35c](cotes2020@7d4d35c))

### Bug Fixes

* avoid `mathjax` loading failure on page refresh ([cotes2020#2389](cotes2020#2389)) ([401e2af](cotes2020@401e2af))
* improve accuracy of moving `img` element classes ([cotes2020#2399](cotes2020#2399)) ([d0f8f95](cotes2020@d0f8f95))
* prevent the search bar from moving when focused ([cotes2020#2336](cotes2020#2336)) ([f744929](cotes2020@f744929))
* recognize global theme mode ([cotes2020#2357](cotes2020#2357)) ([7708adb](cotes2020@7708adb))
* **search:** avoid missing spaces between paragraphs in search results ([cotes2020#2199](cotes2020#2199)) ([0eb7efa](cotes2020@0eb7efa))
* **ui:** fix incomplete border color on hover for tags ([cotes2020#2359](cotes2020#2359)) ([c626447](cotes2020@c626447))

### Improvements

* **seo:** improve accessibility and aligns with best practices ([cotes2020#2289](cotes2020#2289)) ([54d4d59](cotes2020@54d4d59))

* feat(i18n): add Danish locale (cotes2020#2410)

* feat(i18n): add locale files for some rtl languages (cotes2020#2415)

* fix: correct GoatCounter pageviews extraction (cotes2020#2420)

* fix: resolve discrepancy in lqip between post and main page (cotes2020#2453)

* fix: escape special JSON characters in search results (cotes2020#2481)

Also restore full-text search

* chore(release): 7.3.1

## [7.3.1](cotes2020/jekyll-theme-chirpy@v7.3.0...v7.3.1) (2025-07-26)

### Bug Fixes

* escape special JSON characters in search results ([cotes2020#2481](cotes2020#2481)) ([7615d72](cotes2020@7615d72))

* chore: complete ESLint v9 configuration

* style: unify quote style in rollup config

* ci: migrate eslint and stylelint from codacy to gh-actions

* style: change css color functions to use modern notation

- `rgba()` → `rgb()`

* ci: change filter script to ESM format

Because `"type": "module"` was added to `package.json`

* fix: avoid unconfigured social options in sidebar (cotes2020#2507)

* feat: add support for embed spotify (cotes2020#2515)

* docs: update timezone picker reference (cotes2020#2518)

* fix: restore blurry animation for homepage LQIP (cotes2020#2551)

* chore: remove deprecated URL

* chore: improve ESLint config

* build(deps): bump the gh-actions group across 1 directory with 5 updates (cotes2020#2550)

Bumps the gh-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4` | `5` |
| [actions/setup-node](https://github.com/actions/setup-node) | `4` | `5` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3` | `4` |
| [actions/github-script](https://github.com/actions/github-script) | `7` | `8` |
| [actions/stale](https://github.com/actions/stale) | `9` | `10` |



Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v5)

Updates `actions/setup-node` from 4 to 5
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4...v5)

Updates `github/codeql-action` from 3 to 4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@v3...v4)

Updates `actions/github-script` from 7 to 8
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v7...v8)

Updates `actions/stale` from 9 to 10
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](actions/stale@v9...v10)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor: avoid converting media‘s relative paths to absolute paths (cotes2020#2552)

* fix(search): restore full-text search for posts with description (cotes2020#2557)

* refactor: update favicon files and documentation (cotes2020#2558)

* build(dev-deps): upgrade dependencies

* refactor: resolve various StyleLint warnings

* build(deps): upgrade dependencies

* chore(release): 7.4.0

## [7.4.0](cotes2020/jekyll-theme-chirpy@v7.3.1...v7.4.0) (2025-10-19)

### Features

* add support for embed spotify ([cotes2020#2515](cotes2020#2515)) ([cda62e2](cotes2020@cda62e2))
* **i18n:** add Danish locale ([cotes2020#2410](cotes2020#2410)) ([f5802b8](cotes2020@f5802b8))
* **i18n:** add locale files for some rtl languages ([cotes2020#2415](cotes2020#2415)) ([18c48b4](cotes2020@18c48b4))

### Bug Fixes

* avoid unconfigured social options in sidebar ([cotes2020#2507](cotes2020#2507)) ([5f8ec7f](cotes2020@5f8ec7f))
* correct GoatCounter pageviews extraction ([cotes2020#2420](cotes2020#2420)) ([c706799](cotes2020@c706799))
* resolve discrepancy in lqip between post and main page ([cotes2020#2453](cotes2020#2453)) ([1bac96a](cotes2020@1bac96a))
* restore blurry animation for homepage LQIP ([cotes2020#2551](cotes2020#2551)) ([221ca9f](cotes2020@221ca9f))
* **search:** restore full-text search for posts with description ([cotes2020#2557](cotes2020#2557)) ([604528e](cotes2020@604528e))

* Revert "refactor: avoid converting media‘s relative paths to absolute paths (cotes2020#2552)"

This reverts commit b3d7db3.

* fix: avoid duplicate base URL for homepage preview images (cotes2020#2568)

* chore(release): 7.4.1

## [7.4.1](cotes2020/jekyll-theme-chirpy@v7.4.0...v7.4.1) (2025-10-26)

### Bug Fixes

* avoid duplicate base URL for homepage preview images ([cotes2020#2568](cotes2020#2568)) ([66bf232](cotes2020@66bf232))

* feat: add support for `fediverse:creator` meta tag (cotes2020#2593)

* fix(i18n): localize the title (cotes2020#2610)

* build(deps): update platforms in Gemfile for Windows (cotes2020#2628)

* chore: reduce optional config defaults

* build(dev-deps): upgrade node packages

* style: interpolate sass variable in CSS custom property

* chore: update ESLint dependencies and improve js style

* build(gh-actions): enable `dependabot` to scan the starter workflow

* build(deps): bump the gh-actions group across 2 directories with 4 updates (cotes2020#2678)

Bumps the gh-actions group with 2 updates in the /.github/workflows directory: [actions/checkout](https://github.com/actions/checkout) and [actions/setup-node](https://github.com/actions/setup-node).
Bumps the gh-actions group with 3 updates in the /.github/workflows/starter directory: [actions/checkout](https://github.com/actions/checkout), [actions/configure-pages](https://github.com/actions/configure-pages) and [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact).


Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

Updates `actions/setup-node` from 5 to 6
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v5...v6)

Updates `actions/checkout` from 4 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

Updates `actions/configure-pages` from 4 to 5
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](actions/configure-pages@v4...v5)

Updates `actions/upload-pages-artifact` from 3 to 4
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](actions/upload-pages-artifact@v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/configure-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
- dependency-name: actions/upload-pages-artifact
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: gh-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs: fix typos in tutorial

* refactor: correct typos in comments and identifiers (cotes2020#2681)

- Rename `loadTooptip` to `loadTooltip` in tooltip-loader.js, components.js, and basic.js
- Fix grammar: "This script make" → "This script makes" in search-display.js
- Fix "HomgPage" → "HomePage" in post-paginator.html
- Fix "CND URL" → "CDN URL" in media-url.html
- Fix "locale-dateime.js" → "locale-datetime.js" in datetime.html
- Fix "LaTex" → "LaTeX" in language-alias.html
- Fix "exist <a> tag" → "existing <a> tag" in refactor-content.html
- Fix "Archvies" → "Archives" in _archives.scss
- Fix "underlinke" → "underline" in _syntax.scss

* ci: update ruby version to 3.4

Ruby 3.1 and 3.2 are now EOL
See: https://www.ruby-lang.org/en/downloads/branches/

* chore(deps): update packages to latest version

 @fortawesome/fontawesome-free    7.1.0  ->  7.2.0
 dayjs                          1.11.18  ->  1.11.20
 mermaid                        11.12.0  ->  11.13.0

* chore(release): 7.5.0

## [7.5.0](cotes2020/jekyll-theme-chirpy@v7.4.1...v7.5.0) (2026-03-15)

### Features

* add support for `fediverse:creator` meta tag ([cotes2020#2593](cotes2020#2593)) ([d2db439](cotes2020@d2db439))

### Bug Fixes

* **i18n:** localize the title ([cotes2020#2610](cotes2020#2610)) ([52d160f](cotes2020@52d160f))

* chore: ignore hidden system files and editor backups (cotes2020#2704)

* docs: improve readme

* fix: prevent Firefox from opening blank page on `mailto` links (cotes2020#2642)

* feat: add edit this post link (cotes2020#2517)

* chore: update github issue template

* docs: update readme

* chore(deps): bump mathjax from 3.2.2 to 4.x

* refactor(deps): update CDN URLs to follow production best practices (cotes2020#2740)

* chore: remove funding

* fix(pwa): avoid iOS status bar overlapping PWA content (cotes2020#2173)

Fixes cotes2020#2173

* fix(giscus): synchronize theme state during lazy loading (cotes2020#2742)

Previously, theme switch events were lost if triggered before the
Giscus iframe was fully loaded (e.g., when deferred by lazy loading
or before the client script executed). This resulted in Giscus
rendering with the outdated initial theme once it finally appeared
in the viewport.

This commit handles these edge cases by:
1. Updating the `data-theme` attribute on the Giscus script node
   if the iframe hasn't been created yet.
2. Modifying the `theme` query parameter in the iframe's `src` URL
   if it is currently in a pending/lazy-loading state.

* feat(theme): persist user theme preferences (cotes2020#2756)

- Migrate theme persistence from `sessionStorage` to `localStorage`
- Rename theme HTML attribute to `data-bs-theme` for Bootstrap compatibility
- Trim and compile CSS according to the chosen theme mode

* feat(ui): optimize design of PWA update notification (cotes2020#2757)

* refactor(ui): reduce the size of the 'close' and 'copy' buttons

- The close button in the TOC popup
- The copy button in the code block

* perf(ui): prevent vertical flickering caused by subtitle loading

* chore(deps-dev): update dependencies

 @babel/core                                 ^7.29.0  →   ^7.29.7
 @babel/preset-env                           ^7.29.0  →   ^7.29.7
 @commitlint/cli                             ^20.4.4  →   ^21.0.2
 @commitlint/config-conventional             ^20.4.4  →   ^21.0.2
 @eslint/js                                  ^10.0.0  →   ^10.0.1
 @rollup/plugin-babel                         ^7.0.0  →    ^7.1.0
 concurrently                                 ^9.2.1  →   ^10.0.3
 conventional-changelog-conventionalcommits   ^9.3.0  →    ^9.3.1
 eslint                                      ^10.0.3  →   ^10.5.0
 globals                                     ^17.4.0  →   ^17.6.0
 rollup                                      ^4.59.0  →   ^4.62.2
 semantic-release                            ^25.0.3  →   ^25.0.5
 stylelint                                   ^17.4.0  →  ^17.13.0

* ci(deps): bump the gh-actions group across 2 directories with 5 updates

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/github-script` from 8 to 9
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v8...v9)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/configure-pages` from 5 to 6
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](actions/configure-pages@v5...v6)

Updates `actions/upload-pages-artifact` from 4 to 5
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](actions/upload-pages-artifact@v4...v5)

Updates `actions/deploy-pages` from 4 to 5
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](actions/deploy-pages@v4...v5)

* chore(deps): upgrade static assets

* chore(release): 7.6.0

## [7.6.0](cotes2020/jekyll-theme-chirpy@v7.5.0...v7.6.0) (2026-06-20)

### Features

* add edit this post link ([cotes2020#2517](cotes2020#2517)) ([6bd446c](cotes2020@6bd446c))
* **theme:** persist user theme preferences ([cotes2020#2756](cotes2020#2756)) ([7496dd4](cotes2020@7496dd4))
* **ui:** optimize design of PWA update notification ([cotes2020#2757](cotes2020#2757)) ([5cc9dc6](cotes2020@5cc9dc6))

### Bug Fixes

* **giscus:** synchronize theme state during lazy loading ([cotes2020#2742](cotes2020#2742)) ([ceb2a41](cotes2020@ceb2a41))
* prevent Firefox from opening blank page on `mailto` links ([cotes2020#2642](cotes2020#2642)) ([2685b91](cotes2020@2685b91))
* **pwa:** avoid iOS status bar overlapping PWA content ([cotes2020#2173](cotes2020#2173)) ([3823212](cotes2020@3823212))

### Improvements

* **ui:** prevent vertical flickering caused by subtitle loading ([2db0535](cotes2020@2db0535))

* fix(dom): add missing datetime attribute on time element (cotes2020#2759)

The datetime attribute was missing from the time element, which is
recommended for semantic HTML. Add it using the date_to_xmlschema
Liquid filter to ensure proper ISO 8601 format.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Cotes Chung <11371340+cotes2020@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Nicolai Skødt Holmgaard <24588044+Nicolai9852@users.noreply.github.com>
Co-authored-by: Zakaria Fatahi <zakaria@buzzjective.com>
Co-authored-by: Alexander Fuks <kungfux@users.noreply.github.com>
Co-authored-by: Josh Wickham <josh@i-josh.com>
Co-authored-by: Jason Raveling <jason@webunraveling.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: nakamura <71050561+manabu-nakamura@users.noreply.github.com>
Co-authored-by: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
Co-authored-by: Shen Lin <shhenlin@gmail.com>
Co-authored-by: lynkos <kiwi2mii@gmail.com>
Co-authored-by: Yura <yury.kabernik.berazouski@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants