1
0
mirror of https://github.com/cotes2020/jekyll-theme-chirpy.git synced 2025-10-21 10:13:58 +00:00

Compare commits

..

No commits in common. "master" and "v7.3.1" have entirely different histories.

62 changed files with 234 additions and 815 deletions

1
.github/FUNDING.yml vendored
View File

@ -1 +1,2 @@
ko_fi: coteschung
custom: https://sponsor.cotes.page

View File

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

View File

@ -31,7 +31,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
fetch-depth: 0 # for posts's lastmod
@ -42,7 +42,7 @@ jobs:
bundler-cache: true
- name: Setup Node
uses: actions/setup-node@v5
uses: actions/setup-node@v4
with:
node-version: lts/*

View File

@ -24,11 +24,11 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@v3
with:
languages: "${{ matrix.language }}"
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).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"

View File

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

View File

@ -1,30 +0,0 @@
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

View File

@ -1,26 +0,0 @@
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:
- name: Checkout Code
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Check PR Content
id: intercept
uses: actions/github-script@v8
uses: actions/github-script@v7
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 });
const script = require('.github/workflows/scripts/pr-filter.js');
await script({ github, context, core });

View File

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

View File

@ -20,7 +20,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v10
- uses: actions/stale@v9
with:
# 60 days before marking issues/PRs stale
days-before-close: -1 # does not close automatically

View File

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

View File

@ -8,7 +8,7 @@ theme: jekyll-theme-chirpy
# otherwise, the layout language will use the default value of 'en'.
lang: en
# Change to your timezone https://zones.arilyn.cc
# Change to your timezone https://kevinnovak.github.io/Time-Zone-Picker
timezone: Asia/Shanghai
# jekyll-seo-tag settings https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md

View File

@ -1,86 +0,0 @@
# 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

View File

@ -1,90 +0,0 @@
# 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: ޕޯސްޓްތައް

View File

@ -37,10 +37,10 @@ copyright:
# Displayed in the footer
brief: برخی حقوق محفوظ است.
verbose: >-
به‌جز مواردی که خلاف آن ذکر شده باشد، محتوای پست‌های این وبلاگ
مگر اینکه خلاف آن ذکر شده باشد، پست‌های وبلاگ در این سایت
تحت مجوز Creative Commons Attribution 4.0 International (CC BY 4.0) توسط نویسنده منتشر شده‌اند.
meta: با استفاده از قالب :THEME برای :PLATFORM
meta: با استفاده از :PLATFORM قالب :THEME
not_found:
statement: متأسفیم، لینک زیر معتبر نیست یا به صفحه‌ای که وجود ندارد اشاره می‌کند.
@ -55,11 +55,11 @@ post:
written_by: نوشته شده توسط
posted: منتشر شده
updated: به‌روزرسانی شده
words: کلمه
pageview_measure: بازدید
words: کلمات
pageview_measure: بازدیدها
read_time:
unit: "دقیقه "
prompt: " زمان مطالعه"
unit: دقیقه
prompt: زمان مطالعه
relate_posts: بیشتر بخوانید
share: اشتراک‌گذاری
button:
@ -85,7 +85,7 @@ df:
categories:
category_measure:
singular: دسته‌بندی
plural: دسته‌بندی‌
plural: دسته‌بندی‌ها
post_measure:
singular: پست
plural: پست‌
plural: پست‌ها

View File

@ -1,91 +0,0 @@
# 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: بابەت

View File

@ -1,90 +0,0 @@
# 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: لیکنې

View File

@ -1,90 +0,0 @@
# 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

@ -20,24 +20,24 @@ webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Sour
# Libraries
toc:
css: https://cdn.jsdelivr.net/npm/tocbot@4.36.4/dist/tocbot.min.css
js: https://cdn.jsdelivr.net/npm/tocbot@4.36.4/dist/tocbot.min.js
css: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css
js: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.js
fontawesome:
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7.1.0/css/all.min.css
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css
search:
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
mermaid:
js: https://cdn.jsdelivr.net/npm/mermaid@11.12.0/dist/mermaid.min.js
js: https://cdn.jsdelivr.net/npm/mermaid@11.4.0/dist/mermaid.min.js
dayjs:
js:
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/dayjs.min.js
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/locale/:LOCALE.js
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/plugin/relativeTime.js
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/plugin/localizedFormat.js
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js
glightbox:
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css

View File

@ -9,7 +9,7 @@
{% endunless %}
<p>
<audio class="embed-audio file" controls>
<audio class="embed-audio" controls>
{% assign extension = src | split: '.' | last %}
{% assign types = extension | concat: types %}

View File

@ -1,22 +0,0 @@
{% 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>

View File

@ -5,10 +5,15 @@
{% 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="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 %}
<link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
{% 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">

View File

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

View File

@ -15,9 +15,7 @@
{%- if url -%}
{% unless url contains ':' %}
{%- comment -%} Add media resources subpath prefix {%- endcomment -%}
{% if include.subpath %}
{% assign url = include.subpath | append: '/' | append: url %}
{% endif %}
{% assign url = include.subpath | default: '' | append: '/' | append: url %}
{%- comment -%} Prepend CND URL {%- endcomment -%}
{% if site.cdn %}

View File

@ -10,7 +10,7 @@
fetch(url)
.then((response) => response.json())
.then((data) => {
const count = data.count.replace(/\D/g, '');
const count = data.count.replace(/\s/g, '');
pv.innerText = new Intl.NumberFormat().format(count);
})
.catch((error) => {

View File

@ -0,0 +1,30 @@
{%- comment -%}
Get post description or generate it from the post content.
{%- endcomment -%}
{%- capture description -%}
{%- if post.description -%}
{{- post.description -}}
{%- else -%}
{% comment %}
Remove the line number of 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 -%}
{{- content | strip_html | newline_to_br | replace: '<br />', ' ' | strip_newlines -}}
{%- endif -%}
{%- endcapture -%}
{%- 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

@ -1,39 +0,0 @@
{%- 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 -%}

View File

@ -163,7 +163,7 @@
{% if page.layout == 'home' %}
<!-- create the image wrapper -->
{% assign _wrapper_start = '<div class="preview-img ' | append: _wrapper_class | append: '">' %}
{% assign _wrapper_start = '<div class="preview-img ' | append: _class | append: '">' %}
{% assign _img_content = _img_content | append: _wrapper_start %}
{% assign _right = _right | prepend: '></div' %}

View File

@ -82,7 +82,7 @@
{% include datetime.html date=post.date lang=include.lang %}
<h4 class="pt-0 my-2">{{ post.title }}</h4>
<div class="text-muted">
<p>{% include post-summary.html %}</p>
<p>{% include post-description.html %}</p>
</div>
</div>
</a>

View File

@ -52,21 +52,13 @@
{% endunless %}
{% for entry in site.data.contact %}
{%- assign url = null -%}
{% case entry.type %}
{% when 'github', 'twitter' %}
{%- unless site[entry.type].username -%}
{%- continue -%}
{%- endunless -%}
{%- capture url -%}
https://{{ entry.type }}.com/{{ site[entry.type].username }}
{%- endcapture -%}
{% when 'email' %}
{%- unless site.social.email -%}
{%- continue -%}
{%- endunless -%}
{%- assign email = site.social.email | split: '@' -%}
{% assign email = site.social.email | split: '@' %}
{%- capture url -%}
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
{%- endcapture -%}

View File

@ -55,15 +55,16 @@ refactor: true
{% if post.image %}
{% assign src = post.image.path | default: post.image %}
{% capture src %}{% include media-url.html src=src subpath=post.media_subpath %}{% endcapture %}
{% unless src contains '//' %}
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
{% endunless %}
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
{% assign lqip = null %}
{% if post.image.lqip %}
{% capture lqip_url %}{% include media-url.html src=post.image.lqip subpath=post.media_subpath %}{% endcapture %}
{% assign lqip = 'lqip="' | append: lqip_url | append: '"' %}
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
{% endif %}
<div class="col-md-5">
@ -78,7 +79,7 @@ refactor: true
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
<div class="card-text content mt-0 mb-3">
<p>{% include post-summary.html %}</p>
<p>{% include post-description.html %}</p>
</div>
<div class="post-meta flex-grow-1 d-flex align-items-end">

View File

@ -256,9 +256,11 @@ For normal images:
```
{: .nolineno }
### Social Media Platforms
### Video
You can embed video/audio from social media platforms with the following syntax:
#### Social Media Platform
You can embed videos from social media platforms with the following syntax:
```liquid
{% include embed/{Platform}.html id='{ID}' %}
@ -266,21 +268,15 @@ You can embed video/audio from social media platforms with the following syntax:
Where `Platform` is the lowercase of the platform name, and `ID` is the video ID.
The following table shows how to get the two parameters we need in a given video/audio URL, and you can also know the currently supported video platforms.
The following table shows how to get the two parameters we need in a given video URL, and you can also know the currently supported video platforms.
| Video URL | Platform | ID |
| -------------------------------------------------------------------------------------------------------------------------- | ---------- | :----------------------- |
| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` |
| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` |
| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` |
| [https://www.open.**spotify**.com/track/**3OuMIIFP5TxM8tLXMWYPGV**](https://open.spotify.com/track/3OuMIIFP5TxM8tLXMWYPGV) | `spotify` | `3OuMIIFP5TxM8tLXMWYPGV` |
| Video URL | Platform | ID |
| -------------------------------------------------------------------------------------------------- | ---------- | :------------- |
| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` |
| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` |
| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` |
Spotify supports some additional parameters:
- `compact` - to display compact player instead (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' compact=1 %}`);
- `dark` - to force dark theme (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' dark=1 %}`).
### Video Files
#### Video Files
If you want to embed a video file directly, use the following syntax:
@ -314,7 +310,7 @@ Consider an example using all of the above:
%}
```
### Audio Files
### Audios
If you want to embed an audio file directly, use the following syntax:

View File

@ -10,26 +10,25 @@ The [favicons](https://www.favicon-generator.org/about/) of [**Chirpy**](https:/
## Generate the favicon
Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button <kbd>Pick your favicon image</kbd> to upload your image file.
Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button <kbd>Select your Favicon image</kbd> to upload your image file.
In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button <kbd>Next →</kbd> to generate the favicon.
In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button <kbd>Generate your Favicons and HTML code</kbd> to generate the favicon.
## Download & Replace
Download the generated package, unzip and delete the following file(s) from the extracted files:
Download the generated package, unzip and delete the following two from the extracted files:
- `browserconfig.xml`{: .filepath}
- `site.webmanifest`{: .filepath}
And then copy the remaining image files (`.PNG`{: .filepath}, `.ICO`{: .filepath} and `.SVG`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one.
And then copy the remaining image files (`.PNG`{: .filepath} and `.ICO`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one.
The following table will help you understand the changes to the favicon files:
| File(s) | From Online Tool | From Chirpy |
| ------- | :--------------: | :---------: |
| `*.PNG` | ✓ | ✗ |
| `*.ICO` | ✓ | ✗ |
| `*.SVG` | ✓ | ✗ |
| File(s) | From Online Tool | From Chirpy |
|---------------------|:---------------------------------:|:-----------:|
| `*.PNG` | ✓ | ✗ |
| `*.ICO` | ✓ | ✗ |
<!-- markdownlint-disable-next-line -->
> ✓ means keep, ✗ means delete.

View File

@ -103,7 +103,7 @@ main {
width: 100%;
height: 100%;
position: absolute;
background-color: var(--card-hover-bg);
background-color: var(--card-hovor-bg);
opacity: 0;
transition: opacity 0.35s ease-in-out;
}
@ -314,14 +314,7 @@ main {
.embed-audio {
width: 100%;
&.file {
display: block;
}
&.spotify {
border-radius: 14px;
}
display: block;
@extend %img-caption;
}
@ -356,7 +349,7 @@ main {
}
.disabled {
color: rgb(206 196 196);
color: rgb(206, 196, 196);
pointer-events: auto;
cursor: not-allowed;
}

View File

@ -24,6 +24,7 @@
margin-bottom: 0;
font-size: v.$code-font-size;
line-height: 1.4rem;
word-wrap: normal; /* Fixed Safari overflow-x */
}
table {
@ -65,7 +66,7 @@ code {
&.highlighter-rouge {
font-size: v.$code-font-size;
padding: 3px 5px;
overflow-wrap: break-word;
word-break: break-word;
border-radius: v.$radius-sm;
background-color: var(--inline-code-bg);
}
@ -242,7 +243,7 @@ div {
}
&:not([timeout]):hover {
background-color: rgb(128 128 128 / 37%);
background-color: rgba(128, 128, 128, 0.37);
i {
color: white;

View File

@ -26,7 +26,9 @@
}
}
font-size: 1rem + (5 - $i) * $size-factor;
& {
font-size: 1rem + (5 - $i) * $size-factor;
}
} @else {
font-size: 1.05rem;
}
@ -236,7 +238,7 @@ main {
border-spacing: 0;
thead {
border-bottom: solid 2px rgb(210 215 217 / 75%);
border-bottom: solid 2px rgba(210, 215, 217, 0.75);
th {
@extend %table-cell;

View File

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

View File

@ -134,6 +134,9 @@
.page-link {
color: var(--btn-patinator-text-color);
padding: 0 0.6rem;
display: -webkit-box;
-webkit-box-pack: center;
-webkit-box-align: center;
border-radius: 0.5rem;
border: 0;
background-color: inherit;
@ -157,7 +160,7 @@
cursor: not-allowed;
.page-link {
color: rgb(108 117 125 / 57%);
color: rgba(108, 117, 125, 0.57);
}
}
} /* .page-item */

View File

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

View File

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

View File

@ -45,7 +45,7 @@ permalink: /feed.xml
{% endfor %}
{% endif %}
<summary>{% include post-summary.html max_length=400 %}</summary>
<summary>{% include post-description.html max_length=400 %}</summary>
</entry>
{% endfor %}

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
assets/img/favicons/apple-touch-icon.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,13 @@
---
layout: compress
---
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="{{ '/assets/img/favicons/mstile-150x150.png' | relative_url }}" />
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

BIN
assets/img/favicons/favicon.ico Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

10
assets/img/favicons/site.webmanifest Executable file → Normal file
View File

@ -10,17 +10,15 @@ layout: compress
"description": "{{ site.description }}",
"icons": [
{
"src": "{{ favicon_path }}/web-app-manifest-192x192.png",
"src": "{{ favicon_path }}/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "{{ favicon_path }}/web-app-manifest-512x512.png",
"src": "{{ favicon_path }}/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"type": "image/png"
}],
"start_url": "{{ '/index.html' | relative_url }}",
"theme_color": "#2a1e6b",
"background_color": "#ffffff",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

View File

@ -11,8 +11,7 @@ swcache: true
"categories": {{ post.categories | join: ', ' | jsonify }},
"tags": {{ post.tags | join: ', ' | jsonify }},
"date": {{ post.date | jsonify }},
{% capture content -%}{% include post-summary.html full_text=true %}{%- endcapture -%}
"content": {{ content | jsonify }}
"content": {% include post-description.html json=true %}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]

@ -1 +1 @@
Subproject commit 93e03454edf879bdf8abe34b9715b9fea4da0ee8
Subproject commit 02f4ada65dc75197654c3265a37a6f5fbc39f17c

View File

@ -1,21 +1,5 @@
# Changelog
## [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))
## [7.3.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.3.0...v7.3.1) (2025-07-26)
### Bug Fixes

View File

@ -1,35 +1,5 @@
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,
export default [
{
rules: {
semi: ['error', 'always'],
quotes: ['error', 'single']
},
languageOptions: {
globals: {
...globals.browser,
...globals.node
}
}
},
{
files: ['_javascript/**/*.js'],
languageOptions: {
globals: {
...globals.serviceworker,
ClipboardJS: 'readonly',
GLightbox: 'readonly',
Theme: 'readonly',
dayjs: 'readonly',
mermaid: 'readonly',
tocbot: 'readonly',
swconf: 'readonly'
}
}
files: ['_javascript/**/*.js']
}
]);
];

View File

@ -2,7 +2,7 @@
Gem::Specification.new do |spec|
spec.name = "jekyll-theme-chirpy"
spec.version = "7.4.0"
spec.version = "7.3.1"
spec.authors = ["Cotes Chung"]
spec.email = ["cotes.chung@gmail.com"]

View File

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

View File

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

View File

@ -11,7 +11,7 @@ const DIST = 'assets/js/dist';
const banner = `/*!
* ${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';
let hasWatched = false;