1
0
mirror of https://github.com/cotes2020/jekyll-theme-chirpy.git synced 2026-03-22 10:58:14 +00:00

Merge branch 'master' into production

This commit is contained in:
Cotes Chung
2026-03-16 04:12:56 +08:00
32 changed files with 96 additions and 80 deletions

View File

@@ -15,7 +15,8 @@ updates:
schedule: schedule:
interval: "weekly" interval: "weekly"
- package-ecosystem: "github-actions" - package-ecosystem: "github-actions"
directory: "/" directories:
- "/.github/workflows/**"
groups: groups:
gh-actions: gh-actions:
update-types: update-types:

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@v5 - uses: actions/checkout@v6
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
with: with:
ruby-version: 3.3 ruby-version: 3.4
bundler-cache: true bundler-cache: true
- uses: actions/setup-node@v5 - uses: actions/setup-node@v6
with: with:
node-version: lts/* node-version: lts/*

View File

@@ -27,11 +27,11 @@ jobs:
strategy: strategy:
matrix: matrix:
ruby: ["3.1", "3.2", "3.3"] ruby: ["3.3", "3.4"]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v6
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@v5 uses: actions/setup-node@v6
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@v5 uses: actions/checkout@v6
# 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@v5 - uses: actions/checkout@v6
- uses: wagoid/commitlint-github-action@v6 - uses: wagoid/commitlint-github-action@v6

View File

@@ -16,10 +16,10 @@ jobs:
lint-js: lint-js:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v6
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v5 uses: actions/setup-node@v6
with: with:
node-version: lts/* node-version: lts/*

View File

@@ -12,10 +12,10 @@ jobs:
lint-scss: lint-scss:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v6
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v5 uses: actions/setup-node@v6
with: with:
node-version: lts/* node-version: lts/*

View File

@@ -13,7 +13,7 @@ jobs:
steps: steps:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v5 uses: actions/checkout@v6
- name: Check PR Content - name: Check PR Content
id: intercept id: intercept

View File

@@ -28,7 +28,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
# submodules: true # submodules: true
@@ -37,12 +37,12 @@ jobs:
- name: Setup Pages - name: Setup Pages
id: pages id: pages
uses: actions/configure-pages@v4 uses: actions/configure-pages@v5
- name: Setup Ruby - name: Setup Ruby
uses: ruby/setup-ruby@v1 uses: ruby/setup-ruby@v1
with: with:
ruby-version: 3.3 ruby-version: 3.4
bundler-cache: true bundler-cache: true
- name: Build site - name: Build site
@@ -57,7 +57,7 @@ jobs:
\-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" \-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/"
- name: Upload site artifact - name: Upload site artifact
uses: actions/upload-pages-artifact@v3 uses: actions/upload-pages-artifact@v4
with: with:
path: "_site${{ steps.pages.outputs.base_path }}" path: "_site${{ steps.pages.outputs.base_path }}"

View File

@@ -6,9 +6,9 @@ gemspec
gem "html-proofer", "~> 5.0", group: :test gem "html-proofer", "~> 5.0", group: :test
platforms :mingw, :x64_mingw, :mswin, :jruby do platforms :windows, :jruby do
gem "tzinfo", ">= 1", "< 3" gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data" gem "tzinfo-data"
end end
gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin] gem "wdm", "~> 0.2.0", :platforms => [:windows]

View File

@@ -36,6 +36,7 @@ social:
# It will be displayed as the default author of the posts and the copyright owner in the Footer # It will be displayed as the default author of the posts and the copyright owner in the Footer
name: your_full_name name: your_full_name
email: example@domain.com # change to your email address email: example@domain.com # change to your email address
fediverse_handle: # fill in your fediverse handle. E.g. "@username@domain.com"
links: links:
# The first element serves as the copyright owner's link # The first element serves as the copyright owner's link
- https://twitter.com/username # change to your Twitter homepage - https://twitter.com/username # change to your Twitter homepage

View File

@@ -24,20 +24,20 @@ toc:
js: https://cdn.jsdelivr.net/npm/tocbot@4.36.4/dist/tocbot.min.js js: https://cdn.jsdelivr.net/npm/tocbot@4.36.4/dist/tocbot.min.js
fontawesome: 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@7.2.0/css/all.min.css
search: search:
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
mermaid: mermaid:
js: https://cdn.jsdelivr.net/npm/mermaid@11.12.0/dist/mermaid.min.js js: https://cdn.jsdelivr.net/npm/mermaid@11.13.0/dist/mermaid.min.js
dayjs: dayjs:
js: js:
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/dayjs.min.js common: https://cdn.jsdelivr.net/npm/dayjs@1.11.20/dayjs.min.js
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/locale/:LOCALE.js locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.20/locale/:LOCALE.js
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/plugin/relativeTime.js relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.20/plugin/relativeTime.js
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.18/plugin/localizedFormat.js localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.20/plugin/localizedFormat.js
glightbox: glightbox:
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css

View File

@@ -1,6 +1,6 @@
<!-- <!--
Date format snippet Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js See: ${JS_ROOT}/modules/components/locale-datetime.js
--> -->
{% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %} {% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}

View File

@@ -50,11 +50,24 @@
{{ seo_tags }} {{ seo_tags }}
{%- if site.social.fediverse_handle %}
<!-- Fediverse handle/creator -->
<meta name="fediverse:creator" content="{{ site.social.fediverse_handle }}">
{% endif %}
<title> <title>
{%- unless page.layout == 'home' -%} {%- unless page.layout == 'home' -%}
{{ page.title | append: ' | ' }} {%- capture title -%}
{%- if page.collection == 'tabs' -%}
{%- assign tab_key = page.title | downcase -%}
{{- site.data.locales[include.lang].tabs[tab_key] -}}
{%- else -%}
{{- page.title -}}
{%- endif -%}
{%- endcapture -%}
{{- title | append: ' | ' -}}
{%- endunless -%} {%- endunless -%}
{{ site.title }} {{- site.title -}}
</title> </title>
{% include_cached favicons.html %} {% include_cached favicons.html %}

View File

@@ -1,9 +1,7 @@
{% comment %} {% comment %}
Convert the alias of the syntax language to the official name Convert the alias of the syntax language to the official name
See: <https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers> See: <https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers>
{% endcomment %} {% endcomment %}
{% assign _lang = include.language | default: '' %} {% assign _lang = include.language | default: '' %}
@@ -54,7 +52,7 @@
{% when 'tex' %} {% when 'tex' %}
{{ 'TeX' }} {{ 'TeX' }}
{% when 'latex' %} {% when 'latex' %}
{{ 'LaTex' }} {{ 'LaTeX' }}
{% when 'ts', 'typescript' %} {% when 'ts', 'typescript' %}
{{ 'TypeScript' }} {{ 'TypeScript' }}
{% when 'vb', 'visualbasic' %} {% when 'vb', 'visualbasic' %}

View File

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

View File

@@ -1,4 +1,4 @@
<!-- The paginator for post list on HomgPage. --> <!-- The paginator for post list on HomePage. -->
<nav aria-label="Page Navigation"> <nav aria-label="Page Navigation">
<ul class="pagination align-items-center mt-4 mb-0"> <ul class="pagination align-items-center mt-4 mb-0">

View File

@@ -173,7 +173,7 @@
{% assign _parent = _right | slice: 1, 4 %} {% assign _parent = _right | slice: 1, 4 %}
{% if _parent == '</a>' %} {% if _parent == '</a>' %}
<!-- add class to exist <a> tag --> <!-- add class to existing <a> tag -->
{% assign _size = _img_content | size | minus: 1 %} {% assign _size = _img_content | size | minus: 1 %}
{% capture _class %} {% capture _class %}
class="img-link{% unless _lqip %} shimmer{% endunless %}" class="img-link{% unless _lqip %} shimmer{% endunless %}"

View File

@@ -7,4 +7,4 @@ export { initToc } from './components/toc';
export { loadMermaid } from './components/mermaid'; export { loadMermaid } from './components/mermaid';
export { modeWatcher } from './components/mode-toggle'; export { modeWatcher } from './components/mode-toggle';
export { back2top } from './components/back-to-top'; export { back2top } from './components/back-to-top';
export { loadTooptip } from './components/tooltip-loader'; export { loadTooltip } from './components/tooltip-loader';

View File

@@ -8,7 +8,7 @@ const lightImages = '.popup:not(.dark)';
const darkImages = '.popup:not(.light)'; const darkImages = '.popup:not(.light)';
let selector = lightImages; let selector = lightImages;
function updateImages(current, reverse) { function swapImages(current, reverse) {
if (selector === lightImages) { if (selector === lightImages) {
selector = darkImages; selector = darkImages;
} else { } else {
@@ -19,7 +19,7 @@ function updateImages(current, reverse) {
reverse = GLightbox({ selector: `${selector}` }); reverse = GLightbox({ selector: `${selector}` });
} }
[current, reverse] = [reverse, current]; return [reverse, current];
} }
export function imgPopup() { export function imgPopup() {
@@ -43,7 +43,7 @@ export function imgPopup() {
window.addEventListener('message', (event) => { window.addEventListener('message', (event) => {
if (event.source === window && event.data && event.data.id === Theme.ID) { if (event.source === window && event.data && event.data.id === Theme.ID) {
updateImages(current, reverse); [current, reverse] = swapImages(current, reverse);
} }
}); });
} }

View File

@@ -1,5 +1,5 @@
/** /**
* This script make #search-result-wrapper switch to unload or shown automatically. * This script makes #search-result-wrapper switch to unload or shown automatically.
*/ */
const btnSbTrigger = document.getElementById('sidebar-trigger'); const btnSbTrigger = document.getElementById('sidebar-trigger');

