1
0
mirror of https://github.com/cotes2020/jekyll-theme-chirpy.git synced 2026-01-23 07:11:39 +00:00

Compare commits

..

55 Commits

Author SHA1 Message Date
dependabot[bot]
9c33bc9406 build(deps): bump the gh-actions group across 1 directory with 4 updates
Bumps the gh-actions group with 4 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [actions/setup-node](https://github.com/actions/setup-node), [actions/github-script](https://github.com/actions/github-script) and [actions/stale](https://github.com/actions/stale).


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 `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: 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>
2025-09-08 19:40:20 +00: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](7615d72e93))
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](167c98c781))
* **i18n:** add Dutch locale ([#2076](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2076)) ([981ddba](981ddba30e))
* **i18n:** add Japanese locale ([#2295](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2295)) ([571c90f](571c90f130))
* **i18n:** add persian language ([#2238](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2238)) ([7d4d35c](7d4d35cd10))

### Bug Fixes

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

### Improvements

* **seo:** improve accessibility and aligns with best practices ([#2289](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2289)) ([54d4d59](54d4d59d22))
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](32051dad03))
* **ui:** left borderline of TOC is notched ([#2140](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2140)) ([8a4d0bc](8a4d0bc4ee))
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](2f00d41861))
* **ui:** gap between TOC entries is inconsistent ([#2119](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2119)) ([1b4e318](1b4e318dc1))
* **ui:** slow script loading hides TOC fade-up effect in desktop ([#2120](https://github.com/cotes2020/jekyll-theme-chirpy/issues/2120)) ([e0c3faf](e0c3fafa47))
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](f55cc31dbd))
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
57 changed files with 1160 additions and 194 deletions

View File

@@ -14,14 +14,14 @@ jobs:
pull-requests: write pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
with: with:
ruby-version: 3.3 ruby-version: 3.3
bundler-cache: true bundler-cache: true
- uses: actions/setup-node@v4 - uses: actions/setup-node@v5
with: with:
node-version: lts/* node-version: lts/*

View File

@@ -31,7 +31,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
fetch-depth: 0 # for posts's lastmod fetch-depth: 0 # for posts's lastmod
@@ -42,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@v5
with: with:
node-version: lts/* node-version: lts/*

View File

@@ -24,7 +24,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v5
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL

View File

@@ -11,5 +11,5 @@ jobs:
commitlint: commitlint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: wagoid/commitlint-github-action@v6 - uses: wagoid/commitlint-github-action@v6

30
.github/workflows/lint-js.yml vendored Normal file
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@v5
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: lts/*
- name: Install Dependencies
run: npm i
- name: Lint JS
run: npm run lint:js

26
.github/workflows/lint-scss.yml vendored Normal file
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@v5
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: lts/*
- name: Install Dependencies
run: npm i
- name: Lint SCSS
run: npm run lint:scss

View File

@@ -13,13 +13,13 @@ jobs:
steps: steps:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Check PR Content - name: Check PR Content
id: intercept id: intercept
uses: actions/github-script@v7 uses: actions/github-script@v8
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
script: | script: |
const script = require('.github/workflows/scripts/pr-filter.js'); const { default: filter } = await import('${{ github.workspace }}/.github/workflows/scripts/pr-filter.js');
await script({ github, context, core }); await filter({ github, context, core });

View File

@@ -9,7 +9,7 @@ function hasDescription(markdown) {
); );
} }
module.exports = async ({ github, context, core }) => { export default async ({ github, context, core }) => {
const pr = context.payload.pull_request; const pr = context.payload.pull_request;
const body = pr.body === null ? '' : pr.body; const body = pr.body === null ? '' : pr.body;
const markdown = body.replace(/<!--[\s\S]*?-->/g, ''); const markdown = body.replace(/<!--[\s\S]*?-->/g, '');

View File

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

View File

@@ -8,8 +8,6 @@
"property-no-vendor-prefix": null, "property-no-vendor-prefix": null,
"selector-no-vendor-prefix": null, "selector-no-vendor-prefix": null,
"value-no-vendor-prefix": null, "value-no-vendor-prefix": null,
"color-function-notation": "legacy",
"alpha-value-notation": "number",
"selector-not-notation": "simple", "selector-not-notation": "simple",
"color-hex-length": "long", "color-hex-length": "long",
"declaration-block-single-line-max-declarations": 3, "declaration-block-single-line-max-declarations": 3,

View File

@@ -212,7 +212,8 @@ exclude:
- tools - tools
- README.md - README.md
- LICENSE - LICENSE
- "*.js" - purgecss.js
- "*.config.js"
- "package*.json" - "package*.json"
jekyll-archives: jekyll-archives:

84
_data/locales/ca-ES.yml Normal file
View File

@@ -0,0 +1,84 @@
# 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 una nova versió de contingut disponible.
update: Actualitzar
# ----- Posts related labels -----
post:
written_by: Per
posted: Publicat
updated: Actualitzat
words: paraules
pageview_measure: visites
read_time:
unit: min
prompt: " de lectura"
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

86
_data/locales/da-DK.yml Normal file
View File

@@ -0,0 +1,86 @@
# 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: En ny version af indholdet er fundet!
update: Opdater
# ----- Posts related labels -----
post:
written_by: Af
posted: Udgivet
updated: Opdateret
words: ord
pageview_measure: visninger
read_time:
unit: min
prompt: læsetid
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

90
_data/locales/dv‑MV.yml Normal file
View File

@@ -0,0 +1,90 @@
# 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: އޮޕްޑޭޓް
# ----- Posts related labels -----
post:
written_by: ލެކްއޯލް
posted: ޕޯސްޓްކުރެވި
updated: އޮޕްޑޭޓްކުރެވި
words: ބަސް
pageview_measure: ބަނޑުކުރާ
read_time:
unit: މިނެޓް
prompt: އިސްކާރު
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: ޕޯސްޓްތައް

91
_data/locales/fa-IR.yml Normal file
View File

@@ -0,0 +1,91 @@
# 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: به‌روزرسانی
# ----- Posts related labels -----
post:
written_by: نوشته شده توسط
posted: منتشر شده
updated: به‌روزرسانی شده
words: کلمه
pageview_measure: بازدید
read_time:
unit: "دقیقه "
prompt: " زمان مطالعه"
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: پست‌

84
_data/locales/ja-JP.yml Normal file
View File

@@ -0,0 +1,84 @@
# 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: 更新
# ----- Posts related labels -----
post:
written_by: 投稿者
posted: 投稿日
updated: 更新日
words:
pageview_measure: 回閲覧
read_time:
unit:
prompt: で読めます
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: 投稿

91
_data/locales/ku-IQ.yml Normal file
View File

@@ -0,0 +1,91 @@
# 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: نوێکردنەوە
# ----- Posts related labels -----
post:
written_by: نووسەر
posted: بڵاوکراوەتەوە
updated: نوێکراوەتەوە
words: وشە
pageview_measure: بینین
read_time:
unit: خولەک
prompt: خوێندنەوە
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: بابەت

90
_data/locales/nl-NL.yml Normal file
View File

@@ -0,0 +1,90 @@
# 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 versie van inhoud beschikbaar.
update: Update
# ----- Posts related labels -----
post:
written_by: Door
posted: Posted
updated: Bijgewerkt
words: woorden
pageview_measure: Gelezen
read_time:
unit: min
prompt: lees
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

90
_data/locales/ps‑AF.yml Normal file
View File

@@ -0,0 +1,90 @@
# 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: تازه
# ----- Posts related labels -----
post:
written_by: لیکوال
posted: خپره شوې
updated: تازه شوې
words: کلمې
pageview_measure: کتنې
read_time:
unit: دقیقې
prompt: لوستل
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: لیکنې

90
_data/locales/ur-PK.yml Normal file
View File

@@ -0,0 +1,90 @@
# 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: اپ ڈیٹ
# ----- Posts related labels -----
post:
written_by: از
posted: شائع شدہ
updated: اپ ڈیٹ شدہ
words: لفظ
pageview_measure: مشاہدات
read_time:
unit: منٹ
prompt: پڑھیں
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: تحریریں

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"

View File

@@ -70,7 +70,7 @@
<!-- Bootstrap --> <!-- Bootstrap -->
{% unless jekyll.environment == 'production' %} {% unless jekyll.environment == 'production' %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.6/dist/css/bootstrap.min.css">
{% endunless %} {% endunless %}
<!-- Theme style --> <!-- Theme style -->

View File

@@ -66,7 +66,7 @@
{% if page.math %} {% if page.math %}
<!-- MathJax --> <!-- MathJax -->
<script async src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script> <script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
<script async src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script> <script async 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 %}

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 %}

View File

@@ -10,7 +10,7 @@
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) => {

View File

@@ -2,15 +2,29 @@
Get post description or generate it from the post content. Get post description or generate it from the post content.
{%- endcomment -%} {%- endcomment -%}
{%- assign max_length = include.max_length | default: 200 -%}
{%- capture description -%} {%- capture description -%}
{%- if post.description -%} {%- if post.description -%}
{{- post.description -}} {{- post.description -}}
{%- else -%} {%- else -%}
{%- include no-linenos.html content=post.content -%} {% comment %}
{{- content | markdownify | strip_html -}} Remove the line number of the code snippet.
{%- endif -%} {% 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 -%}
{{- content | strip_html | newline_to_br | replace: '<br />', ' ' | strip_newlines -}}
{%- endif -%}
{%- endcapture -%} {%- endcapture -%}
{{- description | strip | truncate: max_length | escape -}} {%- if include.json -%}
{%- assign description = description | jsonify -%}
{%- else -%}
{%- assign max_length = include.max_length | default: 200 -%}
{%- assign description = description | strip | truncate: max_length -%}
{%- endif -%}
{{- description -}}

View File

@@ -88,9 +88,41 @@
{% endfor %} {% endfor %}
<!-- take out classes --> <!-- take out classes -->
{% assign _wrapper_class = '' %}
{% if _class %} {% if _class %}
{% capture _old_class %}class="{{ _class }}"{% endcapture %} {% assign _remain = _class %}
{% assign _left = _left | remove: _old_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 %}
{% 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 -->
@@ -153,8 +185,8 @@
{% assign _wrapper_start = _final_src {% assign _wrapper_start = _final_src
| 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: '">'
%} %}

View File

@@ -12,7 +12,7 @@
{tags} {tags}
</div> </div>
</header> </header>
<p>{snippet}</p> <p>{content}</p>
</article> </article>
{% endcapture %} {% endcapture %}

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>

View File

@@ -52,13 +52,21 @@
{% 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:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
{%- endcapture -%} {%- endcapture -%}

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>

View File

@@ -11,7 +11,7 @@ function refreshTheme(event) {
const mermaidList = document.getElementsByClassName(MERMAID); const mermaidList = document.getElementsByClassName(MERMAID);
[...mermaidList].forEach((elem) => { [...mermaidList].forEach((elem) => {
const svgCode = elem.previousSibling.children.item(0).innerHTML; const svgCode = elem.previousSibling.children.item(0).textContent;
elem.textContent = svgCode; elem.textContent = svgCode;
elem.removeAttribute('data-processed'); elem.removeAttribute('data-processed');
}); });

View File

@@ -27,6 +27,9 @@ function init() {
mobile.init(); mobile.init();
} }
const $tocWrapper = document.getElementById('toc-wrapper');
$tocWrapper.classList.remove('invisible');
desktopMode.onchange = refresh; desktopMode.onchange = refresh;
} }

View File

@@ -15,11 +15,6 @@ export class TocDesktop {
} }
static init() { static init() {
const $tocWrapper = document.getElementById('toc-wrapper'); tocbot.init(this.options);
if ($tocWrapper) {
tocbot.init(this.options);
$tocWrapper.classList.remove('invisible');
}
} }
} }

View File

@@ -39,7 +39,10 @@ class Theme {
} }
static get #mode() { static get #mode() {
return sessionStorage.getItem(this.#modeKey); return (
sessionStorage.getItem(this.#modeKey) ||
document.documentElement.getAttribute(this.#modeAttr)
);
} }
static get #isDarkMode() { static get #isDarkMode() {

View File

@@ -55,16 +55,15 @@ refactor: true
{% if post.image %} {% if post.image %}
{% assign src = post.image.path | default: post.image %} {% assign src = post.image.path | default: post.image %}
{% unless src contains '//' %} {% capture src %}{% include media-url.html src=src subpath=post.media_subpath %}{% endcapture %}
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
{% endunless %}
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %} {% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
{% assign lqip = null %} {% assign lqip = null %}
{% if post.image.lqip %} {% if post.image.lqip %}
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %} {% capture lqip_url %}{% include media-url.html src=post.image.lqip subpath=post.media_subpath %}{% endcapture %}
{% assign lqip = 'lqip="' | append: lqip_url | append: '"' %}
{% endif %} {% endif %}
<div class="col-md-5"> <div class="col-md-5">

View File

@@ -21,7 +21,7 @@ Basically, you need to fill the [Front Matter](https://jekyllrb.com/docs/front-m
--- ---
title: TITLE title: TITLE
date: YYYY-MM-DD HH:MM:SS +/-TTTT date: YYYY-MM-DD HH:MM:SS +/-TTTT
categories: [TOP_CATEGORIE, SUB_CATEGORIE] categories: [TOP_CATEGORY, SUB_CATEGORY]
tags: [TAG] # TAG names should always be lowercase tags: [TAG] # TAG names should always be lowercase
--- ---
``` ```
@@ -97,7 +97,7 @@ toc: false
## Comments ## Comments
The global switch of comments is defined by variable `comments.active` in the file `_config.yml`{: .filepath}. After selecting a comment system for this variable, comments will be turned on for all posts. The global setting for comments is defined by the `comments.provider` option in the `_config.yml`{: .filepath} file. Once a comment system is selected for this variable, comments will be enabled for all posts.
If you want to close the comment for a specific post, add the following to the **Front Matter** of the post: If you want to close the comment for a specific post, add the following to the **Front Matter** of the post:

View File

@@ -68,7 +68,7 @@ For Unix-like systems, you can set up the environment natively for optimal perfo
To run the site locally, use the following command: To run the site locally, use the following command:
```terminal ```terminal
$ bundle exec jekyll s $ bundle exec jekyll serve
``` ```
> If you are using Dev Containers, you must run that command in the **VS Code** Terminal. > If you are using Dev Containers, you must run that command in the **VS Code** Terminal.

View File

@@ -31,7 +31,10 @@
} }
%tag-hover { %tag-hover {
@extend %link-color;
background: var(--tag-hover); background: var(--tag-hover);
border-color: var(--tag-hover);
transition: background 0.35s ease-in-out; transition: background 0.35s ease-in-out;
} }

View File

@@ -103,7 +103,7 @@ main {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: absolute; position: absolute;
background-color: var(--card-hovor-bg); background-color: var(--card-hover-bg);
opacity: 0; opacity: 0;
transition: opacity 0.35s ease-in-out; transition: opacity 0.35s ease-in-out;
} }
@@ -349,7 +349,7 @@ main {
} }
.disabled { .disabled {
color: rgb(206, 196, 196); color: rgb(206 196 196);
pointer-events: auto; pointer-events: auto;
cursor: not-allowed; cursor: not-allowed;
} }

View File

@@ -66,7 +66,7 @@ code {
&.highlighter-rouge { &.highlighter-rouge {
font-size: v.$code-font-size; font-size: v.$code-font-size;
padding: 3px 5px; padding: 3px 5px;
word-break: break-word; overflow-wrap: break-word;
border-radius: v.$radius-sm; border-radius: v.$radius-sm;
background-color: var(--inline-code-bg); background-color: var(--inline-code-bg);
} }
@@ -243,7 +243,7 @@ div {
} }
&:not([timeout]):hover { &:not([timeout]):hover {
background-color: rgba(128, 128, 128, 0.37); background-color: rgb(128 128 128 / 37%);
i { i {
color: white; color: white;

View File

@@ -238,7 +238,7 @@ main {
border-spacing: 0; border-spacing: 0;
thead { thead {
border-bottom: solid 2px rgba(210, 215, 217, 0.75); border-bottom: solid 2px rgb(210 215 217 / 75%);
th { th {
@extend %table-cell; @extend %table-cell;

View File

@@ -41,7 +41,7 @@
border-radius: 0.5rem; border-radius: 0.5rem;
-webkit-backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
background-color: rgba(255, 255, 255, 0.5); background-color: rgb(255 255 255 / 50%);
color: #1b1b1eba; color: #1b1b1eba;
position: fixed; position: fixed;
left: 50%; left: 50%;

View File

@@ -160,7 +160,7 @@
cursor: not-allowed; cursor: not-allowed;
.page-link { .page-link {
color: rgba(108, 117, 125, 0.57); color: rgb(108 117 125 / 57%);
} }
} }
} /* .page-item */ } /* .page-item */

View File

@@ -143,9 +143,7 @@ header {
.post-tag { .post-tag {
&:hover { &:hover {
@extend %link-hover;
@extend %tag-hover; @extend %tag-hover;
@extend %no-bottom-border;
} }
} }
} }
@@ -220,14 +218,11 @@ header {
@-webkit-keyframes fade-up { @-webkit-keyframes fade-up {
from { from {
opacity: 0; opacity: 0;
position: relative; margin-top: 4rem;
top: 2rem;
} }
to { to {
opacity: 1; opacity: 1;
position: relative;
top: 0;
} }
} }
@@ -247,6 +242,7 @@ header {
%top-cover { %top-cover {
content: ''; content: '';
display: block; display: block;
position: -webkit-sticky;
position: sticky; position: sticky;
top: 0; top: 0;
width: 100%; width: 100%;
@@ -257,13 +253,16 @@ header {
#toc-wrapper { #toc-wrapper {
top: 0; top: 0;
transition: top 0.2s ease-in-out; transition: top 0.2s ease-in-out;
-webkit-animation: fade-up 0.8s;
animation: fade-up 0.8s;
overflow-y: auto; overflow-y: auto;
max-height: 100vh; max-height: 100vh;
scrollbar-width: none; scrollbar-width: none;
margin-top: 2rem; margin-top: 2rem;
&:not(.invisible) {
-webkit-animation: fade-up 0.8s;
animation: fade-up 0.8s;
}
ul { ul {
list-style: none; list-style: none;
font-size: 0.85rem; font-size: 0.85rem;
@@ -271,16 +270,8 @@ header {
padding-left: 0; padding-left: 0;
li { li {
&:not(:last-child) {
margin: 0.4rem 0;
}
&:first-child {
margin-top: 0;
}
a { a {
padding: 0.2rem 0 0.2rem 1.25rem; padding: 0.4rem 0 0.4rem 1.25rem;
} }
} }

View File

@@ -2,33 +2,33 @@
color-scheme: dark; color-scheme: dark;
/* Framework color */ /* Framework color */
--main-bg: rgb(27, 27, 30); --main-bg: rgb(27 27 30);
--mask-bg: rgb(68, 69, 70); --mask-bg: rgb(68 69 70);
--main-border-color: rgb(44, 45, 45); --main-border-color: rgb(44 45 45);
/* Common color */ /* Common color */
--text-color: rgb(175, 176, 177); --text-color: rgb(175 176 177);
--text-muted-color: #868686; --text-muted-color: #868686;
--text-muted-highlight-color: #aeaeae; --text-muted-highlight-color: #aeaeae;
--heading-color: #cccccc; --heading-color: #cccccc;
--label-color: #a7a7a7; --label-color: #a7a7a7;
--blockquote-border-color: rgb(66, 66, 66); --blockquote-border-color: rgb(66 66 66);
--blockquote-text-color: #868686; --blockquote-text-color: #868686;
--link-color: rgb(138, 180, 248); --link-color: rgb(138 180 248);
--link-underline-color: rgb(82, 108, 150); --link-underline-color: rgb(82 108 150);
--button-bg: #1e1e1e; --button-bg: #1e1e1e;
--btn-border-color: #2e2f31; --btn-border-color: #2e2f31;
--btn-backtotop-color: var(--text-color); --btn-backtotop-color: var(--text-color);
--btn-backtotop-border-color: #212122; --btn-backtotop-border-color: #212122;
--card-header-bg: #292929; --card-header-bg: #292929;
--checkbox-color: rgb(118, 120, 121); --checkbox-color: rgb(118 120 121);
--checkbox-checked-color: var(--link-color); --checkbox-checked-color: var(--link-color);
--img-bg: radial-gradient(circle, rgb(22, 22, 24) 0%, rgb(32, 32, 32) 100%); --img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);
--shimmer-bg: linear-gradient( --shimmer-bg: linear-gradient(
90deg, 90deg,
rgba(255, 255, 255, 0) 0%, rgb(255 255 255 / 0%) 0%,
rgba(58, 55, 55, 0.4) 50%, rgb(58 55 55 / 40%) 50%,
rgba(255, 255, 255, 0) 100% rgb(255 255 255 / 0%) 100%
); );
/* Sidebar */ /* Sidebar */
@@ -37,65 +37,65 @@
--sidebar-bg: #1e1e1e; --sidebar-bg: #1e1e1e;
--sidebar-border-color: #292929; --sidebar-border-color: #292929;
--sidebar-muted-color: #868686; --sidebar-muted-color: #868686;
--sidebar-active-color: rgb(255, 255, 255, 0.95); --sidebar-active-color: rgb(255 255 255 / 95%);
--sidebar-hover-bg: #262626; --sidebar-hover-bg: #262626;
--sidebar-btn-bg: #232328; --sidebar-btn-bg: #232328;
--sidebar-btn-color: #787878; --sidebar-btn-color: #787878;
--avatar-border-color: rgb(206, 206, 206, 0.9); --avatar-border-color: rgb(206 206 206 / 90%);
/* Topbar */ /* Topbar */
--topbar-bg: rgb(27, 27, 30, 0.64); --topbar-bg: rgb(27 27 30 / 64%);
--topbar-text-color: var(--text-color); --topbar-text-color: var(--text-color);
--search-border-color: rgb(55, 55, 55); --search-border-color: rgb(55 55 55);
--search-icon-color: rgb(100, 102, 105); --search-icon-color: rgb(100 102 105);
--input-focus-border-color: rgb(112, 114, 115); --input-focus-border-color: rgb(112 114 115);
/* Home page */ /* Home page */
--post-list-text-color: rgb(175, 176, 177); --post-list-text-color: rgb(175 176 177);
--btn-patinator-text-color: var(--text-color); --btn-patinator-text-color: var(--text-color);
--btn-paginator-hover-color: #2e2e2e; --btn-paginator-hover-color: #2e2e2e;
/* Posts */ /* Posts */
--toc-highlight: rgb(116, 178, 243); --toc-highlight: rgb(116 178 243);
--toc-popup-border-color: #373737; --toc-popup-border-color: #373737;
--tag-hover: rgb(43, 56, 62); --tag-hover: rgb(43 56 62);
--tb-odd-bg: #252526; /* odd rows of the posts' table */ --tb-odd-bg: #252526; /* odd rows of the posts' table */
--tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */ --tb-even-bg: rgb(31 31 34); /* even rows of the posts' table */
--tb-border-color: var(--tb-odd-bg); --tb-border-color: var(--tb-odd-bg);
--footnote-target-bg: rgb(63, 81, 181); --footnote-target-bg: rgb(63 81 181);
--btn-share-color: #6c757d; --btn-share-color: #6c757d;
--btn-share-hover-color: #bfc1ca; --btn-share-hover-color: #bfc1ca;
--card-bg: #1e1e1e; --card-bg: #1e1e1e;
--card-hovor-bg: #464d51; --card-hover-bg: #464d51;
--card-shadow: rgb(21, 21, 21, 0.72) 0 6px 18px 0, --card-shadow: rgb(21 21 21 / 72%) 0 6px 18px 0,
rgb(137, 135, 135, 0.24) 0 0 0 1px; rgb(137 135 135 / 24%) 0 0 0 1px;
--kbd-wrap-color: #6a6a6a; --kbd-wrap-color: #6a6a6a;
--kbd-text-color: #d3d3d3; --kbd-text-color: #d3d3d3;
--kbd-bg-color: #242424; --kbd-bg-color: #242424;
--prompt-text-color: rgb(216, 212, 212, 0.75); --prompt-text-color: rgb(216 212 212 / 75%);
--prompt-tip-bg: rgb(22, 60, 36, 0.64); --prompt-tip-bg: rgb(22 60 36 / 64%);
--prompt-tip-icon-color: rgb(15, 164, 15, 0.81); --prompt-tip-icon-color: rgb(15 164 15 / 81%);
--prompt-info-bg: rgb(7, 59, 104, 0.8); --prompt-info-bg: rgb(7 59 104 / 80%);
--prompt-info-icon-color: #0075d1; --prompt-info-icon-color: #0075d1;
--prompt-warning-bg: rgb(90, 69, 3, 0.88); --prompt-warning-bg: rgb(90 69 3 / 88%);
--prompt-warning-icon-color: rgb(255, 165, 0, 0.8); --prompt-warning-icon-color: rgb(255 165 0 / 80%);
--prompt-danger-bg: rgb(86, 28, 8, 0.8); --prompt-danger-bg: rgb(86 28 8 / 80%);
--prompt-danger-icon-color: #cd0202; --prompt-danger-icon-color: #cd0202;
/* Tags */ /* Tags */
--tag-border: rgb(59, 79, 88); --tag-border: rgb(59 79 88);
--tag-shadow: rgb(32, 33, 33); --tag-shadow: rgb(32 33 33);
--dash-color: rgb(63, 65, 68); --dash-color: rgb(63 65 68);
--search-tag-bg: #292828; --search-tag-bg: #292828;
/* Categories */ /* Categories */
--categories-border: rgb(64, 66, 69, 0.5); --categories-border: rgb(64 66 69 / 50%);
--categories-hover-bg: rgb(73, 75, 76); --categories-hover-bg: rgb(73 75 76);
--categories-icon-hover-color: white; --categories-icon-hover-color: white;
/* Archive */ /* Archive */
--timeline-node-bg: rgb(150, 152, 156); --timeline-node-bg: rgb(150 152 156);
--timeline-color: rgb(63, 65, 68); --timeline-color: rgb(63 65 68);
--timeline-year-dot-color: var(--timeline-color); --timeline-year-dot-color: var(--timeline-color);
/* Code highlight colors */ /* Code highlight colors */
@@ -103,7 +103,7 @@
--highlight-bg-color: #151515; --highlight-bg-color: #151515;
--highlighter-rouge-color: #c9def1; --highlighter-rouge-color: #c9def1;
--highlight-lineno-color: #808080; --highlight-lineno-color: #808080;
--inline-code-bg: rgba(255, 255, 255, 0.05); --inline-code-bg: rgb(255 255 255 / 5%);
--code-color: #b0b0b0; --code-color: #b0b0b0;
--code-header-text-color: #6a6a6a; --code-header-text-color: #6a6a6a;
--code-header-muted-color: #353535; --code-header-muted-color: #353535;
@@ -141,11 +141,11 @@
#archives li:nth-child(odd) { #archives li:nth-child(odd) {
background-image: linear-gradient( background-image: linear-gradient(
to left, to left,
rgb(26, 26, 30), rgb(26 26 30),
rgb(39, 39, 45), rgb(39 39 45),
rgb(39, 39, 45), rgb(39 39 45),
rgb(39, 39, 45), rgb(39 39 45),
rgb(26, 26, 30) rgb(26 26 30)
); );
} }

View File

@@ -20,34 +20,30 @@
--btn-backtotop-border-color: #f1f1f1; --btn-backtotop-border-color: #f1f1f1;
--checkbox-color: #c5c5c5; --checkbox-color: #c5c5c5;
--checkbox-checked-color: #07a8f7; --checkbox-checked-color: #07a8f7;
--img-bg: radial-gradient( --img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(239 239 239) 100%);
circle,
rgb(255, 255, 255) 0%,
rgb(239, 239, 239) 100%
);
--shimmer-bg: linear-gradient( --shimmer-bg: linear-gradient(
90deg, 90deg,
rgba(250, 250, 250, 0) 0%, rgb(250 250 250 / 0%) 0%,
rgba(232, 230, 230, 1) 50%, rgb(232 230 230 / 100%) 50%,
rgba(250, 250, 250, 0) 100% rgb(250 250 250 / 0%) 100%
); );
/* Sidebar */ /* Sidebar */
--site-title-color: rgb(113, 113, 113); --site-title-color: rgb(113 113 113);
--site-subtitle-color: #717171; --site-subtitle-color: #717171;
--sidebar-bg: #f6f8fa; --sidebar-bg: #f6f8fa;
--sidebar-border-color: #efefef; --sidebar-border-color: #efefef;
--sidebar-muted-color: #545454; --sidebar-muted-color: #545454;
--sidebar-active-color: #1d1d1d; --sidebar-active-color: #1d1d1d;
--sidebar-hover-bg: rgb(223, 233, 241, 0.64); --sidebar-hover-bg: rgb(223 233 241 / 64%);
--sidebar-btn-bg: white; --sidebar-btn-bg: white;
--sidebar-btn-color: #8e8e8e; --sidebar-btn-color: #8e8e8e;
--avatar-border-color: white; --avatar-border-color: white;
/* Topbar */ /* Topbar */
--topbar-bg: rgb(255, 255, 255, 0.7); --topbar-bg: rgb(255 255 255 / 70%);
--topbar-text-color: rgb(78, 78, 78); --topbar-text-color: rgb(78 78 78);
--search-border-color: rgb(240, 240, 240); --search-border-color: rgb(240 240 240);
--search-icon-color: #c2c6cc; --search-icon-color: #c2c6cc;
--input-focus-border-color: #b8b8b8; --input-focus-border-color: #b8b8b8;
@@ -62,9 +58,9 @@
--btn-share-color: gray; --btn-share-color: gray;
--btn-share-hover-color: #0d6efd; --btn-share-hover-color: #0d6efd;
--card-bg: white; --card-bg: white;
--card-hovor-bg: #e2e2e2; --card-hover-bg: #e2e2e2;
--card-shadow: rgb(104, 104, 104, 0.05) 0 2px 6px 0, --card-shadow: rgb(104 104 104 / 5%) 0 2px 6px 0,
rgba(211, 209, 209, 0.15) 0 0 0 1px; rgb(211 209 209 / 15%) 0 0 0 1px;
--footnote-target-bg: lightcyan; --footnote-target-bg: lightcyan;
--tb-odd-bg: #fbfcfd; --tb-odd-bg: #fbfcfd;
--tb-border-color: #eaeaea; --tb-border-color: #eaeaea;
@@ -72,29 +68,29 @@
--kbd-wrap-color: #bdbdbd; --kbd-wrap-color: #bdbdbd;
--kbd-text-color: var(--text-color); --kbd-text-color: var(--text-color);
--kbd-bg-color: white; --kbd-bg-color: white;
--prompt-text-color: rgb(46, 46, 46, 0.77); --prompt-text-color: rgb(46 46 46 / 77%);
--prompt-tip-bg: rgb(123, 247, 144, 0.2); --prompt-tip-bg: rgb(123 247 144 / 20%);
--prompt-tip-icon-color: #03b303; --prompt-tip-icon-color: #03b303;
--prompt-info-bg: #e1f5fe; --prompt-info-bg: #e1f5fe;
--prompt-info-icon-color: #0070cb; --prompt-info-icon-color: #0070cb;
--prompt-warning-bg: rgb(255, 243, 205); --prompt-warning-bg: rgb(255 243 205);
--prompt-warning-icon-color: #ef9c03; --prompt-warning-icon-color: #ef9c03;
--prompt-danger-bg: rgb(248, 215, 218, 0.56); --prompt-danger-bg: rgb(248 215 218 / 56%);
--prompt-danger-icon-color: #df3c30; --prompt-danger-icon-color: #df3c30;
/* Tags */ /* Tags */
--tag-border: #dee2e6; --tag-border: #dee2e6;
--tag-shadow: var(--btn-border-color); --tag-shadow: var(--btn-border-color);
--tag-hover: rgb(222, 226, 230); --tag-hover: rgb(222 226 230);
--search-tag-bg: #f8f9fa; --search-tag-bg: #f8f9fa;
/* Categories */ /* Categories */
--categories-border: rgba(0, 0, 0, 0.125); --categories-border: rgb(0 0 0 / 12.5%);
--categories-hover-bg: var(--btn-border-color); --categories-hover-bg: var(--btn-border-color);
--categories-icon-hover-color: darkslategray; --categories-icon-hover-color: darkslategray;
/* Archive */ /* Archive */
--timeline-color: rgba(0, 0, 0, 0.075); --timeline-color: rgb(0 0 0 / 7.5%);
--timeline-node-bg: #c2c6cc; --timeline-node-bg: #c2c6cc;
--timeline-year-dot-color: #ffffff; --timeline-year-dot-color: #ffffff;
@@ -103,7 +99,7 @@
--highlight-bg-color: #f6f8fa; --highlight-bg-color: #f6f8fa;
--highlighter-rouge-color: #3f596f; --highlighter-rouge-color: #3f596f;
--highlight-lineno-color: #9e9e9e; --highlight-lineno-color: #9e9e9e;
--inline-code-bg: rgba(25, 25, 28, 0.05); --inline-code-bg: rgb(25 25 28 / 5%);
--code-color: #3a3a3a; --code-color: #3a3a3a;
--code-header-text-color: #a3a3a3; --code-header-text-color: #a3a3a3;
--code-header-muted-color: #e5e5e5; --code-header-muted-color: #e5e5e5;
@@ -111,7 +107,7 @@
--clipboard-checked-color: #43c743; --clipboard-checked-color: #43c743;
[class^='prompt-'] { [class^='prompt-'] {
--link-underline-color: rgb(219, 216, 216); --link-underline-color: rgb(219 216 216);
} }
.dark { .dark {

View File

@@ -2,13 +2,8 @@
layout: page layout: page
title: "404: Page not found" title: "404: Page not found"
permalink: /404.html permalink: /404.html
redirect_from:
- /norobots/
- /assets/
- /posts/
--- ---
{% include lang.html %} {% include lang.html %}
<p class="lead">{{ site.data.locales[lang].not_found.statement }}</p> <p class="lead">{{ site.data.locales[lang].not_found.statement }}</p>

View File

@@ -1,6 +1,7 @@
--- ---
--- ---
/* prettier-ignore */
@use 'main @use 'main
{%- if jekyll.environment == 'production' -%} {%- if jekyll.environment == 'production' -%}
.bundle .bundle

View File

@@ -10,11 +10,8 @@ swcache: true
"url": {{ post.url | relative_url | jsonify }}, "url": {{ post.url | relative_url | jsonify }},
"categories": {{ post.categories | join: ', ' | jsonify }}, "categories": {{ post.categories | join: ', ' | jsonify }},
"tags": {{ post.tags | join: ', ' | jsonify }}, "tags": {{ post.tags | join: ', ' | jsonify }},
"date": "{{ post.date }}", "date": {{ post.date | jsonify }},
{% include no-linenos.html content=post.content %} "content": {% include post-description.html json=true %}
{% assign _content = content | strip_html | strip_newlines %}
"snippet": {{ _content | truncate: 200 | jsonify }},
"content": {{ _content | jsonify }}
}{% unless forloop.last %},{% endunless %} }{% unless forloop.last %},{% endunless %}
{% endfor %} {% endfor %}
] ]

View File

@@ -1,5 +1,54 @@
# Changelog # Changelog
## [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))
## [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))
## [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))
## [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))
## [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))
## [7.2.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.0...v7.2.1) (2024-12-05) ## [7.2.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.2.0...v7.2.1) (2024-12-05)
### Bug Fixes ### Bug Fixes

35
eslint.config.js Normal file
View File

@@ -0,0 +1,35 @@
import { defineConfig, globalIgnores } from 'eslint/config';
import js from '@eslint/js';
import globals from 'globals';
export default defineConfig([
globalIgnores(['assets/*', 'node_modules/*', '_site/*']),
js.configs.recommended,
{
rules: {
semi: ['error', 'always'],
quotes: ['error', 'single']
},
languageOptions: {
globals: {
...globals.browser,
...globals.node
}
}
},
{
files: ['_javascript/**/*.js'],
languageOptions: {
globals: {
ClipboardJS: 'readonly',
GLightbox: 'readonly',
Theme: 'readonly',
dayjs: 'readonly',
mermaid: 'readonly',
tocbot: 'readonly',
importScripts: 'readonly',
swconf: 'readonly'
}
}
}
]);

View File

@@ -2,7 +2,7 @@
Gem::Specification.new do |spec| Gem::Specification.new do |spec|
spec.name = "jekyll-theme-chirpy" spec.name = "jekyll-theme-chirpy"
spec.version = "7.2.1" spec.version = "7.3.1"
spec.authors = ["Cotes Chung"] spec.authors = ["Cotes Chung"]
spec.email = ["cotes.chung@gmail.com"] spec.email = ["cotes.chung@gmail.com"]
@@ -27,7 +27,6 @@ Gem::Specification.new do |spec|
spec.add_runtime_dependency "jekyll", "~> 4.3" spec.add_runtime_dependency "jekyll", "~> 4.3"
spec.add_runtime_dependency "jekyll-paginate", "~> 1.1" spec.add_runtime_dependency "jekyll-paginate", "~> 1.1"
spec.add_runtime_dependency "jekyll-redirect-from", "~> 0.16"
spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.8" spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.8"
spec.add_runtime_dependency "jekyll-archives", "~> 2.2" spec.add_runtime_dependency "jekyll-archives", "~> 2.2"
spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4" spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4"

View File

@@ -1,6 +1,6 @@
{ {
"name": "jekyll-theme-chirpy", "name": "jekyll-theme-chirpy",
"version": "7.2.1", "version": "7.3.1",
"description": "A minimal, responsive, and feature-rich Jekyll theme for technical writing.", "description": "A minimal, responsive, and feature-rich Jekyll theme for technical writing.",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -13,41 +13,45 @@
"url": "https://github.com/cotes2020/jekyll-theme-chirpy/issues" "url": "https://github.com/cotes2020/jekyll-theme-chirpy/issues"
}, },
"homepage": "https://github.com/cotes2020/jekyll-theme-chirpy/", "homepage": "https://github.com/cotes2020/jekyll-theme-chirpy/",
"type": "module",
"scripts": { "scripts": {
"build": "concurrently npm:build:*", "build": "concurrently npm:build:*",
"build:css": "node purgecss.js", "build:css": "node purgecss.js",
"build:js": "rollup -c --bundleConfigAsCjs --environment BUILD:production", "build:js": "rollup -c --bundleConfigAsCjs --environment BUILD:production",
"watch:js": "rollup -c --bundleConfigAsCjs -w", "watch:js": "rollup -c --bundleConfigAsCjs -w",
"lint:js": "eslint",
"lint:scss": "stylelint _sass/**/*.scss", "lint:scss": "stylelint _sass/**/*.scss",
"lint:fix:scss": "npm run lint:scss -- --fix", "lint:fix:scss": "npm run lint:scss -- --fix",
"test": "npm run lint:scss", "test": "npm run lint:js && npm run lint:scss",
"prepare": "husky" "prepare": "husky"
}, },
"dependencies": { "dependencies": {
"@popperjs/core": "^2.11.8", "@popperjs/core": "^2.11.8",
"bootstrap": "^5.3.3" "bootstrap": "^5.3.6"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.26.0", "@babel/core": "^7.27.1",
"@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.27.1",
"@babel/plugin-transform-private-methods": "^7.25.9", "@babel/plugin-transform-private-methods": "^7.27.1",
"@babel/preset-env": "^7.26.0", "@babel/preset-env": "^7.27.2",
"@commitlint/cli": "^19.6.0", "@commitlint/cli": "^19.8.1",
"@commitlint/config-conventional": "^19.6.0", "@commitlint/config-conventional": "^19.8.1",
"@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^15.3.0", "@rollup/plugin-node-resolve": "^16.0.1",
"@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-terser": "^0.4.4",
"@semantic-release/changelog": "^6.0.3", "@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3", "@semantic-release/exec": "^7.1.0",
"@semantic-release/git": "^10.0.1", "@semantic-release/git": "^10.0.1",
"concurrently": "^9.1.0", "concurrently": "^9.1.2",
"conventional-changelog-conventionalcommits": "^8.0.0", "conventional-changelog-conventionalcommits": "^8.0.0",
"eslint": "^9.27.0",
"globals": "^16.1.0",
"husky": "^9.1.7", "husky": "^9.1.7",
"purgecss": "^7.0.2", "purgecss": "^7.0.2",
"rollup": "^4.27.4", "rollup": "^4.41.0",
"semantic-release": "^24.2.0", "semantic-release": "^24.2.4",
"stylelint": "^16.10.0", "stylelint": "^16.19.1",
"stylelint-config-standard-scss": "^13.1.0" "stylelint-config-standard-scss": "^15.0.1"
}, },
"prettier": { "prettier": {
"trailingComma": "none" "trailingComma": "none"

View File

@@ -1,5 +1,6 @@
const fs = require('fs').promises; import { promises as fs } from 'fs';
const { PurgeCSS } = require('purgecss'); import { PurgeCSS } from 'purgecss';
const DIST_PATH = '_sass/vendors'; const DIST_PATH = '_sass/vendors';
const output = `${DIST_PATH}/_bootstrap.scss`; const output = `${DIST_PATH}/_bootstrap.scss`;

View File

@@ -11,7 +11,7 @@ const DIST = 'assets/js/dist';
const banner = `/*! const banner = `/*!
* ${pkg.name} v${pkg.version} | © ${pkg.since} ${pkg.author} | ${pkg.license} Licensed | ${pkg.homepage} * ${pkg.name} v${pkg.version} | © ${pkg.since} ${pkg.author} | ${pkg.license} Licensed | ${pkg.homepage}
*/`; */`;
const frontmatter = `---\npermalink: /:basename\n---\n`; const frontmatter = '---\npermalink: /:basename\n---\n';
const isProd = process.env.BUILD === 'production'; const isProd = process.env.BUILD === 'production';
let hasWatched = false; let hasWatched = false;
@@ -80,7 +80,7 @@ export default [
build('page'), build('page'),
build('post'), build('post'),
build('misc'), build('misc'),
build('theme', { src: `${SRC_DEFAULT}/modules`, outputName: 'Theme' }), build('theme', { outputName: 'Theme' }),
build('app', { src: SRC_PWA, jekyll: true }), build('app', { src: SRC_PWA, jekyll: true }),
build('sw', { src: SRC_PWA, jekyll: true }) build('sw', { src: SRC_PWA, jekyll: true })
]; ];