From 20bf7194114a882b4f10a91bc4c49d8ebbe4bc9e Mon Sep 17 00:00:00 2001
From: Jarao <44677306+WROIATE@users.noreply.github.com>
Date: Sun, 29 Oct 2023 05:51:05 +0800
Subject: [PATCH 01/20] fix(comments): twikoo icon & count text color not
 visible on dark theme (#890)

* fix(comments): twikoo icon & count text color

* fix(comments): twikoo prompt color
---
 layouts/partials/comments/provider/twikoo.html | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/layouts/partials/comments/provider/twikoo.html b/layouts/partials/comments/provider/twikoo.html
index 71eae39..53830dd 100644
--- a/layouts/partials/comments/provider/twikoo.html
+++ b/layouts/partials/comments/provider/twikoo.html
@@ -13,7 +13,9 @@
     }
     .twikoo .el-input-group__prepend,
     .twikoo .tk-action-icon,
+    .twikoo .tk-submit-action-icon,
     .twikoo .tk-time,
+    .twikoo .tk-comments-no,
     .twikoo .tk-comments-count {
         color: var(--twikoo-body-text-color);
     }
@@ -28,6 +30,9 @@
     .twikoo .el-button{
         color: var(--twikoo-body-text-color)!important;
     }
+    .twikoo .el-input__count {
+        color: var(--twikoo-body-text-color) !important;
+    }
     .OwO .OwO-body {
         background-color: var(--body-background) !important;
         color: var(--body-text-color) !important;

From 21da06e448fe466ef0a03d1c717847f0eb0049fe Mon Sep 17 00:00:00 2001
From: Aman Rawat <124811276+amanr-dev@users.noreply.github.com>
Date: Sun, 29 Oct 2023 03:29:27 +0530
Subject: [PATCH 02/20] feat(i18n): add Hindi translation (#889)

---
 i18n/hi.yaml | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 i18n/hi.yaml

diff --git a/i18n/hi.yaml b/i18n/hi.yaml
new file mode 100644
index 0000000..27316fe
--- /dev/null
+++ b/i18n/hi.yaml
@@ -0,0 +1,73 @@
+toggleMenu:
+  other: मेनू टॉगल करें
+
+darkMode:
+  other: डार्क मोड
+
+list:
+  page:
+    one: "{{ .Count }} पेज"
+    other: "{{ .Count }} पेज"
+
+  section:
+    other: अनुभाग
+
+  subsection:
+    one: उपधारा
+    other: उपखंड
+
+article:
+  back:
+    other: पीछे
+
+  tableOfContents:
+    other: विषयसूची
+
+  relatedContent:
+    other: संबंधित सामग्री
+
+  lastUpdatedOn:
+    other: अंतिम बार अपडेट किया गया
+
+  readingTime:
+    one: "{{ .Count }} मिनट पढ़ें"
+    other: "{{ .Count }} मिनट पढ़ें"
+
+notFound:
+  title:
+    other: 404 नहीं मिला।
+
+  subtitle:
+    other: यह पृष्ठ मौजूद नहीं है।
+
+widget:
+  archives:
+    title:
+      other: अभिलेखागार
+
+    more:
+      other: अधिक
+
+  tagCloud:
+    title:
+      other: टैग
+  categoriesCloud:
+    title:
+      other: श्रेणियाँ
+
+search:
+  title:
+    other: खोज
+
+  placeholder:
+    other: कुछ लिखें...
+
+  resultTitle:
+    other: "#PAGES_COUNT पेज (#TIME_SECONDS सेकंड)"
+
+footer:
+  builtWith:
+    other: निर्मित {{ .Generator }} के साथ
+
+  designedBy:
+    other: थीम {{ .Theme }} द्वारा डिज़ाइन किया गया {{ .DesignedBy }}

From 03ee3369e1bfe794b5233c4661e66230a5944d69 Mon Sep 17 00:00:00 2001
From: Jimmy Cai <hi@jimmycai.com>
Date: Mon, 19 Feb 2024 10:54:02 +0100
Subject: [PATCH 03/20] fix: title does not show pagination data (#945)

* fix: title does not show pagination data

This is caused by partialCached. It turns out that the `.RelPermalink` is the same for all pages generated by the paginator, so they will show the same title as the first page.

closes https://github.com/CaiJimmy/hugo-theme-stack/issues/941

* doc(exampleSite): set paginate to 3 to force pagination
---
 exampleSite/config.yaml         | 2 +-
 layouts/partials/head/head.html | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/exampleSite/config.yaml b/exampleSite/config.yaml
index b723dea..57034a7 100644
--- a/exampleSite/config.yaml
+++ b/exampleSite/config.yaml
@@ -1,7 +1,7 @@
 baseurl: https://example.com
 languageCode: en-us
 theme: hugo-theme-stack
-paginate: 5
+paginate: 3
 title: Example Site
 copyright: Example Person
 
diff --git a/layouts/partials/head/head.html b/layouts/partials/head/head.html
index be63710..c809636 100644
--- a/layouts/partials/head/head.html
+++ b/layouts/partials/head/head.html
@@ -5,7 +5,7 @@
 <meta name='description' content='{{ $description }}'>
 {{ with .Params.Keywords }}<meta name="keywords" content="{{ delimit . ", " }}">{{ end }}
 
-{{- $title := partialCached "data/title" . .RelPermalink -}}
+{{- $title := partial "data/title" . -}}
 <title>{{ $title }}</title>
 
 <link rel='canonical' href='{{ .Permalink }}'>

From 76dc61f0d5103d8248f416d28c3a0ff6dd87e182 Mon Sep 17 00:00:00 2001
From: Gleb A <94681073+gleb-kun@users.noreply.github.com>
Date: Fri, 23 Feb 2024 02:03:55 +0300
Subject: [PATCH 04/20] feat(i18n): add Belarusian translation (#937)

* feat(i18n): add Belarusian translation

* Removed .gitignore changes
---
 i18n/be.yaml | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 i18n/be.yaml

diff --git a/i18n/be.yaml b/i18n/be.yaml
new file mode 100644
index 0000000..605cd08
--- /dev/null
+++ b/i18n/be.yaml
@@ -0,0 +1,72 @@
+toggleMenu:
+    other: Паказаць/схаваць меню
+
+darkMode:
+    other: Цёмны рэжым
+
+list:
+    page:
+        one: "{{ .Count }} старонка"
+        few: "{{ .Count }} старонкі"
+        many: "{{ .Count }} старонак"
+        other: "{{ .Count }} старонкі"
+
+    section:
+        other: Раздзел
+
+    subsection:
+        one: Падраздзел
+        few: Падраздзелы
+        many: Падраздзелы
+        other: Падраздзелы
+
+article:
+    back:
+        other: Назад
+
+    relatedContent:
+        other: Таксама рэкамендуем
+
+    lastUpdatedOn:
+        other: Абноўлена
+
+    tableOfContents: 
+        other: Змест
+
+    readingTime: 
+        other: "Час чытання: {{ .Count }} хв."
+
+notFound:
+    title:
+        other: Не знойдзена
+
+    subtitle:
+        other: Запытваемая старонка не існуе
+
+widget:
+    archives:
+        title:
+            other: Архівы
+        more:
+            other: Яшчэ
+
+    tagCloud:
+        title:
+            other: Тэгі
+
+search:
+    title:
+        other: Пошук
+
+    placeholder:
+        other: Увядзіце нешта...
+
+    resultTitle:
+        other: "Знайдзена #PAGES_COUNT старонак (за #TIME_SECONDS с.)"
+
+footer:
+    builtWith:
+        other: Створана пры дапамозе {{ .Generator }}
+
+    designedBy:
+        other: Тэма {{ .Theme }}, дызайн {{ .DesignedBy }}

From 188e49ef41f73e808f3c158f7d80a570f20c0f35 Mon Sep 17 00:00:00 2001
From: WaterLemons2k <62788816+WaterLemons2k@users.noreply.github.com>
Date: Sat, 24 Feb 2024 06:00:39 +0800
Subject: [PATCH 05/20] fix(widgets): ensure `params` is not nil (#943)

* fix(partials): ensure params always exist

If the `params` key is not defined in the config file, accessing `params` results in a `nil pointer evaluating interface {}` error because `params` does not exist.

This can be fixed by ensuring that params is always a map.

* style(widgets): `default` no pipes required
---
 layouts/partials/sidebar/right.html | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/layouts/partials/sidebar/right.html b/layouts/partials/sidebar/right.html
index d2a6ae8..6333f10 100644
--- a/layouts/partials/sidebar/right.html
+++ b/layouts/partials/sidebar/right.html
@@ -4,7 +4,10 @@
     <aside class="sidebar right-sidebar sticky">
         {{ range $widget := . }}
             {{ if templates.Exists (printf "partials/widget/%s.html" .type) }}
-                {{ partial (printf "widget/%s" .type) (dict "Context" $context "Params" .params) }}
+                <!-- Ensure that the `params` is not nil -->
+                {{- $params := default dict .params -}}
+
+                {{ partial (printf "widget/%s" .type) (dict "Context" $context "Params" $params) }}
             {{ else }}
                 {{ warnf "Widget %s not found" .type }}
             {{ end }}

From f53fc128bdc0de1b4808f130fefbf9ca98998e4f Mon Sep 17 00:00:00 2001
From: flexxgaad <149406589+flexxgaad@users.noreply.github.com>
Date: Sat, 24 Feb 2024 01:16:24 +0300
Subject: [PATCH 06/20] fix(config): `site.DisqusShortname` and
 `site.GoogleAnalytics` are deprecated (#952)

Remove deprecations. Fixes #895
---
 exampleSite/config.yaml | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/exampleSite/config.yaml b/exampleSite/config.yaml
index 57034a7..30a37da 100644
--- a/exampleSite/config.yaml
+++ b/exampleSite/config.yaml
@@ -5,6 +5,14 @@ paginate: 3
 title: Example Site
 copyright: Example Person
 
+# Theme i18n support
+# Available values: ar, bn, ca, de, el, en, es, fr, hu, id, it, ja, ko, nl, pt-br, th, uk, zh-cn, zh-hk, zh-tw
+DefaultContentLanguage: en
+
+# Set hasCJKLanguage to true if DefaultContentLanguage is in [zh-cn ja ko]
+# This will make .Summary and .WordCount behave correctly for CJK languages.
+hasCJKLanguage: false
+
 languages:
     en:
         languageName: English
@@ -26,19 +34,13 @@ languages:
         params:
             description: وصف تجريبي
 
-# Change it to your Disqus shortname before using
-disqusShortname: hugo-theme-stack
-
-# GA Tracking ID
-googleAnalytics:
-
-# Theme i18n support
-# Available values: ar, bn, ca, de, el, en, es, fr, hu, id, it, ja, ko, nl, pt-br, th, uk, zh-cn, zh-hk, zh-tw
-DefaultContentLanguage: en
-
-# Set hasCJKLanguage to true if DefaultContentLanguage is in [zh-cn ja ko]
-# This will make .Summary and .WordCount behave correctly for CJK languages.
-hasCJKLanguage: false
+services:
+    # Change it to your Disqus shortname before using
+    disqus:
+        shortname: "hugo-theme-stack"
+    # GA Tracking ID
+    googleAnalytics:
+        id:
 
 permalinks:
     post: /p/:slug/
@@ -49,7 +51,7 @@ params:
         - post
     featuredImageField: image
     rssFullContent: true
-    favicon:  # e.g.: favicon placed in `static/favicon.ico` of your site folder, then set this field to `/favicon.ico` (`/` is necessary)
+    favicon: # e.g.: favicon placed in `static/favicon.ico` of your site folder, then set this field to `/favicon.ico` (`/` is necessary)
 
     footer:
         since: 2020

From 255abd5c880bbd416cf1443f7503ad91729e61ff Mon Sep 17 00:00:00 2001
From: kragleh <danidurisik@gmail.com>
Date: Fri, 23 Feb 2024 23:58:07 +0100
Subject: [PATCH 07/20] feat(i18n): add Slovak translation (#930)

---
 i18n/sk.yaml | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 i18n/sk.yaml

diff --git a/i18n/sk.yaml b/i18n/sk.yaml
new file mode 100644
index 0000000..59c680e
--- /dev/null
+++ b/i18n/sk.yaml
@@ -0,0 +1,71 @@
+toggleMenu:
+    other: Skryť menu
+
+darkMode:
+    other: Tmavý režim
+
+list:
+    page:
+        one: "{{ .Count }} stránka"
+        other: "{{ .Count }} stránok"
+
+    section:
+        other: Kategórie
+
+    subsection:
+        one: Podkategória
+        other: Podkategórie
+
+article:
+    back:
+        other: Späť
+
+    tableOfContents:
+        other: Obsah
+
+    relatedContent:
+        other: Súvisiace
+
+    lastUpdatedOn:
+        other: Naposledy aktualizované
+
+    readingTime:
+        one: "{{ .Count }} minúta"
+        other: "{{ .Count }} minút"
+
+notFound:
+    title:
+        other: Nenájdené
+
+    subtitle:
+        other: Tato stránka neexistuje
+
+widget:
+    archives:
+        title:
+            other: Archívy
+        more:
+            other: Viac
+    tagCloud:
+        title:
+            other: Štítky
+    categoriesCloud:
+        title:
+            other: Kategórie
+
+search:
+    title:
+        other: Hladať
+
+    placeholder:
+        other: Zadajte niečo...
+
+    resultTitle:
+        other: "#PAGES_COUNT stránok (#TIME_SECONDS sekúnd)"
+
+footer:
+    builtWith:
+        other: Vytvorené pomocou {{ .Generator }}
+
+    designedBy:
+        other: Šablóna {{ .Theme }} od {{ .DesignedBy }}

From 800f815988564fd681c4466e457959f61a4f2e11 Mon Sep 17 00:00:00 2001
From: James McMurry <jmcmurry@semanticnoise.com>
Date: Mon, 26 Feb 2024 05:43:14 -0600
Subject: [PATCH 08/20] fix(sidebar): hide translations selector if only one
 translation available (#950)

hide translations menu if only one translation available
---
 layouts/partials/sidebar/left.html | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/layouts/partials/sidebar/left.html b/layouts/partials/sidebar/left.html
index 32e5a12..5b41c06 100644
--- a/layouts/partials/sidebar/left.html
+++ b/layouts/partials/sidebar/left.html
@@ -77,17 +77,19 @@
 
         <div class="menu-bottom-section">
             {{- $currentLanguageCode := .Language.Lang -}}
-            {{ with .Site.Home.AllTranslations }}
-                <li id="i18n-switch">  
-                    {{ partial "helper/icon" "language" }}
-                    <select name="language" onchange="window.location.href = this.selectedOptions[0].value">
-                        {{ range . }}
-                            <option value="{{ .Permalink }}" {{ if eq .Language.Lang $currentLanguageCode }}selected{{ end }}>{{ .Language.LanguageName }}</option>
-                        {{ end }}
-                    </select>
-                </li>
+            {{ if ( compare.Gt .Site.Home.AllTranslations 1 ) }}
+                {{ with .Site.Home.AllTranslations }}
+                    <li id="i18n-switch">  
+                        {{ partial "helper/icon" "language" }}
+                        <select name="language" onchange="window.location.href = this.selectedOptions[0].value">
+                            {{ range . }}
+                                <option value="{{ .Permalink }}" {{ if eq .Language.Lang $currentLanguageCode }}selected{{ end }}>{{ .Language.LanguageName }}</option>
+                            {{ end }}
+                        </select>
+                    </li>
+                {{ end }}
             {{ end }}
-            
+
             {{ if (default false .Site.Params.colorScheme.toggle) }}
                 <li id="dark-mode-toggle">
                     {{ partial "helper/icon" "toggle-left" }}

From 405e84291aaa89dd2e642d9781b63bc8f37aa70a Mon Sep 17 00:00:00 2001
From: Jimmy Cai <hi@jimmycai.com>
Date: Mon, 26 Feb 2024 12:44:11 +0100
Subject: [PATCH 09/20] release: 3.22.0

---
 layouts/partials/footer/footer.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/layouts/partials/footer/footer.html b/layouts/partials/footer/footer.html
index 08b8493..4d10fa0 100644
--- a/layouts/partials/footer/footer.html
+++ b/layouts/partials/footer/footer.html
@@ -1,4 +1,4 @@
-{{- $ThemeVersion := "3.21.0" -}}
+{{- $ThemeVersion := "3.22.0" -}}
 <footer class="site-footer">
     <section class="copyright">
         &copy; 

From 9bb3165ff01ef735b4b49007d57ba9da0c04fcc0 Mon Sep 17 00:00:00 2001
From: James McMurry <jmcmurry@semanticnoise.com>
Date: Sat, 2 Mar 2024 16:16:27 -0600
Subject: [PATCH 10/20] fix(sidebar): translation selector - avoid cast per PR
 #950  (#961)

avoid cast per PR #950
---
 layouts/partials/sidebar/left.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/layouts/partials/sidebar/left.html b/layouts/partials/sidebar/left.html
index 5b41c06..2f11490 100644
--- a/layouts/partials/sidebar/left.html
+++ b/layouts/partials/sidebar/left.html
@@ -77,7 +77,7 @@
 
         <div class="menu-bottom-section">
             {{- $currentLanguageCode := .Language.Lang -}}
-            {{ if ( compare.Gt .Site.Home.AllTranslations 1 ) }}
+            {{ if ( compare.Gt .Site.Home.AllTranslations.Len 1 ) }}
                 {{ with .Site.Home.AllTranslations }}
                     <li id="i18n-switch">  
                         {{ partial "helper/icon" "language" }}

From f398fb9dd14878d54c97a21e0f585f37b5211aba Mon Sep 17 00:00:00 2001
From: Jiarong Hong <64763790+hongjr03@users.noreply.github.com>
Date: Sun, 3 Mar 2024 06:33:11 +0800
Subject: [PATCH 11/20] =?UTF-8?q?feat(comments):=20add=20support=20for=20B?=
 =?UTF-8?q?eaudar=EF=BC=88=E8=A1=A8=E8=BE=BE=EF=BC=89comment=20system=20(#?=
 =?UTF-8?q?931)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

https://beaudar.lipk.org/
---
 config.yaml                                   |  6 +++
 exampleSite/config.yaml                       |  6 +++
 .../partials/comments/provider/beaudar.html   | 46 +++++++++++++++++++
 3 files changed, 58 insertions(+)
 create mode 100644 layouts/partials/comments/provider/beaudar.html

diff --git a/config.yaml b/config.yaml
index fafd340..05fe9c2 100644
--- a/config.yaml
+++ b/config.yaml
@@ -51,6 +51,12 @@ params:
             issueTerm: pathname
             label:
 
+        beaudar:
+            repo:
+            issueTerm: pathname
+            label:
+            theme:        
+
         remark42:
             host:
             site:
diff --git a/exampleSite/config.yaml b/exampleSite/config.yaml
index 30a37da..d8c02fe 100644
--- a/exampleSite/config.yaml
+++ b/exampleSite/config.yaml
@@ -93,6 +93,12 @@ params:
             issueTerm: pathname
             label:
 
+        beaudar:
+            repo:
+            issueTerm: pathname
+            label:
+            theme:        
+
         remark42:
             host:
             site:
diff --git a/layouts/partials/comments/provider/beaudar.html b/layouts/partials/comments/provider/beaudar.html
new file mode 100644
index 0000000..761801f
--- /dev/null
+++ b/layouts/partials/comments/provider/beaudar.html
@@ -0,0 +1,46 @@
+<script
+  src="https://beaudar.lipk.org/client.js"
+  repo="{{ .Site.Params.comments.beaudar.repo }}"
+  issue-term="{{ .Site.Params.comments.beaudar.issueTerm }}"
+  {{ with .Site.Params.comments.beaudar.label }}
+  label="{{ . }}"
+  {{ end }}
+  theme="{{ .Site.Params.comments.beaudar.theme }}"
+  crossorigin="anonymous"
+  async
+></script>
+
+<style>
+  .beaudar {
+    max-width: unset;
+  }
+</style>
+
+<script>
+  let beaudarLoaded = false;
+
+  function setBeaudarTheme(theme) {
+    let beaudar = document.querySelector(".beaudar iframe");
+    if (beaudar) {
+      beaudar.contentWindow.postMessage(
+        {
+          type: "set-theme",
+          theme: `github-${theme}`,
+        },
+        "https://beaudar.lipk.org"
+      );
+    }
+  }
+
+  addEventListener("message", (event) => {
+    if (event.origin !== "https://beaudar.lipk.org") return;
+    /// Called when Beaudar is ready
+    beaudarLoaded = true;
+    setBeaudarTheme(document.documentElement.dataset.scheme);
+  });
+
+  window.addEventListener("onColorSchemeChange", (e) => {
+    if (!beaudarLoaded) return;
+    setBeaudarTheme(e.detail);
+  });
+</script>

From 65cd7f586f59b4a89f1db0e4504ce574fa391fbf Mon Sep 17 00:00:00 2001
From: L-Super <40905056+L-Super@users.noreply.github.com>
Date: Sun, 3 Mar 2024 06:39:43 +0800
Subject: [PATCH 12/20] fix(comment): moved waline `placeholder` parameter to
 `locale.placeholder` (#914)

fix waline parameter
---
 config.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/config.yaml b/config.yaml
index 05fe9c2..ece0ecb 100644
--- a/config.yaml
+++ b/config.yaml
@@ -70,7 +70,7 @@ params:
             clientSecret:
             autoCreateIssue: false
 
-        # Waline client configuration see: https://waline.js.org/en/reference/client.html
+        # Waline client configuration see: https://waline.js.org/en/reference/client/props.html
         waline:
             serverURL:
             lang:
@@ -81,9 +81,9 @@ params:
             requiredMeta:
                 - nick
                 - mail
-            placeholder:
             locale:
                 admin: Admin
+                placeholder:
 
         twikoo:
             envId:

From 5b0d6fdf7d0b4c561532f11438fb401270769d07 Mon Sep 17 00:00:00 2001
From: Jiahao Li <42709836+TheJiahao@users.noreply.github.com>
Date: Sun, 3 Mar 2024 00:48:34 +0200
Subject: [PATCH 13/20] fix(sidebar): improve accessibility of sidebar bottom
 menu (#925)

* fix(menu): <ol> containing other than <li>, <script> or <template> elements

* fix(menu): add title to language select menu
---
 layouts/partials/sidebar/left.html | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/layouts/partials/sidebar/left.html b/layouts/partials/sidebar/left.html
index 2f11490..3aed883 100644
--- a/layouts/partials/sidebar/left.html
+++ b/layouts/partials/sidebar/left.html
@@ -74,14 +74,15 @@
             </a>
         </li>
         {{ end }}
-
-        <div class="menu-bottom-section">
+    </ol>
+    <div class="menu-bottom-section">
+        <ol class="menu">
             {{- $currentLanguageCode := .Language.Lang -}}
             {{ if ( compare.Gt .Site.Home.AllTranslations.Len 1 ) }}
                 {{ with .Site.Home.AllTranslations }}
                     <li id="i18n-switch">  
                         {{ partial "helper/icon" "language" }}
-                        <select name="language" onchange="window.location.href = this.selectedOptions[0].value">
+                        <select name="language" title="language" onchange="window.location.href = this.selectedOptions[0].value">
                             {{ range . }}
                                 <option value="{{ .Permalink }}" {{ if eq .Language.Lang $currentLanguageCode }}selected{{ end }}>{{ .Language.LanguageName }}</option>
                             {{ end }}
@@ -97,6 +98,6 @@
                     <span>{{ T "darkMode" }}</span>
                 </li>
             {{ end }}
-        </div>
-    </ol>
+        </ol>
+    </div>
 </aside>

From 2f9306502d67377593192b1fd80b2fa0cbe32e5b Mon Sep 17 00:00:00 2001
From: Jimmy Cai <hi@jimmycai.com>
Date: Sat, 2 Mar 2024 23:49:21 +0100
Subject: [PATCH 14/20] release: 3.23.0

---
 layouts/partials/footer/footer.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/layouts/partials/footer/footer.html b/layouts/partials/footer/footer.html
index 4d10fa0..4b9d26e 100644
--- a/layouts/partials/footer/footer.html
+++ b/layouts/partials/footer/footer.html
@@ -1,4 +1,4 @@
-{{- $ThemeVersion := "3.22.0" -}}
+{{- $ThemeVersion := "3.23.0" -}}
 <footer class="site-footer">
     <section class="copyright">
         &copy; 

From 4e7865c1853ef2edbf2dd2184aeab29aeb1d1b64 Mon Sep 17 00:00:00 2001
From: Zeyu Huang <fhfuih@outlook.com>
Date: Wed, 6 Mar 2024 16:37:31 +0800
Subject: [PATCH 15/20] fix(i18n): add missing `zh-cn` translations (#964)

---
 i18n/zh-cn.yaml | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/i18n/zh-cn.yaml b/i18n/zh-cn.yaml
index 9350c2b..da39c8f 100644
--- a/i18n/zh-cn.yaml
+++ b/i18n/zh-cn.yaml
@@ -4,6 +4,13 @@ toggleMenu:
 darkMode:
     other: 暗色模式
 
+list:
+    page: "{{ .Count }} 个页面"
+
+    section: 章节
+
+    subsection: 子章节
+
 article:
     back:
         other: 返回
@@ -54,7 +61,7 @@ search:
 
 footer:
     builtWith:
-        other: Built with {{ .Generator }}
+        other: 使用 {{ .Generator }} 构建
 
     designedBy:
         other: 主题 {{ .Theme }} 由 {{ .DesignedBy }} 设计

From 43224bd39a71ba197617ccdbdd6bd02f3e0a4eb4 Mon Sep 17 00:00:00 2001
From: Jimmy Cai <hi@jimmycai.com>
Date: Sun, 10 Mar 2024 19:54:09 +0100
Subject: [PATCH 16/20] feat: update Hugo version and minimum version
 requirement to 0.123.0 (#970)

---
 netlify.toml | 2 +-
 theme.toml   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/netlify.toml b/netlify.toml
index 229f970..9ad85f1 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -2,7 +2,7 @@
     publish = "exampleSite/public"
 
 [build.environment]
-    HUGO_VERSION = "0.117.0"
+    HUGO_VERSION = "0.123.8"
     HUGO_THEME = "repo"
 
 [context.production]
diff --git a/theme.toml b/theme.toml
index a1a3d74..6c5ea62 100644
--- a/theme.toml
+++ b/theme.toml
@@ -20,7 +20,7 @@ features = [
     "search",
 ]
 
-min_version = "0.87.0"
+min_version = "0.123.0"
 
 [author]
 name = "Jimmy Cai"

From 4948a3723e42fb775f4d895e4d173c5521be81b9 Mon Sep 17 00:00:00 2001
From: Andreas Deininger <andreas@deininger.net>
Date: Sun, 10 Mar 2024 19:57:03 +0100
Subject: [PATCH 17/20] fix: `.Site.LastChange` deprecation (#968)

Fix the deprecation warning emitted from Hugo, and fix the typo in ` exampleSite/content/page/about/index.md`
---
 exampleSite/content/page/about/index.md            | 4 ++--
 layouts/partials/head/opengraph/provider/base.html | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/exampleSite/content/page/about/index.md b/exampleSite/content/page/about/index.md
index 494cb46..68911f9 100644
--- a/exampleSite/content/page/about/index.md
+++ b/exampleSite/content/page/about/index.md
@@ -15,7 +15,7 @@ menu:
             icon: user
 ---
 
-Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
+Written in Go, Hugo is an open source static site generator available under the [Apache License 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
 
 Hugo makes use of a variety of open source projects including:
 
@@ -29,6 +29,6 @@ Hugo is ideal for blogs, corporate websites, creative portfolios, online magazin
 
 Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
 
-Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
+Websites built with Hugo are extremely fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
 
 Learn more and contribute on [GitHub](https://github.com/gohugoio).
diff --git a/layouts/partials/head/opengraph/provider/base.html b/layouts/partials/head/opengraph/provider/base.html
index 3e51d37..60da962 100644
--- a/layouts/partials/head/opengraph/provider/base.html
+++ b/layouts/partials/head/opengraph/provider/base.html
@@ -32,8 +32,8 @@
         <meta property='article:modified_time' content='{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}'/>
     {{- end -}}
 {{- else -}}
-    {{- if not .Site.LastChange.IsZero -}}
-        <meta property='og:updated_time' content='{{ .Site.LastChange.Format " 2006-01-02T15:04:05-07:00 " | safeHTML }}'/>
+    {{- if not .Site.Lastmod.IsZero -}}
+        <meta property='og:updated_time' content='{{ .Site.Lastmod.Format " 2006-01-02T15:04:05-07:00 " | safeHTML }}'/>
     {{- end -}}
 {{- end -}}
 

From 2cda77970651fa47f853318668063975107635bc Mon Sep 17 00:00:00 2001
From: Andreas Deininger <andreas@deininger.net>
Date: Sun, 10 Mar 2024 22:24:21 +0100
Subject: [PATCH 18/20] feat: bump KaTeX to latest released version `0.16.9`
 (#969)

Bump KaTeX to latest released version 0.16.9
---
 data/external.yaml                                 | 12 ++++++------
 exampleSite/content/post/math-typesetting/index.md | 10 +++++-----
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/data/external.yaml b/data/external.yaml
index 777620d..4fc0bca 100644
--- a/data/external.yaml
+++ b/data/external.yaml
@@ -21,17 +21,17 @@ PhotoSwipe:
       type: style
 
 KaTeX:
-    - src: https://cdn.jsdelivr.net/npm/katex@0.15.6/dist/katex.min.css
-      integrity: sha256-J+iAE0sgH8QSz9hpcDxXIftnj65JEZgNhGcgReTTK9s=
+    - src: https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css
+      integrity: sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV
       type: style
 
-    - src: https://cdn.jsdelivr.net/npm/katex@0.15.6/dist/katex.min.js
-      integrity: sha256-InsNdER1b2xUewP+pKCUJpkhiqwHgqiPXDlIk7GzBu4=
+    - src: https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js
+      integrity: sha384-XjKyOOlGwcjNTAIQHIpgOno0Hl1YQqzUOEleOLALmuqehneUG+vnGctmUb0ZY0l8
       type: script
       defer: true
 
-    - src: https://cdn.jsdelivr.net/npm/katex@0.15.6/dist/contrib/auto-render.min.js
-      integrity: sha256-y39Mpg7V3D4lhBX4x6O0bUqTV4pSrfgwEfGKfxkOdgI=
+    - src: https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js
+      integrity: sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05
       type: script
       defer: true
 
diff --git a/exampleSite/content/post/math-typesetting/index.md b/exampleSite/content/post/math-typesetting/index.md
index ce8d0bf..060fd7f 100644
--- a/exampleSite/content/post/math-typesetting/index.md
+++ b/exampleSite/content/post/math-typesetting/index.md
@@ -21,17 +21,17 @@ In this example we will be using [KaTeX](https://katex.org/)
 {{ end }}
 ```
 
-- To enable KaTex globally set the parameter `math` to `true` in a project's configuration
-- To enable KaTex on a per page basis include the parameter `math: true` in content files
+- To enable KaTeX globally set the parameter `math` to `true` in a project's configuration
+- To enable KaTeX on a per page basis include the parameter `math: true` in content files
 
 **Note:** Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html)
 
 {{< math.inline >}}
 {{ if or .Page.Params.math .Site.Params.math }}
 <!-- KaTeX -->
-<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
-<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
-<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css" integrity="sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV" crossorigin="anonymous">
+<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js" integrity="sha384-XjKyOOlGwcjNTAIQHIpgOno0Hl1YQqzUOEleOLALmuqehneUG+vnGctmUb0ZY0l8" crossorigin="anonymous"></script>
+<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
 {{ end }}
 {{</ math.inline >}}
 

From 6c7d42d45a0ca79f1047270d61cd46ab7b81f60e Mon Sep 17 00:00:00 2001
From: Jiahao Li <42709836+TheJiahao@users.noreply.github.com>
Date: Sun, 10 Mar 2024 23:56:30 +0200
Subject: [PATCH 19/20] fix(sidebar): menu-bottom-section not showing in mobile
 (#966)

* fix(sidebar): Bottom section not showing in mobile

* fix(sidebar): Align bottom section to bottom

* fix(sidebar): Gap missing in bottom section

* refactor(sidebar): Simplify styles

* refactor(sidebar): Remove useless padding-left

* refactor(sidebar): Remove useless margin-top

* refactor(sidebar): Combine duplicate flex-direction

* refactor(sidebar): Remove redundant width
---
 assets/scss/partials/menu.scss     | 24 ++++++++-------
 layouts/partials/sidebar/left.html | 48 +++++++++++++++---------------
 2 files changed, 37 insertions(+), 35 deletions(-)

diff --git a/assets/scss/partials/menu.scss b/assets/scss/partials/menu.scss
index 281dc3a..19476ac 100644
--- a/assets/scss/partials/menu.scss
+++ b/assets/scss/partials/menu.scss
@@ -127,10 +127,8 @@
 }
 
 /* Menu style */
-.menu {
-    padding-left: 0;
+#main-menu {
     list-style: none;
-    flex-direction: column;
     overflow-y: auto;
     flex-grow: 1;
     font-size: 1.4rem;
@@ -141,13 +139,15 @@
     margin: 0 calc(var(--container-padding) * -1);
 
     padding: 30px 30px;
+
     @include respond(xl) {
         padding: 15px 0;
     }
 
-    &,
-    .menu-bottom-section {
+    &, .menu-bottom-section ol {
+        flex-direction: column;
         gap: 30px;
+
         @include respond(xl) {
             gap: 25px;
         }
@@ -200,13 +200,15 @@
                 font-weight: bold;
             }
         }
-    }
 
-    .menu-bottom-section {
-        margin-top: auto;
-        display: flex;
-        flex-direction: column;
-        width: 100%;
+        &.menu-bottom-section {
+            margin-top: auto;
+
+            ol {
+                display: flex;
+                padding-left: 0;
+            }
+        }
     }
 }
 
diff --git a/layouts/partials/sidebar/left.html b/layouts/partials/sidebar/left.html
index 3aed883..e390a9f 100644
--- a/layouts/partials/sidebar/left.html
+++ b/layouts/partials/sidebar/left.html
@@ -74,30 +74,30 @@
             </a>
         </li>
         {{ end }}
-    </ol>
-    <div class="menu-bottom-section">
-        <ol class="menu">
-            {{- $currentLanguageCode := .Language.Lang -}}
-            {{ if ( compare.Gt .Site.Home.AllTranslations.Len 1 ) }}
-                {{ with .Site.Home.AllTranslations }}
-                    <li id="i18n-switch">  
-                        {{ partial "helper/icon" "language" }}
-                        <select name="language" title="language" onchange="window.location.href = this.selectedOptions[0].value">
-                            {{ range . }}
-                                <option value="{{ .Permalink }}" {{ if eq .Language.Lang $currentLanguageCode }}selected{{ end }}>{{ .Language.LanguageName }}</option>
-                            {{ end }}
-                        </select>
+        <li class="menu-bottom-section">
+            <ol class="menu">
+                {{- $currentLanguageCode := .Language.Lang -}}
+                {{ if ( compare.Gt .Site.Home.AllTranslations.Len 1 ) }}
+                    {{ with .Site.Home.AllTranslations }}
+                        <li id="i18n-switch">  
+                            {{ partial "helper/icon" "language" }}
+                            <select name="language" title="language" onchange="window.location.href = this.selectedOptions[0].value">
+                                {{ range . }}
+                                    <option value="{{ .Permalink }}" {{ if eq .Language.Lang $currentLanguageCode }}selected{{ end }}>{{ .Language.LanguageName }}</option>
+                                {{ end }}
+                            </select>
+                        </li>
+                    {{ end }}
+                {{ end }}
+
+                {{ if (default false .Site.Params.colorScheme.toggle) }}
+                    <li id="dark-mode-toggle">
+                        {{ partial "helper/icon" "toggle-left" }}
+                        {{ partial "helper/icon" "toggle-right" }}
+                        <span>{{ T "darkMode" }}</span>
                     </li>
                 {{ end }}
-            {{ end }}
-
-            {{ if (default false .Site.Params.colorScheme.toggle) }}
-                <li id="dark-mode-toggle">
-                    {{ partial "helper/icon" "toggle-left" }}
-                    {{ partial "helper/icon" "toggle-right" }}
-                    <span>{{ T "darkMode" }}</span>
-                </li>
-            {{ end }}
-        </ol>
-    </div>
+            </ol>
+        </li>
+    </ol>
 </aside>

From 04bf1956b9cf21a6af6b2e8432f3b151a81f8c10 Mon Sep 17 00:00:00 2001
From: Jimmy Cai <hi@jimmycai.com>
Date: Sun, 10 Mar 2024 22:57:26 +0100
Subject: [PATCH 20/20] release: 3.24.0

---
 layouts/partials/footer/footer.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/layouts/partials/footer/footer.html b/layouts/partials/footer/footer.html
index 4b9d26e..9ef3768 100644
--- a/layouts/partials/footer/footer.html
+++ b/layouts/partials/footer/footer.html
@@ -1,4 +1,4 @@
-{{- $ThemeVersion := "3.23.0" -}}
+{{- $ThemeVersion := "3.24.0" -}}
 <footer class="site-footer">
     <section class="copyright">
         &copy;