1
0
mirror of https://github.com/cotes2020/jekyll-theme-chirpy.git synced 2026-06-23 08:18:40 +00:00

Compare commits

..

151 Commits

Author SHA1 Message Date
semantic-release-bot 152093879e chore(release): 7.6.0
## [7.6.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.5.0...v7.6.0) (2026-06-20)

### Features

* add edit this post link ([#2517](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2517)) ([6bd446c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6bd446ccdedbe37752cf24b1866e1e2dd9cb82c8))
* **theme:** persist user theme preferences ([#2756](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2756)) ([7496dd4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7496dd41fa053c4636a82027fe3fb3e38357e385))
* **ui:** optimize design of PWA update notification ([#2757](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2757)) ([5cc9dc6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5cc9dc66acb1eb9213988d3ac6de5cf5adf1a6f6))

### Bug Fixes

* **giscus:** synchronize theme state during lazy loading ([#2742](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2742)) ([ceb2a41](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ceb2a41463cbb6251fa257b640990a8d9717b0bb))
* prevent Firefox from opening blank page on `mailto` links ([#2642](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2642)) ([2685b91](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2685b91957d0207c2d31dab828430c78a2fcc3d0))
* **pwa:** avoid iOS status bar overlapping PWA content ([#2173](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2173)) ([3823212](https://github.com/cotes2020/jekyll-theme-chirpy/commit/38232120b729de653bfb42909a8dad047559438d))

### Improvements

* **ui:** prevent vertical flickering caused by subtitle loading ([2db0535](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2db053553bcf9606fc80c4a86959d0dd25d0446a))
2026-06-20 13:35:41 +00:00
Cotes Chung 0bf1c724d8 Merge branch 'master' into production 2026-06-20 21:30:15 +08:00
Cotes Chung 2ec2036d37 chore(deps): upgrade static assets 2026-06-20 21:29:37 +08:00
Cotes Chung cd1fb15481 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](https://github.com/actions/checkout/compare/v6...v7)

Updates `actions/github-script` from 8 to 9
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/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](https://github.com/actions/checkout/compare/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](https://github.com/actions/checkout/compare/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](https://github.com/actions/checkout/compare/v6...v7)

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

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

Updates `actions/deploy-pages` from 4 to 5
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)
2026-06-20 21:26:10 +08:00
Cotes Chung 9ea9dcf930 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
2026-06-20 21:22:58 +08:00
Cotes Chung 2db053553b perf(ui): prevent vertical flickering caused by subtitle loading 2026-06-20 20:23:58 +08:00
Cotes Chung 18cf79bdac 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
2026-06-20 20:23:33 +08:00
Cotes Chung 5cc9dc66ac feat(ui): optimize design of PWA update notification (#2757) 2026-06-20 05:42:07 +08:00
Cotes Chung 7496dd41fa feat(theme): persist user theme preferences (#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
2026-06-17 23:20:12 +08:00
Cotes Chung ceb2a41463 fix(giscus): synchronize theme state during lazy loading (#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.
2026-05-23 23:00:48 +08:00
Cotes Chung 38232120b7 fix(pwa): avoid iOS status bar overlapping PWA content (#2173)
Fixes #2173
2026-05-16 14:39:58 +08:00
Cotes Chung fb3aa94c1f chore: remove funding 2026-05-16 14:37:04 +08:00
Cotes Chung 832b24729d refactor(deps): update CDN URLs to follow production best practices (#2740) 2026-05-15 15:38:08 +08:00
Cotes Chung 97a537e692 chore(deps): bump mathjax from 3.2.2 to 4.x 2026-05-15 15:22:19 +08:00
Cotes Chung 1344e90246 docs: update readme 2026-05-15 15:17:06 +08:00
Cotes Chung 2cfb4bba88 chore: update github issue template 2026-05-15 15:01:34 +08:00
Alexander Fuks 6bd446ccde feat: add edit this post link (#2517) 2026-05-06 22:31:32 +08:00
lynkos 2685b91957 fix: prevent Firefox from opening blank page on mailto links (#2642) 2026-04-10 00:29:33 +08:00
Cotes Chung 6245dec754 docs: improve readme 2026-04-04 02:08:24 +08:00
Shen Lin f20ed1c4b1 chore: ignore hidden system files and editor backups (#2704) 2026-03-28 10:44:48 +08:00
semantic-release-bot 9adb7e352b Merge branch 'production' 2026-03-15 20:14:45 +00:00
semantic-release-bot 297fbde1a2 chore(release): 7.5.0
## [7.5.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.4.1...v7.5.0) (2026-03-15)

### Features

* add support for `fediverse:creator` meta tag ([#2593](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2593)) ([d2db439](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d2db439c169c45ac683fa1c8157c6ea7e0b54b85))

### Bug Fixes

* **i18n:** localize the title ([#2610](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2610)) ([52d160f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/52d160f8574e8d0cddcaa46af114eb382fea1644))
2026-03-15 20:14:32 +00:00
Cotes Chung d760823619 Merge branch 'master' into production 2026-03-16 04:12:56 +08:00
Cotes Chung da4b8cd168 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
2026-03-16 04:11:41 +08:00
Cotes Chung 8893a98191 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/
2026-03-15 19:57:33 +08:00
Cotes Chung 6afe5a6d7b refactor: correct typos in comments and identifiers (#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
2026-03-14 19:01:21 +08:00
Cotes Chung 8fd56560a4 docs: fix typos in tutorial 2026-03-14 18:57:52 +08:00
dependabot[bot] fe968a7701 build(deps): bump the gh-actions group across 2 directories with 4 updates (#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](https://github.com/actions/checkout/compare/v5...v6)

Updates `actions/setup-node` from 5 to 6
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/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](https://github.com/actions/checkout/compare/v5...v6)

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

Updates `actions/upload-pages-artifact` from 3 to 4
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/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>
2026-03-12 21:42:58 +08:00
Cotes Chung cc1d44ee3e build(gh-actions): enable dependabot to scan the starter workflow 2026-03-12 21:37:15 +08:00
Cotes Chung ce14e1a087 chore: update ESLint dependencies and improve js style 2026-03-12 21:37:03 +08:00
Cotes Chung 477394b744 style: interpolate sass variable in CSS custom property 2026-03-12 21:37:03 +08:00
Cotes Chung 96da25abbd build(dev-deps): upgrade node packages 2026-03-12 21:37:03 +08:00
Cotes Chung 0fbaa5359b chore: reduce optional config defaults 2026-01-03 07:42:17 +08:00
Corey Goldberg 92e0ff63ec build(deps): update platforms in Gemfile for Windows (#2628) 2025-12-19 02:55:28 +08:00
nakamura 52d160f857 fix(i18n): localize the title (#2610) 2025-12-18 01:51:53 +08:00
Jason Raveling d2db439c16 feat: add support for fediverse:creator meta tag (#2593) 2025-11-17 14:19:16 +08:00
semantic-release-bot cecfc4237f Merge branch 'production' 2025-10-26 21:49:28 +00:00
semantic-release-bot 525c2888c5 chore(release): 7.4.1
## [7.4.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.4.0...v7.4.1) (2025-10-26)

### Bug Fixes

* avoid duplicate base URL for homepage preview images ([#2568](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2568)) ([66bf232](https://github.com/cotes2020/jekyll-theme-chirpy/commit/66bf232951fbe752821b623dc1e7e4e2824c15bf))
2025-10-26 21:49:12 +00:00
Cotes Chung 4950edc75e Merge branch 'master' into production 2025-10-27 05:48:01 +08:00
Cotes 66bf232951 fix: avoid duplicate base URL for homepage preview images (#2568) 2025-10-27 05:39:39 +08:00
Cotes Chung 37377a43e0 Revert "refactor: avoid converting media‘s relative paths to absolute paths (#2552)"
This reverts commit b3d7db3cda.
2025-10-27 05:16:47 +08:00
semantic-release-bot 7f35d8e550 Merge branch 'production' 2025-10-19 23:15:56 +00:00
semantic-release-bot 18ab8fcfdf chore(release): 7.4.0
## [7.4.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.3.1...v7.4.0) (2025-10-19)

### Features

* add support for embed spotify ([#2515](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2515)) ([cda62e2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/cda62e28d1b71ce4018301aacf93532230aa2b3b))
* **i18n:** add Danish locale ([#2410](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2410)) ([f5802b8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f5802b8a8a4fb94cd51a484e438f6ba2ba8d62c9))
* **i18n:** add locale files for some rtl languages ([#2415](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2415)) ([18c48b4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/18c48b4c49f896eeeeb52a8de1dca715add70c6a))

### Bug Fixes

* avoid unconfigured social options in sidebar ([#2507](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2507)) ([5f8ec7f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5f8ec7ffd3b23998bad48c110e809576fe5daf80))
* correct GoatCounter pageviews extraction ([#2420](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2420)) ([c706799](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c706799f9b2e724dee9a3b891dea72dfa587929e))
* resolve discrepancy in lqip between post and main page ([#2453](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2453)) ([1bac96a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1bac96a8e1ae23a7a48f2b7d249bfbfd5d9bfe50))
* restore blurry animation for homepage LQIP ([#2551](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2551)) ([221ca9f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/221ca9f52b55b103900832f3c03ad2ecc4415bcc))
* **search:** restore full-text search for posts with description ([#2557](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2557)) ([604528e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/604528e3ce11ec0278e83f41105ed5949362bb54))
2025-10-19 23:15:40 +00:00
Cotes Chung 078cf86f79 Merge branch 'master' into production 2025-10-20 07:13:19 +08:00
Cotes Chung 45cb428b01 build(deps): upgrade dependencies 2025-10-20 07:11:29 +08:00
Cotes Chung 3578111ecd refactor: resolve various StyleLint warnings 2025-10-20 06:47:30 +08:00
Cotes Chung 022b963403 build(dev-deps): upgrade dependencies 2025-10-20 06:47:29 +08:00
Cotes aa832c29de refactor: update favicon files and documentation (#2558) 2025-10-20 02:55:43 +08:00
Cotes 604528e3ce fix(search): restore full-text search for posts with description (#2557) 2025-10-20 02:24:40 +08:00
Cotes b3d7db3cda refactor: avoid converting media‘s relative paths to absolute paths (#2552) 2025-10-17 00:02:12 +08:00
dependabot[bot] ee6839516e build(deps): bump the gh-actions group across 1 directory with 5 updates (#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](https://github.com/actions/checkout/compare/v4...v5)

Updates `actions/setup-node` from 4 to 5
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/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](https://github.com/github/codeql-action/compare/v3...v4)

Updates `actions/github-script` from 7 to 8
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/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](https://github.com/actions/stale/compare/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>
2025-10-14 05:23:24 +08:00
Cotes Chung a385ffabff chore: improve ESLint config 2025-10-14 04:54:48 +08:00
Cotes Chung f51641b541 chore: remove deprecated URL 2025-10-14 04:53:51 +08:00
Cotes 221ca9f52b fix: restore blurry animation for homepage LQIP (#2551) 2025-10-14 04:36:02 +08:00
Alexander Fuks 4d6c788b9c docs: update timezone picker reference (#2518) 2025-09-08 23:48:19 +04:00
Alexander Fuks cda62e28d1 feat: add support for embed spotify (#2515) 2025-09-08 23:45:20 +04:00
Jason Raveling 5f8ec7ffd3 fix: avoid unconfigured social options in sidebar (#2507) 2025-08-31 21:51:01 +08:00
Cotes Chung eaf5e57449 ci: change filter script to ESM format
Because `"type": "module"` was added to `package.json`
2025-07-31 03:37:32 +08:00
Cotes Chung 29bf95e9c7 style: change css color functions to use modern notation
- `rgba()` → `rgb()`
2025-07-27 21:42:49 +08:00
Cotes Chung 648398c63c ci: migrate eslint and stylelint from codacy to gh-actions 2025-07-27 21:42:49 +08:00
Cotes Chung b855e8b6b4 style: unify quote style in rollup config 2025-07-27 00:55:54 +08:00
Cotes Chung 49519d13e5 chore: complete ESLint v9 configuration 2025-07-27 00:53:58 +08:00
semantic-release-bot 8bf72fc234 Merge branch 'production' 2025-07-26 12:25:02 +00:00
semantic-release-bot c0e4756200 chore(release): 7.3.1
## [7.3.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.3.0...v7.3.1) (2025-07-26)

### Bug Fixes

* escape special JSON characters in search results ([#2481](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2481)) ([7615d72](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7615d72e9300a1514ef2fc8ec941ab2974ba7eb4))
2025-07-26 12:24:47 +00:00
Cotes Chung 81886b11c0 Merge branch 'hotfix/7.3.1' into production 2025-07-26 20:23:38 +08:00
Cotes Chung 7615d72e93 fix: escape special JSON characters in search results (#2481)
Also restore full-text search
2025-07-26 20:22:30 +08:00
Josh Wickham 1bac96a8e1 fix: resolve discrepancy in lqip between post and main page (#2453) 2025-06-27 23:58:10 +08:00
Alexander Fuks c706799f9b fix: correct GoatCounter pageviews extraction (#2420) 2025-06-01 04:51:43 +08:00
Zakaria Fatahi 18c48b4c49 feat(i18n): add locale files for some rtl languages (#2415) 2025-05-22 01:06:12 +08:00
Nicolai Skødt Holmgaard f5802b8a8a feat(i18n): add Danish locale (#2410) 2025-05-22 01:03:29 +08:00
Cotes Chung 09948da235 Merge branch 'production' 2025-05-18 21:32:02 +08:00
semantic-release-bot 53770e4923 chore(release): 7.3.0
## [7.3.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.4...v7.3.0) (2025-05-18)

### Features

* **i18n:** add Catalan Spanish locale translation ([#2349](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2349)) ([167c98c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/167c98c781d0607c90ede8fc73eb43dffeea6abd))
* **i18n:** add Dutch locale ([#2076](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2076)) ([981ddba](https://github.com/cotes2020/jekyll-theme-chirpy/commit/981ddba30e57934f9056b8d468f0d17db131e1e8))
* **i18n:** add Japanese locale ([#2295](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2295)) ([571c90f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/571c90f13011eb91d0e1392218f3953060b920c9))
* **i18n:** add persian language ([#2238](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2238)) ([7d4d35c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7d4d35cd10109e78d60fbb6b25a9b205f780ad63))

### Bug Fixes

* avoid `mathjax` loading failure on page refresh ([#2389](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2389)) ([401e2af](https://github.com/cotes2020/jekyll-theme-chirpy/commit/401e2af0f8a173d8437e03027c7aff558e8c0bde))
* improve accuracy of moving `img` element classes ([#2399](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2399)) ([d0f8f95](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d0f8f9553e41536eb84ae2fdd3f3bc9d13f7ef8c))
* prevent the search bar from moving when focused ([#2336](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2336)) ([f744929](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f7449299e88c71da2104f0007f2db23a8fa798be))
* recognize global theme mode ([#2357](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2357)) ([7708adb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7708adbf30e6dea51a84311b86bc224739f656f6))
* **search:** avoid missing spaces between paragraphs in search results ([#2199](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2199)) ([0eb7efa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0eb7efa7f53508bf6b48eb9d773d5c5047c3c525))
* **ui:** fix incomplete border color on hover for tags ([#2359](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2359)) ([c626447](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c62644759cb4e0e07f7ee6eb9503ef69be62371b))

### Improvements

* **seo:** improve accessibility and aligns with best practices ([#2289](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2289)) ([54d4d59](https://github.com/cotes2020/jekyll-theme-chirpy/commit/54d4d59d22ac543a14bfbd9bb3d6fb6756056041))
2025-05-18 13:17:30 +00:00
Cotes Chung d84b72706a Merge branch 'master' into production 2025-05-18 21:16:09 +08:00
Cotes Chung 519e4f193a chore: upgrade dependencies to the latest version (#2409) 2025-05-18 21:14:56 +08:00
Cotes Chung d0f8f9553e fix: improve accuracy of moving img element classes (#2399) 2025-05-11 22:19:18 +08:00
Cotes Chung 401e2af0f8 fix: avoid mathjax loading failure on page refresh (#2389) 2025-05-05 11:55:48 +08:00
Cotes Chung ada38aad96 chore: avoid auto-formatting liquid and sass mixed code 2025-05-05 11:15:08 +08:00
Cotes Chung 61ae6cced8 chore(dev-deps): add eslint config file 2025-05-05 11:14:07 +08:00
Cotes Chung 9f38a2dead refactor: move the path of theme.js 2025-05-03 16:18:52 +08:00
Cotes Chung 23d953c313 chore(deps): remove plugin jekyll-redirect-from
Discussed in #2313
2025-05-03 16:14:50 +08:00
iSpeakNerd b48ea68bf7 chore: update linkedin sharing url (#2307) 2025-04-24 20:25:46 +08:00
László Várady c62644759c fix(ui): fix incomplete border color on hover for tags (#2359) 2025-04-24 20:23:43 +08:00
Cotes Chung 7708adbf30 fix: recognize global theme mode (#2357) 2025-04-16 18:08:43 +08:00
Delyn Choong 167c98c781 feat(i18n): add Catalan Spanish locale translation (#2349) 2025-04-13 22:16:47 +08:00
László Várady f7449299e8 fix: prevent the search bar from moving when focused (#2336) 2025-04-07 19:36:32 +08:00
Alejandro db40db6d3d chore: add parameter in search-results.html (#2330) 2025-04-05 07:28:29 +08:00
nakamura 571c90f130 feat(i18n): add Japanese locale (#2295) 2025-03-29 03:54:54 +08:00
Türkalp Burak KAYRANCIOĞLU 54d4d59d22 perf(seo): improve accessibility and aligns with best practices (#2289) 2025-03-08 22:24:47 +08:00
Corey Goldberg e3158642c3 docs: fix typo in 2019-08-08-write-a-new-post.md (#2281)
Signed-off-by: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com>
2025-03-05 05:06:37 +08:00
MasihGhaznavi 7d4d35cd10 feat(i18n): add persian language (#2238) 2025-02-09 14:28:39 +08:00
algorithmic-parallels 231956d77a docs: using long form Jekyll subcommand (#2231) 2025-02-06 13:27:54 +08:00
Cotes Chung 0eb7efa7f5 fix(search): avoid missing spaces between paragraphs in search results (#2199)
- Use a common post-snippet for search results to avoid line break issues
- Reduce Jekyll include files to speed up the build
- Remove outdated key from search.json
2025-01-20 21:27:18 +08:00
semantic-release-bot e44c048aef Merge branch 'production' 2024-12-21 19:22:37 +00:00
semantic-release-bot 5e41d874b3 chore(release): 7.2.4
## [7.2.4](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.3...v7.2.4) (2024-12-21)

### Bug Fixes

* toc not visible when switching from mobile to desktop mode ([#2139](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2139)) ([32051da](https://github.com/cotes2020/jekyll-theme-chirpy/commit/32051dad03cb8f60fa4206969377b9674f9a3f0c))
* **ui:** left borderline of TOC is notched ([#2140](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2140)) ([8a4d0bc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8a4d0bc4ee9e142a11401cad80bc9605878f121d))
2024-12-21 19:22:22 +00:00
Cotes Chung 774ee93d78 Release v7.2.4 (#2141) 2024-12-22 03:21:28 +08:00
Cotes Chung 8a4d0bc4ee fix(ui): left borderline of TOC is notched (#2140) 2024-12-22 03:11:20 +08:00
Cotes Chung 1b93f6db9b docs: update the setting name for the comments 2024-12-22 02:32:03 +08:00
Cotes Chung 32051dad03 fix: toc not visible when switching from mobile to desktop mode (#2139) 2024-12-22 02:29:29 +08:00
semantic-release-bot c12875fdba Merge branch 'production' 2024-12-15 13:06:04 +00:00
semantic-release-bot c174f62f26 chore(release): 7.2.3
## [7.2.3](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.2...v7.2.3) (2024-12-15)

### Bug Fixes

* refreshing mermaid theme may fail ([#2113](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2113)) ([2f00d41](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2f00d41861f1b06c2ff7fa4e67e14e647c3c34b0))
* **ui:** gap between TOC entries is inconsistent ([#2119](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2119)) ([1b4e318](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1b4e318dc1cd57da812e11bf69ebb06083c213fc))
* **ui:** slow script loading hides TOC fade-up effect in desktop ([#2120](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2120)) ([e0c3faf](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e0c3fafa470eb12bd04ffdf198018bc28b6de20d))
2024-12-15 13:05:48 +00:00
Cotes Chung e741aa43cf Merge branch 'hotfix/7.2.3' into production 2024-12-15 21:04:09 +08:00
Cotes Chung e0c3fafa47 fix(ui): slow script loading hides TOC fade-up effect in desktop (#2120) 2024-12-15 14:51:51 +08:00
Cotes Chung 1b4e318dc1 fix(ui): gap between TOC entries is inconsistent (#2119)
In desktop mode, H2 and the first sub-level H3 in the TOC are too close.
2024-12-15 14:43:07 +08:00
Cotes Chung 2f00d41861 fix: refreshing mermaid theme may fail (#2113) 2024-12-12 01:24:37 +08:00
semantic-release-bot f40fa6a13c Merge branch 'production' 2024-12-06 17:04:04 +00:00
semantic-release-bot 0360c9e90b chore(release): 7.2.2
## [7.2.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.1...v7.2.2) (2024-12-06)

### Bug Fixes

* js files in subdirectories are excluded from the site output ([#2101](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2101)) ([f55cc31](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f55cc31dbd0e7455328c80c7ef38186ad8e54099))
2024-12-06 17:03:47 +00:00
Cotes Chung d87c2de675 Merge branch 'hotfix/7.2.2' into production 2024-12-07 00:57:46 +08:00
Cotes Chung f55cc31dbd fix: js files in subdirectories are excluded from the site output (#2101) 2024-12-07 00:55:47 +08:00
cheese 981ddba30e feat(i18n): add Dutch locale (#2076) 2024-12-05 21:38:06 +08:00
semantic-release-bot 4925a58bf5 Merge branch 'production' 2024-12-05 13:34:00 +00:00
semantic-release-bot 7630356a94 chore(release): 7.2.1
## [7.2.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.0...v7.2.1) (2024-12-05)

### Bug Fixes

* **build:** exclude `purgecss.js` from output files ([#2090](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2090)) ([976e1a1](https://github.com/cotes2020/jekyll-theme-chirpy/commit/976e1a184b3dbe08991e8a50db4d5d7f8a0b7090))
* correct the import condition for theme script ([#2075](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2075)) ([a16aa7d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/a16aa7d41e3c3cb28649bfa1361e8bcb91b9ca47))
* ensure pageviews are fetched after DOM is loaded ([#2071](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2071)) ([b4019f3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b4019f3517e4a3284df51567d29938cb12bf3acc))
* **toc:** resume fade up animation in desktop mode ([#2085](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2085)) ([8280adb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8280adb901b9d15cc1bc18009553aae8746121d8))
2024-12-05 13:33:44 +00:00
Cotes Chung 6c112c641a Merge branch 'master' into production 2024-12-05 21:32:17 +08:00
Cotes Chung 976e1a184b fix(build): exclude purgecss.js from output files (#2090) 2024-12-05 21:28:37 +08:00
Cotes Chung 7ea3545ba3 refactor: reduce the height of the TOC bottom overlay in desktop mode 2024-12-05 21:09:07 +08:00
Cotes Chung 8280adb901 fix(toc): resume fade up animation in desktop mode (#2085) 2024-12-03 22:41:28 +08:00
Cotes Chung 4180992272 style: add indentation to js code 2024-12-03 22:22:20 +08:00
Alexander Fuks a16aa7d41e fix: correct the import condition for theme script (#2075) 2024-12-01 04:34:12 +08:00
Cotes Chung 8e55e4dcb2 build: correct the js rollup watch path (#2074)
1. Correct the rollup watch path
2. Avoid registering watch listeners redundantly across multiple tasks
2024-12-01 04:20:47 +08:00
Alexander Fuks b4019f3517 fix: ensure pageviews are fetched after DOM is loaded (#2071) 2024-11-30 23:07:53 +03:00
semantic-release-bot 2966fc174d Merge branch 'production' 2024-11-28 08:59:03 +00:00
semantic-release-bot 3df83fd0d9 chore(release): 7.2.0
## [7.2.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.1.1...v7.2.0) (2024-11-28)

### Features

* show toc on mobile screens ([#1964](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1964)) ([8a064a5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8a064a5e5a95cd22aa654f7c80da09d107262508))
* support vertical scrolling for toc in desktop mode ([#2064](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2064)) ([5265b03](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5265b039741555943f9a6f0451287aefb6810f28))

### Bug Fixes

* pagination error when pinned posts exceed the page size ([#1965](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1965)) ([93f616b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/93f616b25d7ed6c4f090c50c8663f8c1f59947f4))

### Improvements

* modular sass architecture ([#2052](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2052)) ([35c794c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/35c794cf5896565430389f35c660b88a93cebb17))
* speed up page rendering and jekyll build process ([#2034](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2034)) ([65f960c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/65f960c31a734b5306a8b919040c3aae9b783efd))
2024-11-28 08:58:47 +00:00
Cotes Chung 82ba82e6da Merge branch 'master' into production 2024-11-28 16:56:02 +08:00
Cotes Chung 5265b03974 feat: support vertical scrolling for toc in desktop mode (#2064) 2024-11-28 05:40:57 +08:00
Cotes Chung 11647697bb build(deps): update dependencies version 2024-11-25 03:55:11 +08:00
Cotes Chung 5756b8fc26 build(deps-dev): upgrade dependencies
Close #2058
2024-11-25 00:19:56 +08:00
Cotes Chung 35c794cf58 perf: modular sass architecture (#2052)
- Modularized the Sass architecture to enhance code maintainability and reduce the output file size
- Replaced deprecated `@import` with `@use` / `@forward`
2024-11-25 00:05:28 +08:00
Cotes Chung c69914effc ci: avoid repeated runs of stylelint (#2057) 2024-11-24 04:33:46 +08:00
Cotes Chung 65f960c31a perf: speed up page rendering and jekyll build process (#2034)
Close stale issues and PRs / stale (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Style Lint / stylelint (push) Has been cancelled
Lint Commit Messages / commitlint (push) Has been cancelled
Build and Deploy / build (push) Has been cancelled
Build and Deploy / deploy (push) Has been cancelled
- Ensure inline scripts execute after the DOM has fully loaded.
- Use Rollup to bundle the theme-mode and Mermaid scripts, reducing the number of Jekyll include snippets.
2024-11-16 22:49:55 +08:00
Cotes Chung d51345e297 ci: reduce unnecessary pr-filter runs (#2033)
- Checking the repository of the PR is more effective than checking the label to identify bot-initiated PRs
- This change also allows more flexible PR body definitions for developers with write access to the repository
2024-11-08 22:35:18 +08:00
Cotes Chung 2f844978aa chore: change stale label to inactive 2024-11-08 22:15:31 +08:00
Supreeth Mysore Venkatesh 42dea8ee29 build(deps): update wdm gem version for compatibility (#2028) 2024-11-04 00:45:59 +08:00
Alexander Fuks 86b13c917f chore: improve feed interoperability (#2024) 2024-11-01 14:39:03 +04:00
Cotes Chung 4ef3cd8efc ci: improve workflow triggers (#2017)
- Unchain commit-lint and CI
  - Even if a commit does not meet the CI path filter, it still needs to lint the commit message.
- Unchain PR filter and CI
  - The CI workflow needs to be triggered when the commits in a pull request are modified.
- Allow manual publishing
  - Sometimes `semantic-release` will error out due to commit messages referencing discussions, but this does not affect the final RubyGems/GitHub Release. In such cases, manual triggering of the publish process is needed to complete the remaining publishing steps.
2024-10-29 22:56:32 +08:00
Cotes Chung c7f967529c ci: skip test for invalid PRs (#2013) 2024-10-26 16:58:07 +08:00
Cotes Chung 74ed06321c ci: block invalid pull requests (#2010) 2024-10-25 19:48:11 +08:00
Cotes Chung d4f7f39ece refactor: simplify sidebar animation 2024-10-22 11:13:06 +08:00
Cotes Chung c1bd9eb9ee refactor: reduce duplicate scss 2024-10-20 13:52:42 +08:00
Cotes Chung 6f461132c0 refactor: improve toc popup module 2024-10-19 21:15:31 +08:00
Alexander Fuks 03e302cbf6 chore: close toc-popup gracefully with Esc key (#1990) 2024-10-14 01:16:25 +08:00
Alexander Fuks 8a064a5e5a feat: show toc on mobile screens (#1964) 2024-10-11 22:32:10 +08:00
Bence Boros 740bd84c51 chore(i18n): update hungarian translation (#1976) 2024-10-01 23:19:39 +08:00
Cotes Chung 93f616b25d fix: pagination error when pinned posts exceed the page size (#1965) 2024-09-26 22:30:56 +08:00
Alexander Fuks e6b87d2811 chore: remove h1 element from site title (#1960) 2024-09-24 08:21:34 +08:00
semantic-release-bot 73749067c5 Merge branch 'production' 2024-09-23 11:56:46 +00:00
semantic-release-bot fd0df8320f chore(release): 7.1.1
## [7.1.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.1.0...v7.1.1) (2024-09-23)

### Bug Fixes

* **i18n:** correct fr-FR translations ([#1949](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1949)) ([367262e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/367262e74d1005bddf1328bb2b3a2b9e152c0086))
* **pwa:** site baseurl not passed to `app.js` ([#1955](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1955)) ([5a63244](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5a63244721d21b1ad3a0ae83420723a2f0379e8b))
2024-09-23 11:56:31 +00:00
Cotes Chung fbcdf8ce85 Merge branch 'master' into production 2024-09-23 19:48:06 +08:00
Cotes Chung fac6116af1 build(dev-deps): bump 7 dependencies versions 2024-09-23 19:41:28 +08:00
Cotes Chung 5a63244721 fix(pwa): site baseurl not passed to app.js (#1955) 2024-09-18 22:32:26 +08:00
Cotes Chung 3ab3b844d2 refactor: replace deprecated meta element
Replace `apple-mobile-web-app-capable` with `mobile-web-app-capable`
2024-09-18 21:41:08 +08:00
denis-games 367262e74d fix(i18n): correct fr-FR translations (#1949)
Co-authored-by: Denis Jean <dj@denisjean.fr>
2024-09-16 20:38:46 +08:00
semantic-release-bot cbc93193e1 Merge branch 'production' 2024-08-27 07:29:10 +00:00
180 changed files with 5562 additions and 3436 deletions
-2
View File
@@ -1,2 +0,0 @@
ko_fi: coteschung
custom: https://sponsor.cotes.page
+1 -1
View File
@@ -53,7 +53,7 @@ body:
value: | value: |
- Ruby: <!-- run `ruby -v` --> - Ruby: <!-- run `ruby -v` -->
- Jekyll: <!-- run `bundle exec jekyll -v` --> - Jekyll: <!-- run `bundle exec jekyll -v` -->
- Chirpy: <!-- run `bundle info jekyll-theme-chirpy` --> - Chirpy: <!-- run `bundle info --version jekyll-theme-chirpy` -->
validations: validations:
required: true required: true
+2 -1
View File
@@ -15,7 +15,8 @@ updates:
schedule: schedule:
interval: "weekly" interval: "weekly"
- package-ecosystem: "github-actions" - package-ecosystem: "github-actions"
directory: "/" directories:
- "/.github/workflows/**"
groups: groups:
gh-actions: gh-actions:
update-types: update-types:
+6 -7
View File
@@ -2,27 +2,26 @@ name: CD
on: on:
push: push:
branches: branches: [production]
- production tags-ignore: ["**"]
tags-ignore:
- "**"
jobs: jobs:
release: release:
if: ${{ ! startsWith(github.event.head_commit.message, 'chore(release)') }}
permissions: permissions:
contents: write contents: write
issues: write issues: write
pull-requests: write pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v7
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
with: with:
ruby-version: 3.3 ruby-version: 3.4
bundler-cache: true bundler-cache: true
- uses: actions/setup-node@v4 - uses: actions/setup-node@v6
with: with:
node-version: lts/* node-version: lts/*
+17 -9
View File
@@ -1,17 +1,25 @@
name: "CI" name: CI
on: on:
push: push:
branches: branches:
- "master" - master
- "hotfix/**" - "hotfix/*"
paths-ignore: paths-ignore:
- ".github/**" - ".github/**"
- "!.github/workflows/ci.yml" - "!.github/workflows/ci.yml"
- ".gitignore" - .gitignore
- "docs/**" - "docs/**"
- "README.md" - README.md
- "LICENSE" - LICENSE
pull_request: pull_request:
paths-ignore:
- ".github/**"
- "!.github/workflows/ci.yml"
- .gitignore
- "docs/**"
- README.md
- LICENSE
jobs: jobs:
build: build:
@@ -19,11 +27,11 @@ jobs:
strategy: strategy:
matrix: matrix:
ruby: ["3.1", "3.2", "3.3"] ruby: ["3.3", "3.4"]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
fetch-depth: 0 # for posts's lastmod fetch-depth: 0 # for posts's lastmod
@@ -34,7 +42,7 @@ jobs:
bundler-cache: true bundler-cache: true
- name: Setup Node - name: Setup Node
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: lts/* node-version: lts/*
+4 -4
View File
@@ -24,11 +24,11 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v7
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v3 uses: github/codeql-action/init@v4
with: with:
languages: "${{ matrix.language }}" languages: "${{ matrix.language }}"
config-file: .github/codeql/codeql-config.yml config-file: .github/codeql/codeql-config.yml
@@ -36,9 +36,9 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v3 uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3 uses: github/codeql-action/analyze@v4
with: with:
category: "/language:${{ matrix.language }}" category: "/language:${{ matrix.language }}"
+8 -2
View File
@@ -1,9 +1,15 @@
name: Lint Commit Messages name: Lint Commit Messages
on: pull_request
on:
push:
branches:
- master
- "hotfix/*"
pull_request:
jobs: jobs:
commitlint: commitlint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v7
- uses: wagoid/commitlint-github-action@v6 - uses: wagoid/commitlint-github-action@v6
+30
View File
@@ -0,0 +1,30 @@
name: Lint JS
on:
push:
paths:
- "_javascript/**/*.js"
- ".github/workflows/scripts/**/*.js"
- "*.js"
pull_request:
paths:
- "_javascript/**/*.js"
- ".github/workflows/scripts/*.js"
- "*.js"
jobs:
lint-js:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install Dependencies
run: npm i
- name: Lint JS
run: npm run lint:js
+26
View File
@@ -0,0 +1,26 @@
name: Lint SCSS
on:
push:
paths:
- "_sass/**/*.scss"
pull_request:
paths:
- "_sass/**/*.scss"
jobs:
lint-scss:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: lts/*
- name: Install Dependencies
run: npm i
- name: Lint SCSS
run: npm run lint:scss
+25
View File
@@ -0,0 +1,25 @@
name: PR Filter
on:
pull_request_target:
types: [opened, reopened]
jobs:
check-template:
if: github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Checkout Code
uses: actions/checkout@v7
- name: Check PR Content
id: intercept
uses: actions/github-script@v9
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { default: filter } = await import('${{ github.workspace }}/.github/workflows/scripts/pr-filter.js');
await filter({ github, context, core });
+1
View File
@@ -10,6 +10,7 @@ on:
required: true required: true
BUILDER: BUILDER:
required: true required: true
workflow_dispatch:
jobs: jobs:
launch: launch:
+36
View File
@@ -0,0 +1,36 @@
function hasTypes(markdown) {
return /## Type of change/.test(markdown) && /-\s\[x\]/i.test(markdown);
}
function hasDescription(markdown) {
return (
/## Description/.test(markdown) &&
!/## Description\s*\n\s*(##|\s*$)/.test(markdown)
);
}
export default async ({ github, context, core }) => {
const pr = context.payload.pull_request;
const body = pr.body === null ? '' : pr.body;
const markdown = body.replace(/<!--[\s\S]*?-->/g, '');
const action = context.payload.action;
const isValid =
markdown !== '' && hasTypes(markdown) && hasDescription(markdown);
if (!isValid) {
await github.rest.pulls.update({
...context.repo,
pull_number: pr.number,
state: 'closed'
});
await github.rest.issues.createComment({
...context.repo,
issue_number: pr.number,
body: `Oops, it seems you've ${action} an invalid pull request. No worries, we'll close it for you.`
});
core.setFailed('PR content does not meet template requirements.');
}
};
+2 -2
View File
@@ -9,7 +9,7 @@ permissions:
pull-requests: write pull-requests: write
env: env:
STALE_LABEL: stale STALE_LABEL: inactive
EXEMPT_LABELS: "pending,planning,in progress" EXEMPT_LABELS: "pending,planning,in progress"
MESSAGE: > MESSAGE: >
This conversation has been automatically marked as stale because it has not had recent activity. This conversation has been automatically marked as stale because it has not had recent activity.
@@ -20,7 +20,7 @@ jobs:
stale: stale:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/stale@v9 - uses: actions/stale@v10
with: with:
# 60 days before marking issues/PRs stale # 60 days before marking issues/PRs stale
days-before-close: -1 # does not close automatically days-before-close: -1 # does not close automatically
+5 -5
View File
@@ -28,7 +28,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v7
with: with:
fetch-depth: 0 fetch-depth: 0
# submodules: true # submodules: true
@@ -37,12 +37,12 @@ jobs:
- name: Setup Pages - name: Setup Pages
id: pages id: pages
uses: actions/configure-pages@v4 uses: actions/configure-pages@v6
- name: Setup Ruby - name: Setup Ruby
uses: ruby/setup-ruby@v1 uses: ruby/setup-ruby@v1
with: with:
ruby-version: 3.3 ruby-version: 3.4
bundler-cache: true bundler-cache: true
- name: Build site - name: Build site
@@ -57,7 +57,7 @@ jobs:
\-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" \-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/"
- name: Upload site artifact - name: Upload site artifact
uses: actions/upload-pages-artifact@v3 uses: actions/upload-pages-artifact@v5
with: with:
path: "_site${{ steps.pages.outputs.base_path }}" path: "_site${{ steps.pages.outputs.base_path }}"
@@ -70,4 +70,4 @@ jobs:
steps: steps:
- name: Deploy to GitHub Pages - name: Deploy to GitHub Pages
id: deployment id: deployment
uses: actions/deploy-pages@v4 uses: actions/deploy-pages@v5
-23
View File
@@ -1,23 +0,0 @@
name: "Style Lint"
on:
push:
branches: ["master", "hotfix/**"]
paths: ["_sass/**/*.scss"]
pull_request:
paths: ["_sass/**/*.scss"]
jobs:
stylelint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: lts/*
- run: npm i
- run: npm test
+6 -1
View File
@@ -23,5 +23,10 @@ package-lock.json
!.vscode/tasks.json !.vscode/tasks.json
# Misc # Misc
_sass/dist _sass/vendors
assets/js/dist assets/js/dist
# Hidden system files
*~
.DS_Store
Thumbs.db
+29
View File
@@ -0,0 +1,29 @@
{
"ignoreFiles": ["_sass/vendors/**"],
"extends": "stylelint-config-standard-scss",
"rules": {
"no-descending-specificity": null,
"shorthand-property-no-redundant-values": null,
"at-rule-no-vendor-prefix": null,
"property-no-vendor-prefix": null,
"selector-no-vendor-prefix": null,
"value-no-vendor-prefix": null,
"selector-not-notation": "simple",
"color-hex-length": "long",
"declaration-block-single-line-max-declarations": 3,
"scss/operator-no-newline-after": null,
"rule-empty-line-before": [
"always",
{
"ignore": ["after-comment", "first-nested"]
}
],
"value-keyword-case": [
"lower",
{
"ignoreProperties": ["/^\\$/"]
}
],
"media-feature-range-notation": "prefix"
}
}
+2 -2
View File
@@ -6,9 +6,9 @@ gemspec
gem "html-proofer", "~> 5.0", group: :test gem "html-proofer", "~> 5.0", group: :test
platforms :mingw, :x64_mingw, :mswin, :jruby do platforms :windows, :jruby do
gem "tzinfo", ">= 1", "< 3" gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data" gem "tzinfo-data"
end end
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] gem "wdm", "~> 0.2.0", :platforms => [:windows]
+33 -40
View File
@@ -6,11 +6,11 @@
A minimal, responsive, and feature-rich Jekyll theme for technical writing. A minimal, responsive, and feature-rich Jekyll theme for technical writing.
[![CI](https://img.shields.io/github/actions/workflow/status/cotes2020/jekyll-theme-chirpy/ci.yml?logo=github)][ci]&nbsp; [![CI][badge-ci]][ci]&nbsp;
[![Codacy Badge](https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy)][codacy]&nbsp; [![Codacy Badge][badge-codacy]][codacy]&nbsp;
[![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy?color=goldenrod)][license]&nbsp; [![GitHub license][badge-license]][license]&nbsp;
[![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?&logo=RubyGems&logoColor=ghostwhite&label=gem&color=orange)][gem]&nbsp; [![Gem Version][badge-gem]][gem]&nbsp;
[![Open in Dev Containers](https://img.shields.io/badge/Dev_Containers-Open-deepskyblue?logo=linuxcontainers)][open-container] [![Open in Dev Containers][badge-open-container]][open-container]
[**Live Demo** →][demo] [**Live Demo** →][demo]
@@ -20,54 +20,48 @@
## Features ## Features
- Dark Theme - **Design & UX** - Responsive layout, Dark/Light modes, Localized UI language,
- Localized UI language and Dark mode images.
- Pinned Posts on Home Page - **Content Management** - Pinned posts, Hierarchical categories, Trending tags,
- Hierarchical Categories Auto-generated Table of Contents, and Last modified dates.
- Trending Tags - **Rich Text Support** - Syntax highlighting, Mathematical expressions, Mermaid
- Table of Contents diagrams & flowcharts, and Embedded media.
- Last Modified Date - **Interactivity & Outreach** - Built-in search, Multiple comment systems, and
- Syntax Highlighting Atom feeds.
- Mathematical Expressions - **System & Optimization** - PWA support, integrated Web analytics, and
- Mermaid Diagrams & Flowcharts advanced SEO performance.
- Dark Mode Images
- Embed Media
- Comment Systems
- Built-in Search
- Atom Feeds
- PWA
- Web Analytics
- SEO & Performance Optimization
## Documentation ## Documentation
To learn how to use, develop, and upgrade the project, please refer to the [Wiki][wiki]. To learn how to use, develop, and upgrade the project, please refer to the
[Wiki][wiki].
## Contributing ## Contributing
Contributions (_pull requests_, _issues_, and _discussions_) are what make the open-source community such an amazing place Contributions (_pull requests_, _issues_, and _discussions_) are what make the
to learn, inspire, and create. Any contributions you make are greatly appreciated. open-source community such an amazing place to learn, inspire, and create. Any
For details, see the "[Contributing Guidelines][contribute-guide]". contributions you make are greatly appreciated.
For details, please refer to our [Contributing Guidelines][contribute-guide].
## Credits ## Credits
### Contributors This project is built on the [Jekyll][jekyllrb] ecosystem and integrates a
collection of [excellent libraries][lib]. Its avatar and favicon are sourced
from [ClipartMAX][clipartmax].
Thanks to [all the contributors][contributors] involved in the development of the project! Furthermore, thanks to everyone who contributed to the development of this project!
[![all-contributors](https://contrib.rocks/image?repo=cotes2020/jekyll-theme-chirpy&columns=16)][contributors] [![all-contributors][contributors-avatar]][contributors]
<sub> — Made with [contrib.rocks](https://contrib.rocks)</sub>
### Third-Party Assets
This project is built on the [Jekyll][jekyllrb] ecosystem and some [great libraries][lib], and is developed using [VS Code][vscode] as well as tools provided by [JetBrains][jetbrains] under a non-commercial open-source software license.
The avatar and favicon for the project's website are from [ClipartMAX][clipartmax].
## License ## License
This project is published under [MIT License][license]. This project is licensed under the [MIT License][license].
[badge-ci]: https://img.shields.io/github/actions/workflow/status/cotes2020/jekyll-theme-chirpy/ci.yml?logo=github
[badge-codacy]: https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy
[badge-license]: https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy?color=goldenrod
[badge-gem]: https://img.shields.io/gem/v/jekyll-theme-chirpy?&logo=RubyGems&logoColor=ghostwhite&label=gem&color=orange
[badge-open-container]: https://img.shields.io/badge/Dev_Containers-Open-deepskyblue?logo=linuxcontainers
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy [gem]: https://rubygems.org/gems/jekyll-theme-chirpy
[ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster [ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster
[codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade [codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
@@ -79,6 +73,5 @@ This project is published under [MIT License][license].
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki [wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
[contribute-guide]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md [contribute-guide]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md
[contributors]: https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors [contributors]: https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors
[contributors-avatar]: https://contrib.rocks/image?repo=cotes2020/jekyll-theme-chirpy&columns=16&max=112
[lib]: https://github.com/cotes2020/chirpy-static-assets [lib]: https://github.com/cotes2020/chirpy-static-assets
[vscode]: https://code.visualstudio.com/
[jetbrains]: https://www.jetbrains.com/?from=jekyll-theme-chirpy
+14 -2
View File
@@ -8,7 +8,7 @@ theme: jekyll-theme-chirpy
# otherwise, the layout language will use the default value of 'en'. # otherwise, the layout language will use the default value of 'en'.
lang: en lang: en
# Change to your timezone https://kevinnovak.github.io/Time-Zone-Picker # Change to your timezone https://zones.arilyn.cc
timezone: Asia/Shanghai timezone: Asia/Shanghai
# jekyll-seo-tag settings https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md # jekyll-seo-tag settings https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
@@ -36,6 +36,7 @@ social:
# It will be displayed as the default author of the posts and the copyright owner in the Footer # It will be displayed as the default author of the posts and the copyright owner in the Footer
name: your_full_name name: your_full_name
email: example@domain.com # change to your email address email: example@domain.com # change to your email address
fediverse_handle: # fill in your fediverse handle. E.g. "@username@domain.com"
links: links:
# The first element serves as the copyright owner's link # The first element serves as the copyright owner's link
- https://twitter.com/username # change to your Twitter homepage - https://twitter.com/username # change to your Twitter homepage
@@ -107,6 +108,16 @@ social_preview_image: # string, local or CORS resources
# boolean type, the global switch for TOC in posts. # boolean type, the global switch for TOC in posts.
toc: true toc: true
actions:
# Display "Edit this post" action on each post page to encourage contributions.
edit_post:
enabled: false # set to true to display the "Edit this post" action.
url: "" # repository base URL, e.g. https://github.com/cotes2020/jekyll-theme-chirpy/edit/master
# Use dynamic or static URL for the edit link.
# If `static_url` is false, the post's path will be appended to the `url` above as the final edit link.
# Set to true if the URL should remain unchanged, which means each post will share the same edit link.
static_url: false # [ true | false ]
comments: comments:
# Global switch for the post-comment system. Keeping it empty means disabled. # Global switch for the post-comment system. Keeping it empty means disabled.
provider: # [disqus | utterances | giscus] provider: # [disqus | utterances | giscus]
@@ -212,8 +223,9 @@ exclude:
- tools - tools
- README.md - README.md
- LICENSE - LICENSE
- purgecss.js
- "*.config.js" - "*.config.js"
- package*.json - "package*.json"
jekyll-archives: jekyll-archives:
enabled: [categories, tags] enabled: [categories, tags]
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة. statement: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة.
notification: notification:
update_found: يتوفر اصدار جديد للمحتوى. update_found: يتوفر محتوى جديد
update: تحديث update: تحديث
theme:
light: فاتح
dark: داكن
system: النظام
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: دقيقة unit: دقيقة
prompt: قراءة prompt: قراءة
edit: حرر هذا المنشور
relate_posts: إقرأ المزيد relate_posts: إقرأ المزيد
share: شارك share: شارك
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Съжалявам, но на този URL адрес няма налично съдържание. statement: Съжалявам, но на този URL адрес няма налично съдържание.
notification: notification:
update_found: Налична е нова версия на съдържанието. update_found: Има ново съдържание
update: Обнови update: Обнови
theme:
light: Светла
dark: Тъмна
system: Системна
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: мин unit: мин
prompt: четиво prompt: четиво
edit: Редактирай тази публикация
relate_posts: Още за четене relate_posts: Още за четене
share: Споделете share: Споделете
button: button:
+90
View File
@@ -0,0 +1,90 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Entrada
category: Categoria
tag: Etiqueta
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Inici
categories: Categories
tags: Etiquetes
archives: Arxiu
about: Sobre
# the text displayed in the search bar & search results
search:
hint: Cercar
cancel: Cancel·lar
no_results: Ups! No s'han trobat resultats.
panel:
lastmod: Actualitzat recentment
trending_tags: Etiquetes populars
toc: Taula de continguts
copyright:
# Shown at the bottom of the post
license:
template: Aquesta entrada està llicenciada sota :LICENSE_NAME per l'autor.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Alguns drets reservats.
verbose: >-
Excepte que s'indiqui explícitament, les entrades d'aquest blog estan llicenciades
sota la llicència Creative Commons Attribution 4.0 International (CC BY 4.0) per l'autor.
meta: Fet amb :PLATFORM utilitzant el tema :THEME
not_found:
statement: Ho sentim, hem perdut aquesta URL o apunta a alguna cosa que no existeix.
notification:
update_found: Hi ha contingut nou disponible
update: Actualitzar
theme:
light: Clar
dark: Fosc
system: Sistema
# ----- Posts related labels -----
post:
written_by: Per
posted: Publicat
updated: Actualitzat
words: paraules
pageview_measure: visites
read_time:
unit: min
prompt: " de lectura"
edit: Edita aquesta entrada
relate_posts: Entrades relacionades
share: Compartir
button:
next: Següent
previous: Anterior
copy_code:
succeed: Copiat!
share_link:
title: Copiar enllaç
succeed: Enllaç copiat!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure: categories
post_measure: entrades
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje. statement: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje.
notification: notification:
update_found: Je k dispozici nová verze obsahu. update_found: Je tu nový obsah
update: Aktualizace update: Aktualizace
theme:
light: Světlý
dark: Tmavý
system: Systém
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: minut unit: minut
prompt: čtení prompt: čtení
edit: Uprav tento příspěvek
relate_posts: Další čtení relate_posts: Další čtení
share: Sdílet share: Sdílet
button: button:
+92
View File
@@ -0,0 +1,92 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Opslag
category: Kategori
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Hjem
categories: Kategorier
tags: Tags
archives: Arkiv
about: Om siden
# the text displayed in the search bar & search results
search:
hint: søg
cancel: Afbryd
no_results: Ups! Ingen resultater fundet.
panel:
lastmod: Senest opdateret
trending_tags: Populære tags
toc: Indhold
copyright:
# Shown at the bottom of the post
license:
template: Dette opslag er licenseret under :LICENSE_NAME af forfatteren.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Nogle rettigheder forbeholdes.
verbose: >-
Medmindre andet er angivet, er opslag på denne side beskyttet
under Creative Commons Attribution 4.0 International (CC BY 4.0) licensen af forfatteren.
# meta: Using the :THEME theme for :PLATFORM.
not_found:
statement: Beklager, vi har malpaceret denne URL, eller den peger på et sted, som ikke findes.
notification:
update_found: Der er nyt indhold
update: Opdater
theme:
light: Lys
dark: Mørk
system: System
# ----- Posts related labels -----
post:
written_by: Af
posted: Udgivet
updated: Opdateret
words: ord
pageview_measure: visninger
read_time:
unit: min
prompt: læsetid
edit: Rediger dette opslag
relate_posts: Læs videre
share: Del
button:
next: Nyere
previous: Ældre
copy_code:
succeed: Kopieret!
share_link:
title: Kopier link
succeed: Link kopieret!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure:
singular: kategori
plural: kategorier
post_measure: opslag
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource. statement: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource.
notification: notification:
update_found: Eine neue Version ist verfügbar. update_found: Neue Inhalte verfügbar
update: Neue Version update: Neue Version
theme:
light: Hell
dark: Dunkel
system: System
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -59,6 +64,7 @@ post:
read_time: read_time:
unit: Minuten unit: Minuten
prompt: Lesezeit prompt: Lesezeit
edit: Diesen Eintrag bearbeiten
relate_posts: Weiterlesen relate_posts: Weiterlesen
share: Teilen share: Teilen
button: button:
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site in Dhivehi (Maldives)
# ----- Commons label -----
layout:
post: ޕޯސްޓް
category: ނަތީޖާ
tag: ޓެގް
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: ހުންނަ
categories: ނަތީޖާތައް
tags: ޓެގްތައް
archives: އާރޗިވްސް
about: އިންސާން
# the text displayed in the search bar & search results
search:
hint: ސާރޗް
cancel: ކެންސަލް
no_results: އޮޕްސް! އެއްވެސް ނުފެނުނީ.
panel:
lastmod: އާދަމާ އޮޕްޑޭޓްކުރި
trending_tags: މަރާހު ޓެގްތައް
toc: ކޮންޓެންސް
copyright:
# Shown at the bottom of the post
license:
template: މި ޕޯސްޓް :LICENSE_NAME އިން ލައިސަންސްކުރާ ނުވަތަ މުޤައްރާއަށް.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: އެކީ ބާރަށް ހުށަހަޅާ.
verbose: >-
އަދި އެ ރަނގަޅުގައި ނުލާހެވެސް، މި ސައިޓުގެ ޕޯސްޓްތައް
މުޤައްރާއަށް Creative Commons Attribution 4.0 International (CC BY 4.0) ލައިސަންސްކުރަނީ.
meta: :PLATFORM އަށް :THEME ތީމް ބަލާލާށެވެ.
not_found:
statement: ސޯރީ، މި ޔޫ.އާރއެލް މަށެވެއްނެ ނުވަތަ އެކަމެއް ނުވެއެވެ.
notification:
update_found: އައު ކޮންޓެންޓެއް ފެނިއްޖެ
update: އޮޕްޑޭޓް
theme:
light: އަލި
dark: އަނދިރި
system: ސިސްޓަމް
# ----- Posts related labels -----
post:
written_by: ލެކްއޯލް
posted: ޕޯސްޓްކުރެވި
updated: އޮޕްޑޭޓްކުރެވި
words: ބަސް
pageview_measure: ބަނޑުކުރާ
read_time:
unit: މިނެޓް
prompt: އިސްކާރު
edit: މި ޕޯސްޓް އެޑިޓް ކުރު
relate_posts: އެއްޗެހި ފަހުރަށްދަން
share: ސެއާރް
button:
next: އަދާވަނަ
previous: ކޮނޯނި
copy_code:
succeed: ކޮޕީ ކުރެވި!
share_link:
title: ލިންކް ކޮޕީ ކުރު
succeed: ލިންކް ހަދަންކުރެވި!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
categories:
category_measure:
singular: ނަތީޖާ
plural: ނަތީޖާތައް
post_measure:
singular: ޕޯސްޓް
plural: ޕޯސްޓްތައް
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει. statement: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει.
notification: notification:
update_found: Υπάρχει διαθέσιμη μια νέα έκδοση του περιεχομένου. update_found: Νέο περιεχόμενο διαθέσιμο
update: Ενημέρωση update: Ενημέρωση
theme:
light: Φωτεινό
dark: Σκοτεινό
system: Σύστημα
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: Λεπτά unit: Λεπτά
prompt: διαβάσματος prompt: διαβάσματος
edit: Επεξεργασία αυτής της δημοσίευσης
relate_posts: Περισσότερα relate_posts: Περισσότερα
share: Κοινοποιήστε share: Κοινοποιήστε
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. statement: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
notification: notification:
update_found: A new version of content is available. update_found: New content available
update: Update update: Update
theme:
light: Light
dark: Dark
system: System
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: min unit: min
prompt: read prompt: read
edit: Edit this post
relate_posts: Further Reading relate_posts: Further Reading
share: Share share: Share
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe. statement: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe.
notification: notification:
update_found: Hay una nueva versión de contenido disponible. update_found: Hay contenido nuevo
update: Actualizar update: Actualizar
theme:
light: Claro
dark: Oscuro
system: Sistema
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: min unit: min
prompt: " de lectura" prompt: " de lectura"
edit: Edita esta entrada
relate_posts: Lecturas adicionales relate_posts: Lecturas adicionales
share: Compartir share: Compartir
button: button:
+97
View File
@@ -0,0 +1,97 @@
# The layout text of site
# ----- Commons label -----
layout:
post: پست
category: دسته‌بندی
tag: برچسب
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: خانه
categories: دسته‌بندی‌ها
tags: برچسب‌ها
archives: آرشیو
about: درباره
# the text displayed in the search bar & search results
search:
hint: جستجو
cancel: لغو
no_results: متأسفیم! هیچ نتیجه‌ای یافت نشد.
panel:
lastmod: آخرین به‌روزرسانی
trending_tags: برچسب‌های پرطرفدار
toc: فهرست مطالب
copyright:
# Shown at the bottom of the post
license:
template: این پست تحت مجوز :LICENSE_NAME توسط نویسنده منتشر شده است.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: برخی حقوق محفوظ است.
verbose: >-
به‌جز مواردی که خلاف آن ذکر شده باشد، محتوای پست‌های این وبلاگ
تحت مجوز Creative Commons Attribution 4.0 International (CC BY 4.0) توسط نویسنده منتشر شده‌اند.
meta: با استفاده از قالب :THEME برای :PLATFORM
not_found:
statement: متأسفیم، لینک زیر معتبر نیست یا به صفحه‌ای که وجود ندارد اشاره می‌کند.
notification:
update_found: محتوای جدیدی پیدا شد
update: به‌روزرسانی
theme:
light: روشن
dark: تیره
system: سیستم
# ----- Posts related labels -----
post:
written_by: نوشته شده توسط
posted: منتشر شده
updated: به‌روزرسانی شده
words: کلمه
pageview_measure: بازدید
read_time:
unit: "دقیقه "
prompt: " زمان مطالعه"
edit: ویرایش این پست
relate_posts: بیشتر بخوانید
share: اشتراک‌گذاری
button:
next: جدیدتر
previous: قدیمی‌تر
copy_code:
succeed: کپی شد!
share_link:
title: کپی لینک
succeed: لینک با موفقیت کپی شد!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: دسته‌بندی
plural: دسته‌بندی‌
post_measure:
singular: پست
plural: پست‌
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä. statement: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä.
notification: notification:
update_found: Uusi versio sisällöstä on saatavilla. update_found: Uutta sisältöä löytyi
update: Päivitä update: Päivitä
theme:
light: Vaalea
dark: Tumma
system: Järjestelmä
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -59,6 +64,7 @@ post:
read_time: read_time:
unit: minuuttia unit: minuuttia
prompt: lukea prompt: lukea
edit: Muokkaa tätä julkaisua
relate_posts: Jatka lukemista relate_posts: Jatka lukemista
share: Jaa share: Jaa
button: button:
+10 -4
View File
@@ -14,7 +14,7 @@ tabs:
categories: Catégories categories: Catégories
tags: Tags tags: Tags
archives: Archives archives: Archives
about: A propos de about: À propos
# the text displayed in the search bar & search results # the text displayed in the search bar & search results
search: search:
@@ -32,12 +32,12 @@ copyright:
license: license:
template: Cet article est sous licence :LICENSE_NAME par l'auteur. template: Cet article est sous licence :LICENSE_NAME par l'auteur.
name: CC BY 4.0 name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/ link: https://creativecommons.org/licenses/by/4.0/deed.fr
# Displayed in the footer # Displayed in the footer
brief: Certains droits réservés. brief: Certains droits réservés.
verbose: >- verbose: >-
Sauf mention contraire, les articles de ce site sont publiés sous licence Sauf mention contraire, les articles de ce site sont publiés
sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0) par l'auteur. sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0) par l'auteur.
meta: Propulsé par :PLATFORM avec le thème :THEME meta: Propulsé par :PLATFORM avec le thème :THEME
@@ -46,9 +46,14 @@ not_found:
statement: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas. statement: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas.
notification: notification:
update_found: Une nouvelle version du contenu est disponible. update_found: Nouveau contenu trouvé
update: Mise à jour update: Mise à jour
theme:
light: Clair
dark: Sombre
system: Système
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: min unit: min
prompt: lire prompt: lire
edit: Modifier cet article
relate_posts: Autres lectures relate_posts: Autres lectures
share: Partager share: Partager
button: button:
+27 -8
View File
@@ -14,24 +14,23 @@ tabs:
categories: Kategóriák categories: Kategóriák
tags: Címkék tags: Címkék
archives: Archívum archives: Archívum
about: Rólam about: Bemutatkozás
# the text displayed in the search bar & search results # the text displayed in the search bar & search results
search: search:
hint: keresés hint: keresés
cancel: Mégse cancel: Mégse
no_results: Oops! Nincs találat a keresésre. no_results: Hop! Nincs találat a keresésre.
panel: panel:
lastmod: Legutóbb frissítve lastmod: Legutóbb frissítve
trending_tags: Népszerű Címkék trending_tags: Népszerű Címkék
toc: Tartalom toc: Tartalom
links: Blog linkek
copyright: copyright:
# Shown at the bottom of the post # Shown at the bottom of the post
license: license:
template: A bejegyzés :LICENSE_NAME licenccel rendelkezik. template: A bejegyzést a szerző :LICENSE_NAME licenc alatt engedélyezte.
name: CC BY 4.0 name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/ link: https://creativecommons.org/licenses/by/4.0/
@@ -42,15 +41,20 @@ copyright:
Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek, Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek,
hacsak másképp nincs jelezve. hacsak másképp nincs jelezve.
meta: Készítve :PLATFORM motorral :THEME témával meta: Készítve :THEME témával a :PLATFORM platformra.
not_found: not_found:
statement: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat. statement: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat.
notification: notification:
update_found: Elérhető a tartalom új verziója. update_found: Új tartalom található
update: Frissítés update: Frissítés
theme:
light: Világos
dark: Sötét
system: Rendszer
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -62,6 +66,7 @@ post:
read_time: read_time:
unit: perc unit: perc
prompt: elolvasni prompt: elolvasni
edit: Szerkesztés
relate_posts: További olvasnivaló relate_posts: További olvasnivaló
share: Megosztás share: Megosztás
button: button:
@@ -73,7 +78,21 @@ post:
title: Link másolása title: Link másolása
succeed: Link sikeresen másolva! succeed: Link sikeresen másolva!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y. %B. %e."
dayjs: "YYYY. MMMM D."
archives:
strftime: "%B"
dayjs: "MMM"
# categories page # categories page
categories: categories:
category_measure: kategória category_measure:
post_measure: bejegyzés singular: kategória
plural: kategória
post_measure:
singular: bejegyzés
plural: bejegyzés
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada. statement: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada.
notification: notification:
update_found: Versi konten baru tersedia. update_found: Konten baru tersedia
update: Perbarui update: Perbarui
theme:
light: Terang
dark: Gelap
system: Sistem
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: menit unit: menit
prompt: baca prompt: baca
edit: Sunting entri ini
relate_posts: Postingan Lainya relate_posts: Postingan Lainya
share: Bagikan share: Bagikan
button: button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente. statement: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente.
notification: notification:
update_found: Nuova versione del contenuto disponibile. update_found: Nuovi contenuti trovati
update: Aggiornamento update: Aggiornamento
theme:
light: Chiaro
dark: Scuro
system: Sistema
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -59,6 +64,7 @@ post:
read_time: read_time:
unit: min unit: min
prompt: lettura prompt: lettura
edit: Modifica questo post
relate_posts: Continua a leggere relate_posts: Continua a leggere
share: Condividi share: Condividi
button: button:
+90
View File
@@ -0,0 +1,90 @@
# The layout text of site
# ----- Commons label -----
layout:
post: 投稿
category: カテゴリー
tag: タグ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: ホーム
categories: カテゴリー
tags: タグ
archives: アーカイブ
about: このサイトについて
# the text displayed in the search bar & search results
search:
hint: 検索
cancel: キャンセル
no_results: 該当なし
panel:
lastmod: 最近更新された投稿
trending_tags: トレンドのタグ
toc: コンテンツ
copyright:
# Shown at the bottom of the post
license:
template: この投稿は投稿者によって :LICENSE_NAME の下でライセンスされています。
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Some rights reserved.
verbose: >-
Except where otherwise noted, the blog posts on this site are licensed
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.
meta: :PLATFORM 用の :THEME を使用しています。
not_found:
statement: このURLは存在しないものを指し示しています。
notification:
update_found: 新しいコンテンツがあります
update: 更新
theme:
light: ライト
dark: ダーク
system: システム
# ----- Posts related labels -----
post:
written_by: 投稿者
posted: 投稿日
updated: 更新日
words:
pageview_measure: 回閲覧
read_time:
unit:
prompt: で読めます
edit: この投稿を編集
relate_posts: さらに読む
share: シェア
button:
next:
previous:
copy_code:
succeed: コピーしました
share_link:
title: リンクをコピー
succeed: リンクをコピーしました
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure: カテゴリー
post_measure: 投稿
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: 해당 URL은 존재하지 않습니다. statement: 해당 URL은 존재하지 않습니다.
notification: notification:
update_found: 버전의 콘텐츠를 사용할 수 있습니다. update_found: 콘텐츠가 있습니다
update: 업데이트 update: 업데이트
theme:
light: 라이트
dark: 다크
system: 시스템
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: unit:
prompt: 읽는 시간 prompt: 읽는 시간
edit: 이 글 편집
relate_posts: 관련된 글 relate_posts: 관련된 글
share: 공유하기 share: 공유하기
button: button:
+97
View File
@@ -0,0 +1,97 @@
# The layout text of site in Kurdish (Sorani)
# ----- Commons label -----
layout:
post: بابەت
category: هاوپۆل
tag: تاگ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: سەرەکی
categories: هاوپۆلەکان
tags: تاگەکان
archives: ئەرشیف
about: دەربارە
# the text displayed in the search bar & search results
search:
hint: گەڕان
cancel: هەڵوەشاندنەوە
no_results: ببوورە! هیچ ئەنجامێک نەدۆزرایەوە.
panel:
lastmod: دوایین نوێکردنەوەکان
trending_tags: تاگە باوەکان
toc: ناوەڕۆک
copyright:
# Shown at the bottom of the post
license:
template: ئەم بابەتە لەلایەن نووسەرەوە بە مۆڵەتی :LICENSE_NAME بڵاوکراوەتەوە.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: هەندێک مافی پارێزراوە.
verbose: >-
تەنها لەو شوێنانەی کە بە پێچەوانەوە ئاماژەی پێدراوە، بابەتەکانی بڵۆگ لەم سایتەدا
لەژێر مۆڵەتی Creative Commons Attribution 4.0 International (CC BY 4.0) لەلایەن نووسەرەوە مۆڵەتیان پێدراوە.
meta: بە بەکارهێنانی :PLATFORM لەگەڵ ڕووکاری :THEME
not_found:
statement: ببوورە، ئەم بەستەرە نادۆزرێتەوە یان ئاماژە بە شتێک دەکات کە بوونی نییە.
notification:
update_found: ناوەڕۆکی نوێ بەردەستە
update: نوێکردنەوە
theme:
light: ڕووناک
dark: تاریک
system: سیستەم
# ----- Posts related labels -----
post:
written_by: نووسەر
posted: بڵاوکراوەتەوە
updated: نوێکراوەتەوە
words: وشە
pageview_measure: بینین
read_time:
unit: خولەک
prompt: خوێندنەوە
edit: ئەم بابەتە دەستکاری بکە
relate_posts: بابەتی پەیوەندیدار
share: بڵاوکردنەوە
button:
next: نوێتر
previous: کۆنتر
copy_code:
succeed: کۆپی کرا!
share_link:
title: کۆپی بەستەر
succeed: بەستەر بە سەرکەوتوویی کۆپی کرا!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%d %b, %Y"
dayjs: "DD MMM, YYYY"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: هاوپۆل
plural: هاوپۆل
post_measure:
singular: بابەت
plural: بابەت
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။ statement: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။
notification: notification:
update_found: အကြောင်းအရာဗားရှင်းအသစ်ကို ရနိုင်ပါပြီ။ update_found: အကြောင်းအရာအသစ် တွေ့ရှိပါသည်
update: အပ်ဒိတ် update: အပ်ဒိတ်
theme:
light: အလင်း
dark: အမှောင်
system: စနစ်
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: မိနစ် unit: မိနစ်
prompt: ဖတ်ပါမည် prompt: ဖတ်ပါမည်
edit: ဤပို့စ်ကို တည်းဖြတ်ပါ
relate_posts: နောက်ထပ်ဖတ်ရန် relate_posts: နောက်ထပ်ဖတ်ရန်
share: မျှဝေရန် share: မျှဝေရန်
button: button:
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Post
category: Categorie
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Startpagina
categories: Categorieën
tags: Tags
archives: Archief
about: Over
# the text displayed in the search bar & search results
search:
hint: Zoek
cancel: Annuleer
no_results: Oops! Geen resultaat gevonden.
panel:
lastmod: Recent Bijgewerkt
trending_tags: Trending Tags
toc: Inhoud
copyright:
# Shown at the bottom of the post
license:
template: Alle posts zijn onder :LICENSE_NAME gepubliceerd door de auteur.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Sommige rechten voorbehouden.
verbose: >-
Tenzij anders vermeld, alle posts zijn onder de
Creative Commons Attribution 4.0 International (CC BY 4.0) gepubliceerd door de auteur.
meta: Gebruikt :THEME
not_found:
statement: Sorry, we hebben de URL verkeerd geplaatst of hij verwijst naar iets dat niet bestaat.
notification:
update_found: Nieuwe inhoud gevonden
update: Update
theme:
light: Licht
dark: Donker
system: Systeem
# ----- Posts related labels -----
post:
written_by: Door
posted: Posted
updated: Bijgewerkt
words: woorden
pageview_measure: Gelezen
read_time:
unit: min
prompt: lees
edit: Bewerk dit bericht
relate_posts: Verder Lezen
share: Deel
button:
next: Volgende
previous: Vorige
copy_code:
succeed: Gekopieerd!
share_link:
title: Link kopiëren
succeed: Succesvol gekopieerd!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: categorie
plural: categorieën
post_measure:
singular: post
plural: posts
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site in Pashto (Afghanistan)
# ----- Commons label -----
layout:
post: لیکنه
category: وېشنيزه
tag: ټګ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: کورپاڼه
categories: وېشنيزې
tags: ټګونه
archives: آرشيف
about: په اړه
# the text displayed in the search bar & search results
search:
hint: لټون
cancel: لغوه
no_results: ها! هېڅ پایله ونه موندل شوه.
panel:
lastmod: وروستی تازه
trending_tags: مشهور ټګونه
toc: منځپانګه
copyright:
# Shown at the bottom of the post
license:
template: دا لیکنه د :LICENSE_NAME جواز لاندې د لیکوال له خوا خپره شوې ده.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: ځینې حقونه خوندي دي.
verbose: >-
تر هغه ځایه چې بل ډول نه وي یاد شوي، د دې سایټ لیکنې
د لیکوال له خوا د کریټېو کامنز د انتساب 4.0 نړیوال (CC BY 4.0) جواز لاندې خپرېږي.
meta: د :PLATFORM لپاره د :THEME موضوع کاروي.
not_found:
statement: بښنه غواړو، دغه URL ناسم دی یا هغه څه ته اشاره کوي چې شتون نه لري.
notification:
update_found: نوې منځپانګه شتون لري
update: تازه
theme:
light: روښانه
dark: تیاره
system: سیستم
# ----- Posts related labels -----
post:
written_by: لیکوال
posted: خپره شوې
updated: تازه شوې
words: کلمې
pageview_measure: کتنې
read_time:
unit: دقیقې
prompt: لوستل
edit: دغه لیکنه سمول
relate_posts: نوره لوستنه
share: شریکول
button:
next: نوی
previous: زوړ
copy_code:
succeed: کاپي شو!
share_link:
title: لینک کاپي کړئ
succeed: لینک بریالي کاپي شو!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
categories:
category_measure:
singular: وېشنيزه
plural: وېشنيزې
post_measure:
singular: لیکنه
plural: لیکنې
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Desculpe, a página não foi encontrada. statement: Desculpe, a página não foi encontrada.
notification: notification:
update_found: Uma nova versão do conteúdo está disponível. update_found: Novo conteúdo encontrado
update: atualização update: atualização
theme:
light: Claro
dark: Escuro
system: Sistema
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: min unit: min
prompt: " de leitura" prompt: " de leitura"
edit: Editar esta postagem
relate_posts: Leia também relate_posts: Leia também
share: Compartilhar share: Compartilhar
button: button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее. statement: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее.
notification: notification:
update_found: Доступна новая версия контента. update_found: Найден новый контент
update: Обновить update: Обновить
theme:
light: Светлая
dark: Темная
system: Системная
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -59,6 +64,7 @@ post:
read_time: read_time:
unit: мин. unit: мин.
prompt: чтения prompt: чтения
edit: Редактировать этот пост
relate_posts: Похожие посты relate_posts: Похожие посты
share: Поделиться share: Поделиться
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Oprostite, hiperpovezava je neustrezna ali vsebina ne obstajata. #Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. statement: Oprostite, hiperpovezava je neustrezna ali vsebina ne obstajata. #Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
notification: notification:
update_found: Novejša različica vsebine je na voljo. #A new version of content is available. update_found: Nova vsebina je na voljo
update: Posodobi #Update update: Posodobi #Update
theme:
light: Svetla
dark: Temna
system: Sistemska
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: min unit: min
prompt: beri #read prompt: beri #read
edit: Uredi to objavo #Edit this post
relate_posts: Nadaljnje branje #Further Reading relate_posts: Nadaljnje branje #Further Reading
share: Deli #Share share: Deli #Share
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns. statement: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns.
notification: notification:
update_found: Det finns en ny version av innehållet. update_found: Nytt innehåll hittades
update: Uppdatera sidan update: Uppdatera sidan
theme:
light: Ljust
dark: Mörkt
system: System
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: min unit: min
prompt: läsning prompt: läsning
edit: Redigera detta inlägg
relate_posts: Mer läsning relate_posts: Mer läsning
share: Dela share: Dela
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่ statement: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่
notification: notification:
update_found: มีเวอร์ชันใหม่ของเนื้อหา update_found: พบเนื้อหาใหม่
update: อัปเดต update: อัปเดต
theme:
light: สว่าง
dark: มืด
system: ระบบ
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: นาที unit: นาที
prompt: อ่าน prompt: อ่าน
edit: แก้ไขโพสต์นี้
relate_posts: อ่านต่อ relate_posts: อ่านต่อ
share: แชร์ share: แชร์
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor. statement: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor.
notification: notification:
update_found: İçeriğin yeni bir sürümü mevcut. update_found: Yeni içerik bulundu
update: Güncelle update: Güncelle
theme:
light: Açık
dark: Koyu
system: Sistem
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: dakikada unit: dakikada
prompt: okunabilir prompt: okunabilir
edit: Bu gönderiyi düzenle
relate_posts: Benzer Gönderiler relate_posts: Benzer Gönderiler
share: Paylaş share: Paylaş
button: button:
+7 -1
View File
@@ -46,9 +46,14 @@ not_found:
statement: Вибачте, це посилання вказує на ресурс, що не існує. statement: Вибачте, це посилання вказує на ресурс, що не існує.
notification: notification:
update_found: Доступна нова версія вмісту. update_found: Знайдено новий вміст
update: Оновлення update: Оновлення
theme:
light: Світла
dark: Темна
system: Системна
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -60,6 +65,7 @@ post:
read_time: read_time:
unit: хвилин unit: хвилин
prompt: читання prompt: читання
edit: Редагувати цей пост
relate_posts: Вас також може зацікавити relate_posts: Вас також може зацікавити
share: Поділитися share: Поділитися
button: button:
+96
View File
@@ -0,0 +1,96 @@
# The layout text of site in Urdu (Pakistan)
# ----- Commons label -----
layout:
post: تحریر
category: زمرہ
tag: ٹیگ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: گھر
categories: زمروں
tags: ٹیگز
archives: محفوظات
about: تعارف
# the text displayed in the search bar & search results
search:
hint: تلاش
cancel: منسوخ
no_results: اوہ! کوئی نتیجہ نہیں ملا۔
panel:
lastmod: حال ہی میں اپ ڈیٹ
trending_tags: مقبول ٹیگز
toc: مواد
copyright:
# Shown at the bottom of the post
license:
template: یہ تحریر :LICENSE_NAME کے تحت مصنف کی جانب سے لائسنس یافتہ ہے۔
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: کچھ حقوق محفوظ ہیں۔
verbose: >-
جب تک کہ دوسری صورت میں ذکر نہ ہو، اس سائٹ کی تحریریں
مصنف کی جانب سے تخلیقی العام انتساب 4.0 بین الاقوامی (CC BY 4.0) لائسنس کے تحت دستیاب ہیں۔
meta: :PLATFORM کے لیے :THEME تھیم استعمال کیا جا رہا ہے۔
not_found:
statement: معذرت، یہ URL غلط ہے یا جس چیز کی طرف اشارہ کر رہا ہے وہ موجود نہیں۔
notification:
update_found: نیا مواد مل گیا
update: اپ ڈیٹ
theme:
light: روشن
dark: تاریک
system: سسٹم
# ----- Posts related labels -----
post:
written_by: از
posted: شائع شدہ
updated: اپ ڈیٹ شدہ
words: لفظ
pageview_measure: مشاہدات
read_time:
unit: منٹ
prompt: پڑھیں
edit: اس تحریر میں ترمیم کریں
relate_posts: مزید مطالعہ
share: شیئر
button:
next: نیا
previous: پرانا
copy_code:
succeed: کاپی ہو گیا!
share_link:
title: لنک کاپی کریں
succeed: لنک کامیابی سے کاپی ہو گیا!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
categories:
category_measure:
singular: زمرہ
plural: زمروں
post_measure:
singular: تحریر
plural: تحریریں
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại. statement: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
notification: notification:
update_found: Đã có phiên bản mới của nội dung. update_found: Đã tìm thấy nội dung mới
update: Cập nhật update: Cập nhật
theme:
light: Sáng
dark: Tối
system: Hệ thống
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -59,6 +64,7 @@ post:
read_time: read_time:
unit: phút unit: phút
prompt: đọc prompt: đọc
edit: Chỉnh sửa bài viết này
relate_posts: Bài viết liên quan relate_posts: Bài viết liên quan
share: Chia sẻ share: Chia sẻ
button: button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。 statement: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
notification: notification:
update_found: 发现新版本的内容 update_found: 发现新内容
update: 更新 update: 更新
theme:
light: 浅色
dark: 深色
system: 跟随系统
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -59,6 +64,7 @@ post:
read_time: read_time:
unit: 分钟 unit: 分钟
prompt: 阅读 prompt: 阅读
edit: 编辑此文
relate_posts: 相关文章 relate_posts: 相关文章
share: 分享 share: 分享
button: button:
+7 -1
View File
@@ -45,9 +45,14 @@ not_found:
statement: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。 statement: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。
notification: notification:
update_found: 發現新版本更新。 update_found: 發現新內容
update: 更新 update: 更新
theme:
light: 淺色
dark: 深色
system: 跟隨系統
# ----- Posts related labels ----- # ----- Posts related labels -----
post: post:
@@ -59,6 +64,7 @@ post:
read_time: read_time:
unit: 分鐘 unit: 分鐘
prompt: 閱讀 prompt: 閱讀
edit: 編輯此文
relate_posts: 相關文章 relate_posts: 相關文章
share: 分享 share: 分享
button: button:
+18 -15
View File
@@ -19,36 +19,39 @@ webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Sour
# Libraries # Libraries
bootstrap:
css: https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css
toc: toc:
css: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.css css: https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.css
js: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.js js: https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.js
fontawesome: fontawesome:
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/all.min.css css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7/css/all.min.css
search: search:
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1/dest/simple-jekyll-search.min.js
mermaid: mermaid:
js: https://cdn.jsdelivr.net/npm/mermaid@11.0.2/dist/mermaid.min.js js: https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js
dayjs: dayjs:
js: js:
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js common: https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js locale: https://cdn.jsdelivr.net/npm/dayjs@1/locale/:LOCALE.js
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1/plugin/relativeTime.js
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1/plugin/localizedFormat.js
glightbox: glightbox:
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css css: https://cdn.jsdelivr.net/npm/glightbox@3/dist/css/glightbox.min.css
js: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js js: https://cdn.jsdelivr.net/npm/glightbox@3/dist/js/glightbox.min.js
lazy-polyfill: lazy-polyfill:
css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.min.css
js: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.umd.min.js js: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.umd.min.js
clipboard: clipboard:
js: https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js js: https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js
mathjax: mathjax:
js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js js: https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js
+1 -1
View File
@@ -18,7 +18,7 @@ platforms:
# #
# - type: Linkedin # - type: Linkedin
# icon: "fab fa-linkedin" # icon: "fab fa-linkedin"
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL" # link: "https://www.linkedin.com/feed/?shareActive=true&shareUrl=URL"
# #
# - type: Weibo # - type: Weibo
# icon: "fab fa-weibo" # icon: "fab fa-weibo"
-1
View File
@@ -4,4 +4,3 @@
src="https://static.cloudflareinsights.com/beacon.min.js" src="https://static.cloudflareinsights.com/beacon.min.js"
data-cf-beacon='{"token": "{{ site.analytics.cloudflare.id }}"}' data-cf-beacon='{"token": "{{ site.analytics.cloudflare.id }}"}'
></script> ></script>
<!-- End Cloudflare Web Analytics -->
+2 -3
View File
@@ -2,6 +2,5 @@
<script <script
src="https://cdn.usefathom.com/script.js" src="https://cdn.usefathom.com/script.js"
data-site="{{ site.analytics.fathom.id }}" data-site="{{ site.analytics.fathom.id }}"
defer> defer
</script> ></script>
<!-- End Fathom Code -->
+1 -1
View File
@@ -1,7 +1,7 @@
<!-- Global site tag (gtag.js) - Google Analytics --> <!-- Global site tag (gtag.js) - Google Analytics -->
<script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.id }}"></script> <script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.id }}"></script>
<script> <script>
document.addEventListener('DOMContentLoaded', function (event) { document.addEventListener('DOMContentLoaded', () => {
window.dataLayer = window.dataLayer || []; window.dataLayer = window.dataLayer || [];
function gtag() { function gtag() {
dataLayer.push(arguments); dataLayer.push(arguments);
+4 -5
View File
@@ -1,14 +1,13 @@
<!-- Matomo --> <!-- Matomo -->
<script type="text/javascript"> <script>
var _paq = window._paq = window._paq || []; document.addEventListener('DOMContentLoaded', () => {
var _paq = (window._paq = window._paq || []);
_paq.push(['trackPageView']); _paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']); _paq.push(['enableLinkTracking']);
(function() {
var u="//{{ site.analytics.matomo.domain }}/"; var u="//{{ site.analytics.matomo.domain }}/";
_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', {{ site.analytics.matomo.id }}]); _paq.push(['setSiteId', {{ site.analytics.matomo.id }}]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})(); });
</script> </script>
<!-- End Matomo Code -->
+35 -28
View File
@@ -1,38 +1,25 @@
<!-- The Disqus lazy loading. --> <script>
<div id="disqus_thread">
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
</div>
<script type="text/javascript">
var disqus_config = function () { var disqus_config = function () {
this.page.url = '{{ page.url | absolute_url }}'; this.page.url = '{{ page.url | absolute_url }}';
this.page.identifier = '{{ page.url }}'; this.page.identifier = '{{ page.url }}';
}; };
{%- comment -%} Lazy loading {%- endcomment -%} function addDisqus() {
var disqus_observer = new IntersectionObserver( let disqusThread = document.createElement('div');
function (entries) { let paragraph = document.createElement('p');
if (entries[0].isIntersecting) {
(function () {
var d = document,
s = d.createElement('script');
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
disqus_observer.disconnect(); disqusThread.id = 'disqus_thread';
paragraph.className = 'text-center text-muted small';
paragraph.innerHTML = 'Comments powered by <a href="https://disqus.com/">Disqus</a>.';
disqusThread.appendChild(paragraph);
const footer = document.querySelector('footer');
footer.insertAdjacentElement("beforebegin", disqusThread);
} }
},
{ threshold: [0] }
);
disqus_observer.observe(document.getElementById('disqus_thread'));
{%- comment -%} Auto switch theme {%- endcomment -%} {%- comment -%} Auto switch theme {%- endcomment -%}
function reloadDisqus() { function reloadDisqus(event) {
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) { if (event.source === window && event.data && event.data.id === Theme.eventId) {
{%- comment -%} Disqus hasn't been loaded {%- endcomment -%} {%- comment -%} Disqus hasn't been loaded {%- endcomment -%}
if (typeof DISQUS === 'undefined') { if (typeof DISQUS === 'undefined') {
return; return;
@@ -44,7 +31,27 @@
} }
} }
if (document.getElementById('mode-toggle')) { addDisqus();
window.addEventListener('message', reloadDisqus);
if (Theme.isToggleable) {
addEventListener('message', reloadDisqus);
} }
{%- comment -%} Lazy loading {%- endcomment -%}
var disqusObserver = new IntersectionObserver(
function (entries) {
if (entries[0].isIntersecting) {
var d = document,
s = d.createElement('script');
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
disqusObserver.disconnect();
}
},
{ threshold: [0] }
);
disqusObserver.observe(document.getElementById('disqus_thread'));
</script> </script>
+24 -30
View File
@@ -1,21 +1,8 @@
<!-- https://giscus.app/ --> <!-- https://giscus.app/ -->
<script type="text/javascript"> <script>
(function () { (function () {
const origin = 'https://giscus.app'; const themeMap = Theme.newThemeMap('light', 'dark_dimmed');
const lightTheme = 'light'; const initTheme = themeMap[Theme.resolvedTheme];
const darkTheme = 'dark_dimmed';
let initTheme = lightTheme;
const html = document.documentElement;
if (
(html.hasAttribute('data-mode') &&
html.getAttribute('data-mode') === 'dark') ||
(!html.hasAttribute('data-mode') &&
window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
initTheme = darkTheme;
}
let lang = '{{ site.comments.giscus.lang | default: lang }}'; let lang = '{{ site.comments.giscus.lang | default: lang }}';
{%- comment -%} https://github.com/giscus/giscus/tree/main/locales {%- endcomment -%} {%- comment -%} https://github.com/giscus/giscus/tree/main/locales {%- endcomment -%}
@@ -41,30 +28,37 @@
async: '' async: ''
}; };
let giscusScript = document.createElement('script'); let giscusNode = document.createElement('script');
Object.entries(giscusAttributes).forEach(([key, value]) => Object.entries(giscusAttributes).forEach(([key, value]) =>
giscusScript.setAttribute(key, value) giscusNode.setAttribute(key, value)
); );
document.getElementById('tail-wrapper').appendChild(giscusScript);
const $footer = document.querySelector('footer');
$footer.insertAdjacentElement("beforebegin", giscusNode);
addEventListener('message', (event) => { addEventListener('message', (event) => {
if ( if (event.source === window && event.data && event.data.id === Theme.eventId) {
event.source === window && const newTheme = themeMap[Theme.resolvedTheme];
event.data &&
event.data.direction === ModeToggle.ID
) {
{%- comment -%} global theme mode changed {%- endcomment -%}
const mode = event.data.message;
const theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
const message = { const message = {
setConfig: { setConfig: {
theme: theme theme: newTheme
} }
}; };
const giscus = document.getElementsByClassName('giscus-frame')[0].contentWindow; const iframe = document.querySelector('.giscus-frame');
giscus.postMessage({ giscus: message }, origin);
if (!iframe) {
return;
}
if (iframe.classList.contains('giscus-frame--loading')) {
let url = new URL(iframe.src);
url.searchParams.set('theme', newTheme);
iframe.src = url.toString();
}
iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app');
} }
}); });
})(); })();
+22 -33
View File
@@ -1,49 +1,38 @@
<!-- https://utteranc.es/ --> <!-- https://utteranc.es/ -->
<script <script>
src="https://utteranc.es/client.js"
repo="{{ site.comments.utterances.repo }}"
issue-term="{{ site.comments.utterances.issue_term }}"
crossorigin="anonymous"
async
></script>
<script type="text/javascript">
(function () { (function () {
const origin = 'https://utteranc.es'; const origin = 'https://utteranc.es';
const lightTheme = 'github-light'; const themeMap = Theme.newThemeMap('github-light', 'github-dark');
const darkTheme = 'github-dark'; const initTheme = themeMap[Theme.resolvedTheme];
let initTheme = lightTheme;
const html = document.documentElement;
if ( let script = document.createElement('script');
(html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') || script.src = 'https://utteranc.es/client.js';
(!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches) script.setAttribute('repo', '{{ site.comments.utterances.repo }}');
) { script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term }}');
initTheme = darkTheme; script.setAttribute('theme', initTheme);
} script.crossOrigin = 'anonymous';
script.async = true;
const $footer = document.querySelector('footer');
$footer.insertAdjacentElement('beforebegin', script);
addEventListener('message', (event) => { addEventListener('message', (event) => {
let theme; let newTheme;
{%- comment -%} credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> {%- endcomment -%} {%- comment -%}
if (event.origin === origin) { Credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347>
{%- comment -%} page initial {%- endcomment -%} {%- endcomment -%}
theme = initTheme; if (event.source === window && event.data && event.data.id === Theme.eventId) {
} else if (event.source === window && event.data && event.data.direction === ModeToggle.ID) { newTheme = themeMap[Theme.resolvedTheme];
{%- comment -%} global theme mode changed {%- endcomment -%}
const mode = event.data.message;
theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
} else {
return;
}
const message = { const message = {
type: 'set-theme', type: 'set-theme',
theme: theme theme: newTheme
}; };
const utterances = document.getElementsByClassName('utterances-frame')[0].contentWindow; const utterances = document.querySelector('.utterances-frame').contentWindow;
utterances.postMessage(message, origin); utterances.postMessage(message, origin);
}
}); });
})(); })();
</script> </script>
+1 -1
View File
@@ -1,6 +1,6 @@
<!-- <!--
Date format snippet Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js See: ${JS_ROOT}/modules/components/locale-datetime.js
--> -->
{% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %} {% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
+1 -1
View File
@@ -9,7 +9,7 @@
{% endunless %} {% endunless %}
<p> <p>
<audio class="embed-audio" controls> <audio class="embed-audio file" controls>
{% assign extension = src | split: '.' | last %} {% assign extension = src | split: '.' | last %}
{% assign types = extension | concat: types %} {% assign types = extension | concat: types %}
+22
View File
@@ -0,0 +1,22 @@
{% assign size = 352 %}
{% assign theme = '' %}
{% if include.compact %}
{% assign size = 152 %}
{% endif %}
{% if include.dark %}
{% assign theme = '?theme=0' %}
{% endif %}
<iframe
class="embed-audio spotify"
src="https://open.spotify.com/embed/track/{{ include.id | append: theme }}"
height="{{ size }}"
frameBorder="0"
allowfullscreen=""
allowtransparency="true"
allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"
loading="lazy"
>
</iframe>
+3 -8
View File
@@ -5,15 +5,10 @@
{% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %} {% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
<link rel="icon" type="image/png" href="{{ favicon_path }}/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="{{ favicon_path }}/favicon.svg">
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png"> <link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="{{ favicon_path }}/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="{{ favicon_path }}/favicon-16x16.png">
{% if site.pwa.enabled %} {% if site.pwa.enabled %}
<link rel="manifest" href="{{ favicon_path }}/site.webmanifest"> <link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
{% endif %} {% endif %}
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
<meta name="apple-mobile-web-app-title" content="{{ site.title }}">
<meta name="application-name" content="{{ site.title }}">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-config" content="{{ favicon_path }}/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
+39 -9
View File
@@ -2,8 +2,6 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7"> <meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e"> <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta <meta
name="viewport" name="viewport"
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover" content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
@@ -50,11 +48,24 @@
{{ seo_tags }} {{ seo_tags }}
{%- if site.social.fediverse_handle %}
<!-- Fediverse handle/creator -->
<meta name="fediverse:creator" content="{{ site.social.fediverse_handle }}">
{% endif %}
<title> <title>
{%- unless page.layout == 'home' -%} {%- unless page.layout == 'home' -%}
{{ page.title | append: ' | ' }} {%- capture title -%}
{%- if page.collection == 'tabs' -%}
{%- assign tab_key = page.title | downcase -%}
{{- site.data.locales[include.lang].tabs[tab_key] -}}
{%- else -%}
{{- page.title -}}
{%- endif -%}
{%- endcapture -%}
{{- title | append: ' | ' -}}
{%- endunless -%} {%- endunless -%}
{{ site.title }} {{- site.title -}}
</title> </title>
{% include_cached favicons.html %} {% include_cached favicons.html %}
@@ -70,7 +81,7 @@
<!-- Bootstrap --> <!-- Bootstrap -->
{% unless jekyll.environment == 'production' %} {% unless jekyll.environment == 'production' %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="{{ site.data.origin.cors.bootstrap.css }}">
{% endunless %} {% endunless %}
<!-- Theme style --> <!-- Theme style -->
@@ -97,11 +108,30 @@
<link rel="stylesheet" href="{{ site.data.origin[type].glightbox.css | relative_url }}"> <link rel="stylesheet" href="{{ site.data.origin[type].glightbox.css | relative_url }}">
{% endif %} {% endif %}
<!-- JavaScript --> <!-- Scripts -->
{% unless site.theme_mode %} <script src="{{ '/assets/js/dist/theme.min.js' | relative_url }}"></script>
{% include mode-toggle.html %}
{% endunless %} {% include js-selector.html lang=lang %}
{% if jekyll.environment == 'production' %}
<!-- PWA -->
{% if site.pwa.enabled %}
<script
defer
src="{{ '/app.min.js' | relative_url }}?baseurl={{ site.baseurl | default: '' }}&register={{ site.pwa.cache.enabled }}"
></script>
{% endif %}
<!-- Web Analytics -->
{% for analytics in site.analytics %}
{% capture str %}{{ analytics }}{% endcapture %}
{% assign platform = str | split: '{' | first %}
{% if site.analytics[platform].id and site.analytics[platform].id != empty %}
{% include analytics/{{ platform }}.html %}
{% endif %}
{% endfor %}
{% endif %}
{% include metadata-hook.html %} {% include metadata-hook.html %}
</head> </head>
+1 -22
View File
@@ -62,12 +62,11 @@
{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %} {% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
<script src="{{ script | relative_url }}"></script> <script defer src="{{ script | relative_url }}"></script>
{% if page.math %} {% if page.math %}
<!-- MathJax --> <!-- MathJax -->
<script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script> <script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script> <script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
{% endif %} {% endif %}
@@ -84,23 +83,3 @@
{% endcase %} {% endcase %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if page.mermaid %}
{% include mermaid.html %}
{% endif %}
{% if jekyll.environment == 'production' %}
<!-- PWA -->
{% if site.pwa.enabled %}
<script defer src="{{ 'app.min.js' | relative_url }}"></script>
{% endif %}
<!-- Web Analytics -->
{% for analytics in site.analytics %}
{% capture str %}{{ analytics }}{% endcapture %}
{% assign type = str | split: '{' | first %}
{% if site.analytics[type].id and site.analytics[type].id != empty %}
{% include analytics/{{ type }}.html %}
{% endif %}
{% endfor %}
{% endif %}
+4 -4
View File
@@ -1,6 +1,6 @@
{% assign urls = include.urls | split: ',' %} {% assign urls = include.urls | split: ',' %}
{% assign combined_urls = nil %} {% assign combined_urls = null %}
{% assign domain = 'https://cdn.jsdelivr.net/' %} {% assign domain = 'https://cdn.jsdelivr.net/' %}
@@ -15,12 +15,12 @@
{% endif %} {% endif %}
{% elsif url contains '//' %} {% elsif url contains '//' %}
<script src="{{ url }}"></script> <script defer src="{{ url }}"></script>
{% else %} {% else %}
<script src="{{ url | relative_url }}"></script> <script defer src="{{ url | relative_url }}"></script>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% if combined_urls %} {% if combined_urls %}
<script src="{{ combined_urls }}"></script> <script defer src="{{ combined_urls }}"></script>
{% endif %} {% endif %}
+1 -3
View File
@@ -1,9 +1,7 @@
{% comment %} {% comment %}
Convert the alias of the syntax language to the official name Convert the alias of the syntax language to the official name
See: <https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers> See: <https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers>
{% endcomment %} {% endcomment %}
{% assign _lang = include.language | default: '' %} {% assign _lang = include.language | default: '' %}
@@ -54,7 +52,7 @@
{% when 'tex' %} {% when 'tex' %}
{{ 'TeX' }} {{ 'TeX' }}
{% when 'latex' %} {% when 'latex' %}
{{ 'LaTex' }} {{ 'LaTeX' }}
{% when 'ts', 'typescript' %} {% when 'ts', 'typescript' %}
{{ 'TypeScript' }} {{ 'TypeScript' }}
{% when 'vb', 'visualbasic' %} {% when 'vb', 'visualbasic' %}
+1 -1
View File
@@ -17,7 +17,7 @@
{%- comment -%} Add media resources subpath prefix {%- endcomment -%} {%- comment -%} Add media resources subpath prefix {%- endcomment -%}
{% assign url = include.subpath | default: '' | append: '/' | append: url %} {% assign url = include.subpath | default: '' | append: '/' | append: url %}
{%- comment -%} Prepend CND URL {%- endcomment -%} {%- comment -%} Prepend CDN URL {%- endcomment -%}
{% if site.cdn %} {% if site.cdn %}
{% assign url = site.cdn | append: '/' | append: url %} {% assign url = site.cdn | append: '/' | append: url %}
{% endif %} {% endif %}
-62
View File
@@ -1,62 +0,0 @@
<!-- mermaid-js loader -->
<script type="text/javascript">
function updateMermaid(event) {
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
const mode = event.data.message;
if (typeof mermaid === 'undefined') {
return;
}
let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
let config = { theme: expectedTheme };
{%- comment -%}
Re-render the SVG <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344>
{%- endcomment -%}
const mermaidList = document.getElementsByClassName('mermaid');
[...mermaidList].forEach((elem) => {
const svgCode = elem.previousSibling.children.item(0).innerHTML;
elem.innerHTML = svgCode;
elem.removeAttribute('data-processed');
});
mermaid.initialize(config);
mermaid.init(undefined, '.mermaid');
}
}
(function () {
let initTheme = 'default';
const html = document.documentElement;
if (
(html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
(!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
initTheme = 'dark';
}
let mermaidConf = {
theme: initTheme {%- comment -%} <default | dark | forest | neutral> {%- endcomment -%}
};
{%- comment -%} Create mermaid tag {%- endcomment -%}
const basicList = document.getElementsByClassName('language-mermaid');
[...basicList].forEach((elem) => {
const svgCode = elem.textContent;
const backup = elem.parentElement;
backup.classList.add('d-none');
{%- comment -%} create mermaid node {%- endcomment -%}
let mermaid = document.createElement('pre');
mermaid.classList.add('mermaid');
const text = document.createTextNode(svgCode);
mermaid.appendChild(text);
backup.after(mermaid);
});
mermaid.initialize(mermaidConf);
window.addEventListener('message', updateMermaid);
})();
</script>
-116
View File
@@ -1,116 +0,0 @@
<!-- Switch the mode between dark and light. -->
<script type="text/javascript">
class ModeToggle {
static get MODE_KEY() {
return 'mode';
}
static get MODE_ATTR() {
return 'data-mode';
}
static get DARK_MODE() {
return 'dark';
}
static get LIGHT_MODE() {
return 'light';
}
static get ID() {
return 'mode-toggle';
}
constructor() {
let self = this;
{%- comment -%} always follow the system prefers {%- endcomment -%}
this.sysDarkPrefers.addEventListener('change', () => {
if (self.hasMode) {
self.clearMode();
}
self.notify();
});
if (!this.hasMode) {
return;
}
if (this.isDarkMode) {
this.setDark();
} else {
this.setLight();
}
}
get sysDarkPrefers() {
return window.matchMedia('(prefers-color-scheme: dark)');
}
get isPreferDark() {
return this.sysDarkPrefers.matches;
}
get isDarkMode() {
return this.mode === ModeToggle.DARK_MODE;
}
get hasMode() {
return this.mode != null;
}
get mode() {
return sessionStorage.getItem(ModeToggle.MODE_KEY);
}
{%- comment -%} get the current mode on screen {%- endcomment -%}
get modeStatus() {
if (this.hasMode) {
return this.mode;
} else {
return this.isPreferDark ? ModeToggle.DARK_MODE : ModeToggle.LIGHT_MODE;
}
}
setDark() {
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
}
setLight() {
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
}
clearMode() {
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
sessionStorage.removeItem(ModeToggle.MODE_KEY);
}
{%- comment -%}
Notify another plugins that the theme mode has changed
{%- endcomment -%}
notify() {
window.postMessage(
{
direction: ModeToggle.ID,
message: this.modeStatus
},
'*'
);
}
flipMode() {
if (this.hasMode) {
this.clearMode();
} else {
if (this.isPreferDark) {
this.setLight();
} else {
this.setDark();
}
}
this.notify();
}
}
const modeToggle = new ModeToggle();
</script>
-10
View File
@@ -1,10 +0,0 @@
{% comment %}
Remove the line number of the code snippet.
{% endcomment %}
{% assign content = include.content %}
{% if content contains '<td class="rouge-gutter gl"><pre class="lineno">' %}
{% assign content = content | replace: '<td class="rouge-gutter gl"><pre class="lineno">', '<!-- <td class="rouge-gutter gl"><pre class="lineno">'%}
{% assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' %}
{% endif %}
+13 -9
View File
@@ -1,24 +1,28 @@
<aside <aside
id="notification" id="notification"
class="toast" class="toast w-auto rounded-5 text-nowrap"
role="alert" role="alert"
aria-live="assertive" aria-live="assertive"
aria-atomic="true" aria-atomic="true"
data-bs-animation="true" data-bs-animation="true"
data-bs-autohide="false" data-bs-autohide="false"
> >
<div class="toast-header"> <div class="d-flex align-items-center">
<div class="toast-body ps-3">
{{- site.data.locales[include.lang].notification.update_found -}}
</div>
<button <button
type="button" type="button"
class="btn-close ms-auto" class="btn btn-primary btn-sm rounded-2 py-0"
aria-label="Update"
>
{{- site.data.locales[include.lang].notification.update -}}
</button>
<button
type="button"
class="btn-close mx-3 ms-2"
data-bs-dismiss="toast" data-bs-dismiss="toast"
aria-label="Close" aria-label="Close"
></button> ></button>
</div> </div>
<div class="toast-body text-center pt-0">
<p class="px-2 mb-3">{{ site.data.locales[include.lang].notification.update_found }}</p>
<button type="button" class="btn btn-primary" aria-label="Update">
{{ site.data.locales[include.lang].notification.update }}
</button>
</div>
</aside> </aside>
+4 -2
View File
@@ -1,6 +1,7 @@
<!-- Display GoatCounter pageviews --> <!-- Display GoatCounter pageviews -->
<script> <script>
let pv = document.getElementById('pageviews'); document.addEventListener('DOMContentLoaded', () => {
const pv = document.getElementById('pageviews');
if (pv !== null) { if (pv !== null) {
const uri = location.pathname.replace(/\/$/, ''); const uri = location.pathname.replace(/\/$/, '');
@@ -9,11 +10,12 @@
fetch(url) fetch(url)
.then((response) => response.json()) .then((response) => response.json())
.then((data) => { .then((data) => {
const count = data.count.replace(/\s/g, ''); const count = data.count.replace(/\D/g, '');
pv.innerText = new Intl.NumberFormat().format(count); pv.innerText = new Intl.NumberFormat().format(count);
}) })
.catch((error) => { .catch((error) => {
pv.innerText = '1'; pv.innerText = '1';
}); });
} }
});
</script> </script>
-16
View File
@@ -1,16 +0,0 @@
{%- comment -%}
Get post description or generate it from the post content.
{%- endcomment -%}
{%- assign max_length = include.max_length | default: 200 -%}
{%- capture description -%}
{%- if post.description -%}
{{- post.description -}}
{%- else -%}
{%- include no-linenos.html content=post.content -%}
{{- content | markdownify | strip_html -}}
{%- endif -%}
{%- endcapture -%}
{{- description | strip | truncate: max_length | escape -}}
+23
View File
@@ -0,0 +1,23 @@
<!-- Link to edit the post to contribute. -->
{% assign enabled = site.actions.edit_post.enabled %}
{% assign url = site.actions.edit_post.url %}
{% assign static_url = site.actions.edit_post.static_url %}
{% unless static_url %}
{% assign url = url | append: '/' | append: page.path %}
{% endunless %}
{% if enabled %}
<div class="post-edit">
{% assign edit = site.data.locales[include.lang].post.edit %}
<a
href="{{ url }}"
target="_blank"
rel="noopener"
>
<i class="fa fa-pen fa-fw me-1"></i>
<span>{{ edit }}</span>
</a>
</div>
{% endif %}
+1 -1
View File
@@ -1,4 +1,4 @@
<!-- The paginator for post list on HomgPage. --> <!-- The paginator for post list on HomePage. -->
<nav aria-label="Page Navigation"> <nav aria-label="Page Navigation">
<ul class="pagination align-items-center mt-4 mb-0"> <ul class="pagination align-items-center mt-4 mb-0">
+39
View File
@@ -0,0 +1,39 @@
{%- comment -%}
Get the post's description or body content.
Arguments:
full_text: If true, return the full content. Default is false.
max_length: The maximum length of the returned content. Default is 200.
{%- endcomment -%}
{%- if post.description and include.full_text != true -%}
{{- post.description -}}
{%- else -%}
{%- comment -%} Remove the line numbers from the code snippet. {%- endcomment -%}
{%- assign content = post.content -%}
{%- if content contains '<td class="rouge-gutter gl"><pre class="lineno">' -%}
{%- assign content = content
| replace: '<td class="rouge-gutter gl"><pre class="lineno">',
'<!-- <td class="rouge-gutter gl"><pre class="lineno">'
-%}
{%- assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' -%}
{%- endif -%}
{%- assign content = content
| markdownify
| strip_html
| newline_to_br
| replace: '<br />', ' '
| strip_newlines
| strip
-%}
{%- unless include.full_text -%}
{%- assign max_length = include.max_length | default: 200 -%}
{%- assign content = content | truncate: max_length -%}
{%- endunless -%}
{{- content -}}
{%- endif -%}
+37 -5
View File
@@ -88,9 +88,41 @@
{% endfor %} {% endfor %}
<!-- take out classes --> <!-- take out classes -->
{% assign _wrapper_class = '' %}
{% if _class %} {% if _class %}
{% assign _remain = _class %}
{% assign _class_array = _class | split: ' ' %}
{% for c in _class_array %}
{% assign _pick = false %}
{% case c %}
{% when 'preview-img', 'normal', 'left', 'right', 'light', 'dark' %}
{% assign _pick = true %}
{% else %}
{% if c contains '-' %}
{% assign start = c | split: '-' | first %}
{% if start == 'w' %}
{% assign _pick = true %}
{% endif %}
{% endif %}
{% endcase %}
{% if _pick %}
{% assign _remain = _remain | remove: c | strip %}
{% assign _wrapper_class = _wrapper_class | append: ' ' | append: c %}
{% endif %}
{% endfor %}
{% unless _wrapper_class == '' %}
{% capture _old_class %}class="{{ _class }}"{% endcapture %} {% capture _old_class %}class="{{ _class }}"{% endcapture %}
{% assign _left = _left | remove: _old_class %} {% assign _left = _left | remove: _old_class %}
{% unless _remain == '' %}
{% capture _new_class %}class="{{ _remain }}"{% endcapture %}
{% assign _left = _left | append: _new_class %}
{% endunless %}
{% endunless %}
{% endif %} {% endif %}
{% assign _final_src = null %} {% assign _final_src = null %}
@@ -110,7 +142,7 @@
{% if _lqip %} {% if _lqip %}
{% assign _lazyload = false %} {% assign _lazyload = false %}
{% assign _class = _class | append: ' blur' %} {% assign _wrapper_class = _wrapper_class | append: ' blur' %}
{% unless _lqip contains 'data:' %} {% unless _lqip contains 'data:' %}
{% assign _lqip_alt = 'lqip="' | append: _path_prefix %} {% assign _lqip_alt = 'lqip="' | append: _path_prefix %}
@@ -121,7 +153,7 @@
{% assign _left = _left | replace: 'src=', 'data-src=' | replace: ' lqip=', ' data-lqip="true" src=' %} {% assign _left = _left | replace: 'src=', 'data-src=' | replace: ' lqip=', ' data-lqip="true" src=' %}
{% else %} {% else %}
{% assign _class = _class | append: ' shimmer' %} {% assign _wrapper_class = _wrapper_class | append: ' shimmer' %}
{% endif %} {% endif %}
<!-- lazy-load images --> <!-- lazy-load images -->
@@ -131,7 +163,7 @@
{% if page.layout == 'home' %} {% if page.layout == 'home' %}
<!-- create the image wrapper --> <!-- create the image wrapper -->
{% assign _wrapper_start = '<div class="preview-img ' | append: _class | append: '">' %} {% assign _wrapper_start = '<div class="preview-img ' | append: _wrapper_class | append: '">' %}
{% assign _img_content = _img_content | append: _wrapper_start %} {% assign _img_content = _img_content | append: _wrapper_start %}
{% assign _right = _right | prepend: '></div' %} {% assign _right = _right | prepend: '></div' %}
@@ -141,7 +173,7 @@
{% assign _parent = _right | slice: 1, 4 %} {% assign _parent = _right | slice: 1, 4 %}
{% if _parent == '</a>' %} {% if _parent == '</a>' %}
<!-- add class to exist <a> tag --> <!-- add class to existing <a> tag -->
{% assign _size = _img_content | size | minus: 1 %} {% assign _size = _img_content | size | minus: 1 %}
{% capture _class %} {% capture _class %}
class="img-link{% unless _lqip %} shimmer{% endunless %}" class="img-link{% unless _lqip %} shimmer{% endunless %}"
@@ -154,7 +186,7 @@
| default: _src | default: _src
| prepend: '<a href="' | prepend: '<a href="'
| append: '" class="popup img-link' | append: '" class="popup img-link'
| append: _class | append: _wrapper_class
| append: '">' | append: '">'
%} %}
+1 -1
View File
@@ -82,7 +82,7 @@
{% include datetime.html date=post.date lang=include.lang %} {% include datetime.html date=post.date lang=include.lang %}
<h4 class="pt-0 my-2">{{ post.title }}</h4> <h4 class="pt-0 my-2">{{ post.title }}</h4>
<div class="text-muted"> <div class="text-muted">
<p>{% include post-description.html %}</p> <p>{% include post-summary.html %}</p>
</div> </div>
</div> </div>
</a> </a>
+4 -2
View File
@@ -12,14 +12,15 @@
{tags} {tags}
</div> </div>
</header> </header>
<p>{snippet}</p> <p>{content}</p>
</article> </article>
{% endcapture %} {% endcapture %}
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %} {% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
<script> <script>
{%- comment -%} Note: dependent library will be loaded in `js-selector.html` {%- endcomment -%} {% comment %} Note: dependent library will be loaded in `js-selector.html` {% endcomment %}
document.addEventListener('DOMContentLoaded', () => {
SimpleJekyllSearch({ SimpleJekyllSearch({
searchInput: document.getElementById('search-input'), searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('search-results'), resultsContainer: document.getElementById('search-results'),
@@ -44,4 +45,5 @@
} }
} }
}); });
});
</script> </script>
+1 -1
View File
@@ -3,7 +3,7 @@
<div id="search-result-wrapper" class="d-flex justify-content-center d-none"> <div id="search-result-wrapper" class="d-flex justify-content-center d-none">
<div class="col-11 content"> <div class="col-11 content">
<div id="search-hints"> <div id="search-hints">
{% include_cached trending-tags.html %} {% include_cached trending-tags.html lang=include.lang %}
</div> </div>
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div> <div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
</div> </div>
+56 -8
View File
@@ -11,9 +11,7 @@
{%- endif -%} {%- endif -%}
</a> </a>
<h1 class="site-title"> <a class="site-title d-block" href="{{ '/' | relative_url }}">{{ site.title }}</a>
<a href="{{ '/' | relative_url }}">{{ site.title }}</a>
</h1>
<p class="site-subtitle fst-italic mb-0">{{ site.tagline }}</p> <p class="site-subtitle fst-italic mb-0">{{ site.tagline }}</p>
</header> </header>
<!-- .profile-wrapper --> <!-- .profile-wrapper -->
@@ -43,10 +41,52 @@
</nav> </nav>
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"> <div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
{% unless site.theme_mode %} {% unless site.theme_mode == 'light' or site.theme_mode == 'dark' %}
<button type="button" class="btn btn-link nav-link" aria-label="Switch Mode" id="mode-toggle"> {%- capture icon_system -%}
<i class="fas fa-adjust"></i> <i class="fa-solid fa-display" data-theme-mode="system"></i>
{%- endcapture -%}
{%- capture icon_light -%}
<i class="fa-regular fa-sun" data-theme-mode="light"></i>
{%- endcapture -%}
{%- capture icon_dark -%}
<i class="fa-regular fa-moon" data-theme-mode="dark"></i>
{%- endcapture -%}
<div class="btn-group dropup">
<button
type="button"
class="btn btn-link nav-link"
aria-label="Switch Mode"
id="mode-toggle"
data-bs-toggle="dropdown"
>
{{- icon_light -}}
{{- icon_dark -}}
{{- icon_system -}}
</button> </button>
<ul class="dropdown-menu rounded-3 mb-1 p-1">
<li>
<button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="light">
{{- icon_light -}}
{{- site.data.locales[lang].theme.light -}}
</button>
</li>
<li>
<button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="dark">
{{- icon_dark -}}
{{- site.data.locales[lang].theme.dark -}}
</button>
</li>
<li>
<button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="system">
{{- icon_system -}}
{{- site.data.locales[lang].theme.system -}}
</button>
</li>
</ul>
</div>
{% if site.data.contact.size > 0 %} {% if site.data.contact.size > 0 %}
<span class="icon-border"></span> <span class="icon-border"></span>
@@ -54,15 +94,23 @@
{% endunless %} {% endunless %}
{% for entry in site.data.contact %} {% for entry in site.data.contact %}
{%- assign url = null -%}
{% case entry.type %} {% case entry.type %}
{% when 'github', 'twitter' %} {% when 'github', 'twitter' %}
{%- unless site[entry.type].username -%}
{%- continue -%}
{%- endunless -%}
{%- capture url -%} {%- capture url -%}
https://{{ entry.type }}.com/{{ site[entry.type].username }} https://{{ entry.type }}.com/{{ site[entry.type].username }}
{%- endcapture -%} {%- endcapture -%}
{% when 'email' %} {% when 'email' %}
{% assign email = site.social.email | split: '@' %} {%- unless site.social.email -%}
{%- continue -%}
{%- endunless -%}
{%- assign email = site.social.email | split: '@' -%}
{%- capture url -%} {%- capture url -%}
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@') javascript:void(location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@'))
{%- endcapture -%} {%- endcapture -%}
{% when 'rss' %} {% when 'rss' %}
{% assign url = '/feed.xml' | relative_url %} {% assign url = '/feed.xml' | relative_url %}
+10
View File
@@ -0,0 +1,10 @@
{% comment %}
Determine TOC state and return it through variable "enable_toc"
{% endcomment %}
{% assign enable_toc = false %}
{% if site.toc and page.toc %}
{% if page.content contains '<h2' or page.content contains '<h3' %}
{% assign enable_toc = true %}
{% endif %}
{% endif %}
+4 -8
View File
@@ -1,13 +1,9 @@
{% assign enable_toc = false %} {% include toc-status.html %}
{% if site.toc and page.toc %}
{% if page.content contains '<h2' or page.content contains '<h3' %}
{% assign enable_toc = true %}
{% endif %}
{% endif %}
{% if enable_toc %} {% if enable_toc %}
<section id="toc-wrapper" class="d-none ps-0 pe-4"> <div class="toc-border-cover z-3"></div>
<h2 class="panel-heading ps-3 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</h2> <section id="toc-wrapper" class="invisible position-sticky ps-0 pe-4 pb-4">
<h2 class="panel-heading ps-3 pb-2 mb-0">{{- site.data.locales[include.lang].panel.toc -}}</h2>
<nav id="toc"></nav> <nav id="toc"></nav>
</section> </section>
{% endif %} {% endif %}
+3 -3
View File
@@ -1,6 +1,6 @@
<!-- The Top Bar --> <!-- The Top Bar -->
<header id="topbar-wrapper" aria-label="Top Bar"> <header id="topbar-wrapper" class="flex-shrink-0" aria-label="Top Bar">
<div <div
id="topbar" id="topbar"
class="d-flex align-items-center justify-content-between px-lg-3 h-100" class="d-flex align-items-center justify-content-between px-lg-3 h-100"
@@ -40,7 +40,7 @@
</nav> </nav>
<!-- endof #breadcrumb --> <!-- endof #breadcrumb -->
<button type="button" id="sidebar-trigger" class="btn btn-link"> <button type="button" id="sidebar-trigger" class="btn btn-link" aria-label="Sidebar">
<i class="fas fa-bars fa-fw"></i> <i class="fas fa-bars fa-fw"></i>
</button> </button>
@@ -55,7 +55,7 @@
{% endif %} {% endif %}
</div> </div>
<button type="button" id="search-trigger" class="btn btn-link"> <button type="button" id="search-trigger" class="btn btn-link" aria-label="Search">
<i class="fas fa-search fa-fw"></i> <i class="fas fa-search fa-fw"></i>
</button> </button>
+1 -1
View File
@@ -1,5 +1,5 @@
import { basic, initSidebar, initTopbar } from './modules/layouts'; import { basic, initSidebar, initTopbar } from './modules/layouts';
import { categoryCollapse } from './modules/plugins'; import { categoryCollapse } from './modules/components';
basic(); basic();
initSidebar(); initSidebar();
+1 -1
View File
@@ -1,5 +1,5 @@
import { basic, initSidebar, initTopbar } from './modules/layouts'; import { basic, initSidebar, initTopbar } from './modules/layouts';
import { initLocaleDatetime, loadImg } from './modules/plugins'; import { initLocaleDatetime, loadImg } from './modules/components';
loadImg(); loadImg();
initLocaleDatetime(); initLocaleDatetime();
+1 -1
View File
@@ -1,5 +1,5 @@
import { basic, initSidebar, initTopbar } from './modules/layouts'; import { basic, initSidebar, initTopbar } from './modules/layouts';
import { initLocaleDatetime } from './modules/plugins'; import { initLocaleDatetime } from './modules/components';
initSidebar(); initSidebar();
initTopbar(); initTopbar();
@@ -3,4 +3,8 @@ export { initClipboard } from './components/clipboard';
export { loadImg } from './components/img-loading'; export { loadImg } from './components/img-loading';
export { imgPopup } from './components/img-popup'; export { imgPopup } from './components/img-popup';
export { initLocaleDatetime } from './components/locale-datetime'; export { initLocaleDatetime } from './components/locale-datetime';
export { toc } from './components/toc'; export { initToc } from './components/toc';
export { loadMermaid } from './components/mermaid';
export { modeWatcher } from './components/mode-toggle';
export { back2top } from './components/back-to-top';
export { loadTooltip } from './components/tooltip-loader';
+6 -12
View File
@@ -4,12 +4,11 @@
* Dependencies: https://github.com/biati-digital/glightbox * Dependencies: https://github.com/biati-digital/glightbox
*/ */
const html = document.documentElement;
const lightImages = '.popup:not(.dark)'; const lightImages = '.popup:not(.dark)';
const darkImages = '.popup:not(.light)'; const darkImages = '.popup:not(.light)';
let selector = lightImages; let selector = lightImages;
function updateImages(current, reverse) { function swapImages(current, reverse) {
if (selector === lightImages) { if (selector === lightImages) {
selector = darkImages; selector = darkImages;
} else { } else {
@@ -20,7 +19,7 @@ function updateImages(current, reverse) {
reverse = GLightbox({ selector: `${selector}` }); reverse = GLightbox({ selector: `${selector}` });
} }
[current, reverse] = [reverse, current]; return [reverse, current];
} }
export function imgPopup() { export function imgPopup() {
@@ -33,27 +32,22 @@ export function imgPopup() {
document.querySelector('.popup.dark') === null document.querySelector('.popup.dark') === null
); );
if ( if (Theme.isDark) {
(html.hasAttribute('data-mode') &&
html.getAttribute('data-mode') === 'dark') ||
(!html.hasAttribute('data-mode') &&
window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
selector = darkImages; selector = darkImages;
} }
let current = GLightbox({ selector: `${selector}` }); let current = GLightbox({ selector: `${selector}` });
if (hasDualImages && document.getElementById('mode-toggle')) { if (hasDualImages && Theme.isToggleable) {
let reverse = null; let reverse = null;
window.addEventListener('message', (event) => { window.addEventListener('message', (event) => {
if ( if (
event.source === window && event.source === window &&
event.data && event.data &&
event.data.direction === ModeToggle.ID event.data.id === Theme.eventId
) { ) {
updateImages(current, reverse); [current, reverse] = swapImages(current, reverse);
} }
}); });
} }
+64
View File
@@ -0,0 +1,64 @@
/**
* Mermaid-js loader
*/
const MERMAID = 'mermaid';
const themeMap = Theme.newThemeMap('default', 'dark');
function refreshTheme(event) {
if (
event.source === window &&
event.data &&
event.data.id === Theme.eventId
) {
// Re-render the SVG <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344>
const mermaidList = document.getElementsByClassName(MERMAID);
[...mermaidList].forEach((elem) => {
const svgCode = elem.previousSibling.children.item(0).textContent;
elem.textContent = svgCode;
elem.removeAttribute('data-processed');
});
const newTheme = themeMap[Theme.resolvedTheme];
mermaid.initialize({ theme: newTheme });
mermaid.init(null, `.${MERMAID}`);
}
}
function setNode(elem) {
const svgCode = elem.textContent;
const backup = elem.parentElement;
backup.classList.add('d-none');
// Create mermaid node
const mermaid = document.createElement('pre');
mermaid.classList.add(MERMAID);
const text = document.createTextNode(svgCode);
mermaid.appendChild(text);
backup.after(mermaid);
}
export function loadMermaid() {
if (
typeof mermaid === 'undefined' ||
typeof mermaid.initialize !== 'function'
) {
return;
}
const initTheme = themeMap[Theme.resolvedTheme];
let mermaidConf = {
theme: initTheme
};
const basicList = document.getElementsByClassName('language-mermaid');
[...basicList].forEach(setNode);
mermaid.initialize(mermaidConf);
if (Theme.isToggleable) {
window.addEventListener('message', refreshTheme);
}
}
@@ -0,0 +1,46 @@
/**
* Sets up the mode toggle dropdown, allowing users to switch between light, dark, and system themes.
*
* Dependencies:
* - Theme (${JS_ROOT}/theme.js)
*/
import 'bootstrap/js/src/dropdown.js';
const ACTIVE_CLASS = 'active';
const dropdown = document.querySelector('#mode-toggle + .dropdown-menu');
const activeMode = Theme.isSystemTheme
? Theme.Mode.SYSTEM
: Theme.resolvedTheme;
export function modeWatcher() {
if (!Theme.isToggleable) {
return;
}
dropdown.querySelectorAll('.dropdown-item').forEach((option) => {
const mode = option.dataset.themeMode;
if (mode === activeMode) {
option.classList.add(ACTIVE_CLASS);
return;
}
});
dropdown.addEventListener('click', (event) => {
const current = event.target.closest('.dropdown-item');
if (!current) {
return;
}
const lastActive = dropdown.querySelector(`.${ACTIVE_CLASS}`);
if (lastActive === current) {
return;
}
lastActive.classList.remove(ACTIVE_CLASS);
current.classList.add(ACTIVE_CLASS);
Theme.update(current.dataset.themeMode);
});
}
@@ -1,14 +0,0 @@
/**
* Add listener for theme mode toggle
*/
const toggle = document.getElementById('mode-toggle');
export function modeWatcher() {
if (!toggle) {
return;
}
toggle.addEventListener('click', () => {
modeToggle.flipMode();
});
}
@@ -1,5 +1,5 @@
/** /**
* This script make #search-result-wrapper switch to unload or shown automatically. * This script makes #search-result-wrapper switch to unload or shown automatically.
*/ */
const btnSbTrigger = document.getElementById('sidebar-trigger'); const btnSbTrigger = document.getElementById('sidebar-trigger');
-27
View File
@@ -1,27 +0,0 @@
/**
* Expand or close the sidebar in mobile screens.
*/
const ATTR_DISPLAY = 'sidebar-display';
class SidebarUtil {
static isExpanded = false;
static toggle() {
if (SidebarUtil.isExpanded === false) {
document.body.setAttribute(ATTR_DISPLAY, '');
} else {
document.body.removeAttribute(ATTR_DISPLAY);
}
SidebarUtil.isExpanded = !SidebarUtil.isExpanded;
}
}
export function sidebarExpand() {
document
.getElementById('sidebar-trigger')
.addEventListener('click', SidebarUtil.toggle);
document.getElementById('mask').addEventListener('click', SidebarUtil.toggle);
}
+33 -12
View File
@@ -1,15 +1,36 @@
export function toc() { import { TocMobile as mobile } from './toc/toc-mobile';
if (document.querySelector('main h2, main h3')) { import { TocDesktop as desktop } from './toc/toc-desktop';
// see: https://github.com/tscanlin/tocbot#usage
tocbot.init({
tocSelector: '#toc',
contentSelector: '.content',
ignoreSelector: '[data-toc-skip]',
headingSelector: 'h2, h3, h4',
orderedList: false,
scrollSmooth: false
});
document.getElementById('toc-wrapper').classList.remove('d-none'); const desktopMode = matchMedia('(min-width: 1200px)');
function refresh(e) {
if (e.matches) {
if (mobile.popupOpened) {
mobile.hidePopup();
}
desktop.refresh();
} else {
mobile.refresh();
} }
} }
function init() {
if (document.querySelector('main>article[data-toc="true"]') === null) {
return;
}
// Avoid create multiple instances of Tocbot. Ref: <https://github.com/tscanlin/tocbot/issues/203>
if (desktopMode.matches) {
desktop.init();
} else {
mobile.init();
}
const $tocWrapper = document.getElementById('toc-wrapper');
$tocWrapper.classList.remove('invisible');
desktopMode.onchange = refresh;
}
export { init as initToc };

Some files were not shown because too many files have changed in this diff Show More