1
0
mirror of https://github.com/cotes2020/jekyll-theme-chirpy.git synced 2025-12-18 21:53:26 +00:00

Compare commits

...

608 Commits

Author SHA1 Message Date
Cotes Chung
0da2f80dd4 Merge branch 'master' into production 2023-07-02 21:25:57 +08:00
Cotes Chung
e8ef69ad17 chore(release): 6.1.0 2023-07-02 21:01:52 +08:00
Cotes Chung
2eb4267cdd build(release): remove extra blank lines in changelog 2023-07-02 21:01:52 +08:00
Anan
e4e76f0a11 chore(deps): upgrade actions/deploy-pages to version 2.x (#1121) 2023-07-02 20:25:53 +08:00
Cotes Chung
e07e6d46d7 refactor: revert media query range notation (#1072)
Media queries range syntax not supported by Safari for iOS under 16.4

See also:
- https://caniuse.com/?search=media-queries

This reverts commit 1682ce9d7c.
2023-07-02 20:16:36 +08:00
Cotes Chung
2bbfda79ad refactor(layout): improve margin bottom of the core block (#1116)
Improvement of commit 73af591
2023-06-28 20:21:30 +08:00
Cotes Chung
b0f4ae5eec chore(gh-actions): fix stale bot exempt condition 2023-06-28 20:16:20 +08:00
PENEKhun
8b0fbf5a83 fix: missing xml escape for alt of preview image (#1113)
Preview image display error when `alt` contains '<' or '>'


Co-authored-by: Cotes Chung <11371340+cotes2020@users.noreply.github.com>
2023-06-28 14:23:27 +08:00
PENEKhun
2639f8ed45 chore(tools): correct the file name in the tool's help message (#1114)
Removing `.sh` from the executable file name
2023-06-28 13:49:13 +08:00
Cotes Chung
926d1ca068 docs: update tutorial & readme (#1110)
- update feature list in README
- add screenshots to tutorial
2023-06-27 00:39:42 +08:00
Cotes Chung
df8ff546ec fix: the cached image is covered by shimmer (#1100) 2023-06-26 23:59:59 +08:00
Cotes Chung
c075e11a4e Revert "fix: shimmer has the potential to cover images (#1100)"
This reverts commit 74ab6f8adc.
2023-06-26 21:54:20 +08:00
Javen Leung
b6d1992f85 perf: CJK characters of the "Search Cancel" button will wrap (#1105) 2023-06-26 14:23:23 +08:00
Cotes Chung
74ab6f8adc fix: shimmer has the potential to cover images (#1100)
Resolves #1100
2023-06-24 21:23:30 +08:00
Cotes Chung
4fe145e980 perf(build): use jekyll-include-cache plugin to reduce build time (#1098)
Resolve #1094 and add margin bottom for layout tags

Co-authored-by: Jake Kerr <kodafox@gmail.com>
2023-06-19 14:41:40 +08:00
weeix
a60e90791d feat(i18n): add Thai locale file (#1087) 2023-06-13 00:57:40 +08:00
Cotes Chung
fa3257873e build: replace the stale app with gh-actions
The stale app is deprecated and  no longer maintained
2023-06-08 00:46:37 +08:00
Cotes Chung
1682ce9d7c style(scss): fix style-lint media-feature-range-notation issue (#1072)
See also: https://stylelint.io/user-guide/rules/media-feature-range-notation/
2023-06-04 12:29:33 +08:00
Cotes Chung
29a8bc26bc chore(deps): upgrade major version of npm packages
packages:
- rimraf
- stylelint-config-standard-scss
2023-06-04 12:21:16 +08:00
Cotes Chung
83625644ea refactor(core): remove GA page views report (#1071)
- Google Analytics superProxy has been archived and is no longer maintained.
- Google Analytics UA end of life.

See also: https://support.google.com/analytics/answer/11583528?hl=en
2023-06-04 10:56:31 +08:00
Cotes Chung
728094d1ba perf(ui): improve hover color of sidebar nav items in light mode 2023-06-04 09:36:32 +08:00
Cotes Chung
ce2f6f5abe perf(ui): avoid blank space at the bottom of the homepage preview image
When the title of the post has a line break, there will be a blank space at the bottom of the preview image.
2023-06-04 09:36:32 +08:00
Cotes Chung
c4da99c7ea fix(webfont): resume semi-bold of font family Source Sans Pro
font-weight 700
2023-06-04 09:36:29 +08:00
Cotes Chung
73af59194a fix(ui): min-height of page layout exceeds the mobile screen 2023-05-20 05:28:15 +08:00
Cotes Chung
f6bf6d0864 refactor: improve JS/HTML for button back2top (#1054)
The current "back to top" button is built by `<a>` tag, it would be more appropriate to replace it with the `<button>` tag.
2023-05-20 01:07:18 +08:00
Cotes Chung
bef2ac085e Merge branch 'hotfix/6.0.1' 2023-05-20 00:37:38 +08:00
Cotes Chung
7c9fa68331 Merge branch 'hotfix/6.0.1' into production 2023-05-20 00:37:36 +08:00
Cotes Chung
066c1cd039 chore(release): 6.0.1 2023-05-20 00:37:34 +08:00
Cotes Chung
98850e1e5d chore(build): tag on production branch instead of master (#1052) 2023-05-20 00:35:11 +08:00
Cotes Chung
83eecdabcb refactor: remove dead SCSS code (#1053) 2023-05-20 00:34:49 +08:00
Cotes Chung
a51d31c55a fix(typography): long string for update-list is not truncated (#1050)
Resolves #1049
2023-05-19 01:50:45 +08:00
Cotes Chung
eb40f51c84 fix(layout): restore the margin bottom of the main area (#1047) 2023-05-18 11:09:32 +08:00
Cotes Chung
3bd881da70 fix(post, page): image link loses shimmer effect (#1046) 2023-05-18 10:58:23 +08:00
Cotes Chung
aba9468b53 fix(home): preview image missing [alt] and img_path (#1044)
Close #1044
2023-05-18 10:46:15 +08:00
Cotes Chung
de6ec65932 Merge branch 'master' into production 2023-05-17 03:02:22 +08:00
Cotes Chung
c5f15a3af8 chore(release): 6.0.0 2023-05-17 03:02:20 +08:00
Cotes Chung
12ce8f9fa9 chore(i18n): remove outdated items 2023-05-17 03:01:51 +08:00
Cotes Chung
d81f836b06 refactor: simplify basic layout (#1039)
A dynamically expanding/collapsing topbar is difficult to maintain and not very useful.
2023-05-17 01:59:34 +08:00
Cotes Chung
52f5ee9cd3 perf: calculate heading font size dynamically (#983) 2023-05-13 11:35:55 +08:00
Cotes Chung
b3c4d741b2 refactor(img): disable transition effect in popup images 2023-05-13 08:17:41 +08:00
Cotes Chung
129c4b3fa6 docs: update tutorial & demo content 2023-05-13 07:48:57 +08:00
Cotes Chung
fe18011f8a Merge branch 'feature/v6-core' 2023-05-13 07:15:47 +08:00
Cotes Chung
25ec7649cd chore(deps): upgrade the version of depdencies (#953, #994)
Resolves #953, #994
2023-05-13 07:13:16 +08:00
Cotes Chung
ea6268d7a5 chore(ci): upgrade commit-lint actions 2023-05-13 07:03:16 +08:00
Cotes Chung
1967de1f1d refactor(js): reduce function complexity 2023-05-13 07:03:15 +08:00
Cotes Chung
c283e7782f refactor!: rename assets origin configuration files 2023-05-13 07:03:15 +08:00
Cotes Chung
9d97120197 perf(assets): reduce HTTP requests to CDN 2023-05-13 03:29:06 +08:00
Cotes Chung
016a9baddd Merge branch 'feature/v6-ui' (#1034)
The UI of the next major version
2023-05-13 02:25:05 +08:00
Cotes Chung
d9e1d84f08 refactor(deps): upgrade bootstrap from v4.6 to v5.2
- update class name of the spacing, font style, cards and toasts
- update attribute names &  tooltip usage
- remove custom smooth scroll
- syntax colors
2023-05-13 02:05:33 +08:00
Cotes Chung
3210c59466 feat(ui): new design footer content layout 2023-05-13 02:05:33 +08:00
Cotes Chung
83f1c34f92 feat(ui): improve the design for top bar 2023-05-13 02:05:33 +08:00
Cotes Chung
83bbe4ac93 feat(ui): redesign the sidebar 2023-05-13 02:05:33 +08:00
Cotes Chung
6d99f5cc36 feat(ui): improve code snippet design 2023-05-13 02:05:33 +08:00
Cotes Chung
0c80552d77 perf(ui): mute the marker in lists 2023-05-13 02:05:32 +08:00
Cotes Chung
e38309f3bd perf(ui): improve inline code in light mode 2023-05-13 02:05:32 +08:00
Cotes Chung
8cbbcfa26d perf(ui): improve the color of prompts in dark mode 2023-05-13 02:05:32 +08:00
Cotes Chung
003e7b60c9 perf(ux): improve LQIP fade in effect 2023-05-13 02:05:32 +08:00
Cotes Chung
7c23a4ebc5 perf(ui): lighten the link color in light-mode 2023-05-13 02:05:32 +08:00
Cotes Chung
2a4d67d65c refactor: uniform block border radius
scope:
- categories
- posts (prompt, code snippets)
2023-05-13 02:05:32 +08:00
Cotes Chung
414dd132ae perf(ui): improve categories color in dark mode 2023-05-13 02:05:32 +08:00
Cotes Chung
f0266c1f78 refactor(scss): update vendor prefix 2023-05-13 02:05:31 +08:00
Cotes Chung
7626e4d005 perf(ui): improve hover effect for post preview cards
- home cards
- navigator buttons at the bottom post
2023-05-13 02:05:31 +08:00
Cotes Chung
34499f0c92 perf(ui): improve hover effect of trending tags 2023-05-13 02:05:31 +08:00
Cotes Chung
aadf9393d5 perf(ui): uniform the muted text color 2023-05-13 02:05:31 +08:00
Cotes Chung
2918da9f29 perf(ui): improve related posts design 2023-05-13 02:05:31 +08:00
Cotes Chung
97b8dfeed6 feat(ui): show preview image in home page 2023-05-13 02:05:30 +08:00
Cotes Chung
ee88cec270 fix: parameter parsing error in image URL (#1022) 2023-05-13 01:02:15 +08:00
Darian Miller
8da583d403 feat: support hiding the modification date of a post (#1020)
There is the current ability to set `last_modified_at` in the front matter of post and use that datetime instead of the built in logic.
New feature in post.html:  if the modified date time matches the date of the post, then don't show "Updated xxxx"
2023-05-06 11:04:17 +08:00
Cotes Chung
61fdbcb83a perf(i18n): set the global default locales to "en" (#979)
Avoid missing labels caused by languages ​​outside of locales.
2023-05-06 07:22:29 +08:00
Penek Suksuda
aca79c1007 chore(tools): fix typos (#1018) 2023-05-06 07:10:08 +08:00
Song-Zi Vong
fe203417d9 feat: add a hook to insert custom metadata in head tag (#1015) 2023-05-06 07:10:08 +08:00
Cotes
e90461aa3c perf(tools): avoid initialization interruption in single branch forks (#992) 2023-04-17 02:40:25 +08:00
Cotes
6f6e309741 chore(github): simplify PR template (#991) 2023-04-17 02:34:13 +08:00
Miha Tisnikar
42a700aa37 feat(i18n): add sl-SI.yml with slovenian translations (#989) 2023-04-17 01:37:49 +08:00
Song-Zi Vong
7ec31e8948 refactor: enhance the configurability of fonts (#986) 2023-04-17 01:31:49 +08:00
Cotes Chung
b63b65d743 chore(stylelint): optimize the rule for font-family variables (#987)
Turn off the rule `value-keyword-case` for `font-family`

Resolves #987
2023-04-16 09:08:54 +08:00
Song-Zi Vong
1719d81d00 fix(rss): double quotes in the post title will break the XML structure (#965) 2023-04-10 18:35:11 +08:00
Jörgen Ivarsson
fe7047959e feat(i18n): added Swedish localization file (#969)
Nice PR @JorgenIvarsson, everything from the branch name to the commit messages perfectly meets the requirements. Thanks!
2023-04-10 06:23:03 +08:00
郭桓桓
d97f95fca0 feat(i18n): add Traditional Chinese (Taiwan) localization file (#961) 2023-04-02 22:13:22 +08:00
Cotes Chung
39b81aa4e0 docs: update issue template (#958)
Close #958
2023-03-31 21:44:22 +08:00
Cotes Chung
387f0ec64a Merge branch 'master' into production 2023-03-31 05:46:37 +08:00
Cotes Chung
c45f399e65 chore(release): 5.6.1 2023-03-31 05:46:34 +08:00
Cotes Chung
8225174cb5 fix(deps): tocbot has no initialization detection (#957)
Resolves #957
2023-03-31 05:05:33 +08:00
Cotes Chung
8b4f99c87f fix: pageviews not updated immediately 2023-03-31 04:58:21 +08:00
Cotes Chung
6f97636fb9 chore(build): set rollup watching path 2023-03-31 04:55:43 +08:00
Cotes Chung
bf199d779c chore(deps): upgrade npm packages 2023-03-31 04:55:43 +08:00
Song-Zi Vong
6fec411c18 fix: mode-toggle leads to Disqus loading failure (#945) 2023-03-22 22:22:07 +08:00
Cotes Chung
61d9c2247c Merge branch 'master' into production 2023-03-18 02:08:00 +08:00
Cotes Chung
0d9cec6abc chore(release): 5.6.0 2023-03-18 02:07:58 +08:00
Cotes Chung
6e6b6479f5 docs: migrate upgrade details to the wiki 2023-03-18 02:07:14 +08:00
Cotes Chung
388efb1ae3 chore(tools): add JS dist to gem release 2023-03-18 02:03:16 +08:00
Cotes Chung
471e8c4018 chore(tools): resume git checkout in initialization 2023-03-18 01:49:34 +08:00
Cotes Chung
3cd81e7128 chore: recover accidentally deleted LQIP style 2023-03-18 01:49:34 +08:00
Cotes Chung
b85f6330de feat(ux): turn home page posts into clickable cards (#895)
Resolves #895
2023-03-18 01:49:34 +08:00
Cotes Chung
111b82838d style: fix scss lint issue
type: declaration-block-no-redundant-longhand-properties
2023-03-18 00:29:01 +08:00
Cotes Chung
e8e4901e34 fix: some console snippets will be incompletely copied
Sample:

```console
echo $PATH
```
2023-03-17 06:39:38 +08:00
Cotes Chung
d96b8811a7 refactor: remove version number from self host config 2023-03-17 05:52:32 +08:00
Cotes Chung
820ba62e9e fix: notch status bar doesn't match theme color (#918)
Resolves #918
2023-03-17 01:17:06 +08:00
Cotes Chung
3c7934abf0 style: improve code style of SCSS & YAML 2023-03-16 03:36:52 +08:00
Cotes Chung
02b7bd5095 feat: change TOC plugin to tocbot (#774) 2023-03-16 03:00:29 +08:00
Josh Johanning
474b4ba681 chore: update configure-pages action (#931) 2023-03-15 22:31:43 +08:00
Cotes Chung
016399a6db Merge branch 'feature/esm' 2023-03-15 22:01:29 +08:00
Cotes Chung
60229ae334 chore(ci,tools): adapt to changes in JS builds 2023-03-15 21:51:37 +08:00
Cotes Chung
b69d3d7edd refactor(build): modularize JS code
- replace gulp with rollup
- remove JS output from repo
2023-03-15 21:51:37 +08:00
Cotes Chung
002f02533d chore: update code style config 2023-03-11 01:55:32 +08:00
Cotes Chung
968c13ec7d chore(deps): upgrade NPM packages 2023-03-06 05:48:17 +08:00
Cotes Chung
4681df7151 fix: mathematics cannot scroll horizontally (#760) 2023-03-02 05:40:33 +08:00
Cotes Chung
7e6c667e7a chore: update project description 2023-03-02 03:56:39 +08:00
Cotes Chung
09121c1d11 docs: move the development guide to README (#900) 2023-03-02 03:42:00 +08:00
Cotes Chung
fe82cea576 chore(tools): fix typo 2023-03-01 00:48:25 +08:00
Cotes Chung
1e5c025a1c chore(vcs): improve git-ignore entries 2023-03-01 00:45:18 +08:00
Spyros Kokotos
712a9b2240 feat(i18n): add Greek Language Support. (#903) 2023-02-23 05:17:47 +08:00
Cotes Chung
d921b981f7 docs: update tutorial
docs: update tutorial
2023-02-20 05:57:37 +08:00
Cotes Chung
b1453ccb0c chore: delete useless code 2023-02-18 10:43:16 +08:00
Cotes Chung
f517b33960 docs: update issue template 2023-02-17 07:18:07 +08:00
Cotes Chung
4490ce4107 refactor(tools): fix shell check issues 2023-02-16 05:02:22 +08:00
Cotes Chung
d0cf2a8dd5 chore(codeql): improve triggering conditions 2023-02-15 05:19:27 +08:00
Cotes Chung
5c6ec9d06b fix: css selector string escaping vulnerability (#888)
Resolves #888
2023-02-15 05:19:26 +08:00
Cotes Chung
c3a840076e refactor: replace the deprecated js api 2023-02-15 04:53:40 +08:00
Cotes Chung
a2d01365de chore(github): simplify the creation steps of issue/pr 2023-02-12 06:57:26 +08:00
Cotes Chung
ecff5630a6 chore(security): scan for vulnerabilities 2023-02-12 06:57:26 +08:00
Cotes Chung
909d136b37 docs(github): add security policy (#885) 2023-02-11 23:26:51 +08:00
Cotes Chung
27f4bf07bc style: format YAML array 2023-02-06 22:35:51 +08:00
Cotes Chung
5cbaf24bcb refactor(sidebar): improve creation of social links 2023-02-06 22:33:20 +08:00
Cotes Chung
af8986bf50 Merge branch 'hotfix/5.5.2' 2023-01-31 00:07:28 +08:00
Cotes Chung
7a601715df Merge branch 'hotfix/5.5.2' into production 2023-01-31 00:07:26 +08:00
Cotes Chung
3b89bf1df2 chore(release): 5.5.2 2023-01-31 00:07:24 +08:00
Cotes Chung
5df953f6c8 fix: position of prompt icon is incorrect in paragraph on mobile
mobile screens with width <= 576px
2023-01-31 00:03:59 +08:00
Cotes Chung
2b59326fa8 Merge branch 'hotfix/5.5.1' 2023-01-30 06:15:38 +08:00
Cotes Chung
5021678250 Merge branch 'hotfix/5.5.1' into production 2023-01-30 06:15:36 +08:00
Cotes Chung
8bc9d25434 chore(release): 5.5.1 2023-01-30 06:15:34 +08:00
Cotes Chung
0c9558de8a fix: the icon position of the prompts in the list is incorrect 2023-01-30 06:15:20 +08:00
Cotes Chung
54ba8befbe Merge branch 'master' into production 2023-01-30 05:04:12 +08:00
Cotes Chung
4b6722124d chore(release): 5.5.0 2023-01-30 05:04:10 +08:00
Cotes Chung
babb4a0c5a fix: prompt with nested blockquotes renders incorrectly (#846)
Resolves #846
2023-01-30 04:58:30 +08:00
Cotes Chung
511df11546 refactor: optimize tab cursor position calculation 2023-01-30 03:08:35 +08:00
Cotes Chung
dd339aea2b chore: ignore gem lock file in user-end 2023-01-30 03:01:02 +08:00
Cotes Chung
269506b647 chore(deps): liquid(v4.0.4) is compatible with ruby 3.2 (#854)
See: https://github.com/jekyll/jekyll/issues/9231
2023-01-18 23:13:06 +08:00
Abdullah Alattas
765af53b77 feat(i18n): add Arabic translation (#857) 2023-01-18 22:24:13 +08:00
Cotes Chung
41ed331456 fix: copy command line incomplete(.gp part) 2023-01-13 03:52:32 +08:00
Eduardo
9a011e14d6 feat(i18n): add Italian translation (#850) 2023-01-13 03:52:29 +08:00
Cotes Chung
5f628767e0 chore(bundler): deprecate :install_if option in Gemfile 2023-01-13 02:34:38 +08:00
Cotes Chung
808d3743e5 chore(deps): lock jekyll-sass-converter to v2.x on Linux-musl (#829)
Also, make the division formula backward compatible with `jekyll-sass-converter 2.x` (#848, #849)

Ref: https://github.com/jekyll/jekyll-sass-converter#migrate-from-2x-to-3x
2023-01-12 05:30:24 +08:00
Cotes Chung
e8d20bf7b0 docs: update tutorials
- remove outdated content
- append instructions for SASS overrides (#827)
2023-01-12 05:12:04 +08:00
Kalle Lahtinen
d6d03183ea feat(i18n): add Finnish translations (#843) 2023-01-12 05:12:03 +08:00
Cotes Chung
bd374dd383 fix: post's image would cover the PWA update alert 2023-01-12 05:12:03 +08:00
Cotes Chung
f2d285844e fix: correct encoding of spaces in share URLs (#835)
Resolves #835
2023-01-06 21:26:43 +08:00
MatyIRG
98d48f5da4 feat(i18n): add Czech language (#833) 2023-01-03 00:54:43 +08:00
Jarda Beran
7754a71ff9 chore(editorconfig): keep trailing spaces in Markdown (#830) 2023-01-03 00:53:09 +08:00
Cotes Chung
5ea3d0f496 Merge branch 'master' into production 2022-12-28 01:28:12 +08:00
Cotes Chung
7887b5ab62 chore(release): 5.4.0 2022-12-28 01:28:09 +08:00
Cotes Chung
937b22316a docs(readme): update feature list 2022-12-28 01:24:55 +08:00
Cotes Chung
8440d42984 docs: add tutorial and example for new features 2022-12-28 01:24:31 +08:00
Cotes Chung
6fa1777eb0 chore(tools): checkout latest tag on initialization 2022-12-28 01:13:35 +08:00
Cotes Chung
5a191e79af chore: remove extension from tools 2022-12-28 01:10:27 +08:00
Cotes Chung
72700be7dd chore(ci): fix workflow trigger conditions 2022-12-27 23:58:17 +08:00
Cotes Chung
d7bcb40cde refactor: update deprecated syntax for SASS division 2022-12-27 21:50:21 +08:00
Cotes Chung
09e4ad245b chore(deps): update gem spec list
- Jekyll 4.3.0 introduced `webrick` for Ruby 3.x
- Jekyll's dependency `nokogiri` does not yet support Ruby 3.2. See: https://github.com/sparklemotion/nokogiri/issues/2740/
2022-12-27 21:47:09 +08:00
Cotes Chung
09f9305d4c chore: hide blur edge of LQIP images 2022-12-27 21:41:45 +08:00
Cotes Chung
7a3d743419 chore: update footer meta information 2022-12-25 23:48:37 +08:00
Ken Dale
d2190c726f feat: add rel="me" to Mastodon sidebar contact links for verification (#807)
This will enable verification with Mastodon by including the `rel="me"` attribute.
https://docs.joinmastodon.org/user/profile/#verification

Co-authored-by: Cotes Chung <11371340+cotes2020@users.noreply.github.com>
2022-12-25 03:31:11 +08:00
Cotes Chung
8e73a91d25 test(ci): drop some old ruby ​​versions 2022-12-25 00:10:15 +08:00
Cotes Chung
8f2b42b1b3 test(ci): correct the patterns to match the SCSS files 2022-12-25 00:00:54 +08:00
Cotes Chung
e01eb8af14 refactor: unify the border radius of blocks
scope: code blocks, prompts, images, and videos
2022-12-25 00:00:08 +08:00
Cotes Chung
9306c7b39e feat: support dark and light mode images (#481) 2022-12-25 00:00:08 +08:00
Cotes Chung
ed6dc539ef feat: add embed video support 2022-12-25 00:00:07 +08:00
Cotes Chung
8de1abda6b fix: og:image will be incorrect if the image uses a cross-domain URL 2022-12-25 00:00:07 +08:00
Cotes Chung
4b6ccbcbcc feat: set preview image ratio to 1.91 : 1 2022-12-25 00:00:07 +08:00
Cotes Chung
ab16fdc7fc feat: add shimmer background when image loads 2022-12-24 23:51:47 +08:00
Cotes Chung
bffaf6374f feat: support LQIP for images 2022-12-15 02:27:12 +08:00
Cotes Chung
ca41c7ebff chore(deps): use lazysizes to load images 2022-12-09 07:36:06 +08:00
Cotes Chung
7651d2851b fix: hreflang tag attribute of feed misses site.alt_lang 2022-12-08 07:01:51 +08:00
Cotes Chung
5561cd86b5 refactor(icons): upgrade font-awesome syntax to version 6 2022-12-08 06:16:22 +08:00
Cotes Chung
7fb0ee0bed perf(cdn): optimize cache policy for static assets 2022-12-08 06:16:20 +08:00
Cotes Chung
7efd2f8aa2 fix: spaces in post title are encoded when sharing
Reproducible on iOS Safari
2022-12-08 01:05:17 +08:00
Cotes Chung
ec98f07aca fix: refactoring error when the image URL contains parameters 2022-12-08 00:40:12 +08:00
Cotes Chung
e7426ec67e chore: update image source 2022-12-05 03:50:51 +08:00
Cotes Chung
5fc428353c build(cd): migrate CD to GitHub 2022-12-05 00:51:38 +08:00
Cotes Chung
9de95bf089 build: reduce unnecessary builds 2022-12-05 00:41:13 +08:00
Cotes Chung
fa9879b5f1 chore: improve init-tool
- cleanup unused code of init-tool
- use conventional commits
2022-12-05 00:41:13 +08:00
MrEddX
7fd15a285f chore(i18n): update Bulgarian translation (#777) 2022-12-02 22:54:52 +08:00
Bornunique911
8734d1c1a3 chore: correct typo in tools/init.sh (#773) 2022-12-02 22:50:38 +08:00
Cotes Chung
5b5a3865ac Merge branch 'master' into production 2022-11-22 21:08:49 +08:00
Cotes Chung
fe2a3cdf51 chore(release): 5.3.2 2022-11-22 21:08:47 +08:00
Cotes Chung
4e7bf00ee9 chore: optimize the heading levels in change-log 2022-11-22 21:08:37 +08:00
Cotes Chung
773d3b1263 chore(icons): upgrade FontAwesome to v6.x 2022-11-22 20:49:19 +08:00
Cotes Chung
b0d5956f5a fix(comment): disqus doesn't follow theme mode switching 2022-11-22 19:05:19 +08:00
Cotes Chung
e50343b06b refactor(tools): reduce release steps 2022-11-22 19:05:19 +08:00
Cotes Chung
b3de722778 chore: migrate resource URLs 2022-11-22 18:11:05 +08:00
Cotes Chung
782a930fdf docs: update tutorial for defining preview image 2022-11-18 22:18:04 +08:00
Cotes Chung
da7d7e25b6 refactor: enhance the setting of preview image path 2022-11-18 22:16:35 +08:00
Cotes Chung
f6e9a3fccf fix: the image URL in the SEO-related tags is incomplete (#754)
This issue occurs when setting the `img_path` of the post or the `baseurl` of the site configuration.
2022-11-17 07:31:05 +08:00
Cotes Chung
ae2669fedc docs: restore some tutorial content (#721) 2022-11-12 18:41:44 +08:00
Cotes Chung
48f14e39ac fix: mermaid occasionally fails to initialize (#536) 2022-11-05 04:58:23 +08:00
Cotes Chung
6774e0e1fb fix: restore full-text search (#741)
Resolves #741
2022-11-05 04:58:23 +08:00
Nihil
8134209aa2 chore: optimize list indentation (#727) 2022-11-05 04:58:23 +08:00
Cotes Chung
c0e3e61fa7 Merge branch 'master' into production 2022-10-25 21:18:21 +08:00
Cotes Chung
e107a2e759 chore(release): 5.3.1 2022-10-25 21:18:19 +08:00
Cotes Chung
df8185f887 build: add skip-versioning option for release tool
Allow change the `CHANGELOG.md`
2022-10-25 21:17:51 +08:00
Cotes Chung
339293d0d7 style: 4 space indents to the JS files 2022-10-25 19:26:44 +08:00
Cotes Chung
1fd665bf49 perf: modify checkbox icon with Liquid
Also optimize list padding start
2022-10-24 21:06:02 +08:00
Cotes Chung
e48d66e525 docs: update CI badge 2022-10-22 16:52:54 +08:00
Cotes Chung
647eea8dbd perf: truncate post content for search results 2022-10-22 03:33:09 +08:00
Cotes Chung
1c330f403c chore(gh-actions): add style-lint on CI 2022-10-22 03:26:22 +08:00
Cotes Chung
b6a1a4172e style(js): fix code style in JS 2022-10-22 03:26:22 +08:00
svenskithesource
3c44a1ff71 chore: correct spelling of example (#718)
`doamin` -> `domain`
2022-10-22 03:26:22 +08:00
Cotes Chung
e7dee2a589 refactor: update vendor prefix in SCSS
{
  "browsers": [
    "last 2 versions",
    "> 0.2%",
    "not dead"
  ]
}
2022-10-22 03:26:22 +08:00
Cotes Chung
a6ce765082 style: improve SCSS style 2022-10-22 03:26:22 +08:00
Cotes Chung
294e2985c1 build(npm): add stylelint 2022-10-21 02:38:25 +08:00
Cotes Chung
5de6f17754 Merge branch 'feature/improve-locale-datetime' 2022-10-19 04:23:00 +08:00
Cotes Chung
d96fa5aa0c refactor: reduce language include file 2022-10-19 04:22:13 +08:00
Cotes Chung
6852ceb280 refactor: remove site config option prefer_datetime_locale 2022-10-19 04:22:12 +08:00
Cotes Chung
f904e8cd48 refactor(locale): restore options for changing date format (#716) 2022-10-19 04:14:59 +08:00
Cotes
81b9f7a9ac Merge pull request #713 from ruzickap/fix-linter-issues 2022-10-15 21:29:52 +08:00
Cotes Chung
916fbf4a2c build(gulp): append new line at end of JS files 2022-10-15 21:28:25 +08:00
Petr Ruzicka
d9d7848f03 style(linter): fix linter issues 2022-10-15 21:23:21 +08:00
Petr Ruzicka
70662a0365 chore(giscus): add reactions-enabled option (#712) 2022-10-15 04:31:44 +08:00
Cotes Chung
3432413020 refactor(mobile): resume footer slide animation & content min-height 2022-10-14 01:48:28 +08:00
Cotes Chung
fd5df7e1a1 refactor(typo): optimize the site-title position 2022-10-13 22:36:09 +08:00
Cotes Chung
65f722fb04 docs: update typography demo post 2022-10-09 20:10:03 +08:00
Cotes Chung
1082d041ca refactor: improve prompt box layout
When the prompt is inside the list, the icon position is outside the prompt box.

Introduced by fb13e32
2022-10-09 20:10:03 +08:00
Cotes Chung
eac3f9b434 perf(typography): optimize the line height of post content 2022-10-09 20:10:03 +08:00
Cotes Chung
304d75c500 chore(deps): upgrade Mermaid to 9.x
Close #694
2022-10-07 23:43:50 +08:00
Cotes Chung
fb13e3219b fix: prompt content overflows horizontally (#705)
Resolves #705
2022-10-07 18:34:12 +08:00
Cotes Chung
5511b2883f fix: 404 page missing title in tablet/desktop view 2022-10-07 15:55:44 +08:00
Cotes Chung
76712c09cd chore(travis): enable the cache in production build 2022-10-07 15:37:48 +08:00
Cotes Chung
80cb0b3717 fix(tools): multiple configuration files will fail the test 2022-10-06 20:39:40 +08:00
Cotes Chung
d2fb98b3e5 perf(posts): improve core block bottom padding
Fixes the relative position between the bottoms of the core-wrapper and the ToC (caused by b405a58)
2022-10-06 03:30:09 +08:00
Josh Johanning
39da11e3f3 perf: optimize the extra padding in lists (#703)
Resolves #702
2022-10-05 15:17:50 +08:00
Cotes Chung
fec5214b45 chore: reduce files from gem package 2022-10-01 16:12:45 +08:00
Cotes Chung
827f84c7e8 chore: move CN funding to GitHub 2022-10-01 00:45:39 +08:00
Cotes Chung
3ffd19d81d refactor: rename color variable 2022-09-29 22:50:41 +08:00
Cotes Chung
49bb93cc0c perf(layout): improve the min-height of main content (#674) 2022-09-29 22:50:40 +08:00
Cotes Chung
8bcdd87891 chore(docs, cd): correct workflow name in tutorial 2022-09-25 01:58:54 +08:00
Cotes Chung
7cc36c5287 Merge branch 'master' into production 2022-09-23 21:11:32 +08:00
Cotes Chung
3878815852 chore(release): 5.3.0 2022-09-23 21:11:29 +08:00
Cotes Chung
e55ebadeb2 docs: add PV feature deprecation note
close #682
2022-09-23 21:01:25 +08:00
Cotes Chung
0c5b697fd3 fix: correct the i18n for tab titles 2022-09-20 15:25:09 +08:00
Michael Tan
f1d9e99bc0 feat: add multiple authors to a post (#677)
Resolves #675
2022-09-14 05:05:01 +08:00
Sorin
b288587c1c fix: correct spelling of panel (#686)
Co-authored-by: sorin-g <g.sorin94@gmail.com>
2022-09-13 04:13:15 +08:00
Cotes Chung
f35b147b28 docs: update URL on readme 2022-09-11 00:41:15 +08:00
Cotes Chung
163c5761e9 docs: update deployment tutorial 2022-09-11 00:41:15 +08:00
Cotes Chung
4023be9bef chore: simplify the release tool
Tagging on the`master` or `patch` branch
2022-09-10 00:56:56 +08:00
Naufal Shidqi
0dcd39d491 fix: add missing color to linkedin icon for share list (#683) 2022-09-07 23:28:05 +08:00
Cotes
45c58d8f4c Merge pull request #664 from GriceTurrble/patch-1
Build and deploy via GH actions only (no deploy script)
2022-09-07 23:06:09 +08:00
Galen Rice
e993ac872a docs: update deployment notes 2022-09-07 22:59:19 +08:00
Galen Rice
21c8c2b70d docs: switch the reference of deploy.sh to test.sh 2022-09-07 22:53:11 +08:00
Galen Rice
43323abdfe chore(ci, cd): build and deploy via _gh-actions_ directly
New actions available in GitHub allow for building and deploying the site
completely from the actions workflow with minimal code.
The deploy.sh script is no longer necessary with these changes.
2022-09-07 22:53:11 +08:00
Martin Pfundmair
b78a2d85bd docs: fix a typo of the tutorial (#676) 2022-09-07 13:51:29 +08:00
Daniel Haider
940b2810e9 feat(i18n): add German locale file (#663) 2022-08-13 11:31:41 +08:00
Cotes Chung
b405a58838 refactor: make sure there is space at the bottom of core block 2022-08-09 16:43:01 +08:00
Cotes Chung
d792a2f6af chore: improve responsive design of archive entries 2022-08-08 20:56:38 +08:00
Cotes Chung
22d4275f75 refactor: optimize the layout of archive timeline 2022-08-03 19:13:01 +08:00
Nihil
3fa1bf3054 fix: code contains spaces in headings (#644) 2022-07-23 19:10:20 +08:00
Hüzünlü Artemis [HuzunluArtemis]
ad137fa294 feat(i18n): add Turkish language (#631) 2022-07-02 18:23:24 +08:00
Josh Johanning
20b7fe3a53 docs: adding a note about preview images and v5.2.0 (#632) 2022-07-02 18:16:02 +08:00
Cotes Chung
5eb329f36c chore: center align preview image caption (#633)
Resolve #633
2022-07-02 18:05:03 +08:00
Cotes Chung
378b65a061 fix: the code doesn’t wrap inside the prompt (#626)
Fixes #626
2022-07-02 00:53:55 +08:00
MrEddX
2fed338ce6 feat(i18n): add Bulgarian support (#612) 2022-06-19 00:09:18 +08:00
Cotes Chung
232927c47c Merge branch 'hotfix/5.2.1' 2022-06-18 00:09:27 +08:00
Cotes Chung
5b97d3fd25 Merge branch 'hotfix/5.2.1' into production 2022-06-18 00:09:25 +08:00
Cotes Chung
856ef11487 chore(release): 5.2.1 2022-06-18 00:09:22 +08:00
Bence Boros
b0329775fc feat(i18n): add Hungarian locale file (#597, #598) 2022-06-11 00:40:16 +08:00
Cotes Chung
971fe03ec3 fix: exclude CHANGELOG from output 2022-06-10 23:28:40 +08:00
Cotes Chung
96af7291ea fix(PWA): sometimes update notification is not triggered 2022-06-10 19:09:31 +08:00
Cotes Chung
4c45f3788e Merge branch 'master' into production 2022-06-09 17:59:55 +08:00
Cotes Chung
baad801066 chore(release): 5.2.0 2022-06-09 17:59:27 +08:00
Cotes Chung
7f18cdc1fd build: fix the preview mode for release tool 2022-06-09 17:59:25 +08:00
Cotes Chung
fd0f983bbe chore: optimize the layout of main content and search input 2022-06-09 03:46:47 +08:00
Cotes Chung
35cadf969d perf(categories): support singular and plural forms of locale (#595)
resolves #595
2022-06-08 19:02:18 +08:00
Raymond Wright
cc6398c104 docs: fix typo in English locale file (#594) 2022-06-08 16:48:11 +08:00
Cotes Chung
5d6e8c5ef6 perf: improve the responsive design for ultrawide screens (#540)
Resolves #540
2022-06-08 16:15:38 +08:00
Cotes Chung
20caace68a fix(PWA): avoid repeated notification of SW update 2022-06-08 16:09:18 +08:00
Cotes Chung
ac1731d123 Merge branch 'feature/enhance-pwa' 2022-06-05 00:10:49 +08:00
Cotes Chung
106c981bac feat: add option to turn off PWA (#527) 2022-06-05 00:10:20 +08:00
Cotes Chung
d127183b97 feat(PWA): add Service Worker update notification 2022-06-04 23:54:06 +08:00
bibi2233
54124d5134 fix: assets URL is missing baseurl in self-hosted mode (#591) 2022-06-02 20:55:34 +08:00
Cotes Chung
76a1b6a068 fix(theme mode): SCSS syntax error (#588)
Fixes #588
2022-05-30 05:50:46 +08:00
Cotes Chung
91308ae567 refactor: decouple the Archives from 404 page (#576)
Resolves #576
2022-05-24 23:47:24 +08:00
Cotes Chung
12f1e6fe89 refactor(tags): avoid URL errors caused by improper site.baseurl settings
Resolves #580
2022-05-24 16:33:42 +08:00
Six Jonathan
94e81447af feat: add fr-FR support to locales (#582) 2022-05-24 16:31:50 +08:00
Cotes Chung
b7ad538ce2 Merge branch 'feature/improve-post-meta' 2022-04-26 05:05:15 +08:00
Cotes Chung
097bb23530 docs: add description for preview image 2022-04-26 04:55:38 +08:00
Cotes Chung
2bd6efa95a feat: support showing description of preview image
Also moved the image position to the metadata area
2022-04-26 04:55:38 +08:00
Cotes Chung
135a16f13e perf: avoid post pageviews from shifting while loading 2022-04-26 04:55:37 +08:00
Cotes Chung
6d35f5f8da perf: avoid the layout shift for post datetime 2022-04-26 04:55:37 +08:00
Cotes Chung
42c44a8bc1 refactor: simplify travis config 2022-04-17 17:02:32 +08:00
Cotes
138c537010 Merge pull request #541 from ZakKemble/fix-various
Fix various
2022-04-14 23:58:37 +08:00
Zak Kemble
59e955745f fix: spurious header closing tags
`right` already contains the closing tag
2022-04-14 16:50:13 +01:00
Zak Kemble
4f590e2bba fix: p is not allowed in span 2022-04-14 16:50:13 +01:00
Zak Kemble
6900d9f2bc fix: follow paginate_path config for pagination
Using "paginate_path: /page/:num/" to generate "/page/2/" paths would still generate invalid
pagination links to "/page2/"
2022-04-14 16:50:13 +01:00
Jayitha
30787fc4cf fix: horizontal scroll for long equations (#545) 2022-04-03 04:10:34 +08:00
Galen Rice
5402523ae5 fix: force checkout of gh-pages branch (#544)
When using the theme starter, which uses a git submodule,
assets loaded from that submodule are "untracked" files in the pages branch working tree.
The build can fail at this line due to Git, saying "the following untracked working tree files would be overwritten by checkout".

Adding `-f` forces the checkout, overwriting all files.
The other deploy steps then take over and rewrite the files as needed.
2022-04-02 19:22:48 +08:00
Cotes Chung
156c02a91a Merge branch 'feature/commitlint-config' 2022-04-02 19:21:52 +08:00
Cotes Chung
6ca66366d5 build(git-ignore): add missing item
When using the theme starter, which uses a git submodule,
assets loaded from that submodule are "untracked" files in the pages branch working tree.
The build can fail at this line due to Git, saying "the following untracked working tree files would be overwritten by checkout".

Adding `-f` forces the checkout, overwriting all files.
The other deploy steps then take over and rewrite the files as needed.
2022-04-02 19:18:32 +08:00
Cotes Chung
0740b857c6 build(deps): disables the rule body-max-line-length 2022-04-02 19:13:54 +08:00
Zak Kemble
58928dbc90 fix: alt is not a valid attribute for 'a' tag 2022-03-27 18:01:24 +01:00
Cotes Chung
0542b5149c fix: remove whitespace from avatar URL (#537)
Fix #537
2022-03-22 21:13:39 +08:00
Cotes Chung
e68108014a style: add indentation 2022-03-22 21:13:39 +08:00
Camilo Martínez Burgos
efe75adf27 feat: add es-ES support to locales (#533)
Using the already existing locales in the chirpy repository, I added a new locale file in Spanish.
2022-03-17 02:22:46 +08:00
Cotes Chung
3e64400246 Merge branch 'fix/seo-tag' 2022-03-17 02:11:47 +08:00
Cotes Chung
f581b4395f docs: update posts for author info 2022-03-17 02:05:45 +08:00
Cotes Chung
96a16c868e fix: correct the twitter:creator of Twitter summary card 2022-03-17 01:40:38 +08:00
Cotes Chung
67d51d5df2 docs: update preview image's font-matter 2022-03-16 22:51:41 +08:00
Cotes Chung
9cefe58993 fix: when the site.img_cdn is set to the local path, the preview-image path loses the baseurl 2022-03-16 22:17:19 +08:00
Cotes Chung
b8d1bcd3de fix: resume the preview image SEO tag (#529)
Fix #529
2022-03-16 22:17:19 +08:00
Cotes Chung
a60a4562bf Merge branch 'feature/global-npm-bin' 2022-03-13 18:02:52 +08:00
Cotes Chung
03e4f575ba build(npm, shell): use the global standard-version 2022-03-13 16:53:13 +08:00
Cotes Chung
b58cab1c07 docs: update contributing guidelines 2022-03-13 16:50:12 +08:00
Cotes Chung
da05d395fb build(npm): use the global commitlint & husky 2022-03-13 16:47:22 +08:00
Cotes Chung
f0a2e2f4e1 chore(gh-actions): resume the trigger branch 2022-03-12 22:29:15 +08:00
Cotes Chung
c57238975a docs: update bug report template 2022-03-12 22:27:39 +08:00
Paulo Freitas
c2c503f633 feat: add pt-BR support to locales 2022-03-07 16:12:53 +08:00
Cotes Chung
5607a1755a Merge branch 'feature/update-deps' 2022-03-05 00:09:22 +08:00
Cotes Chung
5a575613bb build: update required ruby version & docs uri 2022-03-04 23:58:13 +08:00
Cotes Chung
00ad357033 ci: update matrix environment 2022-03-04 23:58:13 +08:00
Zak Kemble
dd9d5a7207 fix: use jsonify to generate valid json (#521) 2022-03-03 21:49:05 +08:00
Cotes
d2bbcb791f Merge pull request #520 from ZakKemble/fix-script-location-and-url-encode 2022-03-03 21:06:48 +08:00
Zak Kemble
4c1c8d8b0e fix: correctly URL encode share links
Relates to #496
2022-03-03 12:55:27 +00:00
Zak Kemble
2103191b2f fix: script code should be in head or body, not in between 2022-03-03 12:54:44 +00:00
Cotes Chung
5d85ccb994 fix: table bypass refactoring when it contains IAL (#519)
Fix #519
2022-03-03 18:05:48 +08:00
Cotes Chung
7fef3fafec Merge branch 'feature/auto-versioning' 2022-03-03 03:11:08 +08:00
Cotes Chung
887859dd32 docs: update contributing guidelines 2022-03-03 02:46:28 +08:00
Cotes Chung
42fe8f5d21 build(shell): update release tool to work with standard-version 2022-03-03 02:46:28 +08:00
HigherOrderLogic
171463d76d Add Vietnamese locale (#517) 2022-03-02 02:16:31 +08:00
Cotes Chung
dd264e793c ci(gh-actions): add commitlint for PR 2022-03-01 23:26:07 +08:00
Cotes Chung
004ab6c56a build(deps): add commitlint, husky, and standard-version 2022-03-01 23:26:07 +08:00
Cotes Chung
3969b28743 Bump version to 5.1.0 2022-02-14 23:59:48 +08:00
Cotes Chung
5f31fbcf72 Enhance versioning tools 2022-02-14 23:59:17 +08:00
Cotes Chung
4986db1204 Improve SCSS comment symbols: change // to /* */ 2022-02-14 23:39:50 +08:00
Cotes Chung
508d3c5c6a Update docs 2022-02-14 22:15:38 +08:00
Cotes Chung
35e013f7fd Adapt the search input to Bootstrap 4.6 2022-02-14 22:15:38 +08:00
Cotes Chung
e52dc9551c Beautify heading style (margin, anchor) 2022-02-14 22:15:38 +08:00
Cotes Chung
5753118d8b Keep the original image shadow of the theme
Bootstrap 4.6.x has its own class `.shadow`
2022-02-14 21:41:50 +08:00
Cotes Chung
5295bbf4f9 Merge branch 'feature/expand-prompt' 2022-02-14 21:39:10 +08:00
Cotes Chung
cfd05d1aa5 Update prompt related docs 2022-02-14 20:14:39 +08:00
Cotes Chung
6c4d0e0def Rename prompt type note to info 2022-02-14 20:14:39 +08:00
Cotes Chung
15cfa84ddb Add tip type prompt 2022-02-13 03:08:57 +08:00
Cotes Chung
08a993be90 Bypass hidden posts in home page pagination (fix #504) 2022-02-12 06:10:21 +08:00
Cotes Chung
2b66ad0441 Update readme 2022-02-12 06:06:42 +08:00
Cotes Chung
0f6b170e24 Use constants to define resources for utterances
Self-host the JS for `utterances` is not necessary, because the list of comments cannot be loaded if the network is offline.
2022-02-12 05:47:48 +08:00
Cotes Chung
4df4f7f8db Add Giscus comments support (resolve #501) 2022-02-12 05:47:48 +08:00
Cotes Chung
09f1ded60c Merge branch 'feature/configurable-assets-cdn' 2022-02-10 04:14:03 +08:00
Cotes Chung
70e089c392 Add introduction to new features 2022-02-10 04:12:35 +08:00
Cotes Chung
dc42b6f800 Add assets submodule 2022-02-10 04:12:35 +08:00
Cotes Chung
3685685b28 Make the source of the static assets configurable
- Easy to switch between different CDN
- Allow self-host static assets
2022-02-10 04:12:35 +08:00
Cotes Chung
51688ccc9f Correct the branches that triggers gh-action 2022-02-04 06:47:03 +08:00
Cotes Chung
3db6de0abb Update project description 2022-02-04 06:23:09 +08:00
Cotes Chung
b27258899b Clear references to deleted folder docs 2022-02-04 06:23:09 +08:00
Cotes Chung
cfe9029cd1 Remove unused HTML attribute from sidebar 2022-02-04 06:23:09 +08:00
Cotes Chung
2c5e67f02b Improve the SW cache list 2022-02-04 06:23:09 +08:00
Cotes Chung
7a392510e6 Remove unused include from layouts 2022-02-03 01:04:42 +08:00
Cotes Chung
85fe258b20 Migrate the images from jsDelivr CDN to GitHub
jsDelivr does not allow caching of website images to their CDN!

see: <https://www.jsdelivr.com/terms/acceptable-use-policy-jsdelivr-net#2-hard-limits-and-restrictions>
2022-01-29 01:08:52 +08:00
Cotes Chung
55fd119d35 Fix hover color for links at the tail of posts 2022-01-28 23:48:46 +08:00
Cotes Chung
fc36f8b66d Improve the color of prompts 2022-01-28 23:48:46 +08:00
Cotes Chung
a5d38e7fbc Improve local datetime display
- Protect author's location privacy
- Reduce locale configuration parameters
2022-01-28 23:45:29 +08:00
Cotes Chung
a24545ed60 Prevent relative time conversion failure on Safari 2022-01-25 01:18:25 +08:00
Cotes Chung
66e655f09b Escape the post sharing URL (fix #496) 2022-01-23 05:11:14 +08:00
Cotes Chung
c3b2151ca0 Simplify the wiki 2022-01-23 04:30:54 +08:00
Cotes Chung
3d8184602b Merge branch 'feature/filepath-code' 2022-01-23 04:04:38 +08:00
Cotes Chung
c344926886 Show the filepath style in docs 2022-01-23 03:57:20 +08:00
Cotes Chung
756465d621 Add filepath style for code 2022-01-23 03:49:28 +08:00
Cotes Chung
7b0e9a6803 Merge branch 'feature/prompt-blockquote' 2022-01-23 02:00:48 +08:00
Cotes Chung
f043123f23 Introduce the prompts in docs 2022-01-23 01:59:36 +08:00
Cotes Chung
ca181422a6 Add blockquote prompts (resolve #489) 2022-01-23 01:59:36 +08:00
Cotes Chung
4845f6ef14 Fix attribute name of share URL button 2022-01-19 17:54:50 +08:00
Cotes Chung
031e878620 Travis: using the minimal environment when updating starter 2022-01-19 17:22:29 +08:00
Oaker Min
166c05bcd1 Update the telegram share URL of the post (#490)
Telegram API update
2022-01-19 01:36:00 +08:00
Cotes Chung
0890147423 Merge branch 'feature/docs' 2022-01-19 01:27:33 +08:00
Cotes Chung
323a888160 Update docs in real time 2022-01-19 00:30:55 +08:00
Cotes Chung
7788a140f2 Update prerequisites in tutorial (resolve #484) 2022-01-19 00:23:16 +08:00
Cotes Chung
1b379e3870 Improve chapter levels of guide 2022-01-19 00:23:16 +08:00
Cotes Chung
640bde95c4 Fix tutorial on writing posts 2022-01-19 00:23:16 +08:00
Roman Kvasnytskyi
1a93d5e557 Added russian and ukrainian translation and locales (#485) 2022-01-16 00:13:09 +08:00
Oaker Min
b8c3ea221e Added Burmese translation and locales (#483) 2022-01-15 17:59:39 +08:00
Tamme Schichler
4a2016a9e3 Don't include Google Analytics scripts without analytics id (#482) 2022-01-14 19:03:16 +08:00
Cotes Chung
a6c73e8f4f Avoid image caption shifting on load 2022-01-13 01:07:47 +08:00
Cotes Chung
f8f4dd889e Normalized attribute name in HTML
Add prefix `data-` for following attributes:
- `topbar-visible`
- `mode`
- `label-text`
- `title-succeed`
2022-01-13 00:23:08 +08:00
Cotes Chung
96e7cd79af Avoid whitespace before anchors when wrapping 2022-01-12 22:51:38 +08:00
Cotes Chung
22c12a4d34 Merge branch 'feature/improve-topabar-ux-on-mobile' 2022-01-09 19:12:50 +08:00
Cotes Chung
2cef631385 Hide topbar when mobile orientation in landscape mode (resolve #459) 2022-01-09 19:09:29 +08:00
Cotes Chung
9620eddd12 Simplify the top-bar title detect process 2022-01-08 02:57:16 +08:00
Cotes Chung
dbf86a2309 Merge branch 'hotfix/5.0.2' 2022-01-08 02:44:36 +08:00
Cotes Chung
2d02a6415d Bump version to 5.0.2 2022-01-08 02:44:19 +08:00
Cotes Chung
67bd6679b9 Update travis: deploy only when tagging
The bundler cache is also disabled because the tag name is always changing
2022-01-08 02:43:06 +08:00
Cotes Chung
f2a2792405 Fix responsive design of search hints 2022-01-08 02:28:10 +08:00
Cotes Chung
837d0778b6 Avoid preview-image delaying the switching of the top bar title (mobile views)
Use Intersection Observer API to optimize the performance of title switching
2022-01-08 02:28:10 +08:00
Cotes Chung
97ae2bf6c0 Update ReadMe 2022-01-08 01:19:49 +08:00
Cotes Chung
e7b377cf63 Prevent the top bar from covering the heading when scrolling down (in mobile views) 2022-01-06 21:46:08 +08:00
Cotes Chung
b0815b53c0 Enable smooth scrolling for layout page 2022-01-06 21:46:00 +08:00
Josh Johanning
4dd0c6d16f improve english locales for recently updated posts 2022-01-05 16:35:07 +08:00
Cotes Chung
57a76097d6 Merge branch 'hotfix/5.0.1' 2022-01-05 03:14:38 +08:00
Cotes Chung
22e2367b45 Bump version to 5.0.1 2022-01-05 03:11:24 +08:00
Cotes Chung
b44bf78f10 Improve the creation of header anchors (fix #474) 2022-01-05 02:36:07 +08:00
Cotes Chung
948356d7d6 Fix <img> HTML element refactoring issue (resolve #476, close #477) 2022-01-05 02:36:07 +08:00
Cotes Chung
7337fa5f20 Merge branch 'feature/docs' 2022-01-04 06:49:45 +08:00
Cotes Chung
44acea2f5d Add content to the contributing guidelines 2022-01-04 06:48:41 +08:00
Cotes Chung
65a38c8f22 Simplify the README 2022-01-04 05:20:31 +08:00
Cotes Chung
b91b6711b0 Update the tutorial on comments and image attributes 2022-01-04 02:20:58 +08:00
Cotes Chung
aeb2d57b60 Bump version to 5.0.0 2022-01-03 00:44:23 +08:00
Cotes Chung
2406ce1dc8 Merge branch 'feature/docs' 2022-01-03 00:42:16 +08:00
Cotes Chung
bec9246823 Fix preview image brightness in dark mode 2022-01-03 00:32:57 +08:00
Cotes Chung
adaefc02e9 Update docs 2022-01-03 00:17:30 +08:00
Cotes Chung
ee7266ff0d Update mockup image 2022-01-03 00:17:30 +08:00
Cotes Chung
cad62feb91 Beautify the style of <kbd> (resolve #471) 2022-01-02 16:28:42 +08:00
Cotes Chung
b85cb39388 Replace the demo website URL with a permalink 2022-01-02 16:17:32 +08:00
Cotes Chung
4360e2938c Avoid Disqus jitter 2021-12-31 20:49:00 +08:00
Cotes Chung
ecf31ff308 Fix the code style of SASS 2021-12-31 00:33:04 +08:00
Cotes Chung
37344ef0df Merge branch 'feature/post-img-path' 2021-12-31 00:09:58 +08:00
Cotes Chung
9e2a4fc8c9 Merge branch 'feature/simplify-html-struct' 2021-12-31 00:09:53 +08:00
Cotes Chung
fc71289dc8 Bypass Jekyll build on the gh-pages branch 2021-12-31 00:09:13 +08:00
Cotes Chung
c8fd0d728d Clean up the JS log when the post is scrolled(mobile views) 2021-12-31 00:09:09 +08:00
Cotes Chung
ef2aa525d5 Add intro for img_path 2021-12-31 00:00:28 +08:00
Cotes Chung
1fe0b2958b Add new variable img_path for posts 2021-12-31 00:00:28 +08:00
Cotes Chung
e466a643d5 Merge branch 'feature/multi-comments' 2021-12-30 23:08:09 +08:00
iwasaki501
f7ec9cd24a Bug Fix: Link in a heading is rendered as an anchor and becomes invisible unless it is hovered. (#469)
`<a>` tags in headings are set to apply the style of `%anchor` in `module.scss` and `common.scss`.
Therefore, if I put a link in a heading, the link will have the same style as the anchor,
which means that the font size becomes smaller and the link will not be displayed unless I hover the mouse over it.
My suggestion is to set an `anchor` class for the `<a>` tag of the anchor and apply style settings to the `anchor` class, not to the `a` tag.
2021-12-30 15:57:02 +08:00
Cotes Chung
3342abc9e6 Refactor the page layout 2021-12-30 00:38:32 +08:00
mirusu400
d47ec035d3 Add Korean locales (#467)
Add Korean translation
2021-12-26 14:53:32 +08:00
Cotes Chung
a403ffee42 Reduce style class for page layout 2021-12-13 21:09:32 +08:00
Cotes Chung
d315bf57e7 Integrate utterances comments 2021-12-13 04:40:05 +08:00
Cotes Chung
75176522e3 Prepare for multiple comment systems 2021-12-13 03:34:46 +08:00
Cotes Chung
ebb3dc940c Merge branch 'feature/refactor-theme-mode-switch' 2021-12-13 03:33:32 +08:00
Cotes Chung
c02c9c6a04 Decouple theme-mode toggle & mermaid 2021-12-13 03:33:01 +08:00
Cotes Chung
3a4316b29b Merge branch 'feature/fix-img-param-abbr' 2021-12-13 02:39:44 +08:00
Cotes Chung
f4b2dfe8b4 Fix the conversion of image width/height abbreviation 2021-12-12 00:38:49 +08:00
Cotes Chung
09e8eb4274 Make the preview image full screen width on mobile 2021-12-10 21:54:24 +08:00
Cotes Chung
5ca0966c41 Merge branch 'feature/improve-heading-ux' 2021-12-10 21:54:11 +08:00
Cotes Chung
d919f833f1 Show heading anchor on touch devices 2021-12-10 00:28:50 +08:00
Cotes Chung
df81012e28 Always close the top bar when smooth scrolling 2021-12-10 00:28:50 +08:00
Cotes Chung
09742d40dd Prevent the anchor of the heading from being awakened early 2021-12-09 18:52:02 +08:00
Cotes Chung
259d0deabc Merge branch 'feature/improve-audits' 2021-12-07 23:21:47 +08:00
Cotes Chung
cf6c8e9b3a Improve accessibility of panel heading elements 2021-12-07 23:09:00 +08:00
Cotes Chung
c64e587335 Improve SEO & accessibility on mode toggle element 2021-12-07 23:09:00 +08:00
Cotes Chung
415f11ecb8 Escape characters of post list (homepage and related posts)
To pass the html-proofer test
2021-12-07 16:40:19 +08:00
Cotes Chung
5dc830d11e Merge branch 'feature/add-heading-anchors' 2021-12-07 16:28:19 +08:00
Cotes Chung
7579644e8d Make the anchor scroll position more precise 2021-12-07 16:26:26 +08:00
Cotes Chung
4cff83268b Reduce refactor scope 2021-12-07 16:26:26 +08:00
Cotes Chung
1487ae5284 Add style for heading anchor 2021-12-07 16:26:26 +08:00
Cotes Chung
697c584b48 Merge branch 'feature/fix-pannel-toc' 2021-12-07 15:00:07 +08:00
Cotes Chung
089a19bc9e Merge branch 'feature/support-image-parameter-abbreviation' 2021-12-07 14:59:11 +08:00
Cotes Chung
007d242e87 Fix ToC incorrectly display the contents of the panel
Bug introduced in the commit `b518c9d`
2021-12-07 14:53:48 +08:00
Cotes Chung
6447ffaf59 Add new feature intro to docs 2021-12-07 01:04:13 +08:00
Cotes Chung
790cf30376 Add abbreviation support for image width/height 2021-12-07 01:04:13 +08:00
Cotes Chung
45adf4aac2 Create anchor for headings 2021-12-06 03:04:50 +08:00
Cotes Chung
b1377ac694 Improve heading font-size & layout 2021-12-05 23:44:04 +08:00
Cotes Chung
cf8dae9454 Merge branch 'feature/improve-meta-display'
# Conflicts:
#	_sass/addon/commons.scss
2021-12-05 17:46:14 +08:00
Cotes Chung
9f5e579596 Merge branch 'feature/use-default-scrollbar' 2021-12-05 16:42:43 +08:00
Cotes Chung
99e468cae5 Merge branch 'feature/improve-post-design' 2021-12-05 16:42:38 +08:00
Cotes Chung
4fde37e879 Merge branch 'feature/switch-funding' 2021-12-05 16:35:00 +08:00
Cotes Chung
19debc4add Switch donation method from BMC to Kofi 2021-12-05 16:29:46 +08:00
Cotes Chung
afcf0bde22 Refactor footer style 2021-12-05 04:42:53 +08:00
Cotes Chung
36f55f091d Add content to the tutorial 2021-12-05 04:42:53 +08:00
Cotes Chung
e2003f2b03 Add a link to the author of the post 2021-12-05 04:42:53 +08:00
Cotes Chung
563e8085e8 Redesign the post meta layout
- posted date
- updated date
- read time
- license statement of post bottom
- also refactor the `timeago.js`
2021-12-05 04:42:53 +08:00
Cotes Chung
902546cf4d Remove unused style for mode-toggle 2021-12-03 21:23:37 +08:00
Cotes Chung
e06d237eae Use the default scroll bar
And make the Chrome scroll bar on Windows support dark mode
2021-12-03 21:23:37 +08:00
Cotes Chung
6220d09ffb Replace the pageviews with categories on home page 2021-12-03 21:03:31 +08:00
Cotes Chung
3c91dc1f6f Move the preview image of the post to the top 2021-12-03 16:36:40 +08:00
Cotes Chung
6a65f3a7f7 New design for code snippet header 2021-12-03 16:34:26 +08:00
Cotes Chung
57feaa660e Upgrade uglify-js to v3.14.3 2021-12-02 23:33:39 +08:00
Cotes Chung
db9cfc270b Fix code style issue 2021-12-02 21:32:26 +08:00
Cotes Chung
3caacbee61 Improve mobile title display
Also fixed the 404 page title on mobile screens
2021-12-02 21:18:18 +08:00
Cotes Chung
b518c9d3bc Merge branch 'feature/refactor-layouts' 2021-12-02 05:54:56 +08:00
Cotes Chung
1c758cf4a2 Update related styles 2021-12-02 05:54:43 +08:00
Cotes Chung
df3a703988 Refactor HTML structure 2021-12-02 05:54:43 +08:00
Cotes Chung
12407bbfc0 Merge branch 'feature/hide-mouse-cursor' 2021-12-02 05:53:13 +08:00
Cotes Chung
55fce7574c Refactor theme mode toggle
- Improve mode switching JS execution priority
- Drop deprecated Web API
2021-12-02 05:51:30 +08:00
Cotes Chung
833b6c9d5c Hide the cursor of icons, images, and code snippets
Found on Windows with mouse
2021-12-02 05:51:30 +08:00
Cotes Chung
a34b77969f Simplify the style of <a> 2021-12-02 05:51:30 +08:00
Bhavy Khatri
707466b1df Accessibility Bug Fix: Tab focus doesn't reach Dark mode toggle button (#453) 2021-12-01 00:23:22 +08:00
Cotes Chung
602e98448d Merge branch 'hotfix/4.3.4' 2021-11-29 21:05:44 +08:00
Cotes Chung
0bf7a8f1d9 Bump version to 4.3.4 2021-11-29 21:03:53 +08:00
Cotes Chung
a7361717a6 Exclude NPM lock-file from output 2021-11-29 21:03:53 +08:00
Cotes Chung
e880448ba5 Fix code-language conversion (json, plaintext) 2021-11-29 21:03:53 +08:00
Cotes Chung
c28b6ce7d1 Fix markdown indentation 2021-11-29 21:03:53 +08:00
Cotes Chung
b7cc22983f Prevent multiple reserse-footnote from overlapping (fix #439) 2021-10-31 22:56:22 +08:00
Cotes Chung
a1551cd740 Merge branch 'feature/code-style' into develop 2021-10-26 04:31:31 +08:00
Cotes Chung
35c4d480ed Update Codacy badge of README 2021-10-26 04:29:16 +08:00
Cotes Chung
b5c26fed08 Fix SCSS code style 2021-10-26 04:29:16 +08:00
Cotes Chung
2dc2175723 Fix JS code style 2021-10-26 04:29:16 +08:00
Cotes Chung
2f79b8d408 Fix code style for Markdown 2021-10-26 04:29:16 +08:00
Cotes
cbe6c3fb7b Skip the Jekyll build on the source code 2021-10-23 03:34:19 +08:00
Cotes Chung
bb1188a01a Merge branch 'hotfix/4.3.3' 2021-10-20 06:29:03 +08:00
Cotes Chung
406ed520cb Bump version to 4.3.3 2021-10-20 06:28:49 +08:00
Cotes Chung
1d7a134dd5 Fix exclude list 2021-10-20 06:17:53 +08:00
Cotes Chung
421db9dc92 Merge branch 'hotfix/4.3.2' 2021-10-15 00:49:57 +08:00
Cotes Chung
a5b8e7862b Bump version to 4.3.2 2021-10-15 00:49:13 +08:00
Cotes Chung
30d3249782 Remove the host of the search result URLs 2021-10-15 00:49:13 +08:00
Cotes Chung
fa15aebbca Fix the failure of the init-tool with the —no-gh option (resolve #429) 2021-10-15 00:49:13 +08:00
Cotes Chung
565ad9229c Remove the value of img_cdn and avatar from the gem package 2021-10-15 00:49:13 +08:00
Cotes Chung
3d6304efd8 Build on the release branches to reuse the travis cache 2021-10-15 00:49:13 +08:00
Cotes Chung
80fd684577 Improve the issue templates 2021-10-04 18:04:15 +08:00
Cotes Chung
80980465d7 Correct grammar and spelling in docs & issue templates
Also improve the Markdown code style
2021-10-04 17:53:07 +08:00
Cotes Chung
2858a082a3 Merge branch 'hotfix/4.3.1' 2021-10-01 18:49:10 +08:00
Cotes Chung
9b0b7d7772 Bump version to 4.3.1 2021-10-01 18:48:42 +08:00
Cotes Chung
952b1f493b Fix contents in tutorials
- Correct the aspect ratio of the mockup image
- Delete code snippet space in docs
2021-10-01 18:39:02 +08:00
Cotes Chung
a887f1d57d Prevent the site test from failing when the avatar is not assigned (close #418)
Some rookies like to do this :(
2021-10-01 18:39:02 +08:00
Cotes Chung
945e8d1953 Bump version to 4.3.0 2021-09-30 02:32:57 +08:00
Cotes Chung
a400dc9501 Specify the version of the images in the CDN 2021-09-30 02:23:34 +08:00
Cotes Chung
6a4169fc03 Make the init tool compatible with BSD 2021-09-30 02:17:24 +08:00
Cotes Chung
95b4b453e6 Merge branch 'feature/docs' into develop 2021-09-30 00:17:24 +08:00
Cotes Chung
de14c00570 Improve README header 2021-09-29 22:36:47 +08:00
Cotes Chung
f4d4065b1c Update the tutorials 2021-09-29 22:36:47 +08:00
Cotes Chung
52f854a2da Update the comment of _config.yml
Reduce the probability of users using `baseurl` incorrectly
2021-09-29 22:36:47 +08:00
Cotes Chung
38f20e8119 Update issue template 2021-09-29 22:36:47 +08:00
Cotes Chung
1728d697e6 Merge branch 'feature/enhance-script-tools' into develop 2021-09-29 22:20:03 +08:00
Cotes Chung
d9863d6a02 Separate the release steps from the bump tool 2021-09-29 22:18:38 +08:00
Cotes Chung
b460d03c3b Merge the test tool into the deploy tool 2021-09-29 22:18:38 +08:00
Cotes Chung
a053c454e4 Improve the init tool 2021-09-29 22:18:38 +08:00
Cotes Chung
77c2009658 Improve the layout of toc entries 2021-09-29 22:17:22 +08:00
Cotes Chung
9844b964a8 Improve the alignment of code block 2021-09-29 16:44:03 +08:00
Cotes Chung
063b2a6651 Prevent Disqus from jumping when page loading 2021-09-29 03:24:41 +08:00
Cotes Chung
e5df04dd59 Hide the scroll bar of code block when not hovering (resolve #414) 2021-09-29 03:24:41 +08:00
Cotes Chung
9e9278ce30 Fix code style of SCSS files 2021-09-24 15:35:44 +08:00
Cotes Chung
30dfc6fb7e Merge branch 'feature/icons-improvement' into develop 2021-09-24 15:32:35 +08:00
Cotes Chung
1ce350e33e Beautify the style of categories button 2021-09-24 15:21:49 +08:00
Cotes Chung
50c88f7205 Prevent the back-to-top button from flickering when switching the theme mode 2021-09-24 15:21:49 +08:00
Cotes Chung
387fc67102 Improve the vertical alignment of icons
- sidebar bottom icons
- back to top icon
2021-09-24 15:21:49 +08:00
Cotes Chung
414715fc47 Merge branch 'feature/code-snippet' into develop 2021-09-24 15:20:00 +08:00
Cotes Chung
1bb54096f4 Improve the UX of clipboard button 2021-09-24 15:13:00 +08:00
Cotes Chung
abb548fcee Change the icon & color of the code block header 2021-09-24 15:13:00 +08:00
Cotes Chung
ed93fbdfde Covert the language alias on code header 2021-09-24 15:13:00 +08:00
Cotes Chung
4ad0a76789 Add label icon to code snippet header 2021-09-24 15:13:00 +08:00
Cotes Chung
89b76dc2a0 Merge branch 'feature/color-scheme' into develop 2021-09-24 15:09:14 +08:00
Cotes Chung
395b24736a Improve the layout of sidebar icons 2021-09-24 14:54:15 +08:00
Cotes Chung
fa0155de6f Lighten the light mode color scheme 2021-09-23 20:39:16 +08:00
Cotes Chung
0bffb276fe Unlock Ruby 3.0 2021-09-22 01:22:32 +08:00
Cotes Chung
2417db656c Add aria label 2021-09-17 18:59:49 +08:00
Cotes Chung
e5bf234835 Fix cursor for some buttons & links (fix #411) 2021-09-17 16:58:32 +08:00
Cotes Chung
2dfdb66e0a Refactor clipboard functions 2021-09-17 16:08:00 +08:00
Cotes Chung
da9881a47f Merge branch 'hotfix/4.2.1' 2021-09-16 21:01:16 +08:00
Cotes Chung
c68a937e01 Improve the bump tool so that it can cherry-pick a merge type commit 2021-09-16 21:00:32 +08:00
Cotes Chung
4001ef7cba Prevent copying code line numbers on Safari 2021-09-16 18:42:50 +08:00
Cotes Chung
1b16b152df Optimize icon position 2021-09-16 17:56:12 +08:00
Cotes Chung
e607e5fe86 Restore the copy URL function that was deleted by mistake 2021-09-16 17:55:52 +08:00
Cotes Chung
d761d340a8 Bump version to 4.2.0 2021-09-16 01:40:38 +08:00
Cotes Chung
f411ba33d8 Fix code style 2021-09-16 01:19:40 +08:00
Cotes Chung
f722757f6f Update docs 2021-09-16 01:17:09 +08:00
Cotes Chung
beabb36d7f Add custom title to code block 2021-09-16 01:17:09 +08:00
Cotes Chung
42ff0f2282 Merge branch 'feature/improve-code-clipoard' into develop 2021-09-15 18:20:01 +08:00
Cotes Chung
34631a0c30 Update locale settings for code block clipboard (resolve #408) 2021-09-15 15:02:23 +08:00
Cotes Chung
53b0329e5a Improve the clipboard UX 2021-09-15 14:57:59 +08:00
Cotes Chung
2877896b9e Merge branch 'feature/improve-disqus' into develop 2021-09-14 20:47:01 +08:00
Cotes Chung
7ef88c8b8f Auto switch Disqus theme 2021-09-14 20:45:17 +08:00
Cotes Chung
2acf14ecf0 Replace Disqus lazy loading plugin with native JS 2021-09-14 20:45:17 +08:00
Cotes Chung
603705f20e Merge branch 'feature/beautify-scrollbar' into develop 2021-09-14 20:40:44 +08:00
Cotes Chung
0267ad8d40 Move sass variables 2021-09-14 20:40:16 +08:00
Cotes Chung
c0b8c089c2 Custom the scrollbar on Webkit browsers
the default scrollbar on Windows looks like shit
2021-09-14 16:47:11 +08:00
Cotes Chung
a603aac8e8 Merge branch 'feature/hide-lineno-of-code-block' into develop 2021-09-14 15:53:04 +08:00
Cotes Chung
91ed3d4649 Hide line number of some posts 2021-09-13 22:36:01 +08:00
Cotes Chung
20454e5a57 Add the feature of hiding line numbers 2021-09-13 22:26:17 +08:00
Cotes Chung
aadda0347c Merge branch 'feature/copy-snippet' (resolve #396, close #400) 2021-09-11 00:42:47 +08:00
Cotes Chung
5e9a7b319e Add clipboard JS 2021-09-11 00:30:21 +08:00
Cotes Chung
2537283beb Add clipboard button to code block 2021-09-11 00:30:21 +08:00
Cotes Chung
7dc7a7efc8 Add code block header 2021-09-11 00:30:21 +08:00
Cotes Chung
39b09b97c0 Merge branch 'feature/full-text-search' into develop 2021-09-04 21:24:37 +08:00
Cotes Chung
8d164c2e6e Enable full-text search (fix #401) 2021-09-04 21:23:43 +08:00
Cotes Chung
1a94b1889f Upgrade simple-jekyll-search from 1.7.3 to 1.10.0 2021-09-04 21:23:09 +08:00
Cotes Chung
6d07d4738b Remove margin between list items 2021-08-26 21:10:57 +08:00
Cotes Chung
6e0afcf9e8 Improve recognition of CJK 2021-08-26 01:26:16 +08:00
Cotes Chung
952927762a Run travis build only when tagging 2021-08-10 19:47:14 +08:00
Cotes Chung
3c3598e8b1 Reduce SASS compressed blank lines 2021-08-09 19:39:43 +08:00
Cotes Chung
9d9bca5e3b Improve the bump tool 2021-08-09 13:17:40 +08:00
Cotes Chung
03248f5bff Update comments for locales 2021-08-09 12:50:49 +08:00
Cotes Chung
e2c288a925 Add not results prompt in zh-CN 2021-08-09 12:49:59 +08:00
Maulana Kurniawan
b80d95dcdd Add Indonesian translation for search: no results. (#394)
Signed-off-by: maulanakurniawann <maulanakurniawan@outlook.co.id>
2021-08-09 12:46:23 +08:00
Cotes Chung
72ba1f7849 Fix tabs & improve topbar items 2021-08-03 22:55:35 +08:00
Hadian Alkani
46d80cbf9a Add Indonesian translation & locales (#390) 2021-08-03 16:58:12 +08:00
Cotes Chung
0213331a16 Improve the way to set the default value of locales 2021-08-01 22:04:11 +08:00
Cotes Chung
780af9ac5f Remove unused variable on HTML & JS 2021-08-01 21:49:44 +08:00
Cotes Chung
b513c0764d Update some locales value 2021-07-30 15:55:59 +08:00
Cotes Chung
57e8c6e594 Drop site config options content_lang & outdated 2021-07-30 15:55:59 +08:00
Cotes Chung
49dc866bd8 Fix docs 2021-07-22 01:30:26 +08:00
Cotes Chung
b7a483680e Bump version to 4.1.0 2021-07-22 00:51:20 +08:00
Cotes Chung
7ecb377c9b Update docs 2021-07-22 00:14:08 +08:00
Cotes Chung
a83e4c1b30 Optimize JS loading priority 2021-07-21 23:50:16 +08:00
Cotes Chung
0b29c0321f Add layout localization 2021-07-21 23:50:16 +08:00
Cotes Chung
2e76300d04 Revert "Delete useless SCSS snippets"
This reverts commit ab8cef9174.
2021-07-21 01:00:05 +08:00
Cotes Chung
20f2ff4b23 Update bot's reply message 2021-07-20 02:51:46 +08:00
Cotes Chung
899609a291 Switch to another issue bot 2021-07-20 02:26:03 +08:00
Cotes Chung
f56852a700 Fix breadcrumb for pagination 2021-07-20 02:08:28 +08:00
Cotes Chung
c969eaa040 Recover the missing image link identifier class 2021-07-20 02:08:28 +08:00
Cotes Chung
ab8cef9174 Delete useless SCSS snippets 2021-07-19 17:53:44 +08:00
Cotes Chung
b3ff6c79a6 Ignore the variables hook in the site file 2021-07-17 13:26:29 +08:00
Cotes Chung
7f8c19d480 Improve the code style on shell scripts
Double quote to prevent globbing and word splitting.
2021-07-11 17:26:49 +08:00
Cotes Chung
d52fa88337 Prevent the post date from shifting when loading 2021-07-11 17:04:13 +08:00
Cotes Chung
bea170cff0 Add fade in effect for lazy-loaded images 2021-07-11 15:05:18 +08:00
Cotes Chung
961ebb545b Set the dollar sign of code snippets to non-selectable 2021-07-08 21:19:33 +08:00
Cotes Chung
797450174d Dynamically detect the sass variables hook 2021-07-07 03:00:13 +08:00
FieryThunder
f0a2113a9f Fix typo of the issue template (#359) 2021-07-07 01:56:23 +08:00
Cotes Chung
c98a41317f Add a hook for custom variables (fix #355) 2021-07-04 23:24:30 +08:00
Cotes Chung
5f1e6e9350 Create the code language badge by Liquid
It prevents the language badges from flashing
2021-07-04 22:02:52 +08:00
Cotes Chung
65dbea9d3b Prevent image caption shifting
Before the image tag modified by JS, the caption will shift
2021-07-03 05:11:11 +08:00
Cotes Chung
fd97067ec3 Optimize the JS loading priorities 2021-07-03 05:11:11 +08:00
Cotes Chung
d5413a954f Update posts
- Set width and height for images
- Update the related tutorial
2021-07-03 05:11:11 +08:00
Cotes Chung
9359d6ef11 Ignore image links in html-proofer test 2021-07-02 17:14:40 +08:00
Cotes Chung
6d1d440c00 Preventing image reflow (fix #351) 2021-07-02 17:14:40 +08:00
Cotes Chung
08ec6cd3b5 Simplify the gitlab flow history 2021-06-24 21:30:05 +08:00
Cotes Chung
3ecb59deb1 Bump version to 4.0.2
(cherry picked from commit a6d4db251f)
2021-06-23 23:02:55 +08:00
Cotes Chung
885ed44646 Lock the ruby version number (#245, #247, #344)
Since version 3.0, Ruby has no `webrick` that Jekyll (<= 4.2) needs
2021-06-23 23:00:46 +08:00
Cotes Chung
d31e677ca0 Fix git-ignore list (#343) 2021-06-04 19:43:45 +08:00
blacksheep-git
bf3b539d6d Update 2019-08-08-text-and-typography.md
Fixed typo from 'Setction' to 'Section'.
2021-05-28 10:30:25 -06:00
Cotes Chung
ab927e9954 Improve sidebar cursor position calculation (fix #338) 2021-05-27 01:05:01 +08:00
Cotes Chung
d5e08b05ab Remove PR filter from workflow
GitHub does not allow to run workflows on PR from first-time contributors.
see: <https://docs.github.com/en/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks>
2021-05-19 13:50:19 +08:00
Cotes Chung
eb247b8886 Improve the paginator design for the mobile screens (#331) 2021-05-19 11:09:52 +08:00
Cotes Chung
4fa7c6af6e Bump version to 4.0.1
(cherry picked from commit b887c439c6)
2021-05-08 03:26:04 +08:00
Cotes Chung
2cce0be8af Add the missing files to the gem 2021-05-08 03:19:13 +08:00
Cotes Chung
cf7d8a45ba Bump version to 4.0.0
(cherry picked from commit db82f71515)
2021-04-30 14:10:24 +08:00
201 changed files with 8059 additions and 5284 deletions

5
.browserslistrc Normal file
View File

@@ -0,0 +1,5 @@
# https://github.com/browserslist/browserslist#browserslistrc
last 2 versions
> 0.2%
not dead

8
.commitlintrc.json Normal file
View File

@@ -0,0 +1,8 @@
{
"rules": {
"body-max-line-length": [
0,
"always"
]
}
}

View File

@@ -2,10 +2,18 @@ root = true
[*]
charset = utf-8
# 2 space indentation
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
# Unix-style newlines with a newline ending every file
end_of_line = lf
insert_final_newline = true
[*.{js,css,scss}]
quote_type = single
[*.{yml,yaml}]
quote_type = double
[*.md]
trim_trailing_whitespace = false

View File

@@ -70,4 +70,4 @@ available at <https://www.contributor-covenant.org/version/1/4/code-of-conduct.h
For answers to common questions about this code of conduct, see
<https://www.contributor-covenant.org/faq>
[homepage]: https://www.contributor-covenant.org
[homepage]: https://www.contributor-covenant.org

View File

@@ -1,16 +1,55 @@
# How to Contribute
I want to thank you for sparing a time to improve this project! Here are some guidelines for contributing
:tada: We really appreciate you taking the time to improve this project! :tada:
To ensure that the blog design is not confused, this project does not accept suggestions for design changes, such as color scheme, fonts, typography, etc. If your request is about an enhancement, it is recommended to first submit a [`Feature Request`](https://github.com/cotes2020/jekyll-theme-chirpy/issues/new?labels=enhancement&template=feature_request.md) issue to discuss whether your idea fits the project.
To ensure that the blog design is not confusing, this project does not accept
suggestions for design changes, such as color scheme, fonts, typography, etc.
If your request is about an enhancement, it is recommended to first submit a
[Feature Request][pr-issue] issue to discuss whether your idea fits the project.
Generally, contribute to the project by:
Basically, you can follow these steps to complete the contribution.
1. Fork this project on GitHub and clone it locally.
2. Create a new branch from `master` and give it a descriptive name (e.g., `my-new-feature`, `fix-a-bug`).
3. After completing the development, commit and push to remote.
4. Submit a new pull request.
2. Create a new branch from the default branch and give it a descriptive name
(format: `feature/<add-new-feat>` or `fix/<fix-a-bug>`).
3. After completing development, create a [Conventional Commit][cc] with git.
(See also: ["Verify the commits"](#verify-the-commits))
4. Create a [Pull Request][gh-pr].
---
## Make sure you can pass the CI tests
:tada: Your volunteering will make the open source world more beautiful, thanks again! :tada:
This project has [CI][ci] turned on. In order for your [PR][gh-pr] to pass the test,
please read the following.
### Check the core functionality
```console
bash ./tools/test
```
### Check the SASS syntax style
```console
npm test
```
### Verify the commits
Before you create a git commit, please complete the following setup.
Install `commitlint` & `husky`:
```console
npm i -g @commitlint/{cli,config-conventional} husky
```
And then enable `husky`:
```console
husky install
```
[pr-issue]: https://github.com/cotes2020/jekyll-theme-chirpy/issues/new?labels=enhancement&template=feature_request.md
[gh-pr]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
[cc]: https://www.conventionalcommits.org/
[ci]: https://en.wikipedia.org/wiki/Continuous_integration

5
.github/FUNDING.yml vendored
View File

@@ -1,3 +1,2 @@
custom:
- https://www.buymeacoffee.com/coteschung
- https://cotes.gitee.io/alipay-wechat-donation
ko_fi: coteschung
custom: https://sponsor.cotes.page

View File

@@ -3,18 +3,20 @@ name: Bug Report
about: Create a report to help us improve
---
<!-- NOTE: Please maintain all sections, otherwise the issue will be automatically closed :) -->
**NOTE:** Before you start, the following should be completed.
## Checklist
<!-- Please complete the following list of tasks, and then check it by change the "[ ]" to "[x]" -->
- [ ] I have read the [tutorials](https://chirpy.cotes.info/categories/tutorial/) and know the correct effect of the functional design.
- [ ] There are no similar reports on existing issues (including closed ones).
- [ ] I found the bug on the latest code of `master` branch.
- Read [Wiki][wiki] to understand the usage and the correct effect of functional design.
- Make sure no [similar issue(including closed ones)][issues] exists.
- Make sure the bug is found in the latest code of the `master` branch.
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
[issues]: https://github.com/cotes2020/jekyll-theme-chirpy/issues?q=is%3Aissue
## Describe the bug
<!-- A clear and concise description of what the bug is. -->
### To Reproduce
## To Reproduce
Steps to reproduce the behavior:
<!--
@@ -24,31 +26,43 @@ Steps to reproduce the behavior:
4. See error
-->
### Expected behavior
## Expected behavior
<!-- A clear and concise description of what you expected to happen. -->
### Screenshots
<!-- If applicable, add screenshots to help explain your problem. -->
## Logs/Screenshots
### Software
<!-- Please complete the following information -->
- Ruby version: <!-- by running: `ruby -v` -->
- Gem version: <!-- by running: `gem -v`-->
- Bundler version: <!-- by running: `bundle -v`-->
- Jekyll version: <!-- by running: `bundle list | grep " jekyll "` -->
<!-- If applicable, add logs/screenshots to help explain your problem. -->
## Environment
| Command | Version |
|-----------------------------------|---------|
| `ruby -v` | |
| `gem -v` | |
| `bundle -v` | |
| `bundle exec jekyll -v` | |
| `bundle info jekyll-theme-chirpy` | |
<!-- If necessary, uncomment and fill in the following list:
### Desktop
<!-- If necessary, uncomment and fill in the following list:
- OS: [e.g. macOS 10.15.6]
- Browser: [e.g. Chrome 85.0.4183.83 (64-bit)]
-->
### Smartphone
<!-- If necessary, uncomment and fill in the following list:
### Smartphone
- Device: [e.g. iPhone 6]
- OS: [e.g. iOS 13.6.1]
- Browser: [e.g. Chrome 22]
-->
### Additional context
## Additional context
<!-- Add any other context about the problem here. -->

View File

@@ -4,27 +4,30 @@ about: Suggest an idea for this project
labels: enhancement
---
<!-- NOTE: Please maintain all sections, otherwise the issue will be automatically closed :) -->
**NOTE:** Before you start, the following should be completed.
## Checklist
<!-- Please complete the following list of tasks, and then check it by change the "[ ]" to "[x]" -->
- [ ] I have read the [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/.github/CONTRIBUTING.md).
- [ ] There are no similar request on existing issues (including closed ones).
- [ ] I have read the [project progress](https://github.com/cotes2020/jekyll-theme-chirpy/projects) and know the current progress of the project.
- [ ] I was in the `master` branch of the latest code.
- Read [Wiki][wiki] to understand the usage and the correct effect of functional design.
- Make sure no [similar issue(including closed ones)][issues] exists.
- Make sure the request is based on the latest code in the `master` branch.
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
[issues]: https://github.com/cotes2020/jekyll-theme-chirpy/issues?q=is%3Aissue
## Is your feature request related to a problem? Please describe
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
## Describe the solution you'd like
<!-- A clear and concise description of what you want to happen. -->
## Describe alternatives you've considered
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
## Additional context
<!-- Add any other context or screenshots about the feature request here. -->

28
.github/ISSUE_TEMPLATE/help_wanted.md vendored Normal file
View File

@@ -0,0 +1,28 @@
---
name: Help Wanted
about: Need help that is not covered in the tutorial
labels: 'help wanted'
---
**NOTE:** Before you start, the following should be completed.
- Read [Wiki][wiki] to understand the usage and the correct effect of functional design.
- Make sure no [similar issue(including closed ones)][issues] exists.
- Try to find the answer on [Jekyll Forum][forum] and [StackOverflow][stack_overflow].
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
[issues]: https://github.com/cotes2020/jekyll-theme-chirpy/issues?q=is%3Aissue
[forum]: https://talk.jekyllrb.com/
[stack_overflow]: https://stackoverflow.com/questions/tagged/jekyll
## Description
<!-- Please describe your need in detail. -->
## Operations you have already tried
<!-- Describe the effort you went through. -->
## Logs/Screenshots
<!-- If applicable, add logs/screenshots to help explain your problem. -->

View File

@@ -1,19 +1,20 @@
---
name: Question
about: Ask what ever you want
about: Issues that differ from other templates
labels: question
---
<!-- NOTE: Please maintain all sections, otherwise the issue will be automatically closed :) -->
**NOTE:** Before you start, the following should be completed.
## Checklist
- Read [Wiki][wiki] to understand the usage and the correct effect of functional design.
- Make sure no [similar issue(including closed ones)][issues] exists.
- Try to find the answer on [Jekyll Forum][forum] and [StackOverflow][stack_overflow].
<!-- Please complete the following list of tasks, and then check it by change the "[ ]" to "[x]" -->
- [ ] I have read the [tutorials](https://chirpy.cotes.info/categories/tutorial/) and know the correct effect of the functional design.
- [ ] There are no similar question on existing issues (including closed ones).
- [ ] I searched the Internet for related problems, but still couldn't solve it.
- [ ] My question is based on the latest code of `master` branch.
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
[issues]: https://github.com/cotes2020/jekyll-theme-chirpy/issues?q=is%3Aissue
[forum]: https://talk.jekyllrb.com/
[stack_overflow]: https://stackoverflow.com/questions/tagged/jekyll
## Description
<!-- Please describe your question in detial. -->
<!-- Please describe your question in detail. -->

View File

@@ -1,44 +1,29 @@
## Description
<!--
<!--
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
-->
e.g. Fixes #(issue)
## Type of change
<!--
<!--
Please select the desired item checkbox and change it to "[x]", then delete options that are not relevant.
-->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Improvement (refactoring and improving code)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
## Additional context
<!-- e.g. Fixes #(issue) -->
## How has this been tested
<!--
<!--
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
-->
- [ ] I have run `bash ./tools/test.sh --build` (at the root of the project) locally and passed
- [ ] I have run `bash ./tools/test` (at the root of the project) locally and passed
- [ ] I have tested this feature in the browser
### Test Configuration
- Browser type & version:
- Operating system:
- Bundler version:
- Ruby version:
- Jekyll version:
### Checklist
<!-- Select checkboxes by change the "[ ]" to "[x]" -->
- [ ] My code follows the [Google style guidelines](https://google.github.io/styleguide/)
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] Any dependent changes have been merged and published in downstream modules

12
.github/SECURITY.md vendored Normal file
View File

@@ -0,0 +1,12 @@
# Security Policy
## Supported Versions
| Version | Supported |
|---------| ------------------ |
| 5.x | :white_check_mark: |
| < 5.0.0 | :x: |
## Reporting a Vulnerability
If you find a vulnerability, please report it to `cotes.chung@gmail.com`. We will try our best to respond within a week. Thank you for your time!

17
.github/stale.yml vendored
View File

@@ -1,17 +0,0 @@
# Clean up the stale issues
daysUntilStale: 30
daysUntilClose: 1
exemptLabels:
- in progress
- pending
staleLabel: stale
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
closeComment: false

14
.github/workflows/cd.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
name: CD
on:
push:
branches: [production, docs]
jobs:
launch:
runs-on: ubuntu-latest
steps:
- run: |
curl -X POST -H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GH_PAT }}" \
https://api.github.com/repos/${{ secrets.BUILDER }}/dispatches \
-d '{"event_type":"deploy", "client_payload":{"branch": "${{ github.ref_name }}"}}'

View File

@@ -1,47 +1,44 @@
name: 'Continuous Integration'
name: "CI"
on:
push:
branches-ignore:
- 'production'
tags-ignore:
- '*'
- "production"
- "docs"
paths-ignore:
- '.github/**'
- '!.github/workflows/ci.yml'
- '.travis.yml'
- '.gitignore'
- 'docs/**'
- 'README.md'
- 'LICENSE'
- ".github/**"
- "!.github/workflows/ci.yml"
- ".gitignore"
- "README.md"
- "LICENSE"
pull_request:
paths:
- '**'
- "**"
jobs:
ci:
runs-on: ${{ matrix.os }}
build:
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
ruby: [2.7, 3]
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0 # for posts's lastmod
fetch-depth: 0 # for posts's lastmod
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: Build Site
env:
JEKYLL_ENV: production
run: |
bundle exec jekyll b
- name: Setup Node
uses: actions/setup-node@v3
- name: Build Assets
run: npm i && npm run build
- name: Test Site
run: |
bash tools/test.sh
run: bash tools/test

44
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
name: "CodeQL"
on:
push:
paths: ["**.js"]
pull_request:
paths: ["**.js"]
schedule:
- cron: "0 0 * * 5"
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ["javascript"]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: "${{ matrix.language }}"
# 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@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{ matrix.language }}"

11
.github/workflows/commitlint.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
name: Lint Commit Messages
on: pull_request
jobs:
commitlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@v5

View File

@@ -1,20 +0,0 @@
name: "Intercept bad issue/PRs"
on:
issues:
types: [opened]
pull_request:
types: [opened]
jobs:
autoclose:
runs-on: ubuntu-latest
steps:
- name: Auto close issues/pr that did not follow template
uses: roots/issue-closer@v1.1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-pattern: "(\\[x\\]|\\[X\\]) I have read"
issue-close-message: ":wave: Hi @${issue.user.login},\n\nThis issue is being automatically closed because it does not follow the issue template."
pr-pattern: "(\\[x\\]|\\[X\\]) (Bug fix|New feature|Breaking change|Documentation update)|@dependabot"
pr-close-message: ":wave: Hi @${pull_request.user.login},\n\nThis PR is being automatically closed because it does not follow the PR template."

View File

@@ -1,53 +1,71 @@
name: 'Automatic build'
name: "Build and Deploy"
on:
push:
branches:
- main
- master
paths-ignore:
- .gitignore
- README.md
- LICENSE
jobs:
continuous-delivery:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0 # for posts's lastmod
fetch-depth: 0
# submodules: true
# If using the 'assets' git submodule from Chirpy Starter, uncomment above
# (See: https://github.com/cotes2020/chirpy-starter/tree/main/assets)
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
ruby-version: 3 # reads from a '.ruby-version' or '.tools-version' file if 'ruby-version' is omitted
bundler-cache: true
- name: Check baseurl
run: |
baseurl="$(grep '^baseurl:' _config.yml | sed "s/.*: *//;s/['\"]//g;s/#.*//")"
if [[ -n $baseurl ]]; then
echo "BASE_URL=$baseurl" >> $GITHUB_ENV
fi
- name: Build Site
- name: Build site
run: bundle exec jekyll b -d "_site${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: production
run: |
bundle exec jekyll b -d "_site$BASE_URL"
JEKYLL_ENV: "production"
- name: Test Site
- name: Test site
run: |
bash tools/test.sh
bundle exec htmlproofer _site --disable-external --check-html --allow_hash_href
- name: Deploy
run: |
if [[ -n $BASE_URL ]]; then
mv _site$BASE_URL _site-rename
rm -rf _site
mv _site-rename _site
fi
- name: Upload site artifact
uses: actions/upload-pages-artifact@v1
with:
path: "_site${{ steps.pages.outputs.base_path }}"
bash tools/deploy.sh
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2

30
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: "Close stale issues and PRs"
on:
schedule:
- cron: "0 0 * * *" # every day at 00:00 UTC
permissions:
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
with:
days-before-stale: 30
days-before-close: 1
stale-issue-label: stale
exempt-issue-labels: pending
stale-issue-message: >
This issue has been automatically marked as stale because it has not had recent activity.
It will be closed if no further activity occurs.
Thank you for your contributions.
stale-pr-label: stale
exempt-pr-labels: pending
stale-pr-message: >
This PR has been automatically marked as stale because it has not had recent activity.
It will be closed if no further activity occurs.
Thank you for your contributions.

25
.github/workflows/style-lint.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: "Style Lint"
on:
push:
branches-ignore:
- "production"
- "docs"
paths:
- "_sass/**/*.scss"
pull_request:
paths:
- "_sass/**/*.scss"
jobs:
stylelint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
- run: npm i
- run: npm test

23
.gitignore vendored
View File

@@ -1,15 +1,22 @@
# hidden files
.*
!.github
# bundler cache
_site
# Bundler cache
.bundle
vendor
Gemfile.lock
# rubygem
# Jekyll cache
.jekyll-cache
_site
# RubyGems
*.gem
# npm dependencies
# NPM dependencies
node_modules
package-lock.json
# IDE configurations
.idea
.vscode
# Misc
assets/js/dist

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "assets/lib"]
path = assets/lib
url = https://github.com/cotes2020/chirpy-static-assets.git

4
.husky/commit-msg Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no -- commitlint -x $(npm root -g)/@commitlint/config-conventional --edit

0
.nojekyll Normal file
View File

3
.prettierrc Normal file
View File

@@ -0,0 +1,3 @@
{
"trailingComma": "none"
}

23
.stylelintrc.json Normal file
View File

@@ -0,0 +1,23 @@
{
"extends": "stylelint-config-standard-scss",
"rules": {
"no-descending-specificity": null,
"shorthand-property-no-redundant-values": null,
"at-rule-no-vendor-prefix": null,
"property-no-vendor-prefix": null,
"selector-no-vendor-prefix": null,
"value-no-vendor-prefix": null,
"color-function-notation": "legacy",
"alpha-value-notation": "number",
"selector-not-notation": "simple",
"color-hex-length": "long",
"declaration-block-single-line-max-declarations": 3,
"scss/operator-no-newline-after": null,
"rule-empty-line-before": [
"always",
{ "ignore": ["after-comment", "first-nested", "inside-block"] }
],
"value-keyword-case": ["lower", { "ignoreProperties": ["/^\\$/"] }],
"media-feature-range-notation": "prefix"
}
}

View File

@@ -1,56 +0,0 @@
os: linux
dist: bionic
language: minimal
jobs:
include:
- name: CD
language: ruby
rvm: 2.7.0
addons:
apt:
packages:
# required to avoid SSL error (for htmlproofer)
- libcurl4-openssl-dev
cache:
directories:
- $TRAVIS_BUILD_DIR/vendor/bundle
before_install:
# match the Gemfile.lock, travis' bundler is 2.1.2
- gem install bundler:2.2.4
- bundle config path 'vendor/bundle'
install:
# overriding to drop the travis `--development` flag
- bundle install --jobs=3 --retry=3
script:
- eval "$BUILD_CMD"
git:
depth: false # for posts' lastmod
- name: Flush Starter
script:
- eval "$FLUSH_STARTER"
before_script:
- git -C "$HOME" clone "$BUILDER_REPO" --depth=1 -q
branches:
only: /.*-stable$/
notifications:
email:
recipients:
- secure: "fFLqX7uOzFA8RE2AUFlU1mmxMw+rdV6DnODJ/1Gl+3ecNtrv5LeH3c5a4a5ShQqYTrx9BPfD40VRN7UB+lzOdXiWLI9yDGRPPxGG26/WfrKpdQPZilc8zAOEeDnLAJeGZLsUvgmNb3KCXW6S8NPqqh34CfWcTIzjCARhRgO33wcs8X5wP5cugtNqO5Ew/pUcfWcmiuXNX0GNT6l+nL5A7yN+IO5mRHqSRmlfYd5EHhGMTIL4La+Cd1CNv1m4Dl0Ah2cDeJwi5wLnVbqAgunLhAYmDtxIOCVYMTBrP37UiNe/7QeFelyJfODsmMg1mx3WCykbXydC753WVoAlTg6nNoeeI9fmK+/tuLK+sx/KnYfTVGBXQYq39DyV/2o/IfCzEAKImlzFKGD8R13+ddu4B5UML+cby5KBvhTKIGaC5tKoe39z/31UPpy11/EHMCof2BUOzIgu5Hsv4OSNJlw3oRE31oOPn8xP4e7uWR8bRUhAgzN0Cn0ht+UfpemfGAXrp0M3IXQdc9L4azEFqxRhivMTLK/P6INay7IM+DJ30Ht2dWylGw/sxcRTqyNm3YomJQnXIO4xeqTSLulWr80FFHTys3JEDJYrcKvJmpwLFEAOZtwKsZ6ZShrOIA4LE5fgQtakH3ZLJG9a7jVSlMcNIfaSKgjdDQOe6CoRQL7KouA="
on_success: never
env:
global:
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer

20
.versionrc.json Normal file
View File

@@ -0,0 +1,20 @@
{
"skip": {
"commit": true,
"tag": true
},
"types": [
{
"type": "feat",
"section": "Features"
},
{
"type": "fix",
"section": "Bug Fixes"
},
{
"type": "perf",
"section": "Improvements"
}
]
}

245
CHANGELOG.md Normal file
View File

@@ -0,0 +1,245 @@
# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [6.1.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.0.0...v6.1.0) (2023-07-02)
### Features
* **i18n:** add Thai locale file ([#1087](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1087)) ([a60e907](https://github.com/cotes2020/jekyll-theme-chirpy/commit/a60e90791d24811caff78e21c71dc85d6a729438))
### Bug Fixes
* missing xml escape for `alt` of preview image ([#1113](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1113)) ([8b0fbf5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8b0fbf5a834276f273274e4d614edd71e339cbb0))
* the cached image is covered by shimmer ([#1100](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1100)) ([df8ff54](https://github.com/cotes2020/jekyll-theme-chirpy/commit/df8ff546ec1c8d21a3d25e0124665001fcf756f3))
* **ui:** min-height of `page` layout exceeds the mobile screen ([73af591](https://github.com/cotes2020/jekyll-theme-chirpy/commit/73af59194ab935d38b89d298fea0e96e13be7cb7))
* **webfont:** resume semi-bold of font family `Source Sans Pro` ([c4da99c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c4da99c7ea5d6e32b1f1b815d7d8d6ae7b0f55de))
### Improvements
* **build:** use `jekyll-include-cache` plugin to reduce build time ([#1098](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1098)) ([4fe145e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4fe145e9809ee1b370d9891135939534751462d0)), closes [#1094](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1094)
* CJK characters of the "Search Cancel" button will wrap ([#1105](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1105)) ([b6d1992](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b6d1992f85ec543220e826087dcc89870e7e2c00))
* **ui:** avoid blank space at the bottom of the homepage preview image ([ce2f6f5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ce2f6f5abef7a8b874e08d1f18c1fd002650dbf1))
* **ui:** improve hover color of sidebar nav items in light mode ([728094d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/728094d1ba67a1e7c0a11e1c6c69bf87af9a767b))
## [6.0.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.0.0...v6.0.1) (2023-05-19)
### Bug Fixes
* **home:** preview image missing `[alt]` and `img_path` ([#1044](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1044)) ([aba9468](https://github.com/cotes2020/jekyll-theme-chirpy/commit/aba9468b5332802db961166889d4c4a84e404a2c))
* **layout:** restore the margin bottom of the main area ([#1047](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1047)) ([eb40f51](https://github.com/cotes2020/jekyll-theme-chirpy/commit/eb40f51c84b011a7c301279527f544ad27efd5eb))
* **post, page:** image link loses shimmer effect ([#1046](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1046)) ([3bd881d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/3bd881da70d685d10659f47bfe0e79cd02e7af92))
* **typography:** long string for update-list is not truncated ([#1050](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1050)) ([a51d31c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/a51d31c55a37fbe034f0b0f699f4df0b6a14ba8f)), closes [#1049](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1049)
## [6.0.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.6.1...v6.0.0) (2023-05-16)
### ⚠ BREAKING CHANGES
* rename assets origin configuration files
### Features
* add a hook to insert custom metadata in `head` tag ([#1015](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1015)) ([fe20341](https://github.com/cotes2020/jekyll-theme-chirpy/commit/fe203417d993508eedf5b9044fe53c4a566e44f9))
* **i18n:** add sl-SI.yml with slovenian translations ([#989](https://github.com/cotes2020/jekyll-theme-chirpy/issues/989)) ([42a700a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/42a700aa37889faa32d7ec1f6776ce4b9d845dc4))
* **i18n:** add Traditional Chinese (Taiwan) localization file ([#961](https://github.com/cotes2020/jekyll-theme-chirpy/issues/961)) ([d97f95f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d97f95fca0bcd450ea50709ffba0217f7e65d339))
* **i18n:** added Swedish localization file ([#969](https://github.com/cotes2020/jekyll-theme-chirpy/issues/969)) ([fe70479](https://github.com/cotes2020/jekyll-theme-chirpy/commit/fe7047959e3694c6e603e764ded30dacd49e6aa9))
* support hiding the modification date of a post ([#1020](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1020)) ([8da583d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8da583d403456f6460ec1a6ebcbb0c2ca8127ff6))
* **ui:** improve code snippet design ([6d99f5c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6d99f5cc36a69e5ccff51f81ba448c798d92e12e))
* **ui:** improve the design for top bar ([83f1c34](https://github.com/cotes2020/jekyll-theme-chirpy/commit/83f1c34f92d85f3953ca9c9818be5399962bf1c9))
* **ui:** new design footer content layout ([3210c59](https://github.com/cotes2020/jekyll-theme-chirpy/commit/3210c59466150dc04b4e4bdfc1ffd0e38adcff43))
* **ui:** redesign the sidebar ([83bbe4a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/83bbe4ac939edfd1706e68c080562e3462f83519))
* **ui:** show preview image in home page ([97b8dfe](https://github.com/cotes2020/jekyll-theme-chirpy/commit/97b8dfeed6ce7677f6472e28dc3b03f3c2968b12))
### Bug Fixes
* parameter parsing error in image URL ([#1022](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1022)) ([ee88cec](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ee88cec270ea5938f98913a3edf28a684cfbd6c0))
* **rss:** double quotes in the post title will break the XML structure ([#965](https://github.com/cotes2020/jekyll-theme-chirpy/issues/965)) ([1719d81](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1719d81d00b32b107c35b3903089be84a9b28a6c))
### refactor
* rename assets origin configuration files ([c283e77](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c283e7782fa9562d82d9855fd280a573fd58c75f))
### Improvements
* **assets:** reduce HTTP requests to CDN ([9d97120](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9d971201978e993a9af337d9cd5396a1ea225f00))
* calculate heading font size dynamically ([#983](https://github.com/cotes2020/jekyll-theme-chirpy/issues/983)) ([52f5ee9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/52f5ee9cd3f92a6e8f25eaa203831546cda85db6))
* **i18n:** set the global default locales to "en" ([#979](https://github.com/cotes2020/jekyll-theme-chirpy/issues/979)) ([61fdbcb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/61fdbcb83a3601ecae62ec230602b94a5eb832e1))
* **tools:** avoid initialization interruption in single branch forks ([#992](https://github.com/cotes2020/jekyll-theme-chirpy/issues/992)) ([e90461a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e90461aa3c81633863db6a12c5924ddba33bd08e))
* **ui:** improve categories color in dark mode ([414dd13](https://github.com/cotes2020/jekyll-theme-chirpy/commit/414dd132aed70f4bd96cb712d00eacc82d2753e9))
* **ui:** improve hover effect for post preview cards ([7626e4d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7626e4d00544346a46b6e5ff2f3a99d234defe09))
* **ui:** improve hover effect of trending tags ([34499f0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/34499f0c927ce8fea3705dc2f0f0e6805cabda43))
* **ui:** improve inline code in light mode ([e38309f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e38309f3bd1302ffe60b682136b6efaf96f4d9ae))
* **ui:** improve related posts design ([2918da9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2918da9f29465618d557c082ff3a2f23d7519049))
* **ui:** improve the color of prompts in dark mode ([8cbbcfa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8cbbcfa26da0addd88affada23a65770250f2404))
* **ui:** lighten the link color in light-mode ([7c23a4e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7c23a4ebc53b9e231c214e04f8ac0803cbcdb720))
* **ui:** mute the marker in lists ([0c80552](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0c80552d772b874e2a161f1270294faa3af18d4a))
* **ui:** uniform the muted text color ([aadf939](https://github.com/cotes2020/jekyll-theme-chirpy/commit/aadf9393d5c7f7528d453c4e68eba4f5cbb85bd9))
* **ux:** improve LQIP fade in effect ([003e7b6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/003e7b60c93988a7bfae4c03a8346d4f8a5f0bb6))
## [5.6.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.6.0...v5.6.1) (2023-03-30)
### Bug Fixes
* **deps:** `tocbot` has no initialization detection ([#957](https://github.com/cotes2020/jekyll-theme-chirpy/issues/957)) ([8225174](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8225174cb5e02fda7b3cc548ec821c876b0a5139))
* mode-toggle leads to Disqus loading failure ([#945](https://github.com/cotes2020/jekyll-theme-chirpy/issues/945)) ([6fec411](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6fec411c18ca5689c467c7b216ddeda02df23623))
* pageviews not updated immediately ([8b4f99c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8b4f99c87f9a9227f47e84fb39d7b0f551d6f4dd))
## [5.6.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.5.2...v5.6.0) (2023-03-17)
### Features
* change TOC plugin to `tocbot` ([#774](https://github.com/cotes2020/jekyll-theme-chirpy/issues/774)) ([02b7bd5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/02b7bd5095a2affe5b4c5ed7b5b182baaf642ff3))
* **i18n:** add Greek Language Support. ([#903](https://github.com/cotes2020/jekyll-theme-chirpy/issues/903)) ([712a9b2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/712a9b22401ce591cf4c0bb03fbdd1693fee30bb))
* **ux:** turn home page posts into clickable cards ([#895](https://github.com/cotes2020/jekyll-theme-chirpy/issues/895)) ([b85f633](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b85f6330dea666350631c4461b742cdb54c5f052))
### Bug Fixes
* css selector string escaping vulnerability ([#888](https://github.com/cotes2020/jekyll-theme-chirpy/issues/888)) ([5c6ec9d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5c6ec9d06b6571e2c0efe6652078442dca8af477))
* mathematics cannot scroll horizontally ([#760](https://github.com/cotes2020/jekyll-theme-chirpy/issues/760)) ([4681df7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4681df715118a37ae1e91b588de0adb67f4e331a))
* notch status bar doesn't match theme color ([#918](https://github.com/cotes2020/jekyll-theme-chirpy/issues/918)) ([820ba62](https://github.com/cotes2020/jekyll-theme-chirpy/commit/820ba62e9e939090523a7077d01d01bd78ec84eb))
* some console snippets will be incompletely copied ([e8e4901](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e8e4901e340dd7e5fc5f656dd3c7bcd6c97b886a))
## [5.5.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.5.1...v5.5.2) (2023-01-30)
### Bug Fixes
* position of prompt icon is incorrect in paragraph on mobile ([5df953f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5df953f6c877e2aa3f1f4981c97a0b8007abe6d4))
## [5.5.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.5.0...v5.5.1) (2023-01-29)
### Bug Fixes
* the icon position of the prompts in the list is incorrect ([0c9558d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0c9558de8a01e9ab795778f351a8bbf4d6b21763))
## [5.5.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.4.0...v5.5.0) (2023-01-29)
### Features
* **i18n:** add Arabic translation ([#857](https://github.com/cotes2020/jekyll-theme-chirpy/issues/857)) ([765af53](https://github.com/cotes2020/jekyll-theme-chirpy/commit/765af53b77e5c63804784d5728f5970ae274c2c7))
* **i18n:** add Czech language ([#833](https://github.com/cotes2020/jekyll-theme-chirpy/issues/833)) ([98d48f5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/98d48f5da412276d4a0c99cd01a87b19349bc6bc))
* **i18n:** add Finnish translations ([#843](https://github.com/cotes2020/jekyll-theme-chirpy/issues/843)) ([d6d0318](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d6d03183eaf94b44e037cc48b6e1c47cee183f6e))
* **i18n:** add Italian translation ([#850](https://github.com/cotes2020/jekyll-theme-chirpy/issues/850)) ([9a011e1](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9a011e14d66195d8b2fb9ec62f3e60a3e56cd032))
### Bug Fixes
* copy command line incomplete(`.gp` part) ([41ed331](https://github.com/cotes2020/jekyll-theme-chirpy/commit/41ed33145639415148aec8e85edc7a6fd0de0ca3))
* correct encoding of spaces in share URLs ([#835](https://github.com/cotes2020/jekyll-theme-chirpy/issues/835)) ([f2d2858](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f2d285844e6e2979f2b0eec1d20073d3c05b6c0c))
* post's image would cover the PWA update alert ([bd374dd](https://github.com/cotes2020/jekyll-theme-chirpy/commit/bd374dd383c50f89c8f018ecb4e25772eeb8f6d8))
* prompt with nested blockquotes renders incorrectly ([#846](https://github.com/cotes2020/jekyll-theme-chirpy/issues/846)) ([babb4a0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/babb4a0c5a58ceb2e4093bc465670accdd526c18))
## [5.4.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.3.2...v5.4.0) (2022-12-27)
### Features
* add `rel="me"` to Mastodon sidebar contact links for verification ([#807](https://github.com/cotes2020/jekyll-theme-chirpy/issues/807)) ([d2190c7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d2190c726f61c8c9732b88b4aecf699dc8bc7deb))
* add embed video support ([ed6dc53](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ed6dc539eff7003a3765bcd8c31ae5e91a863d65))
* add shimmer background when image loads ([ab16fdc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ab16fdc7fc26811130b98a1773beb62bff6182e8))
* set preview image ratio to 1.91 : 1 ([4b6ccbc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4b6ccbcbccce27b9fcb035812efefe4eb69301cf))
* support dark and light mode images ([#481](https://github.com/cotes2020/jekyll-theme-chirpy/issues/481)) ([9306c7b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9306c7b39ecf9d9146bc1a25eebedc38eb2c3dd6))
* support LQIP for images ([bffaf63](https://github.com/cotes2020/jekyll-theme-chirpy/commit/bffaf6374f265cec96ef743d42b46fbec3b59797))
### Bug Fixes
* `hreflang` tag attribute of feed misses `site.alt_lang` ([7651d28](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7651d2851b4bb7d8f0d068b62c036c89a1089bbc))
* `og:image` will be incorrect if the image uses a cross-domain URL ([8de1abd](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8de1abda6be3633982392178731431b0ddb1b52b))
* refactoring error when the image URL contains parameters ([ec98f07](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ec98f07aca0b80a9c07fbcdc8e0d7d66dba98ed2))
* spaces in post title are encoded when sharing ([7efd2f8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7efd2f8aa2ea1c3aeb7d740bf9a018881c26fe65))
### Improvements
* **cdn:** optimize cache policy for static assets ([7fb0ee0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7fb0ee0bedb63eee3f90a49c6d7fb8b5d78c9830))
## [5.3.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.3.1...v5.3.2) (2022-11-22)
### Bug Fixes
* `mermaid` occasionally fails to initialize ([#536](https://github.com/cotes2020/jekyll-theme-chirpy/issues/536)) ([48f14e3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/48f14e39ac81bbfb3b9913ea3ee789d775b2d1ae))
* **comment:** disqus doesn't follow theme mode switching ([b0d5956](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b0d5956f5a0ed894984d6b1754efeba04d8bc966))
* restore full-text search ([#741](https://github.com/cotes2020/jekyll-theme-chirpy/issues/741)) ([6774e0e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6774e0e1fb37cf467b14be481347412713763f05))
* the image URL in the SEO-related tags is incomplete ([#754](https://github.com/cotes2020/jekyll-theme-chirpy/issues/754)) ([f6e9a3f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f6e9a3fccf7ab34db71f8aefaf86fdcc05861076))
## [5.3.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.3.0...v5.3.1) (2022-10-25)
### Bug Fixes
* 404 page missing title in tablet/desktop view ([5511b28](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5511b2883fd5a395fddfb642588d00c122f18da7))
* prompt content overflows horizontally ([#705](https://github.com/cotes2020/jekyll-theme-chirpy/issues/705)) ([fb13e32](https://github.com/cotes2020/jekyll-theme-chirpy/commit/fb13e3219b5eca0d2e4f86a1ecabfab75240369f))
* **tools:** multiple configuration files will fail the test ([80cb0b3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/80cb0b371754e96772a7907877a8ce196398ba3d))
### Improvements
* **layout:** improve the min-height of main content ([#674](https://github.com/cotes2020/jekyll-theme-chirpy/issues/674)) ([49bb93c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/49bb93cc0c89ad9cfaad5edcf9cb28c3d5134575))
* modify checkbox icon with `Liquid` ([1fd665b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1fd665bf4990c26ae23635c511c5abc9640184d1))
* optimize the extra padding in lists ([#703](https://github.com/cotes2020/jekyll-theme-chirpy/issues/703)) ([39da11e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/39da11e3f3685f49321757576d2b87a48bf25db5)), closes [#702](https://github.com/cotes2020/jekyll-theme-chirpy/issues/702)
* **posts:** improve core block bottom padding ([d2fb98b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d2fb98b3e57f2f6c3fc3816551cd0721731adf40))
* truncate post content for search results ([647eea8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/647eea8dbd716f9d3cb8330c3139fa753903f51d))
* **typography:** optimize the line height of post content ([eac3f9b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/eac3f9b434ca77e3dc64eea9cedea7b93e7b306b))
### Others
* **giscus:** add `reactions-enabled` option ([#712](https://github.com/cotes2020/jekyll-theme-chirpy/issues/712)) ([70662a0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/70662a0365e6b9378602dc0a57462ddad5aebcf5))
* **locale:** restore options for changing date format ([#716](https://github.com/cotes2020/jekyll-theme-chirpy/issues/716)) ([f904e8c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f904e8cd48c343cc31e25859d9d50bfe2c056f41))
* remove site config option `prefer_datetime_locale` ([6852ceb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6852ceb280927ff4e753a3e1131f2b396d9807d0))
## [5.3.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.2.1...v5.3.0) (2022-09-23)
### Features
* add multiple authors to a post ([#677](https://github.com/cotes2020/jekyll-theme-chirpy/issues/677)) ([f1d9e99](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f1d9e99bc02d3cd0a6b0cd1beac545f0cc7a24f8)), closes [#675](https://github.com/cotes2020/jekyll-theme-chirpy/issues/675)
* **i18n:** add Bulgarian support ([#612](https://github.com/cotes2020/jekyll-theme-chirpy/issues/612)) ([2fed338](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2fed338ce6d078bf528c9717201fbc475f88cd22))
* **i18n:** add German locale file ([#663](https://github.com/cotes2020/jekyll-theme-chirpy/issues/663)) ([940b281](https://github.com/cotes2020/jekyll-theme-chirpy/commit/940b2810e95065e30600ae8d5e4612e7183da60e))
* **i18n:** add Hungarian locale file ([#597](https://github.com/cotes2020/jekyll-theme-chirpy/issues/597), [#598](https://github.com/cotes2020/jekyll-theme-chirpy/issues/598)) ([b032977](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b0329775fc24d0323e5cc04cda46ece8b4531802))
* **i18n:** add Turkish language ([#631](https://github.com/cotes2020/jekyll-theme-chirpy/issues/631)) ([ad137fa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ad137fa2945b1870b9c1dd5e9212a5f4af7c3580))
### Bug Fixes
* add missing color to linkedin icon for share list ([#683](https://github.com/cotes2020/jekyll-theme-chirpy/issues/683)) ([0dcd39d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0dcd39d491c9c49e4acf7f75f83fe6e1d1839e37))
* code contains spaces in headings ([#644](https://github.com/cotes2020/jekyll-theme-chirpy/issues/644)) ([3fa1bf3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/3fa1bf305451f645a7f3aa93863b076463c8f165))
* correct spelling of `panel` ([#686](https://github.com/cotes2020/jekyll-theme-chirpy/issues/686)) ([b288587](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b288587c1c3d113a1c52c2d25fb46cddda348961))
* correct the i18n for tab titles ([0c5b697](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0c5b697fd3b283b6a5c926742b61ed49d8688c18))
* the `code` doesn't wrap inside the prompt ([#626](https://github.com/cotes2020/jekyll-theme-chirpy/issues/626)) ([378b65a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/378b65a0617787813519dde74d6f741f255eff3d))
## [5.2.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.2.0...v5.2.1) (2022-06-17)
### Bug Fixes
* exclude CHANGELOG from output ([971fe03](https://github.com/cotes2020/jekyll-theme-chirpy/commit/971fe03ec329ae49e7d60fe3af6101cfbd1acd6c))
* **PWA:** sometimes update notification is not triggered ([96af729](https://github.com/cotes2020/jekyll-theme-chirpy/commit/96af7291ea5b2c5ed6372e7b6f7725e67c69f1ba))
## [5.2.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.1.0...v5.2.0) (2022-06-09)
### Features
* add es-ES support to locales ([#533](https://github.com/cotes2020/jekyll-theme-chirpy/issues/533)) ([efe75ad](https://github.com/cotes2020/jekyll-theme-chirpy/commit/efe75adf2784956afb7a0b67f6634b146d9cb03b))
* add fr-FR support to locales ([#582](https://github.com/cotes2020/jekyll-theme-chirpy/issues/582)) ([94e8144](https://github.com/cotes2020/jekyll-theme-chirpy/commit/94e81447afa457b1a6b7e8f487c47502803556d7))
* add Vietnamese locale ([#517](https://github.com/cotes2020/jekyll-theme-chirpy/issues/517)) ([171463d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/171463d76da9b7bc25dd327b8f0a868ea79e388b))
* add pt-BR support to locales ([c2c503f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c2c503f63336884282b6bda4ec0703d6ae76771b))
* add option to turn off PWA ([#527](https://github.com/cotes2020/jekyll-theme-chirpy/issues/527)) ([106c981](https://github.com/cotes2020/jekyll-theme-chirpy/commit/106c981bac71e7434204a77e1f0c9c61d6eb1509))
* **PWA:** add Service Worker update notification ([d127183](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d127183b9774f6321e409acdb66bf8a85d8814be))
* support showing description of preview image ([2bd6efa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2bd6efa95a174ac44e30a3af1e57e6f40d6e0e3a))
### Bug Fixes
* alt is not a valid attribute for 'a' tag ([58928db](https://github.com/cotes2020/jekyll-theme-chirpy/commit/58928dbc9068db4e4cda4371eeae1865920dce6a))
* assets URL is missing `baseurl` in self-hosted mode ([#591](https://github.com/cotes2020/jekyll-theme-chirpy/issues/591)) ([54124d5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/54124d5134995fce52e4c2fc0a5d4d1743d6264d))
* correct the `twitter:creator` of Twitter summary card ([96a16c8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/96a16c868ede51e7dfa412de63ffa1e5a49add7f))
* correctly URL encode share links ([4c1c8d8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4c1c8d8b0eacecbbaa2d522bbdd6430f350ff760)), closes [#496](https://github.com/cotes2020/jekyll-theme-chirpy/issues/496)
* follow paginate_path config for pagination ([6900d9f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6900d9f2bc9380cbda4babf611c6eeff345291af))
* force checkout of `gh-pages` branch ([#544](https://github.com/cotes2020/jekyll-theme-chirpy/issues/544)) ([5402523](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5402523ae52a3740bcc15df0b226b2612644945d))
* horizontal scroll for long equations ([#545](https://github.com/cotes2020/jekyll-theme-chirpy/issues/545)) ([30787fc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/30787fc4cf151e955bb7afc26dfd859f1a06fce6))
* p is not allowed in span ([4f590e2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4f590e2bba0639751771211bc0d357828ae70404))
* remove whitespace from avatar URL ([#537](https://github.com/cotes2020/jekyll-theme-chirpy/issues/537)) ([0542b51](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0542b5149c8287dca60e37f46ee36f31b43455e4))
* resume the preview image SEO tag ([#529](https://github.com/cotes2020/jekyll-theme-chirpy/issues/529)) ([b8d1bcd](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b8d1bcd3dea0abd1afef7ef154a4501fbb18938d))
* script code should be in head or body, not in between ([2103191](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2103191b2faf714a8e4418c7c347a1f942b51af8))
* spurious header closing tags ([59e9557](https://github.com/cotes2020/jekyll-theme-chirpy/commit/59e955745f02f9b57c65af70b0979cd4a98bf53f))
* table bypass refactoring when it contains IAL ([#519](https://github.com/cotes2020/jekyll-theme-chirpy/issues/519)) ([5d85ccb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5d85ccb9943aac88dbbefebe1c2234cdcbae5c53))
* **theme mode:** `SCSS` syntax error ([#588](https://github.com/cotes2020/jekyll-theme-chirpy/issues/588)) ([76a1b6a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/76a1b6a068c369138422dcd18ba08ec8cc3749a6))
* use `jsonify` to generate valid json ([#521](https://github.com/cotes2020/jekyll-theme-chirpy/issues/521)) ([dd9d5a7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/dd9d5a7207b746342d07176d8969dc4f2c380bf2))
* when the `site.img_cdn` is set to the local path, the preview-image path loses the `baseurl` ([9cefe58](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9cefe58993d9ea3a3a28424e7ffd8e0911567c5c))
### Improvements
* avoid post pageviews from shifting while loading ([135a16f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/135a16f13ee783d9308669ff9a824847a73c951c))
* avoid the layout shift for post datetime ([6d35f5f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6d35f5f8da044cfad071628bb53776de03efaae4))
* **categories:** support singular and plural forms of locale ([#595](https://github.com/cotes2020/jekyll-theme-chirpy/issues/595)) ([35cadf9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/35cadf969dd0161ee62503e242c545f006f7072b))
* improve the responsive design for ultrawide screens ([#540](https://github.com/cotes2020/jekyll-theme-chirpy/issues/540)) ([5d6e8c5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5d6e8c5ef6aa71b4d2600c5305f6e8ba540557f7))

15
Gemfile
View File

@@ -10,10 +10,19 @@ end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do
gem "tzinfo", "~> 1.2"
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"
end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
# Lock jekyll-sass-converter to 2.x on Linux-musl
if RUBY_PLATFORM =~ /linux-musl/
gem "jekyll-sass-converter", "~> 2.0"
end

255
README.md
View File

@@ -1,217 +1,94 @@
# Chirpy
<div align="center">
Language: English | [简体中文](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/README.zh-CN.md)
# Chirpy Jekyll Theme
[![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?color=brightgreen)](https://rubygems.org/gems/jekyll-theme-chirpy)
[![Build Status](https://github.com/cotes2020/jekyll-theme-chirpy/workflows/build/badge.svg?branch=master&event=push)](https://github.com/cotes2020/jekyll-theme-chirpy/actions?query=branch%3Amaster+event%3Apush)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/8220b926db514f13afc3f02b7f884f4b)](https://app.codacy.com/manual/cotes2020/jekyll-theme-chirpy?utm_source=github.com&utm_medium=referral&utm_content=cotes2020/jekyll-theme-chirpy&utm_campaign=Badge_Grade_Dashboard)
[![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy.svg)](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE)
[![996.icu](https://img.shields.io/badge/link-996.icu-%23FF4D5B.svg)](https://996.icu)
A minimal, responsive and feature-rich Jekyll theme for technical writing.
A minimal, sidebar, responsive web design Jekyll theme that focuses on text presentation. Designed to help you record and share your knowledge easily. [Live Demo »](https://chirpy.cotes.info)
[![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?color=brightgreen)](https://rubygems.org/gems/jekyll-theme-chirpy)
[![CI](https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml/badge.svg)](https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/4e556876a3c54d5e8f2d2857c4f43894)](https://www.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=cotes2020/jekyll-theme-chirpy&amp;utm_campaign=Badge_Grade)
[![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy.svg)](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE)
[![996.icu](https://img.shields.io/badge/link-996.icu-%23FF4D5B.svg)](https://996.icu)
[![Devices Mockup](https://cdn.jsdelivr.net/gh/cotes2020/chirpy-images/commons/devices-mockup.png)](https://chirpy.cotes.info)
[**Live Demo →**][demo]
[![Devices Mockup](https://chirpy-img.netlify.app/commons/devices-mockup.png)][demo]
</div>
## Features
- Pinned Posts
- Configurable theme mode
- Double-level Categories
- Last modified date for posts
- Table of Contents
- Automatically recommend related posts
- Syntax highlighting
- Mathematical expressions
- Mermaid diagram & flowchart
- Search
- Atom Feeds
- Disqus Comments
- Google Analytics
- GA Pageviews reporting (Advanced)
- SEO and Performance Optimization
<details>
<summary>
<i>Click to view features</i>
</summary>
<p>
## Prerequisites
- Dark / Light Theme Mode
- Localized UI language
- Pinned Posts
- Hierarchical Categories
- Trending Tags
- Table of Contents
- Last Modified Date of Posts
- Syntax Highlighting
- Mathematical Expressions
- Mermaid Diagram & Flowchart
- Dark / Light Mode Images
- Embed Videos
- Disqus / Utterances / Giscus Comments
- Search
- Atom Feeds
- Google Analytics
- SEO & Performance Optimization
Follow the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installation of `Ruby`, `RubyGems`, `Jekyll` and `Bundler`.
## Installation
There are two ways to get the theme:
- **Install from RubyGems** - Easy to update, isolate irrelevant project files so you can focus on writing.
- **Fork on GitHub** - Convenient for custom development, but difficult to update, only suitable for web developers.
### Installing the Theme Gem
Add this line to your Jekyll site's `Gemfile`:
```ruby
gem "jekyll-theme-chirpy"
```
And add this line to your Jekyll site's `_config.yml`:
```yaml
theme: jekyll-theme-chirpy
```
And then execute:
```console
$ bundle
```
Finally, copy the required files from the theme's gem (for detailed files, see [starter project][starter]) to your Jekyll site.
> **Hint**: To locate the installed themes gem, execute:
>
> ```console
> $ bundle info --path jekyll-theme-chirpy
> ```
Or you can [**use the starter template**][use-starter] to create a Jekyll site to save time copying files from the theme's gem. We have prepared everything for you there!
### Fork on GitHub
[Fork **Chirpy**](https://github.com/cotes2020/jekyll-theme-chirpy/fork) on GitHub and then clone your fork to local. (Please note that the default branch code is in development. If you want the blog to be stable, please switch to the [latest tag](https://github.com/cotes2020/jekyll-theme-chirpy/tags) and start writing.)
Install gem dependencies by:
```console
$ bundle
```
And then execute:
```console
$ bash tools/init.sh
```
> **Note**: If you don't plan to deploy your site on GitHub Pages, append parameter option `--no-gh` at the end of the above command.
What it does is:
1. Remove some files or directories from your repository:
- `.travis.yml`
- files under `_posts`
- folder `docs`
2. If you use the `--no-gh` option, the directory `.github` will be deleted. Otherwise, setup the GitHub Action workflow by removing the extension `.hook` of `.github/workflows/pages-deploy.yml.hook`, and then remove the other files and directories in the folder `.github`.
3. Automatically create a commit to save the changes.
## Usage
### Configuration
Update the variables of `_config.yml` as needed. Some of them are typical options:
- `url`
- `avatar`
- `timezone`
- `lang`
### Running Local Server
You may want to preview the site contents before publishing, so just run it by:
```console
$ bundle exec jekyll s
```
Or run the site on Docker with the following command:
```terminal
$ docker run -it --rm \
--volume="$PWD:/srv/jekyll" \
-p 4000:4000 jekyll/jekyll \
jekyll serve
```
Open a browser and visit to _<http://localhost:4000>_.
### Deployment
Before the deployment begins, checkout the file `_config.yml` and make sure the `url` is configured correctly. Furthermore, if you prefer the [**project site**](https://help.github.com/en/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites) and don't use a custom domain, or you want to visit your website with a base URL on a web server other than **GitHub Pages**, remember to change the `baseurl` to your project name that starting with a slash, e.g, `/project-name`.
Now you can choose ONE of the following methods to deploy your Jekyll site.
#### Deploy on GitHub Pages
For security reasons, GitHub Pages build runs on `safe` mode, which restricts us from using plugins to generate additional page files. Therefore, we can use **GitHub Actions** to build the site, store the built site files on a new branch, and use that branch as the source of the GH Pages service.
Quickly check the files needed for GitHub Actions build:
- Ensure your Jekyll site has the file `.github/workflows/pages-deploy.yml`. Otherwise, create a new one and fill in the contents of the [workflow file][workflow], and the value of the `on.push.branches` should be the same as your repo's default branch name.
- Ensure your Jekyll site has file `tools/test.sh` and `tools/deploy.sh`. Otherwise, copy them from this repo to your Jekyll site.
And then rename your repository to `<GH-USERNAME>.github.io` on GitHub.
Now publish your Jekyll site by:
1. Push any commit to remote to trigger the GitHub Actions workflow. Once the build is complete and successful, a new remote branch named `gh-pages` will appear to store the built site files.
2. Browse to your repo's landing page on GitHub and select the branch `gh-pages` as the [publishing source](https://docs.github.com/en/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site) through _Settings__Options__GitHub Pages_:
![gh-pages-sources](https://cdn.jsdelivr.net/gh/cotes2020/chirpy-images/posts/20190809/gh-pages-sources.png)
3. Visit your website at the address indicated by GitHub.
#### Deploy on Other Platforms
On platforms other than GitHub, we cannot enjoy the convenience of **GitHub Actions**. Therefore, we should build the site locally (or on some other 3rd-party CI platform) and then put the site files on the server.
Go to the root of the source project, build your site by:
```console
$ JEKYLL_ENV=production bundle exec jekyll b
```
Or build the site with Docker by:
```terminal
$ docker run -it --rm \
--env JEKYLL_ENV=production \
--volume="$PWD:/srv/jekyll" \
jekyll/jekyll \
jekyll build
```
Unless you specified the output path, the generated site files will be placed in folder `_site` of the project's root directory. Now you should upload those files to your web server.
</p>
</details>
## Documentation
For more details and a better reading experience, please check out the [tutorials on the demo site](https://chirpy.cotes.info/categories/tutorial/). In the meanwhile, a copy of the tutorial is also available on the [Wiki](https://github.com/cotes2020/jekyll-theme-chirpy/wiki).
To explore usage, development, and upgrade guide of the project, please refer to
the [Wiki][wiki].
## Contributing
The old saying, "Two heads are better than one." Consequently, welcome to report bugs, improve code quality or submit a new feature. For more information, see [contributing guidelines](.github/CONTRIBUTING.md).
Welcome to report bugs, help improve the code or submit new features.
For more information, please see the ["Contributing Guidelines"][contribute-guide].
## Credits
This theme is mainly built with [Jekyll](https://jekyllrb.com/) ecosystem, [Bootstrap](https://getbootstrap.com/), [Font Awesome](https://fontawesome.com/) and some other wonderful tools (their copyright information can be found in the relevant files). The avatar and favicon design comes from [Clipart Max](https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/).
This theme is mainly built with [Jekyll][jekyllrb] ecosystem,
[Bootstrap][bootstrap], [Font Awesome][icons] and some other [wonderful tools][lib].
The avatar and favicon design come from [Clipart Max][image].
:tada: Thanks to all the volunteers who contributed to this project, their GitHub IDs are on [this list](https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors). Also, I won't forget those guys who submitted the issues or unmerged PR because they reported bugs, shared ideas, or inspired me to write more readable documentation.
Thanks to all the [contributors][contributors]. Also, folks who submitted issues
or unmerged PRs should not be forgotten. Because they reported bugs, shared ideas,
or inspired me to write more readable documentation.
Last but not least, thank [JetBrains][jb] for providing the open source license.
Last but not least, thanks to [JetBrains][jetbrains] for providing the
_Open Source Development_ license.
## Sponsoring
If you like this theme or find it helpful, please consider sponsoring me, because it will encourage and help me better maintain the project, I will be very grateful!
If you'd like to sponsor this project, the following options are available.
[![Buy Me a Coffee](https://img.shields.io/badge/-Buy%20Me%20a%20Coffee-ff813f?logo=buy-me-a-coffee&logoColor=white)](https://www.buymeacoffee.com/coteschung)
[![Wechat Pay](https://img.shields.io/badge/-Tip%20Me%20on%20WeChat-brightgreen?logo=wechat&logoColor=white)][cn-donation]
[![Alipay](https://img.shields.io/badge/-Tip%20Me%20on%20Alipay-blue?logo=alipay&logoColor=white)][cn-donation]
[![Ko-fi](https://img.shields.io/badge/-Buy%20Me%20a%20Coffee-ff5f5f?logo=ko-fi&logoColor=white)](https://ko-fi.com/coteschung)
[![Wechat Pay](https://img.shields.io/badge/-Tip%20Me%20on%20WeChat-brightgreen?logo=wechat&logoColor=white)][donation]
[![Alipay](https://img.shields.io/badge/-Tip%20Me%20on%20Alipay-blue?logo=alipay&logoColor=white)][donation]
## License
This work is published under [MIT](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE) License.
This work is published under [MIT][mit] License.
[starter]: https://github.com/cotes2020/chirpy-starter
[use-starter]: https://github.com/cotes2020/chirpy-starter/generate
[workflow]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/.github/workflows/pages-deploy.yml.hook
<!-- ReadMe links -->
[jb]: https://www.jetbrains.com/?from=jekyll-theme-chirpy
[cn-donation]: https://cotes.gitee.io/alipay-wechat-donation/
[jekyllrb]: https://jekyllrb.com/
[bootstrap]: https://getbootstrap.com/
[icons]: https://fontawesome.com/
[image]: https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/
[demo]: https://cotes2020.github.io/chirpy-demo/
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
[contribute-guide]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/.github/CONTRIBUTING.md
[contributors]: https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors
[lib]: https://github.com/cotes2020/chirpy-static-assets
[jetbrains]: https://www.jetbrains.com/?from=jekyll-theme-chirpy
[donation]: https://sponsor.cotes.page/
[mit]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE

View File

@@ -3,58 +3,57 @@
# Import the theme
theme: jekyll-theme-chirpy
# Only if your site type is GitHub Project sites and doesn't have a custom domain,
# change below value to '/projectname'.
baseurl: ''
# Change the following value to '/PROJECT_NAME' ONLY IF your site type is GitHub Pages Project sites
# and doesn't have a custom domain.
baseurl: ""
# the HTML language tag https://www.w3.org/International/questions/qa-choosing-language-tags
lang: en-US
# The language of the webpage http://www.lingoes.net/en/translator/langcode.htm
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
# otherwise, the layout language will use the default value of 'en'.
lang: en
# Change to your timezone http://www.timezoneconverter.com/cgi-bin/findzone/findzone
timezone: Asia/Shanghai
# jekyll-seo-tag settings https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
# --------------------------
title: Chirpy # the main title
# --------------------------
tagline: A text-focused Jekyll theme # it will display as the sub-title
title: Chirpy # the main title
description: >- # used by seo meta and the atom feed
A minimal, portfolio, sidebar,
bootstrap Jekyll theme with responsive web design
and focuses on text presentation.
tagline: A text-focused Jekyll theme # it will display as the sub-title
description: >- # used by seo meta and the atom feed
A minimal, responsive and feature-rich Jekyll theme for technical writing.
# fill in the protocol & hostname for your site, e.g., 'https://username.github.io'
url: ''
url: ""
github:
username: github_username # change to your github username
username: github_username # change to your github username
twitter:
username: twitter_username # change to your twitter username
username: twitter_username # change to your twitter username
social:
# Change to your full name.
# It will be displayed as the default author of the posts and the copyright owner in the Footer
name: your_full_name
email: example@doamin.com # change to your email address
email: example@domain.com # change to your email address
links:
# The first element serves as the copyright owner's link
- https://twitter.com/username # change to your twitter homepage
- https://github.com/username # change to your github homepage
- https://twitter.com/username # change to your twitter homepage
- https://github.com/username # change to your github homepage
# Uncomment below to add more social links
# - https://www.facebook.com/username
# - https://www.linkedin.com/in/username
google_site_verification: google_meta_tag_verification # change to your verification string
# --------------------------
google_site_verification: # fill in to your verification string
# ↑ --------------------------
# The end of `jekyll-seo-tag` settings
google_analytics:
id: '' # fill in your Google Analytics ID
# Google Analytics pageviews report settings
pv:
proxy_endpoint: # fill in the Google Analytics superProxy endpoint of Google App Engine
cache_path: # the local PV cache data, friendly to visitors from GFW region
id: # fill in your Google Analytics ID
# Prefer color scheme setting.
#
@@ -67,24 +66,51 @@ google_analytics:
# light - Use the light color scheme
# dark - Use the dark color scheme
#
theme_mode: # [light|dark]
theme_mode: # [light|dark]
# The CDN endpoint for images.
# Notice that once it is assigned, the CDN url
# will be added to all image (site avatar & posts' images) paths starting with '/'
#
# e.g. 'https://cdn.com'
img_cdn: ''
img_cdn: "https://chirpy-img.netlify.app"
# the avatar on sidebar, support local or CORS resources
avatar: https://cdn.jsdelivr.net/gh/cotes2020/chirpy-images/commons/avatar.jpg
avatar: "/commons/avatar.jpg"
# boolean type, the global switch for ToC in posts.
# boolean type, the global switch for TOC in posts.
toc: true
disqus:
comments: false # boolean type, the global switch for posts comments.
shortname: '' # Fill with your Disqus shortname. https://help.disqus.com/en/articles/1717111-what-s-a-shortname
comments:
active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable
# The active options are as follows:
disqus:
shortname: # fill with the Disqus shortname. https://help.disqus.com/en/articles/1717111-what-s-a-shortname
# utterances settings https://utteranc.es/
utterances:
repo: # <gh-username>/<repo>
issue_term: # < url | pathname | title | ...>
# Giscus options https://giscus.app
giscus:
repo: # <gh-username>/<repo>
repo_id:
category:
category_id:
mapping: # optional, default to 'pathname'
input_position: # optional, default to 'bottom'
lang: # optional, default to the value of `site.lang`
reactions_enabled: # optional, default to the value of `1`
# Self-hosted static assets, optional https://github.com/cotes2020/chirpy-static-assets
assets:
self_host:
enabled: # boolean, keep empty means false
# specify the Jekyll environment, empty means both
# only works if `assets.self_host.enabled` is 'true'
env: # [development|production]
pwa:
enabled: true # the option for PWA feature
paginate: 10
@@ -92,7 +118,7 @@ paginate: 10
kramdown:
syntax_highlighter: rouge
syntax_highlighter_opts: # Rouge Options https://github.com/jneen/rouge#full-options
syntax_highlighter_opts: # Rouge Options https://github.com/jneen/rouge#full-options
css_class: highlight
# default_lang: console
span:
@@ -106,32 +132,35 @@ collections:
output: true
sort_by: order
defaults:
-
scope:
path: '' # An empty string here means all files in the project
- scope:
path: "" # An empty string here means all files in the project
type: posts
values:
layout: post
comments: true # Enable comments in posts.
toc: true # Display TOC column in posts.
comments: true # Enable comments in posts.
toc: true # Display TOC column in posts.
# DO NOT modify the following parameter unless you are confident enough
# to update the code of all other post links in this project.
permalink: /posts/:title/
-
scope:
- scope:
path: _drafts
values:
comments: false
-
scope:
path: ''
type: tabs # see `site.collections`
- scope:
path: ""
type: tabs # see `site.collections`
values:
layout: page
permalink: /:title/
dynamic_title: true # Hide title in mobile screens.
- scope:
path: assets/img/favicons
values:
swcache: true
- scope:
path: assets/js/dist
values:
swcache: true
sass:
style: compressed
@@ -146,15 +175,15 @@ compress_html:
envs: [development]
exclude:
- '*.gem'
- '*.gemspec'
- "*.gem"
- "*.gemspec"
- tools
- docs
- README.md
- CHANGELOG.md
- LICENSE
- gulpfile.js
- rollup.config.js
- node_modules
- '*.json'
- package*.json
jekyll-archives:
enabled: [categories, tags]

17
_data/authors.yml Normal file
View File

@@ -0,0 +1,17 @@
## Template https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/advanced-usage.md#setting-author-url
# -------------------------------------
# {author_id}:
# name: {full name}
# twitter: {twitter_of_author}
# url: {homepage_of_author}
# -------------------------------------
cotes:
name: Cotes Chung
twitter: cotes2020
url: https://github.com/cotes2020/
sille_bille:
name: Dinesh Prasanth Moluguwan Krishnamoorthy
twitter: dinesh_MKD
url: https://github.com/SilleBille/

View File

@@ -1,30 +1,28 @@
# The contact options.
-
type: github
icon: 'fab fa-github-alt'
-
type: twitter
icon: 'fab fa-twitter'
-
type: email
icon: 'fas fa-envelope'
noblank: true # open link in current tab
-
type: rss
icon: 'fas fa-rss'
noblank: true
- type: github
icon: "fab fa-github"
- type: twitter
icon: "fab fa-twitter"
- type: email
icon: "fas fa-envelope"
noblank: true # open link in current tab
- type: rss
icon: "fas fa-rss"
noblank: true
# Uncomment and complete the url below to enable more contact options
# -
# type: mastodon
#
# - type: mastodon
# icon: 'fab fa-mastodon' # icons powered by <https://fontawesome.com/>
# url: '' # Fill with your mastodon account page
# -
# type: linkedin
# url: '' # Fill with your Mastodon account page, rel="me" will be applied for verification
#
# - type: linkedin
# icon: 'fab fa-linkedin' # icons powered by <https://fontawesome.com/>
# url: '' # Fill with your Linkedin homepage
# -
# type: stack-overflow
#
# - type: stack-overflow
# icon: 'fab fa-stack-overflow'
# url: '' # Fill with your stackoverflow homepage

View File

@@ -1,7 +0,0 @@
# The date format
tooltip: "%a, %b %e, %Y, %l:%M %p %z"
post:
long: "%b %e, %Y"
short: "%b %e"

View File

@@ -1,19 +0,0 @@
# The label text of site.
panel:
lastmod: Recent Update
trending_tags: Trending Tags
toc: Contents
post:
relate_posts: Further Reading
share: Share
button:
next: Newer
previous: Older
search_hint: Search # text show on search bar
pin_prompt: Pinned # pinned prompt
read_time_unit: min # see posts' time to read

91
_data/locales/ar.yml Normal file
View File

@@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: منشور
category: فئة
tag: وسم
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: الرئيسية
categories: الفئات
tags: الوسوم
archives: الأرشيف
about: حول
# the text displayed in the search bar & search results
search:
hint: بحث
cancel: إلغاء
no_results: نأسف! لا يوجد نتائج.
panel:
lastmod: المحدثة مؤخرا
trending_tags: الوسوم الشائعة
toc: محتويات
copyright:
# Shown at the bottom of the post
license:
template: هذا المنشور تحت ترخيص :LICENSE_NAME بواسطة المؤلف.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: بعض الحقوق محفوظة.
verbose: >-
ما لم يذكر خلاف ذلك ، يتم ترخيص منشورات المدونة على هذا الموقع
بموجب ترخيص Creative Commons Attribution 4.0 International (CC BY 4.0) من قبل المؤلف.
meta: باستخدام :PLATFORM السمة :THEME
not_found:
statment: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة.
notification:
update_found: يتوفر اصدار جديد للمحتوى.
update: تحديث
# ----- Posts related labels -----
post:
written_by: بواسطة
posted: نشّر
updated: حدّث
words: كلمات
pageview_measure: مشاهدات
read_time:
unit: دقيقة
prompt: قراءة
relate_posts: إقرأ المزيد
share: شارك
button:
next: الأجدد
previous: الأقدم
copy_code:
succeed: تم النسخ!
share_link:
title: أنسخ الرابط
succeed: تم نسخ الرابط بنجاح!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: فئة
plural: فئات
post_measure:
singular: منشور
plural: منشورات

81
_data/locales/bg-BG.yml Normal file
View File

@@ -0,0 +1,81 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Публикация
category: Категория
tag: Таг
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Начало
categories: Категории
tags: Тагове
archives: Архив
about: За мен
# the text displayed in the search bar & search results
search:
hint: търси
cancel: Отмени
no_results: Упс! Не са намерени резултати.
panel:
lastmod: Наскоро обновени
trending_tags: Популярни тагове
toc: Съдържание
copyright:
# Shown at the bottom of the post
license:
template: Тази публикация е лицензирана под :LICENSE_NAME от автора.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Някои права запазени.
verbose: >-
Освен ако не е посочено друго, публикациите в блога на този сайт са лицензирани
под лиценза Creative Commons Attribution 4.0 (CC BY 4.0) от автора.
meta: Създадено чрез :PLATFORM и :THEME тема
not_found:
statment: Съжалявам, но на този 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: Линкът е копиран успешно!
# categories page
categories:
category_measure:
singular: категория
plural: категории
post_measure:
singular: публикация
plural: публикации

89
_data/locales/cs-CZ.yml Normal file
View File

@@ -0,0 +1,89 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Příspěvek
category: Kategorie
tag: Štítek
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Domů
categories: Kategorie
tags: Štítky
archives: Archivy
about: O mně
# the text displayed in the search bar & search results
search:
hint: hledat
cancel: Zrušit
no_results: Ups! Žádný výsledek nenalezen.
panel:
lastmod: Nedávno aktualizováno
trending_tags: Trendy štítky
toc: Obsah
copyright:
# Shown at the bottom of the post
license:
template: Tento příspěvek je licencován pod :LICENSE_NAME autorem.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Některá práva vyhrazena.
verbose: >-
Pokud není uvedeno jinak, jsou příspěvky na tomto webu licencovány
pod licencí Creative Commons Attribution 4.0 International (CC BY 4.0) Licence autora.
meta: Použití :PLATFORM s motivem :THEME
not_found:
statment: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje.
notification:
update_found: Je k dispozici nová verze obsahu.
update: Aktualizace
# ----- Posts related labels -----
post:
written_by: Od
posted: Zveřejněno
updated: Aktualizováno
words: slova
pageview_measure: zhlednutí
read_time:
unit: minut
prompt: čtení
relate_posts: Další čtení
share: Sdílet
button:
next: Novější
previous: Starší
copy_code:
succeed: Zkopírováno!
share_link:
title: Kopírovat odkaz
succeed: Zkopírováno!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure: kategorie
post_measure:
singular: příspěvěk
plural: příspěvky

80
_data/locales/de-DE.yml Normal file
View File

@@ -0,0 +1,80 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Eintrag
category: Kategorie
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Startseite
categories: Kategorien
tags: Tags
archives: Archiv
about: Über
# the text displayed in the search bar & search results
search:
hint: Suche
cancel: Abbrechen
no_results: Ups! Keine Einträge gefunden.
panel:
lastmod: Kürzlich aktualisiert
trending_tags: Beliebte Tags
toc: Inhalt
copyright:
# Shown at the bottom of the post
license:
template: Dieser Eintrag ist vom Autor unter :LICENSE_NAME lizensiert.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Einige Rechte vorbehalten.
verbose: >-
Alle Einträge auf dieser Seite stehen, soweit nicht anders angegeben, unter der Lizenz Creative Commons Attribution 4.0 (CC BY 4.0).
meta: Powered by :PLATFORM with :THEME theme
not_found:
statment: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource.
notification:
update_found: Eine neue Version ist verfügbar.
update: Neue Version
# ----- Posts related labels -----
post:
written_by: Von
posted: Veröffentlicht
updated: Aktualisiert
words: Wörter
pageview_measure: Aufrufe
read_time:
unit: Minuten
prompt: lesen
relate_posts: Weiterlesen
share: Teilen
button:
next: Nächster Eintrag
previous: Eintrag vorher
copy_code:
succeed: Kopiert!
share_link:
title: Link kopieren
succeed: Link erfolgreich kopiert!
# categories page
categories:
category_measure:
singular: Kategorie
plural: Kategorien
post_measure:
singular: Eintrag
plural: Einträge

91
_data/locales/el-GR.yml Normal file
View File

@@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Δημοσίευση
category: Κατηγορία
tag: Ετικέτα
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Home
categories: Κατηγορίες
tags: Ετικέτες
archives: Αρχεία
about: Σχετικά
# the text displayed in the search bar & search results
search:
hint: αναζήτηση
cancel: Ακύρωση
no_results: Oops! Κανένα αποτέλεσμα δεν βρέθηκε.
panel:
lastmod: Σχετικά ενημερωμένα
trending_tags: Ετικέτες τάσης
toc: Περιεχόμενα
copyright:
# Shown at the bottom of the post
license:
template: Η δημοσίευση αυτή βρίσκεται υπο την άδεια :LICENSE_NAME Greekforce1821.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Ορισμένα δικαιώματα reserved.
verbose: >-
Εκτός αλλού ή οπουδήποτε αλλού, τα blog posts σε αυτήν την σελίδα βρίσκονται υπο την άδεια
Creative Commons Attribution 4.0 International (CC BY 4.0) του δημιουργού.
meta: Αξιοποιώντας την :PLATFORM theme :THEME
not_found:
statment: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση 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 page
categories:
category_measure:
singular: Κατηγορία
plural: Κατηγορίες
post_measure:
singular: Δημοσίευση
plural: Δημοσιεύσεις

91
_data/locales/en.yml Normal file
View File

@@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Post
category: Category
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Home
categories: Categories
tags: Tags
archives: Archives
about: About
# the text displayed in the search bar & search results
search:
hint: search
cancel: Cancel
no_results: Oops! No results found.
panel:
lastmod: Recently Updated
trending_tags: Trending Tags
toc: Contents
copyright:
# Shown at the bottom of the post
license:
template: This post is licensed under :LICENSE_NAME by the author.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Some rights reserved.
verbose: >-
Except where otherwise noted, the blog posts on this site are licensed
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.
meta: Using the :PLATFORM theme :THEME
not_found:
statment: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
notification:
update_found: A new version of content is available.
update: Update
# ----- Posts related labels -----
post:
written_by: By
posted: Posted
updated: Updated
words: words
pageview_measure: views
read_time:
unit: min
prompt: read
relate_posts: Further Reading
share: Share
button:
next: Newer
previous: Older
copy_code:
succeed: Copied!
share_link:
title: Copy link
succeed: Link copied successfully!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: category
plural: categories
post_measure:
singular: post
plural: posts

77
_data/locales/es-ES.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Entrada
category: Categoría
tag: Etiqueta
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Inicio
categories: Categorías
tags: Etiquetas
archives: Archivo
about: Acerca de
# the text displayed in the search bar & search results
search:
hint: Buscar
cancel: Cancelar
no_results: ¡Oops! No se encuentran resultados.
panel:
lastmod: Actualizado recientemente
trending_tags: Etiquetas populares
toc: Contenido
copyright:
# Shown at the bottom of the post
license:
template: Esta entrada está licenciada bajo :LICENSE_NAME por el autor.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Algunos derechos reservados.
verbose: >-
Salvo que se indique explícitamente, las entradas de este blog están licenciadas
bajo la Creative Commons Attribution 4.0 International (CC BY 4.0) License por el autor.
meta: Hecho con :PLATFORM usando el tema :THEME
not_found:
statment: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe.
notification:
update_found: Hay una nueva versión de contenido disponible.
update: Actualizar
# ----- Posts related labels -----
post:
written_by: Por
posted: Publicado
updated: Actualizado
words: palabras
pageview_measure: visitas
read_time:
unit: min
prompt: " de lectura"
relate_posts: Lecturas adicionales
share: Compartir
button:
next: Nuevo
previous: Anterior
copy_code:
succeed: ¡Copiado!
share_link:
title: Copiar enlace
succeed: ¡Enlace copiado!
# categories page
categories:
category_measure: categorias
post_measure: entradas

90
_data/locales/fi-FI.yml Normal file
View File

@@ -0,0 +1,90 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Julkaisu
category: Kateogoria
tag: Tagi
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Koti
categories: Kateogoriat
tags: Tagit
archives: Arkistot
about: Minusta
# the text displayed in the search bar & search results
search:
hint: etsi
cancel: Peruuta
no_results: Hups! Ei tuloksia.
panel:
lastmod: Viimeksi päivitetty
trending_tags: Trendaavat tagit
toc: Sisältö
copyright:
# Shown at the bottom of the post
license:
template: Tämä julkaisu on lisenssoitu :LICENSE_NAME julkaisijan toimesta.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Jotkut oikeudet pidätetään.
verbose: >-
Paitsi jos erikseen mainitaan on kaikki sisältö Creative Commons Attribution 4.0 International (CC BY 4.0) Lisensoitu kirjoittajan toimesta.
meta: Käytetään :PLATFORM iä Teema :THEME
not_found:
statment: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä.
notification:
update_found: Uusi versio sisällöstä on saatavilla.
update: Päivitä
# ----- Posts related labels -----
post:
written_by: Kirjoittaja
posted: Julkaistu
updated: Päivitetty
words: sanaa
pageview_measure: katselukertoja
read_time:
unit: minuuttia
prompt: lukea
relate_posts: Jatka lukemista
share: Jaa
button:
next: Uudempi
previous: Vanhempi
copy_code:
succeed: Kopiotu!
share_link:
title: Kopioi linkki
succeed: Linkki kopioitu onnistuneesti!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: kategoria
plural: kategoriat
post_measure:
singular: julkaisu
plural: julkaisut

77
_data/locales/fr-FR.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Post
category: Catégorie
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Accueil
categories: Catégories
tags: Tags
archives: Archives
about: A propos de
# the text displayed in the search bar & search results
search:
hint: recherche
cancel: Annuler
no_results: Oups ! Aucun résultat trouvé.
panel:
lastmod: Récemment mis à jour
trending_tags: Tags tendance
toc: Contenu
copyright:
# Shown at the bottom of the post
license:
template: Cet article est sous licence :LICENSE_NAME par l'auteur.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Certains droits réservés.
verbose: >-
Sauf mention contraire, les articles de ce site sont publiés sous licence
sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0) par l'auteur.
meta: Propulsé par :PLATFORM avec le thème :THEME
not_found:
statment: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas.
notification:
update_found: Une nouvelle version du contenu est disponible.
update: Mise à jour
# ----- Posts related labels -----
post:
written_by: Par
posted: Posté
updated: Mis à jour
words: mots
pageview_measure: vues
read_time:
unit: min
prompt: lire
relate_posts: Autres lectures
share: Partager
button:
next: Plus récent
previous: Plus ancien
copy_code:
succeed: Copié !
share_link:
title: Copier le lien
succeed: Lien copié avec succès !
# categories page
categories:
category_measure: catégories
post_measure: posts

79
_data/locales/hu-HU.yml Normal file
View File

@@ -0,0 +1,79 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Bejegyzés
category: Kategória
tag: Címke
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Kezdőlap
categories: Kategóriák
tags: Címkék
archives: Archívum
about: Rólam
# the text displayed in the search bar & search results
search:
hint: keresés
cancel: Mégse
no_results: Oops! Nincs találat a keresésre.
panel:
lastmod: Legutóbb frissítve
trending_tags: Népszerű Címkék
toc: Tartalom
links: Blog linkek
copyright:
# Shown at the bottom of the post
license:
template: A bejegyzés :LICENSE_NAME licenccel rendelkezik.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Néhány jog fenntartva.
verbose: >-
Az oldalon található tartalmak
Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek,
hacsak másképp nincs jelezve.
meta: Készítve :PLATFORM motorral :THEME témával
not_found:
statment: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat.
notification:
update_found: Elérhető a tartalom új verziója.
update: Frissítés
# ----- Posts related labels -----
post:
written_by: Szerző
posted: Létrehozva
updated: Frissítve
words: szó
pageview_measure: látogató
read_time:
unit: perc
prompt: elolvasni
relate_posts: További olvasnivaló
share: Megosztás
button:
next: Újabb
previous: Régebbi
copy_code:
succeed: Másolva!
share_link:
title: Link másolása
succeed: Link sikeresen másolva!
# categories page
categories:
category_measure: kategória
post_measure: bejegyzés

77
_data/locales/id-ID.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Postingan
category: Kategori
tag: Tagar
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Beranda
categories: Kategori
tags: Tagar
archives: Arsip
about: Tentang
# the text displayed in the search bar & search results
search:
hint: Cari
cancel: Batal
no_results: Ups! Tidak ada hasil yang ditemukan.
panel:
lastmod: Postingan Terbaru
trending_tags: Tagar Terpopuler
toc: Konten
copyright:
# Shown at the bottom of the post
license:
template: Postingan ini dilisensikan di bawah :LICENSE_NAME oleh penulis.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Sebagian konten dilindungi.
verbose: >-
Kecuali jika dinyatakan, Postingan blog di situs ini dilisensikan
di bawah Lisensi Creative Commons Attribution 4.0 International (CC BY 4.0) oleh penulis.
meta: Didukung oleh :PLATFORM dengan tema :THEME
not_found:
statment: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada.
notification:
update_found: Versi konten baru tersedia.
update: Perbarui
# ----- Posts related labels -----
post:
written_by: Oleh
posted: Diterbitkan
updated: Diperbarui
words: kata
pageview_measure: dilihat
read_time:
unit: menit
prompt: baca
relate_posts: Postingan Lainya
share: Bagikan
button:
next: Terbaru
previous: Terlama
copy_code:
succeed: Disalin!
share_link:
title: Salin tautan
succeed: Tautan berhasil disalin!
# categories page
categories:
category_measure: kategori
post_measure: Postingan

90
_data/locales/it-IT.yml Normal file
View File

@@ -0,0 +1,90 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Post
category: Categoria
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Pagina principale
categories: Categorie
tags: Tags
archives: Archivio
about: Informazioni
# the text displayed in the search bar & search results
search:
hint: ricerca
cancel: Cancella
no_results: Oops! La ricerca non ha fornito risultati.
panel:
lastmod: Aggiornati recentemente
trending_tags: Tags più cliccati
toc: Contenuti
copyright:
# Shown at the bottom of the post
license:
template: Questo post è sotto licenza :LICENSE_NAME a nome dell'autore.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Alcuni diritti riservati.
verbose: >-
Eccetto quando esplicitamente menzionato, i post di questo blog sono da ritenersi sotto
i termini di licenza Creative Commons Attribution 4.0 International (CC BY 4.0).
meta: Servizio offerto da :PLATFORM con tema :THEME
not_found:
statment: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente.
notification:
update_found: Nuova versione del contenuto disponibile.
update: Aggiornamento
# ----- Posts related labels -----
post:
written_by: Da
posted: Postato
updated: Aggiornato
words: parole
pageview_measure: visioni
read_time:
unit: min
prompt: lettura
relate_posts: Continua a leggere
share: Condividi
button:
next: Più recenti
previous: Meno recenti
copy_code:
succeed: Copiato!
share_link:
title: Copia link
succeed: Link copiato con successo!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: categoria
plural: categorie
post_measure:
singular: post
plural: posts

84
_data/locales/ko-KR.yml Normal file
View File

@@ -0,0 +1,84 @@
# The layout text of site
# ----- Commons label -----
layout:
post: 포스트
category: 카테고리
tag: 태그
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home:
categories: 카테고리
tags: 태그
archives: 아카이브
about: 정보
# the text displayed in the search bar & search results
search:
hint: 검색
cancel: 취소
no_results: 검색 결과가 없습니다.
panel:
lastmod: 최근 업데이트
trending_tags: 인기 태그
toc: 바로가기
copyright:
# Shown at the bottom of the post
license:
template: 이 기사는 저작권자의 :LICENSE_NAME 라이센스를 따릅니다.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: 일부 권리 보유
verbose: >-
명시되지 않는 한 이 사이트의 블로그 게시물은 작성자의
Creative Commons Attribution 4.0 International(CC BY 4.0) 라이선스에 따라 사용이 허가되었습니다.
meta: Powered by :PLATFORM with :THEME theme
not_found:
statment: 해당 URL은 존재하지 않습니다.
notification:
update_found: 새 버전의 콘텐츠를 사용할 수 있습니다.
update: 업데이트
# ----- Posts related labels -----
post:
written_by: By
posted: 게시
updated: 업데이트
words: 단어
pageview_measure: 조회
read_time:
unit:
prompt: 읽는 시간
relate_posts: 관련된 글
share: 공유하기
button:
next: 다음 글
previous: 이전 글
copy_code:
succeed: 복사되었습니다!
share_link:
title: 링크 복사하기
succeed: 링크가 복사되었습니다!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure: 카테고리
post_measure: 포스트

77
_data/locales/my-MM.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: ပို့စ်
category: ကဏ္ဍ
tag: နာမ(တက်ဂ်)
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: အဓိကစာမျက်နှာ
categories: ကဏ္ဍများ
tags: နာမ(တက်ဂ်)များ
archives: မှတ်တမ်း​တိုက်
about: အကြောင်းအရာ
# the text displayed in the search bar & search results
search:
hint: ရှာဖွေမည်
cancel: ဖျက်သိမ်းမည်
no_results: အိုး! ဘာမှမရှိပါ
panel:
lastmod: မကြာသေးမီကမွမ်းမံထားသည်
trending_tags: ခေတ်စားနေသည့်တက်ဂ်များ
toc: အကြောင်းအရာများ
copyright:
# Shown at the bottom of the post
license:
template: ဤပို့စ်သည်စာရေးသူ၏ :LICENSE_NAME လိုင်စင်ရထားသည်။
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: မူပိုင်ခွင့်အချို့ကို လက်ဝယ်ထားသည်။
verbose: >-
အခြားမှတ်သားထားချက်များမှလွဲ၍ ဤဆိုက်ရှိ ဘလော့ဂ်ပို့စ်များသည် စာရေးသူ၏
Creative Commons Attribution 4.0 International (CC BY 4.0) အောက်တွင် လိုင်စင်ရထားပါသည်။
meta: Powered by :PLATFORM with :THEME theme
not_found:
statment: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ 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: လင့်ခ်ကို ကူးယူလိုက်ပြီ။
# categories page
categories:
category_measure: ကဏ္ဍများ
post_measure: ပို့စ်များ

77
_data/locales/pt-BR.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Post
category: Categoria
tag: Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Home
categories: Categorias
tags: Tags
archives: Arquivos
about: Sobre
# the text displayed in the search bar & search results
search:
hint: Buscar
cancel: Cancelar
no_results: Oops! Nenhum resultado encontrado.
panel:
lastmod: Atualizados recentemente
trending_tags: Trending Tags
toc: Conteúdo
copyright:
# Shown at the bottom of the post
license:
template: Esta postagem está licenciada sob :LICENSE_NAME pelo autor.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Alguns direitos reservados.
verbose: >-
Exceto onde indicado de outra forma, as postagens do blog neste site são licenciadas sob a
Creative Commons Attribution 4.0 International (CC BY 4.0) License pelo autor.
meta: Feito com :PLATFORM usando o tema :THEME
not_found:
statment: Desculpe, a página não foi encontrada.
notification:
update_found: Uma nova versão do conteúdo está disponível.
update: atualização
# ----- Posts related labels -----
post:
written_by: Por
posted: Postado em
updated: Atualizado
words: palavras
pageview_measure: visualizações
read_time:
unit: min
prompt: " de leitura"
relate_posts: Leia também
share: Compartilhar
button:
next: Próximo
previous: Anterior
copy_code:
succeed: Copiado!
share_link:
title: Copie o link
succeed: Link copiado com sucesso!
# categories page
categories:
category_measure: categorias
post_measure: posts

77
_data/locales/ru-RU.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Публикация
category: Категория
tag: Тег
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Домашняя страница
categories: Категории
tags: Теги
archives: Архив
about: О сайте
# the text displayed in the search bar & search results
search:
hint: поиск
cancel: Отменить
no_results: Ох! Ничего не найдено.
panel:
lastmod: Недавно обновлено
trending_tags: Популярные теги
toc: Содержание
copyright:
# Shown at the bottom of the post
license:
template: Публикация защищена лицензией :LICENSE_NAME.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Некоторые права защищены.
verbose: >-
Публикации на сайте защищены лицензией Creative Commons Attribution 4.0 International (CC BY 4.0),
если в тексте публикации не указано иное.
meta: Powered by :PLATFORM with :THEME theme
not_found:
statment: Извините, эта ссылка указывает на ресурс который не существует.
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: Ссылка успешно скопирована!
# categories page
categories:
category_measure: категории
post_measure: публикации

91
_data/locales/sl-SI.yml Normal file
View File

@@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Objava #Post
category: Kategorija #Category
tag: Oznaka #Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Domov #Home
categories: Kategorije #Categories
tags: Oznake #Tags
archives: Arhiv #Archives
about: O meni #About
# the text displayed in the search bar & search results
search:
hint: išči #search
cancel: Prekliči #Cancel
no_results: Ups! Vsebina ni bila najdena #Oops! No results found.
panel:
lastmod: Nedavno Posodobljeno #Recently Updated
trending_tags: Priljubljene Oznake #Trending Tags
toc: Vsebina #Contents
copyright:
# Shown at the bottom of the post
license:
template: Ta objava je licencirana pod :LICENCE_NAME s strani avtorja. #This post is licensed under :LICENSE_NAME by the author.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Nekatere pravice pridržane. #Some rights reserved.
verbose: >-
Razen kjer navedeno drugače, vse objave spletnega dnevnika so licencirane
pod Creative Commons Attribution 4.0 International (CC BY 4.0) s strani avtorja.
meta: Uporabljena :PLATFORM tema :THEME #Using the :PLATFORM theme :THEME
not_found:
statment: Oprostite, hiperpovezava je neustrezna ali vsebina ne obstajata. #Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
notification:
update_found: Novejša različica vsebine je na voljo. #A new version of content is available.
update: Posodobi #Update
# ----- Posts related labels -----
post:
written_by: Od #By
posted: Objavljeno #Posted
updated: Posodobljeno #Updated
words: besede #words
pageview_measure: ogledi #views
read_time:
unit: min
prompt: beri #read
relate_posts: Nadaljnje branje #Further Reading
share: Deli #Share
button:
next: Novejše #Newer
previous: Starejše #Older
copy_code:
succeed: Kopirano! #Copied!
share_link:
title: Kopiraj povezavo #Copy link
succeed: Povezava uspešno kopirana! #Link copied successfully!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%e %b, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: kategorija #category
plural: kategorije #categories
post_measure:
singular: objava #post
plural: objave #posts

91
_data/locales/sv-SE.yml Normal file
View File

@@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Inlägg #Post
category: Kategori #Category
tag: Tagga #Tag
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Hem #Home
categories: Kategorier #Categories
tags: Taggar #Tags
archives: Arkiv #Archives
about: Om #About
# the text displayed in the search bar & search results
search:
hint: sök
cancel: Avbryt
no_results: Hoppsan! Hittade inga sökträffar.
panel:
lastmod: Senast uppdaterad
trending_tags: Trendande taggar
toc: Innehåll
copyright:
# Shown at the bottom of the post
license:
template: Den här posten är publicerad under licensen :LICENSE_NAME av författaren.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Vissa rättigheter är reserverade.
verbose: >-
Om inte annat anges är blogginläggen på denna webbplats licensierade
under Creative Commons Attribution 4.0 International (CC BY 4.0) av författaren.
meta: Byggd med :PLATFORM och temat :THEME
not_found:
statment: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns.
notification:
update_found: Det finns en ny version av innehållet.
update: Uppdatera sidan
# ----- Posts related labels -----
post:
written_by: Av
posted: Postad
updated: Uppdaterad
words: ord
pageview_measure: visningar
read_time:
unit: min
prompt: läsning
relate_posts: Mer läsning
share: Dela
button:
next: Nyare
previous: Äldre
copy_code:
succeed: Kopierat!
share_link:
title: Kopiera länk
succeed: Länken har kopierats!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%b %e, %Y"
dayjs: "ll"
archives:
strftime: "%b"
dayjs: "MMM"
# categories page
categories:
category_measure:
singular: kategori
plural: kategorier
post_measure:
singular: inlägg
plural: inlägg

91
_data/locales/th.yml Normal file
View File

@@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: โพสต์
category: หมวดหมู่
tag: แท็ก
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: หน้าแรก
categories: หมวดหมู่
tags: แท็ก
archives: คลังเก็บ
about: เกี่ยวกับ
# the text displayed in the search bar & search results
search:
hint: ค้นหา
cancel: ยกเลิก
no_results: โอ๊ะ! ไม่พบผลลัพธ์
panel:
lastmod: อัปเดตล่าสุด
trending_tags: แท็กยอดนิยม
toc: เนื้อหา
copyright:
# Shown at the bottom of the post
license:
template: โพสต์นี้อยู่ภายใต้การอนุญาต :LICENSE_NAME โดยผู้เขียน
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: สงวนลิขสิทธิ์เป็นบางส่วน
verbose: >-
เว้นแต่ว่าจะระบุเป็นอย่างอื่น โพสต์บนเว็บไซต์นี้อยู่ภายใต้
สัญญาอนุญาตครีเอทีฟคอมมอนส์แบบ 4.0 นานาชาติ (CC BY 4.0) โดยผู้เขียน
meta: กำลังใช้ธีมของ :PLATFORM ชื่อ :THEME
not_found:
statment: ขออภัย เราวาง 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 page
categories:
category_measure:
singular: หมวดหมู่
plural: หมวดหมู่
post_measure:
singular: โพสต์
plural: โพสต์

77
_data/locales/tr-TR.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Gönderi
category: Kategori
tag: Etiket
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Ana Sayfa
categories: Kategoriler
tags: Etiketler
archives: Arşiv
about: Hakkında
# the text displayed in the search bar & search results
search:
hint: Ara...
cancel: İptal
no_results: Hop! Öyle bir şey bulamadım.
panel:
lastmod: Yeni Güncellendi
trending_tags: Yükselen Etiketler
toc: İçindekiler
copyright:
# Shown at the bottom of the post
license:
template: Bu gönderi :LICENSE_NAME lisansı altındadır.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/deed.tr
# Displayed in the footer
brief: Bazı hakları saklıdır.
verbose: >-
Aksi belirtilmediği sürece, bu sitedeki gönderiler Creative Commons Atıf 4.0 Uluslararası (CC BY 4.0) Lisansı altındadır.
Kısaca sayfa linkini de vererek paylaşabilir veya düzenleyip paylaşabilirsin.
meta: :PLATFORM ve :THEME teması
not_found:
statment: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor.
notification:
update_found: İçeriğin yeni bir sürümü mevcut.
update: Güncelle
# ----- Posts related labels -----
post:
written_by: Yazan
posted: Gönderilme Tarihi
updated: Güncellenme Tarihi
words: sözcük
pageview_measure: görüntülenme
read_time:
unit: dakikada
prompt: okunabilir
relate_posts: Benzer Gönderiler
share: Paylaş
button:
next: İleri
previous: Geri
copy_code:
succeed: Kopyalandı.
share_link:
title: Linki kopyala
succeed: Link kopyalandı.
# categories page
categories:
category_measure: kategori
post_measure: gönderi

77
_data/locales/uk-UA.yml Normal file
View File

@@ -0,0 +1,77 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Публікація
category: Категорія
tag: Тег
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Домашня сторінка
categories: Категорії
tags: Теги
archives: Архів
about: Про сайт
# the text displayed in the search bar & search results
search:
hint: пошук
cancel: Скасувати
no_results: Ох! Нічого не знайдено.
panel:
lastmod: Нещодавно оновлено
trending_tags: Популярні теги
toc: Зміст
copyright:
# Shown at the bottom of the post
license:
template: Публікація захищена ліцензією :LICENSE_NAME.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Деякі права захищено.
verbose: >-
Публікації на сайті захищено ліцензією Creative Commons Attribution 4.0 International (CC BY 4.0),
якщо інше не вказано в тексті.
meta: Powered by :PLATFORM with :THEME theme
not_found:
statment: Вибачте, це посилання вказує на ресурс, що не існує.
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: Посилання успішно скопійовано!
# categories page
categories:
category_measure: категорії
post_measure: публікації

76
_data/locales/vi-VN.yml Normal file
View File

@@ -0,0 +1,76 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Bài viết
category: Danh mục
tag: Thẻ
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Trang chủ
categories: Các danh mục
tags: Các thẻ
archives: Lưu trữ
about: Giới thiệu
# the text displayed in the search bar & search results
search:
hint: tìm kiếm
cancel: Hủy
no_results: Không có kết quả tìm kiếm.
panel:
lastmod: Mới cập nhật
trending_tags: Các thẻ thịnh hành
toc: Mục lục
copyright:
# Shown at the bottom of the post
license:
template: Bài viết này được cấp phép bởi tác giả theo giấy phép :LICENSE_NAME.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Một số quyền được bảo lưu.
verbose: >-
Trừ khi có ghi chú khác, các bài viết đăng trên trang này được cấp phép bởi tác giả theo giấy phép Creative Commons Attribution 4.0 International (CC BY 4.0).
meta: Trang web này được tạo bởi :PLATFORM với chủ đề :THEME
not_found:
statment: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
notification:
update_found: Đã có phiên bản mới của nội dung.
update: Cập nhật
# ----- Posts related labels -----
post:
written_by: Viết bởi
posted: Đăng lúc
updated: Cập nhật lúc
words: từ
pageview_measure: lượt xem
read_time:
unit: phút
prompt: đọc
relate_posts: Bài viết liên quan
share: Chia sẻ
button:
next: Mới hơn
previous: Cũ hơn
copy_code:
succeed: Đã sao chép!
share_link:
title: Sao chép đường dẫn
succeed: Đã sao chép đường dẫn thành công!
# categories page
categories:
category_measure: danh mục
post_measure: bài viết

83
_data/locales/zh-CN.yml Normal file
View File

@@ -0,0 +1,83 @@
# The layout text of site
# ----- Commons label -----
layout:
post: 文章
category: 分类
tag: 标签
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: 首页
categories: 分类
tags: 标签
archives: 归档
about: 关于
# the text displayed in the search bar & search results
search:
hint: 搜索
cancel: 取消
no_results: 搜索结果为空
panel:
lastmod: 最近更新
trending_tags: 热门标签
toc: 文章内容
copyright:
# Shown at the bottom of the post
license:
template: 本文由作者按照 :LICENSE_NAME 进行授权
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: 保留部分权利。
verbose: >-
除非另有说明,本网站上的博客文章均由作者按照知识共享署名 4.0 国际 (CC BY 4.0) 许可协议进行授权。
meta: 本站采用 :PLATFORM 主题 :THEME
not_found:
statment: 抱歉,我们放错了该 URL或者它指向了不存在的内容。
notification:
update_found: 发现新版本的内容。
update: 更新
# ----- Posts related labels -----
post:
written_by: 作者
posted: 发表于
updated: 更新于
words:
pageview_measure: 次浏览
read_time:
unit: 分钟
prompt: 阅读
relate_posts: 相关文章
share: 分享
button:
next: 下一篇
previous: 上一篇
copy_code:
succeed: 已复制!
share_link:
title: 分享链接
succeed: 链接已复制!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure: 个分类
post_measure: 篇文章

83
_data/locales/zh-TW.yml Normal file
View File

@@ -0,0 +1,83 @@
# The layout text of site
# ----- Commons label -----
layout:
post: 文章
category: 分類
tag: 標籤
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: 首頁
categories: 分類
tags: 標籤
archives: 封存
about: 關於
# the text displayed in the search bar & search results
search:
hint: 搜尋
cancel: 取消
no_results: 沒有搜尋結果
panel:
lastmod: 最近更新
trending_tags: 熱門標籤
toc: 文章摘要
copyright:
# Shown at the bottom of the post
license:
template: 本文章以 :LICENSE_NAME 授權
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: 保留部份權利。
verbose: >-
除非另有說明,否則本網誌的文章均由作者按照姓名標示 4.0 國際 (CC BY 4.0) 授權條款進行授權。
meta: 本網站使用 :PLATFORM 產生,採用 :THEME 主題
not_found:
statment: 抱歉,您可能正在存取一個已被移動的 URL或者它從未存在。
notification:
update_found: 發現新版本更新。
update: 更新
# ----- Posts related labels -----
post:
written_by: 作者
posted: 發布於
updated: 更新於
words:
pageview_measure: 次瀏覽
read_time:
unit: 分鐘
prompt: 閱讀
relate_posts: 相關文章
share: 分享
button:
next: 下一篇
previous: 上一篇
copy_code:
succeed: 已複製!
share_link:
title: 分享連結
succeed: 已複製連結!
# Date time format.
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
df:
post:
strftime: "%Y/%m/%d"
dayjs: "YYYY/MM/DD"
# categories page
categories:
category_measure: 個分類
post_measure: 篇文章

48
_data/origin/basic.yml Normal file
View File

@@ -0,0 +1,48 @@
# fonts
webfonts: /assets/lib/fonts/main.css
# Libraries
jquery:
js: /assets/lib/jquery/jquery.min.js
bootstrap:
css: /assets/lib/bootstrap/bootstrap.min.css
js: /assets/lib/bootstrap/bootstrap.bundle.min.js
toc:
css: /assets/lib/tocbot/tocbot.min.css
js: /assets/lib/tocbot/tocbot.min.js
fontawesome:
css: /assets/lib/fontawesome-free/css/all.min.css
search:
js: /assets/lib/simple-jekyll-search/simple-jekyll-search.min.js
mermaid:
js: /assets/lib/mermaid/mermaid.min.js
dayjs:
js:
common: /assets/lib/dayjs/dayjs.min.js
locale: /assets/lib/dayjs/locale/en.min.js
relativeTime: /assets/lib/dayjs/plugin/relativeTime.min.js
localizedFormat: /assets/lib/dayjs/plugin/localizedFormat.min.js
magnific-popup:
css: /assets/lib/magnific-popup/magnific-popup.css
js: /assets/lib/magnific-popup/jquery.magnific-popup.min.js
lazysizes:
js: /assets/lib/lazysizes/lazysizes.min.js
clipboard:
js: /assets/lib/clipboard/clipboard.min.js
polyfill:
js: /assets/lib/polyfill-v3-es6/polyfill.min.js
mathjax:
js: /assets/lib/mathjax/tex-chtml.js

59
_data/origin/cors.yml Normal file
View File

@@ -0,0 +1,59 @@
# CDNs
cdns:
# Google Fonts
- url: https://fonts.googleapis.com
- url: https://fonts.gstatic.com
args: crossorigin
- url: https://fonts.googleapis.com
# jsDelivr CDN
- url: https://cdn.jsdelivr.net
# fonts
webfonts: https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap
# Libraries
jquery:
js: https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js
bootstrap:
css: https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css
js: https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js
toc:
css: https://cdn.jsdelivr.net/npm/tocbot@4.21.0/dist/tocbot.min.css
js: https://cdn.jsdelivr.net/npm/tocbot@4.21.0/dist/tocbot.min.js
fontawesome:
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.0/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@9.4.3/dist/mermaid.min.js
dayjs:
js:
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/dayjs.min.js
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/locale/:LOCALE.min.js
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/plugin/relativeTime.min.js
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.7/plugin/localizedFormat.min.js
magnific-popup:
css: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/magnific-popup.min.css
js: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/jquery.magnific-popup.min.js
lazysizes:
js: https://cdn.jsdelivr.net/npm/lazysizes@5.3.2/lazysizes.min.js
clipboard:
js: https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js
polyfill:
js: https://polyfill.io/v3/polyfill.min.js?features=es6
mathjax:
js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js

View File

@@ -1,11 +0,0 @@
# License data
license:
name: CC BY 4.0
link: "https://creativecommons.org/licenses/by/4.0/"
brief: Some rights reserved.
verbose: >-
Except where otherwise noted, the blog posts on this site are licensed
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.

View File

@@ -2,26 +2,24 @@
# Icons from <https://fontawesome.com/>
platforms:
-
type: Twitter
- type: Twitter
icon: "fab fa-twitter"
link: "https://twitter.com/intent/tweet?text=TITLE&url=URL"
-
type: Facebook
- type: Facebook
icon: "fab fa-facebook-square"
link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL"
-
type: Telegram
- type: Telegram
icon: "fab fa-telegram"
link: "https://telegram.me/share?text=TITLE&url=URL"
link: "https://t.me/share/url?url=URL&text=TITLE"
# Uncomment below if you need to.
# -
# type: Linkedin
#
# - type: Linkedin
# icon: "fab fa-linkedin"
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
#
# -
# type: Weibo
# - type: Weibo
# icon: "fab fa-weibo"
# link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL"

5
_includes/comments.html Normal file
View File

@@ -0,0 +1,5 @@
<!-- The comments switcher -->
{% if page.comments and site.comments.active %}
{% capture path %}comments/{{ site.comments.active }}.html{% endcapture %}
{% include {{ path }} %}
{% endif %}

View File

@@ -0,0 +1,49 @@
<!-- The Disqus lazy loading. -->
<div id="disqus_thread" class="pt-2 pb-2">
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
</div>
<script type="text/javascript">
var disqus_config = function () {
this.page.url = '{{ page.url | absolute_url }}';
this.page.identifier = '{{ page.url }}';
};
/* Lazy loading */
var disqus_observer = new IntersectionObserver(
function (entries) {
if (entries[0].isIntersecting) {
(function () {
var d = document,
s = d.createElement('script');
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
disqus_observer.disconnect();
}
},
{ threshold: [0] }
);
disqus_observer.observe(document.querySelector('#disqus_thread'));
/* Auto switch theme */
function reloadDisqus() {
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
/* Disqus hasn't been loaded */
if (typeof DISQUS === 'undefined') {
return;
}
if (document.readyState == 'complete') {
DISQUS.reset({ reload: true, config: disqus_config });
}
}
}
if (document.querySelector('.mode-toggle')) {
window.addEventListener('message', reloadDisqus);
}
</script>

View File

@@ -0,0 +1,64 @@
<!-- https://giscus.app/ -->
<script type="text/javascript">
(function () {
const origin = 'https://giscus.app';
const iframe = 'iframe.giscus-frame';
const lightTheme = 'light';
const darkTheme = 'dark_dimmed';
let initTheme = lightTheme;
const html = document.documentElement;
if (
(html.hasAttribute('data-mode') &&
html.getAttribute('data-mode') === 'dark') ||
(!html.hasAttribute('data-mode') &&
window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
initTheme = darkTheme;
}
let giscusAttributes = {
src: 'https://giscus.app/client.js',
'data-repo': '{{ site.comments.giscus.repo}}',
'data-repo-id': '{{ site.comments.giscus.repo_id }}',
'data-category': '{{ site.comments.giscus.category }}',
'data-category-id': '{{ site.comments.giscus.category_id }}',
'data-mapping': '{{ site.comments.giscus.mapping | default: 'pathname' }}',
'data-reactions-enabled': '{{ site.comments.giscus.reactions_enabled | default: '1' }}',
'data-emit-metadata': '0',
'data-theme': initTheme,
'data-input-position': '{{ site.comments.giscus.input_position | default: 'bottom' }}',
'data-lang': '{{ site.comments.giscus.lang | default: lang }}',
crossorigin: 'anonymous',
async: ''
};
let giscusScript = document.createElement('script');
Object.entries(giscusAttributes).forEach(([key, value]) =>
giscusScript.setAttribute(key, value)
);
document.getElementById('tail-wrapper').appendChild(giscusScript);
addEventListener('message', (event) => {
if (
event.source === window &&
event.data &&
event.data.direction === ModeToggle.ID
) {
/* global theme mode changed */
const mode = event.data.message;
const theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
const message = {
setConfig: {
theme: theme
}
};
const giscus = document.querySelector(iframe).contentWindow;
giscus.postMessage({ giscus: message }, origin);
}
});
})();
</script>

View File

@@ -0,0 +1,51 @@
<!-- https://utteranc.es/ -->
<script src="https://utteranc.es/client.js"
repo="{{ site.comments.utterances.repo }}"
issue-term="{{ site.comments.utterances.issue_term }}"
crossorigin="anonymous"
async>
</script>
<script type="text/javascript">
$(function() {
const origin = "https://utteranc.es";
const iframe = "iframe.utterances-frame";
const lightTheme = "github-light";
const darkTheme = "github-dark";
let initTheme = lightTheme;
if ($("html[data-mode=dark]").length > 0
|| ($("html[data-mode]").length == 0
&& window.matchMedia("(prefers-color-scheme: dark)").matches)) {
initTheme = darkTheme;
}
addEventListener("message", (event) => {
let theme;
/* credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> */
if (event.origin === origin) {
/* page initial */
theme = initTheme;
} else if (event.source === window && event.data &&
event.data.direction === ModeToggle.ID) {
/* global theme mode changed */
const mode = event.data.message;
theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
} else {
return;
}
const message = {
type: "set-theme",
theme: theme
};
const utterances = document.querySelector(iframe).contentWindow;
utterances.postMessage(message, origin);
});
});
</script>

View File

@@ -1,15 +0,0 @@
<!--
CSS selector for site.
-->
<link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
{% if site.toc and page.toc %}
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/afeld/bootstrap-toc@1.0.1/dist/bootstrap-toc.min.css">
{% endif %}
{% if page.layout == 'page' or page.layout == 'post' %}
<!-- Manific Popup -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/magnific-popup.min.css">
{% endif %}

19
_includes/datetime.html Normal file
View File

@@ -0,0 +1,19 @@
<!--
Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js
-->
{% assign wrap_elem = include.wrap | default: 'em' %}
{% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
{% assign df_dayjs = site.data.locales[include.lang].df.post.dayjs | default: 'DD/MM/YYYY' %}
<{{ wrap_elem }}
class="{% if include.class %}{{ include.class }}{% endif %}"
data-ts="{{ include.date | date: '%s' }}"
data-df="{{ df_dayjs }}"
{% if include.tooltip %}
data-bs-toggle="tooltip" data-bs-placement="bottom"
{% endif %}
>
{{ include.date | date: df_strftime }}
</{{ wrap_elem }}>

View File

@@ -1,25 +0,0 @@
<!--
The Disqus lazy loading.
Powered by: <https://github.com/osvaldasvalutis/disqusLoader.js>
-->
<div id="disqus" class="pt-2 pb-2">
<p class="text-center text-muted small pb-5">
Comments powered by <a href="https://disqus.com/">Disqus</a>.
</p>
</div>
<script src="{{ '/assets/js/lib/jquery.disqusloader.min.js' | relative_url }}"></script>
<script>
const options = {
scriptUrl: '//{{ site.disqus.shortname }}.disqus.com/embed.js',
disqusConfig: function() {
this.page.title = '{{ page.title }}';
this.page.url = '{{ page.url | absolute_url }}';
this.page.identifier = '{{ page.url }}';
}
};
$.disqusLoader('#disqus', options);
</script>

View File

@@ -0,0 +1,4 @@
<iframe class="embed-video twitch lazyload"
src="https://player.twitch.tv/?video={{ include.id }}&parent={{ site.url | split: '://' | last | remove: '/' }}"
frameborder="0" allowfullscreen="true"
scrolling="no"></iframe>

View File

@@ -0,0 +1,6 @@
<iframe class="embed-video youtube lazyload"
src="https://www.youtube.com/embed/{{ include.id }}"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>

View File

@@ -1,30 +1,34 @@
<!--
The Footer
-->
<!-- The Footer -->
<footer class="d-flex w-100 justify-content-center">
<div class="d-flex justify-content-between align-items-center">
<div class="footer-left">
<p class="mb-0">
© {{ 'now' | date: "%Y" }}
<footer>
<div class="container px-lg-4">
<div class="d-flex justify-content-center align-items-center text-muted mx-md-3">
<p>
{%- capture _platform -%}
<a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
{%- endcapture -%}
{%- capture _theme -%}
<a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a>
{%- endcapture -%}
{{ site.data.locales[include.lang].meta | replace: ':PLATFORM', _platform | replace: ':THEME', _theme }}
</p>
<p>
{{- '©' }}
{{ 'now' | date: '%Y' }}
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
{% if site.data.rights.brief %}
<span data-toggle="tooltip" data-placement="top"
title="{{ site.data.rights.verbose }}">{{ site.data.rights.brief }}</span>
{% if site.data.locales[include.lang].copyright.brief %}
<span
data-bs-toggle="tooltip"
data-bs-placement="top"
title="{{ site.data.locales[include.lang].copyright.verbose }}"
>
{{- site.data.locales[include.lang].copyright.brief -}}
</span>
{% endif %}
</p>
</div>
<div class="footer-right">
<p class="mb-0">
Powered by
<a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
with
<a href="https://github.com/cotes2020/jekyll-theme-chirpy"
target="_blank" rel="noopener">Chirpy</a>
theme.
</p>
</div>
</div> <!-- div.d-flex -->
</div>
</footer>

View File

@@ -1,74 +1,95 @@
<!--
The Head
-->
<!-- The Head -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta
name="viewport"
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
>
{% if page.layout == 'home' or page.layout == 'post' %}
{% capture seo_tags %}
{% seo title=false %}
{% endcapture %}
{% if site.google_analytics.pv.proxy_endpoint %}
<meta name="pv-proxy-endpoint" content="{{ site.google_analytics.pv.proxy_endpoint }}">
{% endif %}
{% if page.image %}
{% assign img = page.image.path | default: page.image %}
{% if site.google_analytics.pv.cache_path %}
<meta name="pv-cache-path" content="{{ site.google_analytics.pv.cache_path | relative_url }}">
{% endif %}
{% unless img contains '://' %}
{% assign img_path = page.img_path | append: '/' | append: img | replace: '//', '/' %}
{% capture target %}"{{ img | absolute_url }}"{% endcapture %}
{% if site.img_cdn contains '//' %}
<!-- it's a cross-origin URL -->
{% capture replacement %}"{{ site.img_cdn }}{{ img_path }}"{% endcapture %}
{% else %}
<!-- it's a local file path -->
{%- capture replacement -%}
"{{ site.img_cdn | append: '/' | append: img_path | replace: '//', '/' | absolute_url }}"
{%- endcapture -%}
{% endif %}
{% assign seo_tags = seo_tags | replace: target, replacement %}
{% endunless %}
{% endif %}
{% seo title=false %}
{{ seo_tags }}
<title>
{%- unless page.layout == "home" -%}
{{ page.title | append: " | "}}
{%- endunless -%}
{%- unless page.layout == 'home' -%}
{{ page.title | append: ' | ' }}
{%- endunless -%}
{{ site.title }}
</title>
{% include favicons.html %}
{% include_cached favicons.html %}
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous">
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
{% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
<link href="{{ site.data.origin[type].webfonts | relative_url }}" rel="stylesheet">
{% else %}
{% for cdn in site.data.origin[type].cdns %}
<link rel="preconnect" href="{{ cdn.url }}" {{ cdn.args }}>
<link rel="dns-prefetch" href="{{ cdn.url }}" {{ cdn.args }}>
{% endfor %}
<link rel="stylesheet" href="{{ site.data.origin[type].webfonts | relative_url }}">
{% endif %}
<!-- GA -->
{% if jekyll.environment == 'production' %}
{% if jekyll.environment == 'production' and site.google_analytics.id != empty and site.google_analytics.id %}
<link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
<link rel="dns-prefetch" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin="anonymous">
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
{% if site.google_analytics.pv.proxy_endpoint %}
{% assign proxy_url = site.google_analytics.pv.proxy_endpoint
| replace: "https://", "" | split: "/" | first | prepend: "https://" %}
<link rel="preconnect" href="{{ proxy_url }}" crossorigin="use-credentials">
<link rel="dns-prefetch" href="{{ proxy_url }}">
{% endif %}
{% endif %}
<!-- jsDelivr CDN -->
<link rel="preconnect" href="https://cdn.jsdelivr.net">
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<!-- Bootstrap -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="{{ site.data.origin[type].bootstrap.css | relative_url}}">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.11.2/css/all.min.css">
<link rel="stylesheet" href="{{ site.data.origin[type].fontawesome.css | relative_url }}">
{% include css-selector.html %}
<link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
<!-- JavaScripts -->
{% if site.toc and page.toc %}
<link rel="stylesheet" href="{{ site.data.origin[type].toc.css | relative_url }}">
{% endif %}
<script src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
{% if page.layout == 'page' or page.layout == 'post' %}
<!-- Manific Popup -->
<link rel="stylesheet" href="{{ site.data.origin[type].magnific-popup.css | relative_url }}">
{% endif %}
<script defer
src="https://cdn.jsdelivr.net/combine/npm/popper.js@1.15.0,npm/bootstrap@4/dist/js/bootstrap.min.js"></script>
<!-- JavaScript -->
{% include js-selector.html %}
{% unless site.theme_mode %}
{% include mode-toggle.html %}
{% endunless %}
{% include metadata-hook.html %}
</head>

View File

@@ -1,63 +1,106 @@
<!--
JS selector for site.
-->
<!-- JS selector for site. -->
{% if page.layout == 'home' or page.layout == 'post' %}
{% if site.google_analytics.pv.proxy_endpoint or site.google_analytics.pv.cache_path %}
<!-- pv-report needs countup.js -->
<script async src="https://cdn.jsdelivr.net/npm/countup.js@1.9.3/dist/countUp.min.js"></script>
<script async src="{{ '/assets/js/dist/pvreport.min.js' | relative_url }}"></script>
{% endif %}
{% endif %}
<!-- commons -->
{% if page.layout == 'post' or page.layout == 'page' %}
<!-- image lazy-loading & popup -->
<script async
src="https://cdn.jsdelivr.net/combine/npm/lozad/dist/lozad.min.js,npm/magnific-popup@1/dist/jquery.magnific-popup.min.js"></script>
{% assign urls = site.data.origin[type].jquery.js
| append: ','
| append: site.data.origin[type].bootstrap.js
| append: ','
| append: site.data.origin[type].search.js
%}
<!-- layout specified -->
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
{% assign urls = urls | append: ',' | append: site.data.origin[type].lazysizes.js %}
{% unless page.layout == 'home' %}
<!-- image lazy-loading & popup & clipboard -->
{% assign urls = urls
| append: ','
| append: site.data.origin[type]['magnific-popup'].js
| append: ','
| append: site.data.origin[type].clipboard.js
%}
{% endunless %}
{% endif %}
{% if page.layout == 'home'
or page.layout == 'categories'
or page.layout == 'post'
or page.layout == 'page' %}
{% assign type = page.layout %}
{% else %}
{% assign type = "commons" %}
or page.layout == 'post'
or page.layout == 'archives'
or page.layout == 'category'
or page.layout == 'tag'
%}
{% assign locale = site.lang | split: '-' | first %}
{% assign urls = urls
| append: ','
| append: site.data.origin[type].dayjs.js.common
| append: ','
| append: site.data.origin[type].dayjs.js.locale
| replace: ':LOCALE', locale
| append: ','
| append: site.data.origin[type].dayjs.js.relativeTime
| append: ','
| append: site.data.origin[type].dayjs.js.localizedFormat
%}
{% endif %}
{% assign js = type | prepend: '/assets/js/dist/' | append: '.min.js' %}
<script defer src="{{ js | relative_url }}"></script>
{% if page.content contains '<h2' or page.content contains '<h3' and site.toc and page.toc %}
{% assign urls = urls | append: ',' | append: site.data.origin[type].toc.js %}
{% endif %}
{% if page.mermaid %}
{% assign urls = urls | append: ',' | append: site.data.origin[type].mermaid.js %}
{% endif %}
{% include jsdelivr-combine.html urls=urls %}
{% case page.layout %}
{% when 'home', 'categories', 'post', 'page' %}
{% assign js = page.layout %}
{% when 'archives', 'category', 'tag' %}
{% assign js = 'misc' %}
{% else %}
{% assign js = 'commons' %}
{% endcase %}
{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
<script defer src="{{ script | relative_url }}"></script>
{% if page.math %}
<!-- MathJax -->
<script>
/* see: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options> */
MathJax = {
tex: {
inlineMath: [ /* start/end delimiter pairs for in-line math */
['$','$'],
['\\(','\\)']
],
displayMath: [ /* start/end delimiter pairs for display math */
['$$', '$$'],
['\\[', '\\]']
]
}
};
</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
/* see: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options> */
MathJax = {
tex: {
/* start/end delimiter pairs for in-line math */
inlineMath: [
['$', '$'],
['\\(', '\\)']
],
/* start/end delimiter pairs for display math */
displayMath: [
['$$', '$$'],
['\\[', '\\]']
]
}
};
</script>
<script src="{{ site.data.origin[type].polyfill.js | relative_url }}"></script>
<script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
{% endif %}
{% if jekyll.environment == 'production' %}
<!-- PWA -->
<script defer src="{{ '/app.js' | relative_url }}"></script>
<!-- GA -->
{% if site.google_analytics.id %}
{% include google-analytics.html %}
{% if site.pwa.enabled %}
<script defer src="{{ '/app.js' | relative_url }}"></script>
{% else %}
<script defer src="{{ '/unregister.js' | relative_url }}"></script>
{% endif %}
<!-- GA -->
{% if site.google_analytics.id != empty and site.google_analytics.id %}
{% include google-analytics.html %}
{% endif %}
{% endif %}

View File

@@ -0,0 +1,26 @@
{% assign urls = include.urls | split: ',' %}
{% assign combined_urls = nil %}
{% assign domain = 'https://cdn.jsdelivr.net/' %}
{% for url in urls %}
{% if url contains domain %}
{% assign url_snippet = url | slice: domain.size, url.size %}
{% if combined_urls %}
{% assign combined_urls = combined_urls | append: ',' | append: url_snippet %}
{% else %}
{% assign combined_urls = domain | append: 'combine/' | append: url_snippet %}
{% endif %}
{% elsif url contains '//' %}
<script src="{{ url }}"></script>
{% else %}
<script src="{{ url | relative_url }}"></script>
{% endif %}
{% endfor %}
{% if combined_urls %}
<script src="{{ combined_urls }}"></script>
{% endif %}

8
_includes/lang.html Normal file
View File

@@ -0,0 +1,8 @@
{% comment %}
Detect appearance language and return it through variable "lang"
{% endcomment %}
{% if site.data.locales[site.lang] %}
{% assign lang = site.lang %}
{% else %}
{% assign lang = 'en' %}
{% endif %}

View File

@@ -0,0 +1,70 @@
{% comment %}
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>
{% endcomment %}
{% assign _lang = include.language | default: '' %}
{% case _lang %}
{% when 'actionscript', 'as', 'as3' %}
{{ 'ActionScript' }}
{% when 'applescript' %}
{{ 'AppleScript' }}
{% when 'brightscript', 'bs', 'brs' %}
{{ 'BrightScript' }}
{% when 'cfscript', 'cfc' %}
{{ 'CFScript' }}
{% when 'coffeescript', 'coffee', 'coffee-script' %}
{{ 'CoffeeScript' }}
{% when 'cs', 'csharp' %}
{{ 'C#' }}
{% when 'erl' %}
{{ 'Erlang' }}
{% when 'graphql' %}
{{ 'GraphQL' }}
{% when 'haskell', 'hs' %}
{{ 'Haskell' }}
{% when 'javascript', 'js' %}
{{ 'JavaScript' }}
{% when 'make', 'mf', 'gnumake', 'bsdmake' %}
{{ 'Makefile' }}
{% when 'md', 'mkd' %}
{{ 'Markdown' }}
{% when 'm' %}
{{ 'Matlab' }}
{% when 'objective_c', 'objc', 'obj-c', 'obj_c', 'objectivec' %}
{{ 'Objective-C' }}
{% when 'perl', 'pl' %}
{{ 'Perl' }}
{% when 'php','php3','php4','php5' %}
{{ 'PHP' }}
{% when 'py' %}
{{ 'Python' }}
{% when 'rb' %}
{{ 'Ruby' }}
{% when 'rs','no_run','ignore','should_panic' %}
{{ 'Rust' }}
{% when 'bash', 'zsh', 'ksh', 'sh' %}
{{ 'Shell' }}
{% when 'st', 'squeak' %}
{{ 'Smalltalk' }}
{% when 'tex'%}
{{ 'TeX' }}
{% when 'latex' %}
{{ 'LaTex' }}
{% when 'ts', 'typescript' %}
{{ 'TypeScript' }}
{% when 'vb', 'visualbasic' %}
{{ 'Visual Basic' }}
{% when 'vue', 'vuejs' %}
{{ 'Vue.js' }}
{% when 'yml' %}
{{ 'YAML' }}
{% when 'css', 'html', 'scss', 'ssh', 'toml', 'xml', 'yaml', 'json' %}
{{ _lang | upcase }}
{% else %}
{{ _lang | capitalize }}
{% endcase %}

View File

@@ -1,29 +1,58 @@
<!--
mermaid-js loader
-->
<!-- mermaid-js loader -->
<script type="text/javascript">
(function () {
function updateMermaid(event) {
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
const mode = event.data.message;
<script src="https://cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js"></script>
<script>
$(function() {
let initTheme = "default";
if (typeof mermaid === 'undefined') {
return;
}
if ($("html[mode=dark]").length > 0
|| ($("html[mode]").length == 0
&& window.matchMedia("(prefers-color-scheme: dark)").matches ) ) {
initTheme = "dark";
let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
let config = { theme: expectedTheme };
/* Re-render the SVG <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */
$('.mermaid').each(function () {
let svgCode = $(this).prev().children().html();
$(this).removeAttr('data-processed');
$(this).html(svgCode);
});
mermaid.initialize(config);
mermaid.init(undefined, '.mermaid');
}
}
let initTheme = 'default';
const html = document.documentElement;
if (
(html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
(!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
initTheme = 'dark';
}
let mermaidConf = {
theme: initTheme /* <default|dark|forest|neutral> */
theme: initTheme /* <default|dark|forest|neutral> */
};
/* Markdown converts to HTML */
$("pre").has("code.language-mermaid").each(function() {
let svgCode = $(this).children().html();
$(this).addClass("unloaded");
$(this).after(`<div class=\"mermaid\">${svgCode}</div>`);
/* Create mermaid tag */
document.querySelectorAll('pre>code.language-mermaid').forEach((elem) => {
const svgCode = elem.textContent;
const backup = elem.parentElement;
backup.classList.add('unloaded');
/* create mermaid node */
let mermaid = document.createElement('pre');
mermaid.classList.add('mermaid');
const text = document.createTextNode(svgCode);
mermaid.appendChild(text);
backup.after(mermaid);
});
mermaid.initialize(mermaidConf);
});
window.addEventListener('message', updateMermaid);
})();
</script>

View File

@@ -0,0 +1 @@
<!-- A placeholder to allow defining custom metadata -->

View File

@@ -1,15 +1,22 @@
<!--
Switch the mode between dark and light.
-->
<i class="mode-toggle fas fa-adjust"></i>
<!-- Switch the mode between dark and light. -->
<script type="text/javascript">
class ModeToggle {
static get MODE_KEY() { return "mode"; }
static get DARK_MODE() { return "dark"; }
static get LIGHT_MODE() { return "light"; }
static get MODE_KEY() {
return 'mode';
}
static get MODE_ATTR() {
return 'data-mode';
}
static get DARK_MODE() {
return 'dark';
}
static get LIGHT_MODE() {
return 'light';
}
static get ID() {
return 'mode-toggle';
}
constructor() {
if (this.hasMode) {
@@ -24,16 +31,15 @@
}
}
var self = this;
let self = this;
/* always follow the system prefers */
this.sysDarkPrefers.addListener(function() {
this.sysDarkPrefers.addEventListener('change', () => {
if (self.hasMode) {
if (self.isDarkMode) {
if (!self.isSysDarkPrefer) {
self.setDark();
}
} else {
if (self.isSysDarkPrefer) {
self.setLight();
@@ -43,64 +49,67 @@
self.clearMode();
}
self.updateMermaid();
self.notify();
});
} /* constructor() */
setDark() {
$('html').attr(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
get sysDarkPrefers() {
return window.matchMedia('(prefers-color-scheme: dark)');
}
setLight() {
$('html').attr(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
get isSysDarkPrefer() {
return this.sysDarkPrefers.matches;
}
clearMode() {
$('html').removeAttr(ModeToggle.MODE_KEY);
sessionStorage.removeItem(ModeToggle.MODE_KEY);
get isDarkMode() {
return this.mode === ModeToggle.DARK_MODE;
}
get sysDarkPrefers() { return window.matchMedia("(prefers-color-scheme: dark)"); }
get isLightMode() {
return this.mode === ModeToggle.LIGHT_MODE;
}
get isSysDarkPrefer() { return this.sysDarkPrefers.matches; }
get hasMode() {
return this.mode != null;
}
get isDarkMode() { return this.mode == ModeToggle.DARK_MODE; }
get isLightMode() { return this.mode == ModeToggle.LIGHT_MODE; }
get hasMode() { return this.mode != null; }
get mode() { return sessionStorage.getItem(ModeToggle.MODE_KEY); }
get mode() {
return sessionStorage.getItem(ModeToggle.MODE_KEY);
}
/* get the current mode on screen */
get modeStatus() {
if (this.isDarkMode
|| (!this.hasMode && this.isSysDarkPrefer) ) {
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
return ModeToggle.DARK_MODE;
} else {
return ModeToggle.LIGHT_MODE;
}
}
updateMermaid() {
if (typeof mermaid !== "undefined") {
let expectedTheme = (this.modeStatus === ModeToggle.DARK_MODE? "dark" : "default");
let config = { theme: expectedTheme };
setDark() {
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
}
/* re-render the SVG <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */
$(".mermaid").each(function() {
let svgCode = $(this).prev().children().html();
$(this).removeAttr("data-processed");
$(this).html(svgCode);
});
setLight() {
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
}
mermaid.initialize(config);
mermaid.init(undefined, ".mermaid");
}
clearMode() {
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
sessionStorage.removeItem(ModeToggle.MODE_KEY);
}
/* Notify another plugins that the theme mode has changed */
notify() {
window.postMessage(
{
direction: ModeToggle.ID,
message: this.modeStatus
},
'*'
);
}
flipMode() {
@@ -111,7 +120,6 @@
} else {
this.setLight();
}
} else {
if (this.isDarkMode) {
this.clearMode();
@@ -119,7 +127,6 @@
this.setDark();
}
}
} else {
if (this.isSysDarkPrefer) {
this.setLight();
@@ -128,18 +135,9 @@
}
}
this.updateMermaid();
this.notify();
} /* flipMode() */
} /* ModeToggle */
let toggle = new ModeToggle();
$(".mode-toggle").click(function() {
toggle.flipMode();
});
const modeToggle = new ModeToggle();
</script>

View File

@@ -0,0 +1,13 @@
{% comment %} Site static assets origin type {% endcomment %}
{% assign type = 'cors' %}
{% if site.assets.self_host.enabled %}
{% if site.assets.self_host.env %}
{% if site.assets.self_host.env == jekyll.environment %}
{% assign type = 'basic' %}
{% endif %}
{% else %}
{% assign type = 'basic' %}
{% endif %}
{% endif %}

View File

@@ -1,57 +0,0 @@
<!--
The Pannel on right side (Desktop views)
-->
<div id="panel-wrapper" class="col-xl-3 pl-2 text-muted topbar-down">
<div class="access">
{% include update-list.html %}
{% if update_list.size > 0 %}
<div id="access-lastmod" class="post">
<span>{{- site.data.label.panel.lastmod | default: 'Recent Update' -}}</span>
<ul class="post-content pl-0 pb-1 ml-1 mt-2">
{% for item in update_list %}
{% assign index = item | split: "::" | last | plus: 0 %}
{% assign post = site.posts[index] %}
{% assign url = post.url | relative_url %}
<li><a href="{{ url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
</div> <!-- #access-lastmod -->
{% endif %}
{% include trending-tags.html %}
{% if trending_tags.size > 0 %}
<div id="access-tags">
<span>{{- site.data.label.panel.trending_tags | default: 'Trending Tags' -}}</span>
<div class="d-flex flex-wrap mt-3 mb-1 mr-3">
{% for tag_name in trending_tags %}
{% assign url = tag_name | slugify | url_encode | prepend: "/tags/" | append: "/" %}
<a class="post-tag" href="{{ url | relative_url }}">{{ tag_name }}</a>
{% endfor %}
</div>
</div>
{% endif %}
</div> <!-- .access -->
{% if include.toc %}
<!-- BS-toc.js will be loaded at medium priority -->
<script src="https://cdn.jsdelivr.net/gh/afeld/bootstrap-toc@1.0.1/dist/bootstrap-toc.min.js"></script>
<div id="toc-wrapper" class="pl-0 pr-4 mb-5">
<span class="pl-3 pt-2 mb-2">
{{- site.data.label.panel.toc | default: 'Contents' -}}
</span>
<nav id="toc" data-toggle="toc"></nav>
</div>
{% endif %}
</div> <!-- #panel-wrapper -->

View File

@@ -1,30 +1,37 @@
<!--
Navigation buttons at the bottom of the post.
-->
<!-- Navigation buttons at the bottom of the post. -->
<div class="post-navigation d-flex justify-content-between">
{% if page.previous.url %}
<a href="{{ site.baseurl }}{{ page.previous.url }}" class="btn btn-outline-primary"
prompt="{{ site.data.label.post.button.previous | default: 'previous' }}">
<p>{{ page.previous.title }}</p>
</a>
<a
href="{{ site.baseurl }}{{ page.previous.url }}"
class="btn btn-outline-primary"
prompt="{{ site.data.locales[include.lang].post.button.previous }}"
>
<p>{{ page.previous.title }}</p>
</a>
{% else %}
<span class="btn btn-outline-primary disabled"
prompt="{{ site.data.label.post.button.previous | default: 'previous' }}">
<p>-</p>
</span>
<div
class="btn btn-outline-primary disabled"
prompt="{{ site.data.locales[include.lang].post.button.previous }}"
>
<p>-</p>
</div>
{% endif %}
{% if page.next.url %}
<a href="{{ site.baseurl }}{{page.next.url}}" class="btn btn-outline-primary"
prompt="{{ site.data.label.post.button.next | default: 'next' }}">
<p>{{ page.next.title }}</p>
</a>
<a
href="{{ site.baseurl }}{{page.next.url}}"
class="btn btn-outline-primary"
prompt="{{ site.data.locales[include.lang].post.button.next }}"
>
<p>{{ page.next.title }}</p>
</a>
{% else %}
<span class="btn btn-outline-primary disabled"
prompt="{{ site.data.label.post.button.next | default: 'next' }}">
<p>-</p>
</span>
<div
class="btn btn-outline-primary disabled"
prompt="{{ site.data.locales[include.lang].post.button.next }}"
>
<p>-</p>
</div>
{% endif %}
</div>

View File

@@ -1,14 +1,13 @@
<!--
The paginator for post list on HomgPage.
-->
<!-- The paginator for post list on HomgPage. -->
<ul class="pagination mt-4 mb-0 pl-lg-2">
<ul class="pagination align-items-center mt-4 mb-1 ps-lg-2">
<!-- left arrow -->
{% if paginator.previous_page %}
{% assign prev_url = paginator.previous_page_path | relative_url %}
{% else %}
{% assign prev_url = "#" %}
{% assign prev_url = '#' %}
{% endif %}
<li class="page-item {% unless paginator.previous_page %}disabled{% endunless %}">
<a class="page-link btn-box-shadow" href="{{ prev_url }}" aria-label="previous-page">
<i class="fas fa-angle-left"></i>
@@ -20,7 +19,6 @@
{% assign right_ellipsis = false %}
{% for i in (1..paginator.total_pages) %}
{% assign pre = paginator.page | minus: 1 %}
{% assign next = paginator.page | plus: 1 %}
{% assign pre_less = pre | minus: 1 %}
@@ -36,7 +34,7 @@
{% assign show = true %}
{% endif %}
{% else %}
{% if i == 1 or i == paginator.total_pages%}
{% if i == 1 or i == paginator.total_pages %}
{% assign show = true %}
{% elsif i >= pre and i <= next %}
{% assign show = true %}
@@ -46,7 +44,12 @@
{% if show %}
<!-- show number -->
<li class="page-item {% if i == paginator.page %} active{% endif %}">
<a class="page-link btn-box-shadow" href="{{ site.baseurl }}/{% if i > 1%}page{{ i }}/{% endif %}">{{ i }}</a>
<a
class="page-link btn-box-shadow"
href="{% if i > 1 %}{{ site.paginate_path | replace: ':num', i | relative_url }}{% else %}{{ '/' | relative_url }}{% endif %}"
>
{{- i -}}
</a>
</li>
{% else %}
<!-- hide number -->
@@ -62,19 +65,25 @@
{% assign right_ellipsis = true %}
{% endif %}
{% endif %}
{% endfor %}
<!-- mobile pagination -->
<li class="page-index align-middle">
<span>{{ paginator.page }}</span>
<span class="text-muted">/ {{ paginator.total_pages }}</span>
</li>
<!-- right arrow -->
{% if paginator.next_page_path %}
{% assign next_url = paginator.next_page_path | relative_url %}
{% else %}
{% assign next_url = "#" %}
{% assign next_url = '#' %}
{% endif %}
<li class="page-item {% unless paginator.next_page_path %}disabled{% endunless %}">
<a class="page-link btn-box-shadow" href="{{ next_url }}" aria-label="next-page">
<i class="fas fa-angle-right"></i>
</a>
</li>
</ul> <!-- .pagination -->
</ul>
<!-- .pagination -->

View File

@@ -1,23 +1,35 @@
<!--
Post sharing snippet
-->
<!-- Post sharing snippet -->
<div class="share-wrapper">
<span class="share-label text-muted mr-1">{{ site.data.label.post.share | default: 'Share' }}</span>
<span class="share-label text-muted me-1">{{ site.data.locales[include.lang].post.share }}</span>
<span class="share-icons">
{% capture title %}{{ page.title }} - {{ site.title }}{% endcapture %}
{% assign url = page.url | absolute_url %}
{% assign title = title | uri_escape %}
{% assign url = page.url | absolute_url | url_encode %}
{% for share in site.data.share.platforms %}
{% assign link = share.link | replace: 'TITLE', title | replace: 'URL', url %}
<a href="{{ link }}" data-toggle="tooltip" data-placement="top"
title="{{ share.type }}" target="_blank" rel="noopener" aria-label="{{ share.type }}">
<i class="fa-fw {{ share.icon }}"></i>
</a>
<a
href="{{ link }}"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="{{ share.type }}"
target="_blank"
rel="noopener"
aria-label="{{ share.type }}"
>
<i class="fa-fw {{ share.icon }}"></i>
</a>
{% endfor %}
<i class="fa-fw fas fa-link small" onclick="copyLink()"
data-toggle="tooltip" data-placement="top" title="Copy link"></i>
<i
id="copy-link"
class="fa-fw fas fa-link small"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="{{ site.data.locales[include.lang].post.button.share_link.title }}"
data-title-succeed="{{ site.data.locales[include.lang].post.button.share_link.succeed }}"
>
</i>
</span>
</div>

View File

@@ -1,9 +1,9 @@
<!--
Calculate the post's reading time, and display the word count in tooltip
-->
{% assign words = include.content | strip_html | number_of_words: "auto" %}
<!-- Calculate the post's reading time, and display the word count in tooltip -->
{% assign words = include.content | strip_html | number_of_words: 'auto' %}
<!-- words per minute -->
<!-- words per minute -->
{% assign wpm = 180 %}
{% assign min_time = 1 %}
@@ -13,7 +13,25 @@
{% assign read_time = min_time %}
{% endunless %}
{% capture read_prompt %}
{{- site.data.locales[include.lang].post.read_time.prompt -}}
{% endcapture %}
<!-- return element -->
<span class="readtime" data-toggle="tooltip" data-placement="bottom" title="{{ words }} words">
{{- read_time -}}{{" "}}{{- site.data.label.read_time_unit | default: "min" -}}
<span
class="readtime"
data-bs-toggle="tooltip"
data-bs-placement="bottom"
title="{{ words }} {{ site.data.locales[include.lang].post.words }}"
>
<em>
{{- read_time -}}
{{ ' ' }}
{{- site.data.locales[include.lang].post.read_time.unit -}}
</em>
{%- if include.prompt -%}
{%- assign _prompt_words = read_prompt | number_of_words: 'auto' -%}
{%- unless _prompt_words > 1 -%}{{ ' ' }}{%- endunless -%}
{{ read_prompt }}
{%- endif -%}
</span>

View File

@@ -1,6 +1,4 @@
<!--
Refactor the HTML structure.
-->
<!-- Refactor the HTML structure -->
{% assign _content = include.content %}
@@ -8,10 +6,12 @@
In order to allow a wide table to scroll horizontally,
we suround the markdown table with `<div class="table-wrapper">` and `</div>`
-->
{% if _content contains '<table>' %}
{% if _content contains '<table' %}
{% assign _content = _content
| replace: '<table>', '<div class="table-wrapper"><table>'
| replace: '<table', '<div class="table-wrapper"><table'
| replace: '</table>', '</table></div>'
| replace: '<code><div class="table-wrapper">', '<code>'
| replace: '</table></div></code>', '</table></code>'
%}
{% endif %}
@@ -21,6 +21,7 @@
https://github.com/penibelst/jekyll-compress-html/issues/101
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
-->
{% if _content contains '<pre class="highlight">' %}
{% assign _content = _content
| replace: '<div class="highlight"><pre class="highlight"><code', '<div class="highlight"><code'
@@ -28,34 +29,258 @@
%}
{% endif %}
<!-- Add attribute 'hide-bullet' to the checkbox list -->
{% if _content contains '<li class="task-list-item"><' %}
<!-- Change the icon of checkbox -->
{% if _content contains '<input type="checkbox"' %}
{% assign _content = _content
| replace: '"task-list-item"><', '"task-list-item" hide-bullet><'
| replace:
'<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />',
'<i class="fas fa-check-circle fa-fw checked"></i>'
| replace:
'<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />',
'<i class="far fa-circle fa-fw"></i>'
%}
{% endif %}
{% if _content contains '<img src="' %}
<!-- images -->
{% assign IMG_TAG = '<img ' %}
{% if site.img_cdn != '' %}
{% assign img_path_replacement = '<img src="' | append: site.img_cdn | append: '/' %}
{% if _content contains IMG_TAG %}
{% assign _img_content = nil %}
{% assign _img_snippets = _content | split: IMG_TAG %}
<!-- CDN URL -->
{% if site.img_cdn %}
{% if site.img_cdn contains '//' %}
{% assign _path_prefix = site.img_cdn %}
{% else %}
{% assign _path_prefix = site.img_cdn | relative_url %}
{% endif %}
{% else %}
{% assign img_path_replacement = '<img src="' | append: site.baseurl | append: '/' %}
{% assign _path_prefix = site.baseurl %}
{% endif %}
{% assign _content = _content | replace: '<img src="/', img_path_replacement %}
<!-- Add image path -->
{% if page.img_path %}
{% assign _path = page.img_path | append: '/' | replace: '//', '/' %}
{% assign _path_prefix = _path_prefix | append: _path %}
{% endif %}
<!-- lazy-load images <https://github.com/ApoorvSaxena/lozad.js#usage> -->
{% assign img_placehodler
= 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' %}
{% for _img_snippet in _img_snippets %}
{% if forloop.first %}
{% assign _img_content = _img_snippet %}
{% continue %}
{% endif %}
{% assign lozad_replacement = '<img src="'
| append: img_placehodler
| append: '" data-src="' %}
{% assign _left = _img_snippet | split: '>' | first %}
{% assign _right = _img_snippet | remove: _left %}
{% assign _content = _content | replace: '<img src="', lozad_replacement %}
{% unless _left contains 'src=' %}
{% continue %}
{% endunless %}
{% assign _left = _left | remove: ' /' | replace: ' w=', ' width=' | replace: ' h=', ' height=' %}
{% assign _attrs = _left | split: '" ' %}
{% assign _width = nil %}
{% assign _height = nil %}
{% assign _lqip = nil %}
{% assign _class = nil %}
{% for _attr in _attrs %}
{% unless _attr contains '=' %}
{% continue %}
{% endunless %}
{% assign _pair = _attr | split: '="' %}
{% capture _key %}{{ _pair | first }}{% endcapture %}
{% capture _value %}{{ _pair | last | remove: '"' }}{% endcapture %}
{% case _key %}
{% when 'width' %}
{% assign _width = _value %}
{% when 'height' %}
{% assign _height = _value %}
{% when 'src' %}
{% assign _src = _value %}
{% when 'lqip' %}
{% assign _lqip = _value %}
{% when 'class' %}
{% assign _class = _value %}
{% endcase %}
{% endfor %}
<!-- take out classes -->
{% if _class %}
{% capture _old_class %}class="{{ _class }}"{% endcapture %}
{% assign _left = _left | remove: _old_class %}
{% endif %}
{% assign _final_src = nil %}
{% unless _src contains '//' %}
{% assign _final_src = _path_prefix | append: _src %}
{% capture _src_from %}"{{ _src }}"{% endcapture %}
{% capture _src_to %}"{{ _final_src }}"{% endcapture %}
{% assign _left = _left | replace: _src_from, _src_to %}
{% endunless %}
{% if _lqip %}
{% unless _lqip contains ':' %}
{% assign _final_lqip = _path_prefix | append: _lqip %}
{% capture _lqip_from %}"{{ _lqip }}"{% endcapture %}
{% capture _lqip_to %}"{{ _final_lqip }}"{% endcapture %}
{% assign _left = _left | replace: _lqip_from, _lqip_to %}
{% endunless %}
{% endif %}
<!-- lazy-load images <https://github.com/aFarkas/lazysizes#readme> -->
{% assign _left = _left | replace: 'src=', 'data-src=' %}
{% if _left contains 'class=' %}
{% assign _left = _left | replace: 'class="', 'class="lazyload '%}
{% else %}
{% assign _left = _left | append: ' class="lazyload"' %}
{% endif %}
<!-- add image placeholder -->
{% if _lqip %}
{% assign _left = _left | replace: ' lqip=', ' data-lqip="true" src=' %}
{% else %}
{% if _width and _height %}
<!-- add SVG placehoder -->
{%- capture _svg -%}
src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 {{ _width }} {{ _height }}'%3E%3C/svg%3E"
{%- endcapture -%}
{% assign _left = _svg | append: ' ' | append: _left %}
{% assign _class = _class | append: ' shimmer' %}
{% endif %}
{% endif %}
<!-- Bypass the HTML-proofer test -->
{% assign _left = _left | append: ' data-proofer-ignore' %}
{% if page.layout == 'home' %}
<!-- create the image wrapper -->
{%- capture _wrapper_start -%}
<div class="preview-img {{ _class | strip }}">
{%- endcapture -%}
{% assign _img_content = _img_content | append: _wrapper_start %}
{% assign _right = _right | prepend: '></div' %}
{% else %}
<!-- make sure the `<img>` is wrapped by `<a>` -->
{% assign _parent = _right | slice: 1, 4 %}
{% if _parent == '</a>' %}
<!-- add class to exist <a> tag -->
{% assign _size = _img_content | size | minus: 1 %}
{% capture _class %}
class="img-link{% unless _lqip %} shimmer{% endunless %}"
{% endcapture %}
{% assign _img_content = _img_content | slice: 0, _size | append: _class | append: '>' %}
{% else %}
<!-- create the image wrapper -->
{%- capture _wrapper_start -%}
<a href="{{ _final_src | default: _src }}" class="popup img-link {{ _class }}">
{%- endcapture -%}
{% assign _img_content = _img_content | append: _wrapper_start %}
{% assign _right = _right | prepend: '></a' %}
{% endif %}
{% endif %}
<!-- combine -->
{% assign _img_content = _img_content | append: debug | append: IMG_TAG | append: _left | append: _right %}
{% endfor %}
{% if _img_content %}
{% assign _content = _img_content %}
{% endif %}
{% endif %}
<!-- Add header for code snippets -->
{% if _content contains '<div class="highlight"><code>' %}
{% assign _code_spippets = _content | split: '<div class="highlight"><code>' %}
{% assign _new_content = '' %}
{% for _snippet in _code_spippets %}
{% if forloop.last %}
{% assign _new_content = _new_content | append: _snippet %}
{% else %}
{% assign _left = _snippet | split: '><' | last%}
{% if _left contains 'file="' %}
{% assign _label_text = _left | split: 'file="' | last | split: '"' | first %}
{% assign _label_icon = 'far fa-file-code fa-fw' %}
{% else %}
{% assign _lang = _left | split: 'language-' | last | split: ' ' | first %}
{% capture _label_text %}{% include language-alias.html language=_lang %}{% endcapture %}
{% assign _label_icon = 'fas fa-code fa-fw small' %}
{% endif %}
{% capture _label %}
<span data-label-text="{{ _label_text | strip }}"><i class="{{ _label_icon }}"></i></span>
{% endcapture %}
{% assign _new_content = _new_content | append: _snippet
| append: '<div class="code-header">'
| append: _label
| append: '<button aria-label="copy" data-title-succeed="'
| append: site.data.locales[include.lang].post.button.copy_code.succeed
| append: '"><i class="far fa-clipboard"></i></button></div>'
| append: '<div class="highlight"><code>'
%}
{% endif %}
{% endfor %}
{% assign _content = _new_content %}
{% endif %}
<!-- Create heading anchors -->
{% assign heading_levels = '2,3,4,5' | split: ',' %}
{% assign _heading_content = _content %}
{% for level in heading_levels %}
{% capture mark_start %}<h{{ level }} id="{% endcapture %}
{% capture mark_end %}</h{{ level }}>{% endcapture %}
{% if _heading_content contains mark_start %}
{% assign _new_content = nil %}
{% assign heading_snippets = _heading_content | split: mark_start %}
{% for snippet in heading_snippets %}
{% if forloop.first %}
{% assign _new_content = snippet %}
{% continue %}
{% endif %}
{% assign id = snippet | split: '"' | first %}
{% capture anchor %}<a href="#{{ id }}" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>{% endcapture %}
{% assign left = snippet | split: mark_end | first %}
{% assign right = snippet | slice: left.size, snippet.size %}
{% assign left = left | replace_first: '">', '"><span class="me-2">' | append: '</span>' %}
{% assign _new_content = _new_content | append: mark_start
| append: left | append: anchor | append: right
%}
{% endfor %}
{% assign _heading_content = _new_content %}
{% endif %}
{% endfor %}
{% assign _content = _heading_content %}
<!-- return -->
{{ _content }}

View File

@@ -1,20 +1,20 @@
<!--
Recommend the other 3 posts according to the tags and categories of the current post,
if the number is not enough, use the other latest posts to supplement.
Recommend the other 3 posts according to the tags and categories of the current post,
if the number is not enough, use the other latest posts to supplement.
-->
<!-- The total size of related posts -->
<!-- The total size of related posts -->
{% assign TOTAL_SIZE = 3 %}
<!-- An random integer that bigger than 0 -->
<!-- An random integer that bigger than 0 -->
{% assign TAG_SCORE = 1 %}
<!-- Equals to TAG_SCORE / {max_categories_hierarchy} -->
<!-- Equals to TAG_SCORE / {max_categories_hierarchy} -->
{% assign CATEGORY_SCORE = 0.5 %}
{% assign SEPARATOR = ":" %}
{% assign SEPARATOR = ':' %}
{% assign score_list = "" | split: "" %}
{% assign score_list = '' | split: '' %}
{% assign last_index = site.posts.size | minus: 1 %}
{% for i in (0..last_index) %}
@@ -42,11 +42,9 @@
{% capture score_item %}{{ score }}{{ SEPARATOR }}{{ i }}{% endcapture %}
{% assign score_list = score_list | push: score_item %}
{% endif %}
{% endfor %}
{% assign index_list = "" | split: "" %}
{% assign index_list = '' | split: '' %}
{% if score_list.size > 0 %}
{% assign score_list = score_list | sort | reverse %}
@@ -56,14 +54,13 @@
{% endfor %}
{% endif %}
<!-- Fill with the other newlest posts -->
<!-- Fill with the other newlest posts -->
{% assign less = TOTAL_SIZE | minus: index_list.size %}
{% if less > 0 %}
{% for i in (0..last_index) %}
{% assign post = site.posts[i] %}
{% if post.url != page.url %}
{% if post.url != page.url %}
{% capture cur_index %}{{ i }}{% endcapture %}
{% unless index_list contains cur_index %}
{% assign index_list = index_list | push: cur_index %}
@@ -74,33 +71,34 @@
{% endunless %}
{% endif %}
{% endfor %}
{% endif %}
{% if index_list.size > 0 %}
<div id="related-posts" class="mt-5 mb-2 mb-sm-4">
<h3 class="pt-2 mt-1 mb-4 ml-1"
data-toc-skip>{{ site.data.label.post.relate_posts | default: 'Further Reading' }}</h3>
<div class="card-deck mb-4">
{% for entry in index_list %}
{% assign index = entry | plus: 0 %}
{% assign post = site.posts[index] %}
<div class="card">
<a href="{{ post.url | relative_url }}">
<div class="card-body">
{% include timeago.html date=post.date class="small" %}
<h3 class="pt-0 mt-1 mb-3" data-toc-skip>{{ post.title }}</h3>
<div class="text-muted small">
<p>
{% include no-linenos.html content=post.content %}
{{ content | markdownify | strip_html | truncate: 200 }}
</p>
<div id="related-posts" class="mb-2 mb-sm-4">
<h3 class="pt-2 mb-4 ms-1" data-toc-skip>
{{ site.data.locales[include.lang].post.relate_posts }}
</h3>
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4">
{% for entry in index_list %}
{% assign index = entry | plus: 0 %}
{% assign post = site.posts[index] %}
<div class="col">
<a href="{{ post.url | relative_url }}" class="card post-preview h-100">
<div class="card-body">
{% include datetime.html date=post.date class="small" lang=include.lang %}
<h4 class="pt-0 my-2" data-toc-skip>{{ post.title }}</h4>
<div class="text-muted small">
<p>
{% include no-linenos.html content=post.content %}
{{ content | markdownify | strip_html | truncate: 200 | escape }}
</p>
</div>
</div>
</div>
</a>
</div>
{% endfor %}
</div> <!-- .card-deck -->
</div> <!-- #related-posts -->
</a>
</div>
{% endfor %}
</div>
<!-- .card-deck -->
</div>
<!-- #related-posts -->
{% endif %}

View File

@@ -4,8 +4,8 @@
-->
{% capture result_elem %}
<div class="pl-1 pr-1 pl-sm-2 pr-sm-2 pl-lg-4 pr-lg-4 pl-xl-0 pr-xl-0">
<a href="{{ site.url }}{url}">{title}</a>
<div class="px-1 px-sm-2 px-lg-4 px-xl-0">
<a href="{url}">{title}</a>
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
{categories}
{tags}
@@ -14,33 +14,32 @@
</div>
{% endcapture %}
{% capture not_found %}<p class="mt-5">Oops! No result founds.</p>{% endcapture %}
<script src="https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.7.3/dest/simple-jekyll-search.min.js"></script>
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
<script>
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('search-results'),
json: '{{ '/assets/js/data/search.json' | relative_url }}',
searchResultTemplate: '{{ result_elem | strip_newlines }}',
noResultsText: '{{ not_found }}',
templateMiddleware: function(prop, value, template) {
if (prop === 'categories') {
if (value === '') {
return `${value}`;
} else {
return `<div class="mr-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
/* Note: dependent library will be loaded in `js-selector.html` */
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('search-results'),
json: '{{ '/assets/js/data/search.json' | relative_url }}',
searchResultTemplate: '{{ result_elem | strip_newlines }}',
noResultsText: '{{ not_found }}',
templateMiddleware: function(prop, value, template) {
if (prop === 'categories') {
if (value === '') {
return `${value}`;
} else {
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
}
}
}
if (prop === 'tags') {
if (value === '') {
return `${value}`;
} else {
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
if (prop === 'tags') {
if (value === '') {
return `${value}`;
} else {
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
}
}
}
}
});
});
</script>

View File

@@ -1,18 +1,9 @@
<!--
The Search results
-->
<!-- The Search results -->
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
<div class="col-12 col-sm-11 post-content">
<div class="col-11 post-content">
<div id="search-hints">
<h4 class="text-muted mb-4">{{ site.data.label.panel.trending_tags | default: 'Trending Tags' }}</h4>
{% include trending-tags.html %}
{% for tag in trending_tags %}
{% capture url %}/tags/{{ tag | slugify | url_encode }}/{% endcapture %}
<a class="post-tag" href="{{ url | relative_url }}">{{ tag | replace: '-', ' ' }}</a>
{% endfor %}
{% include_cached trending-tags.html %}
</div>
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
</div>

View File

@@ -1,91 +1,104 @@
<!--
The Side Bar
-->
<!-- The Side Bar -->
<div id="sidebar" class="d-flex flex-column align-items-end">
<div class="profile-wrapper text-center">
<div id="avatar">
<a href="{{ '/' | relative_url }}" alt="avatar" class="mx-auto">
<div class="profile-wrapper">
<a href="{{ '/' | relative_url }}" id="avatar" class="rounded-circle">
{% if site.avatar != empty and site.avatar %}
{% capture avatar_url %}
{%- if site.avatar contains '://' -%}
{{ site.avatar }}
{%- elsif site.img_cdn != '' and site.img_cdn -%}
{{ site.avatar | prepend: site.img_cdn }}
{%- else -%}
{{ site.avatar | relative_url }}
{%- endif -%}
{% endcapture %}
<img src="{{ avatar_url }}" alt="avatar" onerror="this.style.display='none'">
</a>
{% if site.avatar contains '://' %}
{{ site.avatar }}
{% elsif site.img_cdn != empty and site.img_cdn %}
{{ site.avatar | prepend: site.img_cdn }}
{% else %}
{{ site.avatar | relative_url }}
{% endif %}
{% endcapture %}
<img src="{{ avatar_url | strip }}" width="112" height="112" alt="avatar" onerror="this.style.display='none'">
{% endif %}
</a>
<div class="site-title">
<a href="{{ '/' | relative_url }}">{{ site.title }}</a>
</div>
<div class="site-subtitle fst-italic">{{ site.tagline }}</div>
</div>
<!-- .profile-wrapper -->
<div class="site-title mt-3">
<a href="{{ '/' | relative_url }}">{{- site.title -}}</a>
</div>
<div class="site-subtitle font-italic">{{- site.tagline -}}</div>
</div><!-- .profile-wrapper -->
<ul class="w-100">
<ul class="nav flex-column flex-grow-1 w-100 ps-0">
<!-- home -->
<li class="nav-item{% if page.layout == 'home' %}{{ " active" }}{% endif %}">
<a href="{{ '/' | relative_url }}" class="nav-link">
<i class="fa-fw fas fa-home ml-xl-3 mr-xl-3 unloaded"></i>
<span>{{ "HOME" }}</span>
<i class="fa-fw fas fa-home"></i>
<span>{{ site.data.locales[include.lang].tabs.home | upcase }}</span>
</a>
</li>
<!-- the real tabs -->
{% for tab in site.tabs %}
<li class="nav-item{% if tab.url == page.url %}{{ " active" }}{% endif %}">
<a href="{{ tab.url | relative_url }}" class="nav-link">
<i class="fa-fw {{ tab.icon }} ml-xl-3 mr-xl-3 unloaded"></i>
<span>{{ tab.title | upcase }}</span>
</a>
</li> <!-- .nav-item -->
{% endfor %}
</ul> <!-- ul.nav.flex-column -->
<div class="sidebar-bottom mt-auto d-flex flex-wrap justify-content-center">
{% for entry in site.data.contact %}
{% capture url %}
{%- if entry.type == 'github' -%}
https://github.com/{{ site.github.username }}
{%- elsif entry.type == 'twitter' -%}
https://twitter.com/{{ site.twitter.username }}
{%- elsif entry.type == 'email' -%}
{% assign email = site.social.email | split: '@' %}
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
{%- elsif entry.type == 'rss' -%}
{{ "/feed.xml" | relative_url }}
{%- else -%}
{{ entry.url }}
{%- endif -%}
{% endcapture %}
{% if url %}
<a href="{{ url }}" aria-label="{{ entry.type }}"
{% unless site.theme_mode %}class="order-{{ forloop.index | plus: 2 }}"{% endunless %}
{% unless entry.noblank %}target="_blank" rel="noopener"{% endunless %}>
<i class="{{ entry.icon }}"></i>
</a>
{% endif %}
<li class="nav-item{% if tab.url == page.url %}{{ " active" }}{% endif %}">
<a href="{{ tab.url | relative_url }}" class="nav-link">
<i class="fa-fw {{ tab.icon }}"></i>
{% capture tab_name %}{{ tab.url | split: '/' }}{% endcapture %}
<span>{{ site.data.locales[include.lang].tabs.[tab_name] | default: tab.title | upcase }}</span>
</a>
</li>
<!-- .nav-item -->
{% endfor %}
</ul>
<!-- ul.nav.flex-column -->
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
{% unless site.theme_mode %}
{% if site.data.contact.size > 0 %}
<span class="icon-border order-2"></span>
{% endif %}
<button class="mode-toggle btn" aria-label="Switch Mode">
<i class="fas fa-adjust"></i>
</button>
<span id="mode-toggle-wrapper" class="order-1">
{% include mode-toggle.html %}
</span>
{% if site.data.contact.size > 0 %}
<span class="icon-border"></span>
{% endif %}
{% endunless %}
</div> <!-- .sidebar-bottom -->
{% for entry in site.data.contact %}
{% case entry.type %}
{% when 'github', 'twitter' %}
{%- capture url -%}
https://{{ entry.type }}.com/{{ site[entry.type].username }}
{%- endcapture -%}
{% when 'email' %}
{% assign email = site.social.email | split: '@' %}
{%- capture url -%}
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
{%- endcapture -%}
{% when 'rss' %}
{% assign url = '/feed.xml' | relative_url %}
{% else %}
{% assign url = entry.url %}
{% endcase %}
</div><!-- #sidebar -->
{% if url %}
<a
href="{{ url }}"
aria-label="{{ entry.type }}"
{% assign link_types = '' %}
{% unless entry.noblank %}
target="_blank"
{% assign link_types = 'noopener noreferrer' %}
{% endunless %}
{% if entry.type == 'mastodon' %}
{% assign link_types = link_types | append: ' me' | strip %}
{% endif %}
{% unless link_types == empty %}
rel="{{ link_types }}"
{% endunless %}
>
<i class="{{ entry.icon }}"></i>
</a>
{% endif %}
{% endfor %}
</div>
<!-- .sidebar-bottom -->
</div>
<!-- #sidebar -->

View File

@@ -1,31 +0,0 @@
<!--
Date format snippet
See: /assets/js/_utils/timeage.js
-->
{% assign tooltip_df = site.data.date_format.tooltip | default: '%a, %b %e, %Y, %l:%M %p %z' %}
{% assign post_long_df = site.data.date_format.post.long | default: '%b %e, %Y' %}
{% assign post_short_df = site.data.date_format.post.short | default: '%b %e' %}
<span class="timeago {% if include.class %}{{ include.class }}{% endif %}"
{% if include.tooltip %}
data-toggle="tooltip"
data-placement="bottom"
title="{{ include.date | date: tooltip_df }}"
{% endif %}
{% if include.prefix %}prefix="{{ include.prefix }} "{% endif%}
{% if include.prep %}prep="{{ include.prep }}"{% endif %} >
{% assign this_year = site.time | date: "%Y" %}
{% assign post_year = include.date | date: "%Y" %}
{% if post_year == this_year %}
{{ include.date | date: post_short_df }}
{% else %}
{{ include.date | date: post_long_df }}
{% endif %}
<i class="unloaded">{{ include.date | date_to_xmlschema }}</i>
</span>

13
_includes/toc.html Normal file
View File

@@ -0,0 +1,13 @@
{% assign enable_toc = false %}
{% if site.toc and page.toc %}
{% if page.content contains '<h2' or page.content contains '<h3' %}
{% assign enable_toc = true %}
{% endif %}
{% endif %}
{% if enable_toc %}
<div id="toc-wrapper" class="ps-0 pe-4 mb-5">
<div class="panel-heading ps-3 pt-2 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</div>
<nav id="toc"></nav>
</div>
{% endif %}

View File

@@ -1,69 +1,70 @@
<!--
The Top Bar
-->
<!-- The Top Bar -->
<div id="topbar-wrapper" class="row justify-content-center topbar-down">
<div id="topbar" class="col-11 d-flex h-100 align-items-center justify-content-between">
<div id="topbar-wrapper">
<div
id="topbar"
class="container d-flex align-items-center justify-content-between h-100"
>
<span id="breadcrumb">
{% assign paths = page.url | split: '/' %}
{% assign paths = page.url | split: '/' %}
{% if paths.size == 0 or page.layout == 'home' %}
<!-- index page -->
<span>{{ site.data.locales[include.lang].tabs.home | capitalize }}</span>
{% if paths.size == 0 %}
<!-- index page -->
<span>{{ 'Posts' }}</span>
{% else %}
{% else %}
{% for item in paths %}
{% if forloop.first %}
<span>
<a href="{{ '/' | relative_url }}">
{{ site.data.locales[include.lang].tabs.home | capitalize }}
</a>
</span>
{% for item in paths %}
{% elsif forloop.last %}
{% if page.collection == 'tabs' %}
<span>{{ site.data.locales[include.lang].tabs[item] | default: page.title }}</span>
{% else %}
<span>{{ page.title }}</span>
{% endif %}
{% if forloop.first %}
{% unless page.layout == 'post' %}
<span>
<a href="{{ '/' | relative_url }}">{{ 'Home' }}</a>
</span>
{% endunless %}
{% elsif forloop.last %}
<span>{{ page.title }}</span>
{% else %}
<span>
{% assign url = item %}
{% if item == 'posts' and page.layout == 'post' %}
{% assign url = '/' %}
{% elsif page.layout == 'category' or page.layout == 'tag' %}
<span>
<a href="{{ item | relative_url }}">
{{ site.data.locales[include.lang].tabs[item] | default: page.title }}
</a>
</span>
{% endif %}
<a href="{{ url | relative_url }}">
{{ item | capitalize }}
</a>
</span>
{% endif %}
{% endfor %}
{% endif %}
</span><!-- endof #breadcrumb -->
{% endfor %}
{% endif %}
</span>
<!-- endof #breadcrumb -->
<i id="sidebar-trigger" class="fas fa-bars fa-fw"></i>
<div id="topbar-title">
{% if page.layout == 'home' %}
{{- site.title -}}
{% elsif page.dynamic_title %}
{{- page.title -}}
{{- site.data.locales[include.lang].title | default: site.title -}}
{% elsif page.collection == 'tabs' or page.layout == 'page' %}
{%- capture tab_key -%}{{ page.url | split: '/' }}{%- endcapture -%}
{{- site.data.locales[include.lang].tabs[tab_key] | default: page.title -}}
{% else %}
{{- page.layout | capitalize -}}
{{- site.data.locales[include.lang].layout[page.layout] | default: page.layout | capitalize -}}
{% endif %}
</div>
<i id="search-trigger" class="fas fa-search fa-fw"></i>
<span id="search-wrapper" class="align-items-center">
<i class="fas fa-search fa-fw"></i>
<input class="form-control" id="search-input" type="search"
aria-label="search" autocomplete="off" placeholder="{{ site.data.label.search_hint | default: 'Search' }}...">
<i class="fa fa-times-circle fa-fw" id="search-cleaner"></i>
<input
class="form-control"
id="search-input"
type="search"
aria-label="search"
autocomplete="off"
placeholder="{{ site.data.locales[include.lang].search.hint | capitalize }}..."
>
</span>
<span id="search-cancel" >Cancel</span>
<span id="search-cancel">{{ site.data.locales[include.lang].search.cancel }}</span>
</div>
</div>

View File

@@ -1,29 +1,27 @@
{% comment %}
The trending tags list
{% endcomment %}
<!-- The trending tags list -->
{% assign MAX = 10 %}
{% assign size_list = "" | split: "" %}
{% assign tag_list = "" | split: "" %}
{% assign size_list = '' | split: '' %}
{% assign tag_list = '' | split: '' %}
{% for tag in site.tags %}
{% assign size = tag | last | size %}
{% assign size_list = size_list | push: size %}
{% assign tag_str = tag | first | append: "::" | append: size %}
{% assign tag_list = tag_list | push: tag_str %}
{% assign tag_str = tag | first | append: '::' | append: size %}
{% assign tag_list = tag_list | push: tag_str %}
{% endfor %}
{% assign size_list = size_list | sort | reverse %}
{% assign tag_list = tag_list | sort_natural %}
{% assign trending_tags = "" | split: "" %}
{% assign trending_tags = '' | split: '' %}
{% for size in size_list limit: MAX %}
{% for tag_str in tag_list %}
{% assign tag = tag_str | split: "::" %}
{% assign tag = tag_str | split: '::' %}
{% assign tag_name = tag | first %}
{% assign tag_size = tag | last | plus: 0 %}
{% if tag_size == size %}
@@ -34,3 +32,15 @@
{% endif %}
{% endfor %}
{% endfor %}
{% if trending_tags.size > 0 %}
<div id="access-tags">
<div class="panel-heading">{{- site.data.locales[include.lang].panel.trending_tags -}}</div>
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
{% for tag_name in trending_tags %}
{% assign url = tag_name | slugify | url_encode | prepend: '/tags/' | append: '/' %}
<a class="post-tag btn btn-outline-primary" href="{{ url | relative_url }}">{{ tag_name }}</a>
{% endfor %}
</div>
</div>
{% endif %}

View File

@@ -1,13 +1,11 @@
{% comment %}
Get the last 5 posts from lastmod list.
{% endcomment %}
<!-- Get the last 5 posts from lastmod list. -->
{% assign MAX_SIZE = 5 %}
{% assign all_list = "" | split: "" %}
{% assign all_list = '' | split: '' %}
{% for post in site.posts %}
{% if post.last_modified_at %}
{% if post.last_modified_at and post.last_modified_at != post.date %}
{% capture elem %}
{{- post.last_modified_at | date: "%Y%m%d%H%M%S" -}}::{{- forloop.index0 -}}
{% endcapture %}
@@ -17,8 +15,25 @@
{% assign all_list = all_list | sort | reverse %}
{% assign update_list = "" | split: "" %}
{% assign update_list = '' | split: '' %}
{% for entry in all_list limit:MAX_SIZE %}
{% for entry in all_list limit: MAX_SIZE %}
{% assign update_list = update_list | push: entry %}
{% endfor %}
{% if update_list.size > 0 %}
<div id="access-lastmod" class="post">
<div class="panel-heading">{{- site.data.locales[include.lang].panel.lastmod -}}</div>
<ul class="post-content list-unstyled ps-0 pb-1 ms-1 mt-2">
{% for item in update_list %}
{% assign index = item | split: '::' | last | plus: 0 %}
{% assign post = site.posts[index] %}
{% assign url = post.url | relative_url %}
<li class="text-truncate lh-lg">
<a href="{{ url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
</div>
<!-- #access-lastmod -->
{% endif %}

3
_javascript/_copyright Normal file
View File

@@ -0,0 +1,3 @@
Chirpy v<%= pkg.version %> (<%= pkg.homepage %>)
© 2019 <%= pkg.author %>
<%= pkg.license %> Licensed

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