View File

@@ -1,6 +1,6 @@
import Tooltip from 'bootstrap/js/src/tooltip'; import Tooltip from 'bootstrap/js/src/tooltip';
export function loadTooptip() { export function loadTooltip() {
const tooltipTriggerList = document.querySelectorAll( const tooltipTriggerList = document.querySelectorAll(
'[data-bs-toggle="tooltip"]' '[data-bs-toggle="tooltip"]'
); );

View File

@@ -1,7 +1,7 @@
import { back2top, loadTooptip, modeWatcher } from '../components'; import { back2top, loadTooltip, modeWatcher } from '../components';
export function basic() { export function basic() {
modeWatcher(); modeWatcher();
back2top(); back2top();
loadTooptip(); loadTooltip();
} }

View File

@@ -14,7 +14,7 @@ layout: compress
<!-- `site.alt_lang` can specify a language different from the UI --> <!-- `site.alt_lang` can specify a language different from the UI -->
<html lang="{{ page.lang | default: site.alt_lang | default: site.lang }}" {{ prefer_mode }}> <html lang="{{ page.lang | default: site.alt_lang | default: site.lang }}" {{ prefer_mode }}>
{% include head.html %} {% include head.html lang=lang %}
<body> <body>
{% include sidebar.html lang=lang %} {% include sidebar.html lang=lang %}

View File

@@ -99,7 +99,7 @@ Moon
## Footnote ## Footnote
Click the hook will locate the footnote[^footnote], and here is another footnote[^fn-nth-2]. Clicking the hook will locate the footnote[^footnote], and here is another footnote[^fn-nth-2].
## Inline code ## Inline code
@@ -113,7 +113,8 @@ Here is the `/path/to/the/file.extend`{: .filepath}.
### Common ### Common
```text <!-- markdownlint-disable-next-line MD040 -->
```
This is a common code snippet, without syntax highlight and line number. This is a common code snippet, without syntax highlight and line number.
``` ```

View File

@@ -7,7 +7,7 @@ tags: [writing]
render_with_liquid: false render_with_liquid: false
--- ---
This tutorial will guide you how to write a post in the _Chirpy_ template, and it's worth reading even if you've used Jekyll before, as many features require specific variables to be set. This tutorial will guide you on how to write a post in the _Chirpy_ template, and it's worth reading even if you've used Jekyll before, as many features require specific variables to be set.
## Naming and Path ## Naming and Path
@@ -173,7 +173,7 @@ By default, the image is centered, but you can specify the position by using one
- **Normal position** - **Normal position**
Image will be left aligned in below sample: The image will be left aligned in the below sample:
```markdown ```markdown
![Desktop View](/assets/img/sample/mockup.png){: .normal } ![Desktop View](/assets/img/sample/mockup.png){: .normal }
@@ -277,7 +277,7 @@ The following table shows how to get the two parameters we need in a given video
Spotify supports some additional parameters: Spotify supports some additional parameters:
- `compact` - to display compact player instead (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' compact=1 %}`); - `compact` - to display a 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 %}`). - `dark` - to force dark theme (ex. `{% include embed/spotify.html id='3OuMIIFP5TxM8tLXMWYPGV' dark=1 %}`).
### Video Files ### Video Files
@@ -293,7 +293,7 @@ Where `URL` is a URL to a video file e.g. `/path/to/sample/video.mp4`.
You can also specify additional attributes for the embedded video file. Here is a full list of attributes allowed. You can also specify additional attributes for the embedded video file. Here is a full list of attributes allowed.
- `poster='/path/to/poster.png'` — poster image for a video that is shown while video is downloading - `poster='/path/to/poster.png'` — poster image for a video that is shown while video is downloading
- `title='Text'` — title for a video that appears below the video and looks same as for images - `title='Text'` — title for a video that appears below the video and looks the same as for images
- `autoplay=true` — video automatically begins to play back as soon as it can - `autoplay=true` — video automatically begins to play back as soon as it can
- `loop=true` — automatically seek back to the start upon reaching the end of the video - `loop=true` — automatically seek back to the start upon reaching the end of the video
- `muted=true` — audio will be initially silenced - `muted=true` — audio will be initially silenced
@@ -326,7 +326,7 @@ Where `URL` is a URL to an audio file e.g. `/path/to/audio.mp3`.
You can also specify additional attributes for the embedded audio file. Here is a full list of attributes allowed. You can also specify additional attributes for the embedded audio file. Here is a full list of attributes allowed.
- `title='Text'` — title for an audio that appears below the audio and looks same as for images - `title='Text'` — title for an audio that appears below the audio and looks the same as for images
- `types` — specify the extensions of additional audio formats separated by `|`. Ensure these files exist in the same directory as your primary audio file. - `types` — specify the extensions of additional audio formats separated by `|`. Ensure these files exist in the same directory as your primary audio file.
Consider an example using all of the above: Consider an example using all of the above:

View File

@@ -59,7 +59,7 @@ For Unix-like systems, you can set up the environment natively for optimal perfo
1. Follow the [Jekyll installation guide](https://jekyllrb.com/docs/installation/) to install Jekyll and ensure [Git](https://git-scm.com/) is installed. 1. Follow the [Jekyll installation guide](https://jekyllrb.com/docs/installation/) to install Jekyll and ensure [Git](https://git-scm.com/) is installed.
2. Clone your repository to your local machine. 2. Clone your repository to your local machine.
3. If you forked the theme, install [Node.js][nodejs] and run `bash tools/init.sh` in the root directory to initialize the repository. 3. If you forked the theme, install [Node.js][nodejs] and run `bash tools/init.sh` in the root directory to initialize the repository.
4. Run command `bundle` in the root of your repository to install the dependencies. 4. Run command `bundle install` in the root of your repository to install the dependencies.
## Usage ## Usage
@@ -105,7 +105,7 @@ Before deploying, check the `_config.yml`{: .filepath} file and ensure the `url`
Now you can choose _ONE_ of the following methods to deploy your Jekyll site. Now you can choose _ONE_ of the following methods to deploy your Jekyll site.
### Deploy Using Github Actions ### Deploy Using GitHub Actions
Prepare the following: Prepare the following:

View File

@@ -78,7 +78,7 @@ code {
} }
a > &.highlighter-rouge { a > &.highlighter-rouge {
padding-bottom: 0; /* show link's underlinke */ padding-bottom: 0; /* show link's underline */
color: inherit; color: inherit;
} }
@@ -137,7 +137,8 @@ div[class^='language-'] {
height: v.$code-dot-size; height: v.$code-dot-size;
border-radius: 50%; border-radius: 50%;
background-color: var(--code-header-muted-color); background-color: var(--code-header-muted-color);
box-shadow: (v.$code-dot-size + v.$code-dot-gap) 0 0 box-shadow:
(v.$code-dot-size + v.$code-dot-gap) 0 0
var(--code-header-muted-color), var(--code-header-muted-color),
(v.$code-dot-size + v.$code-dot-gap) * 2 0 0 (v.$code-dot-size + v.$code-dot-gap) * 2 0 0
var(--code-header-muted-color); var(--code-header-muted-color);

View File

@@ -112,7 +112,7 @@
} }
a { a {
/* post title in Archvies */ /* post title in Archives */
margin-left: 2.5rem; margin-left: 2.5rem;
position: relative; position: relative;
top: 0.1rem; top: 0.1rem;

View File

@@ -127,7 +127,7 @@ header {
.share-mastodon { .share-mastodon {
/* See: https://github.com/justinribeiro/share-to-mastodon#properties */ /* See: https://github.com/justinribeiro/share-to-mastodon#properties */
--wc-stm-font-family: v.$font-family-base; --wc-stm-font-family: #{v.$font-family-base};
--wc-stm-dialog-background-color: var(--card-bg); --wc-stm-dialog-background-color: var(--card-bg);
--wc-stm-form-button-border: 1px solid var(--btn-border-color); --wc-stm-form-button-border: 1px solid var(--btn-border-color);
--wc-stm-form-submit-background-color: var(--sidebar-btn-bg); --wc-stm-form-submit-background-color: var(--sidebar-btn-bg);

View File

@@ -30,28 +30,29 @@
"bootstrap": "^5.3.8" "bootstrap": "^5.3.8"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.28.4", "@babel/core": "^7.29.0",
"@babel/plugin-transform-class-properties": "^7.27.1", "@babel/plugin-transform-class-properties": "^7.28.6",
"@babel/plugin-transform-private-methods": "^7.27.1", "@babel/plugin-transform-private-methods": "^7.28.6",
"@babel/preset-env": "^7.28.3", "@babel/preset-env": "^7.29.0",
"@commitlint/cli": "^20.1.0", "@commitlint/cli": "^20.4.4",
"@commitlint/config-conventional": "^20.0.0", "@commitlint/config-conventional": "^20.4.4",
"@rollup/plugin-babel": "^6.1.0", "@eslint/js": "^10.0.0",
"@rollup/plugin-babel": "^7.0.0",
"@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-terser": "^1.0.0",
"@semantic-release/changelog": "^6.0.3", "@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^7.1.0", "@semantic-release/exec": "^7.1.0",
"@semantic-release/git": "^10.0.1", "@semantic-release/git": "^10.0.1",
"concurrently": "^9.2.1", "concurrently": "^9.2.1",
"conventional-changelog-conventionalcommits": "^9.1.0", "conventional-changelog-conventionalcommits": "^9.3.0",
"eslint": "^9.38.0", "eslint": "^10.0.3",
"globals": "^16.4.0", "globals": "^17.4.0",
"husky": "^9.1.7", "husky": "^9.1.7",
"purgecss": "^7.0.2", "purgecss": "^8.0.0",
"rollup": "^4.52.5", "rollup": "^4.59.0",
"semantic-release": "^25.0.1", "semantic-release": "^25.0.3",
"stylelint": "^16.25.0", "stylelint": "^17.4.0",
"stylelint-config-standard-scss": "^16.0.0" "stylelint-config-standard-scss": "^17.0.0"
}, },
"prettier": { "prettier": {
"trailingComma": "none" "trailingComma": "none"