Compare commits

...

247 Commits

Author SHA1 Message Date
pengzhanbo
d69e0b9765 ci: update workflow permissions 2026-04-22 17:07:34 +08:00
pengzhanbo
02038f2df0 build: publish v1.0.0-rc.196 2026-04-19 14:37:52 +08:00
pengzhanbo
e5126663ef fix: fix security 2026-04-19 14:34:47 +08:00
pengzhanbo
402f259086
refactor(plugin-md-power): refactor obsidian plugins (#893) 2026-04-19 14:10:54 +08:00
pengzhanbo
58ea2fc8cb
fix(theme): remove cwd options from picomatch (#892) 2026-04-19 14:10:40 +08:00
pengzhanbo
6ebb1bda6e
fix(plugin-md-power): fix cell display issue caused by colspan in table (#891) 2026-04-19 14:10:22 +08:00
pengzhanbo
68f39695c4 chore: update tsconfig 2026-04-19 14:09:52 +08:00
pengzhanbo
76787f6530 build: publish v1.0.0-rc.195 2026-04-18 17:13:48 +08:00
pengzhanbo
e2b47da532 chore: tweak 2026-04-18 17:09:26 +08:00
pengzhanbo
035d521e96 chore: update deps to latest 2026-04-18 17:07:12 +08:00
pengzhanbo
bfd0c8409c
feat(plugin-md-power): compat obsidian official markdown syntax (#890)
* feat(plugin-md-power): compat obsidian official markdown syntax

* chore: tweak

* chore: tweak

* chore: tweak

* chore: tweak
2026-04-18 17:01:41 +08:00
pengzhanbo
e11c7a8fcd build: publish v1.0.0-rc.194 2026-04-14 15:37:37 +08:00
pengzhanbo
1329051536 chore: tweak 2026-04-14 15:36:15 +08:00
pengzhanbo
0677f6749e chore: update deps to latest 2026-04-14 15:31:38 +08:00
pengzhanbo
28963eb419
fix(plugin-search): fix search index race condition on pageUpdated, close #888 (#889) 2026-04-14 15:29:58 +08:00
pengzhanbo
cfc89adab8 chore: update security deps 2026-04-04 16:35:48 +08:00
pengzhanbo
e0ba59a6f9 build: update changelog 2026-04-03 02:56:28 +08:00
pengzhanbo
352874b29a build: publish v1.0.0-rc.193 2026-04-03 02:25:46 +08:00
pengzhanbo
c824ad85f4 chore: update gitignore 2026-04-03 02:18:23 +08:00
pengzhanbo
db2eda82f3 build: update clean scripts 2026-04-03 02:18:01 +08:00
pengzhanbo
e9fe35bc4f
fix(theme): fix sidebar items prefix not handled correctly, close #876 (#885) 2026-04-03 02:13:18 +08:00
pengzhanbo
709ade741c chore: improve comment 2026-04-03 02:06:32 +08:00
pengzhanbo
d8b79e89e8
refactor(plugin-search): improve search index update (#884) 2026-04-03 01:58:25 +08:00
pengzhanbo
dbc6f0be0f
fix(theme): fix auto-sidebar group icon error inherit, close #873 (#883) 2026-04-02 22:05:54 +08:00
pengzhanbo
9fe294b9dd fix(theme): fix MarkdownOptions types 2026-04-02 21:15:33 +08:00
pengzhanbo
ecf100cfc6 docs: update security.md 2026-04-02 21:15:08 +08:00
pengzhanbo
b7ee45642e docs: update contributing.md 2026-04-02 21:14:51 +08:00
pengzhanbo
54c05c8cea docs: add claude.md 2026-04-02 21:14:34 +08:00
pengzhanbo
86cb872ce6 refactor: migrate onWatched to onPageUpdated 2026-04-02 21:14:16 +08:00
pengzhanbo
a6cb3820b1 refactor: remove deprecated enhancement 2026-04-02 21:12:59 +08:00
pengzhanbo
184d1aee76 build: improve tsdown bundle config 2026-04-02 20:59:23 +08:00
pengzhanbo
cbc5c55891 perf: update deps to latest 2026-04-02 20:57:51 +08:00
mcenahle
4f40f8441d
docs: add "mcenahle Docs" to demo page (#882)
* Update demos.md

* chore: fix URLs for 哦麦 MC logo and preview images

Updated logo and preview image URLs for 哦麦 MC in demos.md.

---------

Co-authored-by: pengzhanbo <volodymyr@foxmail.com>
2026-04-02 20:54:47 +08:00
pengzhanbo
fe0d4bbc92
feat: improve accessibility features (#869) 2026-04-02 20:49:20 +08:00
pengzhanbo
39a76a35d7
feat(plugin-md-power)!: use # as the comment delimiter (#870) 2026-04-02 20:48:55 +08:00
pengzhanbo
a01bc13c66
fix(plugin-md-power): fix tsdown icon (#878) 2026-04-02 20:48:34 +08:00
pengzhanbo
1b213d4c28
fix(theme): add bulletin to outline ignores (#879) 2026-04-02 20:48:10 +08:00
pengzhanbo
aede6f5d87
fix(theme): twoslash comment error (#881)
* fix(theme): fix incorrect auto-sidebar-link parse

* fix(theme): twoslash comment error
2026-04-02 16:38:33 +08:00
pengzhanbo
7febfbf237
fix(theme): fix incorrect auto-sidebar-link parse (#880) 2026-04-02 16:37:58 +08:00
suixinio
7ce4e40521
docs: update ohmymc img (#877)
docs: update ohmymc img
2026-04-02 14:34:49 +08:00
zhenghaoyang24
12c4f5b39e
docs: fix icon documentation links (#874)
- Update relative paths in markdown config documentation to point
  to correct guide location
- Change sidebar icons link from document.md to quick-start/sidebar.md
  for proper navigation structure
2026-04-02 14:34:14 +08:00
pengzhanbo
aa54090b5d docs: update sponsor 2026-03-19 02:09:31 +08:00
逸燧Esyka
192b260d2b
docs: update repository url for Esyka's blog (#872) 2026-03-15 16:41:38 +08:00
逸燧Esyka
75df783295
docs: add Esyka's Blog to demos (#871)
Added Esyka's Blog with relevant details.
2026-03-14 23:39:00 +08:00
pengzhanbo
97a5ba20c3 docs: fix typo 2026-03-08 21:55:27 +08:00
pengzhanbo
896c7e22df chore: improve theme code comments 2026-03-08 16:59:50 +08:00
pengzhanbo
77856e36c5 chore: improve plugin-md-power code comments 2026-03-08 16:35:52 +08:00
pengzhanbo
552f0f5c32 chore: improve plugin-search code comments 2026-03-08 16:16:04 +08:00
pengzhanbo
7751e4c798 chore: improve cli code comments 2026-03-08 16:15:26 +08:00
pengzhanbo
17646708b1 docs: update skills usage doc 2026-03-06 16:40:02 +08:00
pengzhanbo
f14d663bb5 docs: update skills 2026-03-06 15:54:30 +08:00
pengzhanbo
50fa747ec1 docs: update agent skills 2026-03-06 00:44:21 +08:00
pengzhanbo
f6da09df54 build: publish v1.0.0-rc.192 2026-03-05 15:35:45 +08:00
pengzhanbo
9b9f8f3f77 style: lint fix 2026-03-05 15:34:11 +08:00
pengzhanbo
aa19049f5b perf: update deps to latest 2026-03-05 14:56:16 +08:00
pengzhanbo
fd1dd7c695
feat(theme): add lang switch to update html lang attr (#867) 2026-03-05 14:42:48 +08:00
pengzhanbo
916e9141d9
fix(plugin-md-power): fix potential null pointer exceptions when parsing collapse containers (#866) 2026-03-05 14:41:47 +08:00
pengzhanbo
ca51a345fb
fix(theme): fix the calculation error in the post cover ratio and add link to cover, close #863 (#865) 2026-03-05 14:41:30 +08:00
pengzhanbo
f11e8501d0
fix(theme): fix missing attribute for <VPHomePosts> (#864) 2026-03-05 14:41:11 +08:00
pengzhanbo
3f047914d5 build: publish v1.0.0-rc.191 2026-02-25 22:14:10 +08:00
pengzhanbo
0a3810be2b chore: tweak 2026-02-25 22:12:38 +08:00
pengzhanbo
c541e05997 perf: update deps to latest 2026-02-25 22:04:15 +08:00
pengzhanbo
feb69a282e build: update target Node.js version to 20.19.0 in tsdown.config.mjs files 2026-02-25 22:03:51 +08:00
pengzhanbo
c109d54961
feat: rewrite app.writeTemp to resolve IO race conditions (#862) 2026-02-25 21:50:50 +08:00
pengzhanbo
948c31779b
fix(plugin-search): fix temporary file IO race condition (#861) 2026-02-25 21:50:31 +08:00
pengzhanbo
09a95b7597
fix(plugin-md-power): fix timeout when retrieving remote image size (#860) 2026-02-25 21:50:08 +08:00
pengzhanbo
ce32605aee
feat(plugin-md-power): rename demo-wrapper container to window (#858) 2026-02-25 21:48:39 +08:00
𝙁𝙡𝙖𝙨𝙝
f7d3546962
docs: update 【haipeng-lin】demo (#859) 2026-02-20 00:44:33 +08:00
pengzhanbo
5980fd81f3 build: publish v1.0.0-rc.190 2026-02-15 12:33:55 +08:00
pengzhanbo
f2fe79f923 fix(plugin-md-power): fix timeout issue when retrieving image size 2026-02-15 12:32:33 +08:00
pengzhanbo
7234eebe7e fix(plugin-search): fix incorrect prepare search index 2026-02-15 12:31:46 +08:00
pengzhanbo
479680bba6 docs: update docs 2026-02-15 12:24:31 +08:00
pengzhanbo
cd68f1cdd9 build: publish v1.0.0-rc.189 2026-02-15 11:43:40 +08:00
pengzhanbo
97c7a53aed chore: update deps to latest 2026-02-15 11:41:37 +08:00
pengzhanbo
03dc9da8dc docs: update home page 2026-02-15 11:41:17 +08:00
pengzhanbo
a4c9c85b00
refactor(plugin-md-power): optimize image size (#856) 2026-02-15 11:33:40 +08:00
pengzhanbo
1ed3dd9154
refactor(plugin-search): optimize search data generate (#855) 2026-02-15 11:33:24 +08:00
pengzhanbo
bfd1d1692f
refactor(cli): improve packageJson generate (#854) 2026-02-15 11:33:09 +08:00
pengzhanbo
6db6a58c27
chore: tweak (#857) 2026-02-15 11:32:47 +08:00
pengzhanbo
9751059fcd docs: update readme 2026-02-15 11:23:16 +08:00
pengzhanbo
fc9984b27c test: improve unit test 2026-02-14 20:03:44 +08:00
pengzhanbo
5930c60462 docs: improve docs 2026-02-14 18:14:19 +08:00
pengzhanbo
f173d069bd refactor(theme): fix event listener leaks 2026-02-14 18:14:00 +08:00
pengzhanbo
5c201e3ed0
docs: improve jsdoc (#852) 2026-02-14 14:53:41 +08:00
pengzhanbo
77da8a3470
fix(cli): fix failure to retrieve OS language (#851) 2026-02-14 14:53:23 +08:00
pengzhanbo
9c3899135b docs: update readme 2026-02-14 14:48:01 +08:00
pengzhanbo
dc160b3db4 build: publish v1.0.0-rc.188 2026-02-13 21:12:45 +08:00
pengzhanbo
84bd873efa chore: improve vue-router deps 2026-02-13 21:10:17 +08:00
pengzhanbo
8d4ce99c16 perf: update deps to latest 2026-02-13 20:28:12 +08:00
pengzhanbo
8a873e1e58 style: lint fix 2026-02-13 20:27:38 +08:00
pengzhanbo
2780abd782
feat(plugin-md-power): add copy button for file-tree container, close #835 (#837)
* feat(plugin-md-power): add copy button for file-tree container, close #835

* chore: tweak
2026-02-13 01:16:47 +08:00
pengzhanbo
b1f996cb0e
feat(plugin-md-power): add ::: encrypt container, close #815 (#831)
* feat(plugin-md-power): add `::: encrypt` container

* chore: tweak

* chore: tweak

* chore: tweak
2026-02-12 23:55:21 +08:00
pengzhanbo
78a2859398
perf: optimize memory usage during build time (#850) 2026-02-12 21:11:01 +08:00
pengzhanbo
8daddcac5d chore: update vuepress deps to latest 2026-02-12 01:16:46 +08:00
pengzhanbo
c5759e3a2e chore(theme): add default locale to llmstxt plugin 2026-02-12 01:08:00 +08:00
pengzhanbo
3e68b44771
feat(theme): add sidebar collapse button, close #687 (#839) 2026-02-12 01:02:57 +08:00
pengzhanbo
d2b4654ae3
fix(theme): fix prev/next nav when include sep, close #846 (#849) 2026-02-12 01:01:13 +08:00
pengzhanbo
5a73b59297
fix(theme): broken card a11y, close #841 (#848) 2026-02-12 01:00:52 +08:00
pengzhanbo
98a969c112
fix(theme): fix overflow scrolling in the tab container nav, close #842 (#847) 2026-02-12 01:00:03 +08:00
pengzhanbo
8cd08f4f02
feat(plugin-search): add language-based text segmentation support for search (#838) 2026-02-12 00:59:35 +08:00
pengzhanbo
32e4f92c61
feat(plugin-md-power): add icons about ai (#836) 2026-02-12 00:59:02 +08:00
pengzhanbo
d573fada7a
feat(theme): improve title template (#833)
* feat(theme): improve title template

* chore: tweak
2026-02-12 00:58:33 +08:00
pengzhanbo
a13ed1f503
fix(theme): navbar dropdown renders incorrectly in Safari, close #830 (#832) 2026-02-12 00:57:41 +08:00
pengzhanbo
07c274cdbf
feat: add agent skills (#823)
* feat: add agent skills

* chore: tweak
2026-01-29 15:52:29 +08:00
Konata9
ab4ff06756
docs: add Konata9's Blog (#834)
* chore: Add konata9's blog

* style: lint fix

---------

Co-authored-by: pengzhanbo <volodymyr@foxmail.com>
2026-01-27 11:31:34 +08:00
pengzhanbo
b65529743e docs: update sponsor 2026-01-22 13:17:29 +08:00
pengzhanbo
c46379bc9f docs: update pdf assets 2026-01-20 23:34:40 +08:00
Kairui Liu
6cd8066ee0
docs: add a website demo to the documentation (#827) 2026-01-20 14:41:19 +08:00
pengzhanbo
4ad05ad9f5 build: publish v1.0.0-rc.187 2026-01-19 23:50:07 +08:00
pengzhanbo
6a41d44322 fix(theme): incorrect icon name validation 2026-01-19 23:48:35 +08:00
pengzhanbo
f804ba8420 build: publish v1.0.0-rc.186 2026-01-19 21:56:46 +08:00
pengzhanbo
2a5bd30fe3 perf: update deps to latest 2026-01-19 21:45:42 +08:00
pengzhanbo
a3d8e225b9
feat(theme): add filepath permalink support for auto frontmatter, #815 (#822) 2026-01-19 21:43:41 +08:00
pengzhanbo
f51dff1d58
feat(plugin-md-power): add markdown env presets, #815 (#818) 2026-01-19 21:41:17 +08:00
pengzhanbo
85fc35f119
fix(theme): fix multiple icon provider (#826) 2026-01-19 21:40:47 +08:00
pengzhanbo
48970dd559
fix(theme): fix theme config hmr fail (#820) 2026-01-19 21:40:23 +08:00
pengzhanbo
1dfbb872f7
fix(theme): fix page encrypt password type error (#819) 2026-01-19 21:39:50 +08:00
pengzhanbo
79397faa65
feat(theme): add perplexity to context menu (#817) 2026-01-19 21:38:45 +08:00
来自梦里的一条鱼
7b17ccf378
docs: update haipeng-lin.cn demo (#824) 2026-01-17 17:08:23 +08:00
CuteLittleSky
7a0aee5fb9
docs: add SKYCRAFT server to Demo (#821) 2026-01-15 18:34:59 +08:00
Paiad
a94333d9bd
docs: revise Paiad demo information
Updated the details for the Paiad demo, including name, description, logo, URL, and preview image.
2026-01-13 22:32:39 +08:00
pengzhanbo
5217be0bfc build: publish v1.0.0-rc.185 2026-01-09 15:44:39 +08:00
pengzhanbo
6420ddf8ba chore: update deps to latest 2026-01-09 15:42:08 +08:00
pengzhanbo
6656b3213b docs: add contributor 2026-01-09 15:35:00 +08:00
pengzhanbo
a74c475d7c perf: update deps to latest 2026-01-09 15:33:11 +08:00
pengzhanbo
6d0781b647 chore: tweak 2026-01-09 15:32:49 +08:00
Dahaha
cc3582c1f9
feat(theme): add support for base64 for profile avatars (#808) 2026-01-09 15:22:32 +08:00
pengzhanbo
2cadb7d88c
fix(theme): add slot existence check in VPDocFooter, close #809 (#811) 2026-01-09 15:19:52 +08:00
pengzhanbo
7ed70230af
fix(theme): fix custom social icon rendering misalignment (#812) 2026-01-09 15:19:25 +08:00
pengzhanbo
36c0eddd86 docs: update sponsor 2026-01-03 20:07:24 +08:00
pengzhanbo
b242e59bbe build: publish v1.0.0-rc.184 2025-12-28 15:25:01 +08:00
pengzhanbo
9bbba1ada6
fix(theme): incorrect url convert in PageContextMenu (#807)
* fix(theme): incorrect url convert in `PageContextMenu`

* test: migrate to v8

* perf: update deps to latest
2025-12-28 15:09:32 +08:00
pengzhanbo
e2c9d50539 docs: fix typo 2025-12-28 14:11:59 +08:00
pengzhanbo
ed5c53f494 chore: remove .npmrc 2025-12-28 14:11:36 +08:00
pengzhanbo
fe9ee0dbfc
feat(plugin-md-power): improve caniuse syntax (#806) 2025-12-28 14:00:53 +08:00
pengzhanbo
2bcf761ef1 docs: update sponsor 2025-12-26 23:33:25 +08:00
Lucas
ccf34d4bc8
docs: add demo for Lucas blog (#804) 2025-12-21 23:42:27 +08:00
pengzhanbo
f7c0fe0dd3 docs: update sponsor 2025-12-16 15:15:23 +08:00
only9464
3f9422df83
docs: add HEUOpenResource to demos.md (#803)
Added HEUOpenResource project details to demos.
2025-12-15 19:54:56 +08:00
来自梦里的一条鱼
46ec0fb123
docs: update haipeng-lin site demo (#802) 2025-12-15 11:52:18 +08:00
pengzhanbo
a5f6f991f8 build: publish v1.0.0-rc.183 2025-12-14 01:59:57 +08:00
pengzhanbo
eb73f3d3f1 perf: update deps to latest 2025-12-14 01:57:06 +08:00
pengzhanbo
a15f4e206d
fix: fix incorrect icon rendering, close #799 (#800) 2025-12-14 01:34:50 +08:00
pengzhanbo
ce19b84232
fix(theme): fix incorrect code block rendering within card, close #798 (#801) 2025-12-14 01:34:33 +08:00
pengzhanbo
b86a121707 docs: update component and config 2025-12-14 01:33:46 +08:00
pengzhanbo
c0bb6bcc14 build: publish v1.0.0-rc.182 2025-12-13 16:50:11 +08:00
pengzhanbo
98684ed66a perf: update deps to latest 2025-12-13 16:40:31 +08:00
pengzhanbo
15aa159999 docs: update Demos component 2025-12-13 16:39:40 +08:00
pengzhanbo
956869ab1e
fix(plugin-md-power): fix file-tree container incorrectly rendering in nesting content, close #795 (#797) 2025-12-13 16:18:36 +08:00
pengzhanbo
6e601f9f0e
feat(theme): add meta config support for collection, close #781 (#796) 2025-12-13 15:45:55 +08:00
pengzhanbo
f7bc044147 refactor(theme): improve CodeRepl and DocFooter styles 2025-12-12 20:53:43 +08:00
pengzhanbo
a91cdb60d7 chore: tweak 2025-12-12 20:52:48 +08:00
pengzhanbo
15e62010c2
feat(theme): add cols frontmatter support for friends page, close #781 (#792) 2025-12-12 20:41:30 +08:00
pengzhanbo
a350e62645
fix(plugin-md-power): fix mark lazy animation, close #789 (#791) 2025-12-12 20:41:09 +08:00
pengzhanbo
95d345bf6d
refactor(theme): social icon support all iconify icons, close #781 (#790) 2025-12-12 20:40:50 +08:00
pengzhanbo
c42a601467
refactor(theme): improve post copyright styles, close #780 (#788) 2025-12-12 20:40:30 +08:00
pengzhanbo
46797a0757
fix(theme): fix render overflow of code block within Card on mobile, close #782 (#787) 2025-12-12 20:40:04 +08:00
pengzhanbo
65da8469ce
feat(cli): update lowest version support for nodejs (#786) 2025-12-12 20:39:28 +08:00
pengzhanbo
6383347813
fix(theme): fix boundary detection error for config on home (#785) 2025-12-12 20:39:03 +08:00
pengzhanbo
2c360ac59e
feat(theme): add theme config changed logger (#784) 2025-12-12 20:38:34 +08:00
pengzhanbo
b128511c28 docs: update sponsor 2025-12-10 17:01:56 +08:00
pengzhanbo
8f2f93ec7e build: publish v1.0.0-rc.181 2025-12-05 22:59:22 +08:00
pengzhanbo
8faba7bf10 perf: update deps to latest 2025-12-05 22:57:20 +08:00
pengzhanbo
c8ab57e843 chore: tweak 2025-12-05 22:56:51 +08:00
pengzhanbo
9a77bf4eef docs: update sponsor 2025-12-05 22:25:46 +08:00
pengzhanbo
157281aec8
feat(plugin-md-power): add qrcode syntax plugin for markdown (#777)
* feat(plugin-md-power): add  qrcode syntax plugin for markdown

* chore: tweak
2025-12-05 17:18:13 +08:00
pengzhanbo
07710247bb
fix(theme): fix parsing error for relative path link (#779) 2025-12-05 17:16:48 +08:00
pengzhanbo
9b2b73e05b
fix(theme): fix doc-footer text decoration (#778) 2025-12-05 17:16:30 +08:00
pengzhanbo
8f3c070d07 docs: tweak 2025-12-05 17:07:05 +08:00
pengzhanbo
29b5197c47 test: improve unit test 2025-12-05 17:06:41 +08:00
pengzhanbo
5f82bdeb67
fix(theme): fix home hero background tint-plate rendering fail, close #775 (#776) 2025-12-04 14:10:27 +08:00
pengzhanbo
d677fc99de docs: update sponsor 2025-12-04 14:06:18 +08:00
pengzhanbo
4b1cecf2bd
feat(theme): migrate bcrypt-ts to hash-wasm (#774) 2025-12-03 17:16:14 +08:00
pengzhanbo
32f4a8be5a
feat(plugin-md-power): add markdown-it-cjk-friendly plugin (#773) 2025-12-03 13:41:18 +08:00
pengzhanbo
3553022597
fix(theme): fix navbar horizontal overflow (#772) 2025-12-03 13:35:57 +08:00
pengzhanbo
cd37921975
fix(theme): fix sidebar curtain position-top (#771) 2025-12-03 13:35:12 +08:00
pengzhanbo
78b4b9f572 docs: add tools 2025-12-03 13:34:19 +08:00
pengzhanbo
ab4354e648 docs: add contributor 2025-12-03 13:33:55 +08:00
pengzhanbo
20ebeb5e62
feat(theme): support encryption for all page layouts (#770) 2025-12-03 13:25:16 +08:00
gnehs
4957c8b1de
fix(theme): blockquote icon color in dark mode (#769) 2025-12-03 13:24:55 +08:00
gnehs
3df96e2702
fix(i18n): update Traditional Chinese translations for search and theme locales (#767) 2025-12-02 17:35:21 +08:00
pengzhanbo
3c4985ac1a build: publish v1.0.0-rc.180 2025-12-01 11:38:47 +08:00
pengzhanbo
3a907e0ba8 perf: update deps to latest 2025-12-01 11:37:01 +08:00
pengzhanbo
db8a46eb4c
docs: optimize and completion docs (#766) 2025-12-01 11:30:33 +08:00
pengzhanbo
c97a5af473
feat(cli): optimize template (#765) 2025-12-01 11:30:06 +08:00
pengzhanbo
bba98984d6
fix: support nested ordered lists in collapse plugin (#764) 2025-12-01 11:29:45 +08:00
pengzhanbo
41d2a81a09
fix(theme): fix hybrid mismatch (#763) 2025-12-01 11:29:26 +08:00
pengzhanbo
6a3babcf76
perf(theme): optimize VPFooter and VPFriends layout (#762) 2025-12-01 11:29:05 +08:00
pengzhanbo
f599a4223c
fix(theme): llmstxt should exclude encrypt page (#761) 2025-12-01 11:28:21 +08:00
pengzhanbo
e0b972c3cb
fix(theme): incorrect displaying external link icon (#760) 2025-12-01 11:27:59 +08:00
pengzhanbo
2bb5c0e2d5 ci: update workflow 2025-11-28 22:32:18 +08:00
pengzhanbo
7691cdc9a0 build: publish v1.0.0-rc.179 2025-11-26 01:26:47 +08:00
pengzhanbo
c1f59cf451 perf: update deps to latest 2025-11-26 01:23:22 +08:00
pengzhanbo
fc3676d6dc
feat(theme): add support for {data-outline="level"} attribute syntax for headings, close #757 (#759) 2025-11-26 01:13:24 +08:00
pengzhanbo
73f4935ca9
feat(theme): exclude encrypt page in llmstxt (#758) 2025-11-26 01:13:04 +08:00
pengzhanbo
f9b8c6adf2
refactor(theme): refactor link detector, close #754 (#756)
* refactor(theme): refactor link detector

* chore: tweak
2025-11-26 01:12:42 +08:00
pengzhanbo
8c1d34cb87 chore: tweak 2025-11-26 01:09:57 +08:00
pengzhanbo
631188df85 ci: migrate release publish to github actions 2025-11-26 01:08:30 +08:00
pengzhanbo
a9082dc012 docs: update sponsor 2025-11-25 21:05:53 +08:00
pengzhanbo
1b62b0bf6c docs: update sponsor 2025-11-25 14:55:45 +08:00
yxzlwz
75c12ba458
docs: update demos for YXZL (#755) 2025-11-21 12:56:49 +08:00
pengzhanbo
25c3880ea4 chore: tweak 2025-11-20 21:29:27 +08:00
pengzhanbo
ddb77a06a5 feat(theme): add footer frontmatter 2025-11-20 21:09:26 +08:00
pengzhanbo
a4bea8202b feat(cli): add env config to template 2025-11-20 21:09:06 +08:00
pengzhanbo
57617e6658 docs: update QA 2025-11-20 21:08:43 +08:00
pengzhanbo
ea54d08a50 docs: update demos 2025-11-20 21:08:25 +08:00
pengzhanbo
945cc72860 build: publish v1.0.0-rc.178 2025-11-19 17:02:41 +08:00
pengzhanbo
4884b1acce perf: update deps to latest 2025-11-19 16:59:03 +08:00
pengzhanbo
532ad960a4 docs: add llms redirect 2025-11-19 16:55:00 +08:00
pengzhanbo
ad1f02de62 fix(theme): fix post-list width overflow 2025-11-19 16:54:41 +08:00
pengzhanbo
20728f504d
feat(theme): add plugin-llms and <PageContextMenu /> component (#753) 2025-11-19 16:51:49 +08:00
pengzhanbo
5b780c28d0 docs: update llms config 2025-11-18 21:08:22 +08:00
TinyPiXOS-Dev
e8fa516b2e
docs: update demos.md (#752)
增加TinyPiXOS案例,TinyPiXOS是一款独立可控、架构轻量且高度定制化的嵌入式桌面操作系统,官网和技术文档均采用plume主题构建。
2025-11-18 19:15:24 +08:00
pengzhanbo
e87ae4fc16 build: publish v1.0.0-rc.177 2025-11-14 18:01:17 +08:00
pengzhanbo
5b07f2dd21 perf: update deps to latest 2025-11-14 17:49:51 +08:00
pengzhanbo
6fc6385de4 feat(cli): typescript as a required dependency 2025-11-14 17:45:08 +08:00
pengzhanbo
ab26dec457 feat(theme): when navbar is empty, no preset is applied 2025-11-14 17:43:19 +08:00
pengzhanbo
4119b67e0b fix(theme): fix fixed position failure in Safari 2025-11-14 17:15:48 +08:00
pengzhanbo
05d55e5035 fix(theme): fix table max-width overflow 2025-11-14 17:12:45 +08:00
pengzhanbo
f95e7c8412 feat(theme): optimize VPCollapse styles within Card 2025-11-14 17:09:42 +08:00
pengzhanbo
4e7fb91a56 build: publish v1.0.0-rc.176 2025-11-09 15:05:55 +08:00
pengzhanbo
cd120220f2 build: update tsdown config 2025-11-09 15:00:32 +08:00
pengzhanbo
a63c094df9 fix(theme): fix use admin decrypt page error 2025-11-09 14:59:10 +08:00
pengzhanbo
336205627e perf: update deps to latest 2025-11-09 13:58:48 +08:00
pengzhanbo
a5dfef7202
feat(theme): optimize page encrypt (#750) 2025-11-09 13:48:15 +08:00
pengzhanbo
87cda0c824 test: update vitest config 2025-11-09 13:33:21 +08:00
Hao Chen
b6ee4a4b3d
fix(theme): conditionally render post navigation links on mobile devices (#749) 2025-11-01 22:27:27 +08:00
Hao Chen
2fc6ea5064
fix(cli): corrects function call for defining multiple collections (#748) 2025-11-01 21:46:44 +08:00
pengzhanbo
aa8e774a1b build: publish v1.0.0-rc.175 2025-10-31 20:29:24 +08:00
pengzhanbo
606f47a5a6 perf: update deps to latest 2025-10-31 20:22:59 +08:00
pengzhanbo
e6daf07456 style: lint fix 2025-10-31 20:22:37 +08:00
pengzhanbo
3d48446769
feat(theme): add dark-veil home hero effect (#747) 2025-10-31 18:33:57 +08:00
pengzhanbo
802911c179 perf(theme): cleanup home hero effect when unmounted 2025-10-31 18:08:15 +08:00
pengzhanbo
192017b892
fix(theme): fix auto-sidebar collapsed (#746) 2025-10-31 18:03:06 +08:00
pengzhanbo
cfa70320c8
docs(theme): fix tint-plate tools (#745)
see #742
2025-10-31 17:53:35 +08:00
pengzhanbo
d4ad65a1ea
refactor: use deconstruct syntax to handle component props (#744) 2025-10-31 17:42:28 +08:00
pengzhanbo
0e38265f96
feat(plugin-md-power): add full-width support for table container, close #740 (#741) 2025-10-29 20:45:22 +08:00
pengzhanbo
fbb6ec9a63 feat(theme): optimize local nav 2025-10-26 23:18:44 +08:00
pengzhanbo
19868d147e fix(theme): fix language component not displaying correctly 2025-10-26 23:17:46 +08:00
pengzhanbo
73e6b9d5ca build: publish v1.0.0-rc.174 2025-10-25 12:31:36 +08:00
pengzhanbo
ca3986917c perf: update deps to latest 2025-10-25 12:29:19 +08:00
pengzhanbo
be565baf59 fix(theme): fix ssr compile error 2025-10-25 12:21:44 +08:00
pengzhanbo
aa6168c31d
feat(theme): add home hero effects (#738) 2025-10-25 11:55:17 +08:00
pengzhanbo
51e1f5260c perf: update deps to latest 2025-10-21 16:14:15 +08:00
yxzlwz
441b991b65
fix(plugin-md-power): avoid spellcheck in CodeEditor (#736)
Added spellcheck attribute to textarea for CodeEditor.
2025-10-20 21:47:09 +08:00
HAO CHEN
5fb7b7a216
docs: add Honahec's Blog to demos (#734) 2025-10-19 00:08:32 +08:00
Paiad
2d40e20f51
docs: update Paiad links and logo in demos.md (#733) 2025-10-18 21:39:30 +08:00
672 changed files with 42779 additions and 10185 deletions

1
.gitattributes vendored
View File

@ -4,6 +4,7 @@
*.png binary
*.jpg binary
*.jpeg binary
*.webp binary
*.ico binary
*.gif binary
*.tff binary

View File

@ -2,15 +2,25 @@ name: Deploy Docs
on:
push:
tags:
- v*
branches:
- main
paths:
# 以下文件发生变化时触发部署,这些文件与版本无关,因此可以自动更新
- docs/demos.md
- docs/sponsor.md
- CONTRIBUTING.md
- CONTRIBUTING.en-US.md
workflow_dispatch:
workflow_call:
permissions:
contents: write
jobs:
deploy-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
@ -18,9 +28,9 @@ jobs:
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: pnpm
- name: Install deps

View File

@ -6,11 +6,14 @@ on:
- v*
workflow_dispatch:
permissions:
contents: write
jobs:
deploy-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
@ -18,9 +21,9 @@ jobs:
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: pnpm
- name: Install deps

View File

@ -6,6 +6,10 @@ on:
pull_request:
branches: [main]
workflow_call:
permissions:
contents: read
jobs:
lint:
@ -13,15 +17,15 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: pnpm
- name: Install deps

55
.github/workflows/release.yaml vendored Normal file
View File

@ -0,0 +1,55 @@
name: Release
on:
push:
tags:
- v*
permissions:
contents: write
id-token: write
jobs:
lint:
uses: ./.github/workflows/lint.yaml
test:
uses: ./.github/workflows/test.yaml
release:
if: github.repository == 'pengzhanbo/vuepress-theme-plume'
needs: [test, lint]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v4
- uses: actions/setup-node@v6
with:
node-version: 24
registry-url: https://registry.npmjs.org
cache: pnpm
- name: Install deps
run: pnpm install
- name: Update npm
run: npm i -g npm@latest
- name: Build And Publish
id: publish
run: |
pnpm build
pnpm release:publish --no-git-checks
pnpm release:sync
- run: npx changelogithub
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
deploy:
uses: ./.github/workflows/docs-deploy.yaml

View File

@ -1,22 +0,0 @@
name: Add Release Tag
on:
push:
tags:
- v*
jobs:
changelog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npx changelogithub
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

View File

@ -6,6 +6,10 @@ on:
pull_request:
branches: [main]
workflow_call:
permissions:
contents: read
jobs:
unit-test:
@ -13,15 +17,15 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: pnpm
- name: Install deps
@ -34,6 +38,6 @@ jobs:
- name: Upload coverage
if: github.ref == 'refs/heads/main'
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}

3
.gitignore vendored
View File

@ -15,3 +15,6 @@ dist/
coverage/
.idea
.claude/
!.claude/skills/

3
.npmrc
View File

@ -1,3 +0,0 @@
strict-peer-dependencies=false
shamefully-hoist=true
shell-emulator=true

View File

@ -76,6 +76,7 @@
"nprogress",
"pnpm",
"portfinder",
"qrcode",
"shiki",
"shikiji",
"shikijs",

View File

@ -1,124 +1,411 @@
# [1.0.0-rc.173](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.172...v1.0.0-rc.173) (2025-10-17)
# [1.0.0-rc.196](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.195...v1.0.0-rc.196) (2026-04-19)
### Bug Fixes
* **theme:** fix collection type error when the homepage is set as a posts, close [#729](https://github.com/pengzhanbo/vuepress-theme-plume/issues/729) ([#732](https://github.com/pengzhanbo/vuepress-theme-plume/issues/732)) ([0a23b94](https://github.com/pengzhanbo/vuepress-theme-plume/commit/0a23b94232a407eded9cf402702fb81ddd1e1a89))
* **theme:** fix the layout misalignment of the `<VPButton />` fontawesome icon ([1471547](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1471547bcdce4c6ad4ca2e97422a6627d2876bdc))
* fix security ([e512666](https://github.com/pengzhanbo/vuepress-theme-plume/commit/e5126663ef50b4f720424412b38ad3b22a7178da))
* **plugin-md-power:** fix cell display issue caused by colspan in table ([#891](https://github.com/pengzhanbo/vuepress-theme-plume/issues/891)) ([6ebb1bd](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6ebb1bda6e4ef379e156e7299c149e10c472d705))
* **theme:** remove `cwd` options from `picomatch` ([#892](https://github.com/pengzhanbo/vuepress-theme-plume/issues/892)) ([58ea2fc](https://github.com/pengzhanbo/vuepress-theme-plume/commit/58ea2fc8cbcef0cb968997ad6dead2f4960d465a))
# [1.0.0-rc.195](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.194...v1.0.0-rc.195) (2026-04-18)
### Features
* **plugin-md-power:** compat obsidian official markdown syntax ([#890](https://github.com/pengzhanbo/vuepress-theme-plume/issues/890)) ([bfd0c84](https://github.com/pengzhanbo/vuepress-theme-plume/commit/bfd0c8409c4c55c82f6c55d681f6b3eaafeaddfb))
# [1.0.0-rc.194](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.193...v1.0.0-rc.194) (2026-04-14)
### Bug Fixes
* **plugin-search:** fix search index race condition on pageUpdated, close [#888](https://github.com/pengzhanbo/vuepress-theme-plume/issues/888) ([#889](https://github.com/pengzhanbo/vuepress-theme-plume/issues/889)) ([28963eb](https://github.com/pengzhanbo/vuepress-theme-plume/commit/28963eb419e9a1707157929fe546dc44d1ef771e))
# [1.0.0-rc.193](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.193...v1.0.0-rc.192) (2026-04-02)
### Bug Fixes
- **plugin-md-power:** fix tsdown icon ([#878](https://github.com/pengzhanbo/vuepress-theme-plume/issues/878)) ([a01bc13](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a01bc13c66266651efe9ee3e9b30ab922c5466cc))
- **theme:** add bulletin to outline ignores ([#879](https://github.com/pengzhanbo/vuepress-theme-plume/issues/879)) ([1b213d4](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1b213d4c28a7416e9be48af061f43142533bf387))
- **theme:** fix auto-sidebar group icon error inherit, close [#873](https://github.com/pengzhanbo/vuepress-theme-plume/issues/873) ([#883](https://github.com/pengzhanbo/vuepress-theme-plume/issues/883)) ([dbc6f0b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/dbc6f0be0fe0826770a7b33536d77759e1e89056))
- **theme:** fix incorrect auto-sidebar-link parse ([#880](https://github.com/pengzhanbo/vuepress-theme-plume/issues/880)) ([7febfbf](https://github.com/pengzhanbo/vuepress-theme-plume/commit/7febfbf237c1d5b61031d8b4205a1b30bc21519d))
- **theme:** fix MarkdownOptions types ([9fe294b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9fe294b9dd2edb97fb6e8be340ada16328c1bee5))
- **theme:** fix sidebar items prefix not handled correctly, close [#876](https://github.com/pengzhanbo/vuepress-theme-plume/issues/876) ([#885](https://github.com/pengzhanbo/vuepress-theme-plume/issues/885)) ([e9fe35b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/e9fe35bc4f172ff6a004e0170b476173cce2e4c1))
- **theme:** twoslash comment error ([#881](https://github.com/pengzhanbo/vuepress-theme-plume/issues/881)) ([aede6f5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/aede6f5d87f836febb8e5bf9fba74ffad197a327))
### Features
- improve accessibility features ([#869](https://github.com/pengzhanbo/vuepress-theme-plume/issues/869)) ([fe0d4bb](https://github.com/pengzhanbo/vuepress-theme-plume/commit/fe0d4bbc926eb6f5113707c0bc1535a957ee2304))
### Performance Improvements
* update deps to latest ([ded49c4](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ded49c4e8890bcb1bcf920856c72a8ec4a943daf))
- update deps to latest ([cbc5c55](https://github.com/pengzhanbo/vuepress-theme-plume/commit/cbc5c558919f9fcf8ef3e98b000939e3323fdc13))
# [1.0.0-rc.192](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.191...v1.0.0-rc.192) (2026-03-05)
### Bug Fixes
- **plugin-md-power:** fix potential null pointer exceptions when parsing collapse containers ([#866](https://github.com/pengzhanbo/vuepress-theme-plume/issues/866)) ([916e914](https://github.com/pengzhanbo/vuepress-theme-plume/commit/916e9141d9a5a482a40722f80d2cbb64d28651dc))
- **theme:** fix missing attribute for `<VPHomePosts>` ([#864](https://github.com/pengzhanbo/vuepress-theme-plume/issues/864)) ([f11e850](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f11e8501d0e9ebf4805ef8f09f409c68d86126ee))
- **theme:** fix the calculation error in the post cover ratio and add link to cover, close [#863](https://github.com/pengzhanbo/vuepress-theme-plume/issues/863) ([#865](https://github.com/pengzhanbo/vuepress-theme-plume/issues/865)) ([ca51a34](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ca51a345fb8b680804555b4b96fdae1d894c6264))
### Features
- **theme:** add lang switch to update html lang attr ([#867](https://github.com/pengzhanbo/vuepress-theme-plume/issues/867)) ([fd1dd7c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/fd1dd7c695bb5b6be9a833b8f7851aa252983022))
### Performance Improvements
- update deps to latest ([aa19049](https://github.com/pengzhanbo/vuepress-theme-plume/commit/aa19049f5b8410838d0d84679e78eabd0f3a47c6))
# [1.0.0-rc.191](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.190...v1.0.0-rc.191) (2026-02-25)
### Bug Fixes
- **plugin-md-power:** fix timeout when retrieving remote image size ([#860](https://github.com/pengzhanbo/vuepress-theme-plume/issues/860)) ([09a95b7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/09a95b7597f18a889ac9fd2189820ce6ea6de9f7))
- **plugin-search:** fix temporary file IO race condition ([#861](https://github.com/pengzhanbo/vuepress-theme-plume/issues/861)) ([948c317](https://github.com/pengzhanbo/vuepress-theme-plume/commit/948c31779b1358be976893d517cbceccb5cc343c))
### Features
- **plugin-md-power:** rename `demo-wrapper` container to `window` ([#858](https://github.com/pengzhanbo/vuepress-theme-plume/issues/858)) ([ce32605](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ce32605aeee40ca873962e21ff8012f320001523))
- rewrite `app.writeTemp` to resolve IO race conditions ([#862](https://github.com/pengzhanbo/vuepress-theme-plume/issues/862)) ([c109d54](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c109d5496152660c436d3fe0ca75b72252808aab))
### Performance Improvements
- update deps to latest ([c541e05](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c541e05997efd03882e92a8f723e91e0fdd01f4f))
# [1.0.0-rc.190](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.189...v1.0.0-rc.190) (2026-02-15)
### Bug Fixes
- **plugin-md-power:** fix timeout issue when retrieving image size ([f2fe79f](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f2fe79f923d9bd83f14604e116cdd11d5d66eafe))
- **plugin-search:** fix incorrect prepare search index ([7234eeb](https://github.com/pengzhanbo/vuepress-theme-plume/commit/7234eebe7e00c42ccf7d08c95eb617ac274ce049))
# [1.0.0-rc.189](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.188...v1.0.0-rc.189) (2026-02-15)
### Bug Fixes
- **cli:** fix failure to retrieve OS language ([#851](https://github.com/pengzhanbo/vuepress-theme-plume/issues/851)) ([77da8a3](https://github.com/pengzhanbo/vuepress-theme-plume/commit/77da8a347023f2f4b9d2a4a03c9aa3ef306ca456))
# [1.0.0-rc.188](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.187...v1.0.0-rc.188) (2026-02-13)
### Bug Fixes
- **theme:** broken card a11y, close [#841](https://github.com/pengzhanbo/vuepress-theme-plume/issues/841) ([#848](https://github.com/pengzhanbo/vuepress-theme-plume/issues/848)) ([5a73b59](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5a73b59297f50fedce0a4aa4ddd6f209d38d87cc))
- **theme:** fix overflow scrolling in the tab container nav, close [#842](https://github.com/pengzhanbo/vuepress-theme-plume/issues/842) ([#847](https://github.com/pengzhanbo/vuepress-theme-plume/issues/847)) ([98a969c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/98a969c112af90c492e022a706f892461f6923f8))
- **theme:** fix prev/next nav when include sep, close [#846](https://github.com/pengzhanbo/vuepress-theme-plume/issues/846) ([#849](https://github.com/pengzhanbo/vuepress-theme-plume/issues/849)) ([d2b4654](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d2b4654ae361d9ab0adfcb2075cccad7bfccfa48))
- **theme:** navbar dropdown renders incorrectly in Safari, close [#830](https://github.com/pengzhanbo/vuepress-theme-plume/issues/830) ([#832](https://github.com/pengzhanbo/vuepress-theme-plume/issues/832)) ([a13ed1f](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a13ed1f50397e65fa4697897138369a8177bbbf2))
### Features
- add agent skills ([#823](https://github.com/pengzhanbo/vuepress-theme-plume/issues/823)) ([07c274c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/07c274cdbf2f55e319fb862a332b0f2cf32a2c18))
- **plugin-md-power:** add `::: encrypt` container, close [#815](https://github.com/pengzhanbo/vuepress-theme-plume/issues/815) ([#831](https://github.com/pengzhanbo/vuepress-theme-plume/issues/831)) ([b1f996c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/b1f996cb0ec9ebd9135adf855de4363696f0161e))
- **plugin-md-power:** add copy button for file-tree container, close [#835](https://github.com/pengzhanbo/vuepress-theme-plume/issues/835) ([#837](https://github.com/pengzhanbo/vuepress-theme-plume/issues/837)) ([2780abd](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2780abd7824ad670e2f482ca90c24fa53fd110fe))
- **plugin-md-power:** add icons about ai ([#836](https://github.com/pengzhanbo/vuepress-theme-plume/issues/836)) ([32e4f92](https://github.com/pengzhanbo/vuepress-theme-plume/commit/32e4f92c6198672bc45d31a9fcc3e4a47c8bca36))
- **plugin-search:** add language-based text segmentation support for search ([#838](https://github.com/pengzhanbo/vuepress-theme-plume/issues/838)) ([8cd08f4](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8cd08f4f02de72f6c02cc07ec1e1ab3103081dd4))
- **theme:** add sidebar collapse button, close [#687](https://github.com/pengzhanbo/vuepress-theme-plume/issues/687) ([#839](https://github.com/pengzhanbo/vuepress-theme-plume/issues/839)) ([3e68b44](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3e68b44771f4c3b0604af312e33e2edc4e8a1e12))
- **theme:** improve title template ([#833](https://github.com/pengzhanbo/vuepress-theme-plume/issues/833)) ([d573fad](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d573fada7a4cdd6e16885f9d0774d25bf4d1759a))
### Performance Improvements
- optimize memory usage during build time ([#850](https://github.com/pengzhanbo/vuepress-theme-plume/issues/850)) ([78a2859](https://github.com/pengzhanbo/vuepress-theme-plume/commit/78a28593987ff7b5032f2eac5674f753d81e68ea))
- update deps to latest ([8d4ce99](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8d4ce99c16d1f67d3352f29de8cab83de225a8cc))
# [1.0.0-rc.187](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.186...v1.0.0-rc.187) (2026-01-19)
### Bug Fixes
- **theme:** incorrect icon name validation ([6a41d44](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6a41d4432221371c58aac0c1326ecd89f23b5d92))
# [1.0.0-rc.186](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.185...v1.0.0-rc.186) (2026-01-19)
### Bug Fixes
- **theme:** fix multiple icon provider ([#826](https://github.com/pengzhanbo/vuepress-theme-plume/issues/826)) ([85fc35f](https://github.com/pengzhanbo/vuepress-theme-plume/commit/85fc35f11916b2e3460dd820a5a6cf38113458cf))
- **theme:** fix page encrypt password type error ([#819](https://github.com/pengzhanbo/vuepress-theme-plume/issues/819)) ([1dfbb87](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1dfbb872f7d3eb79ae907497690e18e4414cc5ea))
- **theme:** fix theme config hmr fail ([#820](https://github.com/pengzhanbo/vuepress-theme-plume/issues/820)) ([48970dd](https://github.com/pengzhanbo/vuepress-theme-plume/commit/48970dd559f3d09e54382cf5e6051cddfb25ebc5))
### Features
- **plugin-md-power:** add markdown env presets, [#815](https://github.com/pengzhanbo/vuepress-theme-plume/issues/815) ([#818](https://github.com/pengzhanbo/vuepress-theme-plume/issues/818)) ([f51dff1](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f51dff1d582d7f825ed8a020642a4ec6e9671453))
- **theme:** add filepath permalink support for auto frontmatter, [#815](https://github.com/pengzhanbo/vuepress-theme-plume/issues/815) ([#822](https://github.com/pengzhanbo/vuepress-theme-plume/issues/822)) ([a3d8e22](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a3d8e225b96b8950d72ba6bb1a43cfecd926afd5))
- **theme:** add perplexity to context menu ([#817](https://github.com/pengzhanbo/vuepress-theme-plume/issues/817)) ([79397fa](https://github.com/pengzhanbo/vuepress-theme-plume/commit/79397faa65860591489d34eec92075fdd5d44831))
### Performance Improvements
- update deps to latest ([2a5bd30](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2a5bd30fe3853c8cb722a76a7be5f3426fab03b3))
# [1.0.0-rc.185](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.184...v1.0.0-rc.185) (2026-01-09)
### Bug Fixes
- **theme:** add slot existence check in VPDocFooter, close [#809](https://github.com/pengzhanbo/vuepress-theme-plume/issues/809) ([#811](https://github.com/pengzhanbo/vuepress-theme-plume/issues/811)) ([2cadb7d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2cadb7d88cbdcce1688f1e58cdb9c3a74090057f))
- **theme:** fix custom social icon rendering misalignment ([#812](https://github.com/pengzhanbo/vuepress-theme-plume/issues/812)) ([7ed7023](https://github.com/pengzhanbo/vuepress-theme-plume/commit/7ed70230afd5fa2f388320c529a364dd572481e9))
### Features
- **theme:** add support for base64 for profile avatars ([#808](https://github.com/pengzhanbo/vuepress-theme-plume/issues/808)) ([cc3582c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/cc3582c1f9e3bfc96b2a6164dac8e68cea8c0521))
### Performance Improvements
- update deps to latest ([a74c475](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a74c475d7cf93b295dd95f934ca820135e64fb6b))
# [1.0.0-rc.184](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.183...v1.0.0-rc.184) (2025-12-28)
### Bug Fixes
- **theme:** incorrect url convert in `PageContextMenu` ([#807](https://github.com/pengzhanbo/vuepress-theme-plume/issues/807)) ([9bbba1a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9bbba1ada670c2f927414534605b6b3744c246e8))
### Features
- **plugin-md-power:** improve caniuse syntax ([#806](https://github.com/pengzhanbo/vuepress-theme-plume/issues/806)) ([fe9ee0d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/fe9ee0dbfce9896fdaea72d8f77e7d065577d97d))
# [1.0.0-rc.183](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.182...v1.0.0-rc.183) (2025-12-13)
### Bug Fixes
- fix incorrect icon rendering, close [#799](https://github.com/pengzhanbo/vuepress-theme-plume/issues/799) ([#800](https://github.com/pengzhanbo/vuepress-theme-plume/issues/800)) ([a15f4e2](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a15f4e206df3324de24c7d8ca7654a702b84e871))
- **theme:** fix incorrect code block rendering within card, close [#798](https://github.com/pengzhanbo/vuepress-theme-plume/issues/798) ([#801](https://github.com/pengzhanbo/vuepress-theme-plume/issues/801)) ([ce19b84](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ce19b842327d8cedbc2718cc4a3fc36548d08e4b))
### Performance Improvements
- update deps to latest ([eb73f3d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/eb73f3d3f1d45cc295900bc3b29ac535ca3d379f))
# [1.0.0-rc.182](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.181...v1.0.0-rc.182) (2025-12-13)
### Bug Fixes
- **plugin-md-power:** fix `file-tree` container incorrectly rendering in nesting content, close [#795](https://github.com/pengzhanbo/vuepress-theme-plume/issues/795) ([#797](https://github.com/pengzhanbo/vuepress-theme-plume/issues/797)) ([956869a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/956869ab1eaf9aac7db4c99a7e49457373cf6be2))
- **plugin-md-power:** fix `mark` lazy animation, close [#789](https://github.com/pengzhanbo/vuepress-theme-plume/issues/789) ([#791](https://github.com/pengzhanbo/vuepress-theme-plume/issues/791)) ([a350e62](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a350e62645e5597195766aa88dd8c3469114a3c9))
- **theme:** fix boundary detection error for `config` on home ([#785](https://github.com/pengzhanbo/vuepress-theme-plume/issues/785)) ([6383347](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6383347813353f7b367dca150b1137cf77979b80))
- **theme:** fix render overflow of code block within Card on mobile, close [#782](https://github.com/pengzhanbo/vuepress-theme-plume/issues/782) ([#787](https://github.com/pengzhanbo/vuepress-theme-plume/issues/787)) ([46797a0](https://github.com/pengzhanbo/vuepress-theme-plume/commit/46797a07573b60783e5f4081591d9a60f705b6b8))
### Features
- **cli:** update lowest version support for nodejs ([#786](https://github.com/pengzhanbo/vuepress-theme-plume/issues/786)) ([65da846](https://github.com/pengzhanbo/vuepress-theme-plume/commit/65da8469ce76aaa0679533205d63dd77099336ee))
- **theme:** add `cols` frontmatter support for `friends` page, close [#781](https://github.com/pengzhanbo/vuepress-theme-plume/issues/781) ([#792](https://github.com/pengzhanbo/vuepress-theme-plume/issues/792)) ([15e6201](https://github.com/pengzhanbo/vuepress-theme-plume/commit/15e62010c2ec5d3155068e2e104b756eb4afcaca))
- **theme:** add meta config support for collection, close [#781](https://github.com/pengzhanbo/vuepress-theme-plume/issues/781) ([#796](https://github.com/pengzhanbo/vuepress-theme-plume/issues/796)) ([6e601f9](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6e601f9f0e623d85fded8b879982777d0c660691))
- **theme:** add theme config changed logger ([#784](https://github.com/pengzhanbo/vuepress-theme-plume/issues/784)) ([2c360ac](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2c360ac59e845aae9a94c7b54e9928f2f7254399))
### Performance Improvements
- update deps to latest ([98684ed](https://github.com/pengzhanbo/vuepress-theme-plume/commit/98684ed66a442b0a038849c68961d9b30912a4dc))
# [1.0.0-rc.181](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.180...v1.0.0-rc.181) (2025-12-05)
### Bug Fixes
- **i18n:** update Traditional Chinese translations for search and theme locales ([#767](https://github.com/pengzhanbo/vuepress-theme-plume/issues/767)) ([3df96e2](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3df96e270287ad091be16db4f94c8656ac01cdb4))
- **theme:** blockquote icon color in dark mode ([#769](https://github.com/pengzhanbo/vuepress-theme-plume/issues/769)) ([4957c8b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4957c8b1de238693a24915c2809de6bd45da9a70))
- **theme:** fix doc-footer text decoration ([#778](https://github.com/pengzhanbo/vuepress-theme-plume/issues/778)) ([9b2b73e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9b2b73e05ba322e169a5953ab14adb673e2248e2))
- **theme:** fix home hero background `tint-plate` rendering fail, close [#775](https://github.com/pengzhanbo/vuepress-theme-plume/issues/775) ([#776](https://github.com/pengzhanbo/vuepress-theme-plume/issues/776)) ([5f82bde](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5f82bdeb6779b462a80377300531575c0c24a245))
- **theme:** fix navbar horizontal overflow ([#772](https://github.com/pengzhanbo/vuepress-theme-plume/issues/772)) ([3553022](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3553022597f5d8b34c5eba23c73b96fcf926a82d))
- **theme:** fix parsing error for relative path link ([#779](https://github.com/pengzhanbo/vuepress-theme-plume/issues/779)) ([0771024](https://github.com/pengzhanbo/vuepress-theme-plume/commit/07710247bbb020cd6b4f2b9604900d1e4015b252))
- **theme:** fix sidebar curtain position-top ([#771](https://github.com/pengzhanbo/vuepress-theme-plume/issues/771)) ([cd37921](https://github.com/pengzhanbo/vuepress-theme-plume/commit/cd3792197506767b64f05cfb8a92e05564d4ec2f))
### Features
- **plugin-md-power:** add qrcode syntax plugin for markdown ([#777](https://github.com/pengzhanbo/vuepress-theme-plume/issues/777)) ([157281a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/157281aec83f9029b7319825a49403ca115729ca))
- **plugin-md-power:** add markdown-it-cjk-friendly plugin ([#773](https://github.com/pengzhanbo/vuepress-theme-plume/issues/773)) ([32f4a8b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/32f4a8be5a237b773f79a9c3cff387975250ec43))
- **theme:** migrate `bcrypt-ts` to `hash-wasm` ([#774](https://github.com/pengzhanbo/vuepress-theme-plume/issues/774)) ([4b1cecf](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4b1cecf2bd2b60d5b12f7b04993a0598ad314f5c))
- **theme:** support encryption for all page layouts ([#770](https://github.com/pengzhanbo/vuepress-theme-plume/issues/770)) ([20ebeb5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/20ebeb5e6290d9d9816fd0ea5b84c98fd21c957f))
### Performance Improvements
- update deps to latest ([8faba7b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8faba7bf1057c98fbf327867455f2d3c38d0fcdf))
# [1.0.0-rc.180](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.179...v1.0.0-rc.180) (2025-12-01)
### Bug Fixes
- support nested ordered lists in collapse plugin ([#764](https://github.com/pengzhanbo/vuepress-theme-plume/issues/764)) ([bba9898](https://github.com/pengzhanbo/vuepress-theme-plume/commit/bba98984d6d367f1b1f64f17bc8fbb4143484b67))
- **theme:** fix hybrid mismatch ([#763](https://github.com/pengzhanbo/vuepress-theme-plume/issues/763)) ([41d2a81](https://github.com/pengzhanbo/vuepress-theme-plume/commit/41d2a81a09604f45c32a76b04e784b737525f238))
- **theme:** incorrect displaying external link icon ([#760](https://github.com/pengzhanbo/vuepress-theme-plume/issues/760)) ([e0b972c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/e0b972c3cbc51a53563a8255a319e9dbb54d025c))
- **theme:** llmstxt should exclude encrypt page ([#761](https://github.com/pengzhanbo/vuepress-theme-plume/issues/761)) ([f599a42](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f599a4223cc68886ef7c37103437c77bab5493b6))
### Features
- **cli:** optimize template ([#765](https://github.com/pengzhanbo/vuepress-theme-plume/issues/765)) ([c97a5af](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c97a5af473ac7417fffc866a4823dba948ee3ade))
### Performance Improvements
- **theme:** optimize `VPFooter` and `VPFriends` layout ([#762](https://github.com/pengzhanbo/vuepress-theme-plume/issues/762)) ([6a3babc](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6a3babcf76a67ad161aec24c951fabaf257442c2))
- update deps to latest ([3a907e0](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3a907e0ba8849754bd868b08b67b123d247cdc1d))
# [1.0.0-rc.179](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.178...v1.0.0-rc.179) (2025-11-25)
### Features
- **cli:** add env config to template ([a4bea82](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a4bea8202b96728affdb01887535911d27b9a575))
- **theme:** add `footer` frontmatter ([ddb77a0](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ddb77a06a5bea91593d797ee307fcf2f115dd60b))
- **theme:** add support for `{data-outline="level"}` attribute syntax for headings, close [#757](https://github.com/pengzhanbo/vuepress-theme-plume/issues/757) ([#759](https://github.com/pengzhanbo/vuepress-theme-plume/issues/759)) ([fc3676d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/fc3676d6dcb89ab4f175c8e54d3b61697e0f9233))
- **theme:** exclude encrypt page in llmstxt ([#758](https://github.com/pengzhanbo/vuepress-theme-plume/issues/758)) ([73f4935](https://github.com/pengzhanbo/vuepress-theme-plume/commit/73f4935ca9656a0ce73005995f896a1602e0a63c))
### Performance Improvements
- update deps to latest ([c1f59cf](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c1f59cf4510247eebbfa7d74d4629e9441998928))
# [1.0.0-rc.178](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.177...v1.0.0-rc.178) (2025-11-19)
### Bug Fixes
- **theme:** fix post-list width overflow ([ad1f02d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ad1f02de620d462e59ee832ae224e713772229e8))
### Features
- **theme:** add `plugin-llms` and `<PageContextMenu />` component ([#753](https://github.com/pengzhanbo/vuepress-theme-plume/issues/753)) ([20728f5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/20728f504d2ddba55e4bcca2f7a1b6793fa9ba04))
### Performance Improvements
- update deps to latest ([4884b1a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4884b1acce103c0dc97a2ba204652cb3362b1f42))
# [1.0.0-rc.177](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.176...v1.0.0-rc.177) (2025-11-14)
### Bug Fixes
- **theme:** fix `fixed` position failure in Safari ([4119b67](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4119b67e0bc4adcd88a3b2590debcbcf93dc29bb))
- **theme:** fix table max-width overflow ([05d55e5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/05d55e5035b6f71eca6ef680f68391087960b959))
### Features
- **cli:** typescript as a required dependency ([6fc6385](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6fc6385de4e1eb4ca6477bb08de4fac1dac4fa02))
- **theme:** optimize `VPCollapse` styles within `Card` ([f95e7c8](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f95e7c841270424da23387e3f2283a218052bfba))
- **theme:** when `navbar` is empty, no preset is applied ([ab26dec](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ab26dec4574bf4d280348be5670be6c717ccc159))
### Performance Improvements
- update deps to latest ([5b07f2d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5b07f2dd2132d053de66bc0809bc6838fd78ad77))
# [1.0.0-rc.176](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.175...v1.0.0-rc.176) (2025-11-09)
### Bug Fixes
- **cli:** corrects function call for defining multiple collections ([#748](https://github.com/pengzhanbo/vuepress-theme-plume/issues/748)) ([2fc6ea5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2fc6ea5064031274a7f9e293e507768bc14ec8d4))
- **theme:** conditionally render post navigation links on mobile devices ([#749](https://github.com/pengzhanbo/vuepress-theme-plume/issues/749)) ([b6ee4a4](https://github.com/pengzhanbo/vuepress-theme-plume/commit/b6ee4a4b3dc1d70463cb89bd0e3167338fc5b107))
- **theme:** fix use admin decrypt page error ([a63c094](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a63c094df941f198ece32346f9623c282d0f9b6a))
### Features
- **theme:** optimize page encrypt ([#750](https://github.com/pengzhanbo/vuepress-theme-plume/issues/750)) ([a5dfef7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a5dfef7202e2eb3abf34236de4abc8d2eea41638))
### Performance Improvements
- update deps to latest ([3362056](https://github.com/pengzhanbo/vuepress-theme-plume/commit/336205627e517336c66c5a3558a5608ef632754e))
# [1.0.0-rc.175](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.174...v1.0.0-rc.175) (2025-10-31)
### Bug Fixes
- **theme:** fix auto-sidebar collapsed ([#746](https://github.com/pengzhanbo/vuepress-theme-plume/issues/746)) ([192017b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/192017b892198458f028638279b27ead309b232b))
- **theme:** fix language component not displaying correctly ([19868d1](https://github.com/pengzhanbo/vuepress-theme-plume/commit/19868d147e59a74695c73226f8b061dddd96c8ad))
### Features
- **plugin-md-power:** add `full-width` support for table container, close [#740](https://github.com/pengzhanbo/vuepress-theme-plume/issues/740) ([#741](https://github.com/pengzhanbo/vuepress-theme-plume/issues/741)) ([0e38265](https://github.com/pengzhanbo/vuepress-theme-plume/commit/0e38265f961f73a901f2e3fee6e02e2949bca4c8))
- **theme:** add `dark-veil` home hero effect ([#747](https://github.com/pengzhanbo/vuepress-theme-plume/issues/747)) ([3d48446](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3d48446769ec466c96072dc63019c5ffef6a1c40))
- **theme:** optimize local nav ([fbb6ec9](https://github.com/pengzhanbo/vuepress-theme-plume/commit/fbb6ec9a634ae7a26c16df2a97ea1c16a3a24d46))
### Performance Improvements
- **theme:** cleanup home hero effect when unmounted ([802911c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/802911c1796b29ca0ee154179c91f8f083b50c5e))
- update deps to latest ([606f47a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/606f47a5a68cd6d2842d2892d180d781c47e1b78))
# [1.0.0-rc.174](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.173...v1.0.0-rc.174) (2025-10-25)
### Bug Fixes
- **plugin-md-power:** avoid spellcheck in CodeEditor ([#736](https://github.com/pengzhanbo/vuepress-theme-plume/issues/736)) ([441b991](https://github.com/pengzhanbo/vuepress-theme-plume/commit/441b991b65ccda884f8fa7da33d8088e594507e4))
- **theme:** fix ssr compile error ([be565ba](https://github.com/pengzhanbo/vuepress-theme-plume/commit/be565baf597c94508f00706e88d9a9ba31c89654))
### Features
- **theme:** add home hero effects ([#738](https://github.com/pengzhanbo/vuepress-theme-plume/issues/738)) ([aa6168c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/aa6168c31dd06d7ebbc2085fae06f037cdd2d0bd))
### Performance Improvements
- update deps to latest ([ca39869](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ca3986917cc4e20ce14e7ed414f002667e48f78f))
- update deps to latest ([51e1f52](https://github.com/pengzhanbo/vuepress-theme-plume/commit/51e1f5260cf9a825146e9fb3abcceeca7dc73b48))
# [1.0.0-rc.173](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.172...v1.0.0-rc.173) (2025-10-17)
### Bug Fixes
- **theme:** fix collection type error when the homepage is set as a posts, close [#729](https://github.com/pengzhanbo/vuepress-theme-plume/issues/729) ([#732](https://github.com/pengzhanbo/vuepress-theme-plume/issues/732)) ([0a23b94](https://github.com/pengzhanbo/vuepress-theme-plume/commit/0a23b94232a407eded9cf402702fb81ddd1e1a89))
- **theme:** fix the layout misalignment of the `<VPButton />` fontawesome icon ([1471547](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1471547bcdce4c6ad4ca2e97422a6627d2876bdc))
### Performance Improvements
- update deps to latest ([ded49c4](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ded49c4e8890bcb1bcf920856c72a8ec4a943daf))
# [1.0.0-rc.172](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.171...v1.0.0-rc.172) (2025-10-15)
### Bug Fixes
* **theme:** fix post category sort error ([#727](https://github.com/pengzhanbo/vuepress-theme-plume/issues/727)) ([707d534](https://github.com/pengzhanbo/vuepress-theme-plume/commit/707d534b9579aca35824a3948d6b9f95515171d6))
- **theme:** fix post category sort error ([#727](https://github.com/pengzhanbo/vuepress-theme-plume/issues/727)) ([707d534](https://github.com/pengzhanbo/vuepress-theme-plume/commit/707d534b9579aca35824a3948d6b9f95515171d6))
### Features
* **cli:** sort package.json ([d30325d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d30325dd96983df8153f8a521ba8c8eae01ddad4))
* **theme:** add icon to doc footer prev-next ([#726](https://github.com/pengzhanbo/vuepress-theme-plume/issues/726)) ([4abc1ee](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4abc1eeb5863794f8c729b70c1785a989c021969))
* **theme:** optimize view transition ([#725](https://github.com/pengzhanbo/vuepress-theme-plume/issues/725)) ([1503a20](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1503a20fbe41f5ba73f975ef16a602583b1d8f35))
- **cli:** sort package.json ([d30325d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d30325dd96983df8153f8a521ba8c8eae01ddad4))
- **theme:** add icon to doc footer prev-next ([#726](https://github.com/pengzhanbo/vuepress-theme-plume/issues/726)) ([4abc1ee](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4abc1eeb5863794f8c729b70c1785a989c021969))
- **theme:** optimize view transition ([#725](https://github.com/pengzhanbo/vuepress-theme-plume/issues/725)) ([1503a20](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1503a20fbe41f5ba73f975ef16a602583b1d8f35))
### Performance Improvements
* update deps to latest ([74b4ddf](https://github.com/pengzhanbo/vuepress-theme-plume/commit/74b4ddf8f560cde157c29094d630e4ec98a782c2))
- update deps to latest ([74b4ddf](https://github.com/pengzhanbo/vuepress-theme-plume/commit/74b4ddf8f560cde157c29094d630e4ec98a782c2))
# [1.0.0-rc.171](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.170...v1.0.0-rc.171) (2025-10-13)
### Bug Fixes
* **theme:** fix `fontawesome` icon, close [#720](https://github.com/pengzhanbo/vuepress-theme-plume/issues/720) ([#721](https://github.com/pengzhanbo/vuepress-theme-plume/issues/721)) ([89cb6a5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/89cb6a585aa43b447e35c9c83fc234aa6ef7b368))
* **theme:** fix sidebar link concatenation error ([#722](https://github.com/pengzhanbo/vuepress-theme-plume/issues/722)) ([c476c20](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c476c2059b98590ba2909dcc6186ae656b93e1b9))
- **theme:** fix `fontawesome` icon, close [#720](https://github.com/pengzhanbo/vuepress-theme-plume/issues/720) ([#721](https://github.com/pengzhanbo/vuepress-theme-plume/issues/721)) ([89cb6a5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/89cb6a585aa43b447e35c9c83fc234aa6ef7b368))
- **theme:** fix sidebar link concatenation error ([#722](https://github.com/pengzhanbo/vuepress-theme-plume/issues/722)) ([c476c20](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c476c2059b98590ba2909dcc6186ae656b93e1b9))
### Features
* **plugin-md-power:** add lazy animation mode for mark highlights ([#718](https://github.com/pengzhanbo/vuepress-theme-plume/issues/718)) ([5c0d211](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5c0d211d8223e64a9186ce5f3c7d887e969bbefc))
- **plugin-md-power:** add lazy animation mode for mark highlights ([#718](https://github.com/pengzhanbo/vuepress-theme-plume/issues/718)) ([5c0d211](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5c0d211d8223e64a9186ce5f3c7d887e969bbefc))
# [1.0.0-rc.170](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.169...v1.0.0-rc.170) (2025-10-12)
### Bug Fixes
* **theme:** fix page transition flickering ([#717](https://github.com/pengzhanbo/vuepress-theme-plume/issues/717)) ([8cec3f2](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8cec3f23e4765560424b160ac17891098c8ee97a))
* **theme:** incorrect sidebar link prefix, close [#714](https://github.com/pengzhanbo/vuepress-theme-plume/issues/714), [#710](https://github.com/pengzhanbo/vuepress-theme-plume/issues/710) ([#715](https://github.com/pengzhanbo/vuepress-theme-plume/issues/715)) ([3a07f59](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3a07f590cbed071eaaea6f99703e1791a1794550))
* **theme:** optimize post category styles ([338ca4a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/338ca4ad7c3479a4821f53771e485faaecc0d075))
- **theme:** fix page transition flickering ([#717](https://github.com/pengzhanbo/vuepress-theme-plume/issues/717)) ([8cec3f2](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8cec3f23e4765560424b160ac17891098c8ee97a))
- **theme:** incorrect sidebar link prefix, close [#714](https://github.com/pengzhanbo/vuepress-theme-plume/issues/714), [#710](https://github.com/pengzhanbo/vuepress-theme-plume/issues/710) ([#715](https://github.com/pengzhanbo/vuepress-theme-plume/issues/715)) ([3a07f59](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3a07f590cbed071eaaea6f99703e1791a1794550))
- **theme:** optimize post category styles ([338ca4a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/338ca4ad7c3479a4821f53771e485faaecc0d075))
# [1.0.0-rc.169](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.168...v1.0.0-rc.169) (2025-10-09)
### Bug Fixes
* **theme:** fix post collection links, close [#709](https://github.com/pengzhanbo/vuepress-theme-plume/issues/709) ([#712](https://github.com/pengzhanbo/vuepress-theme-plume/issues/712)) ([b3843c7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/b3843c7d97972acf61840ffc6e2e849da60df814))
- **theme:** fix post collection links, close [#709](https://github.com/pengzhanbo/vuepress-theme-plume/issues/709) ([#712](https://github.com/pengzhanbo/vuepress-theme-plume/issues/712)) ([b3843c7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/b3843c7d97972acf61840ffc6e2e849da60df814))
# [1.0.0-rc.168](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.167...v1.0.0-rc.168) (2025-10-08)
### Bug Fixes
* **theme:** fix I/O race condition causing auto frontmatter not to be written ([3b5e2cc](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3b5e2cc5b3ce11e168c501c3885c4663a5fe49da))
* **theme:** sidebar prefix concat incorrectly ([9f3de6b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9f3de6b8eadfdf95e9d5f47cfcec1320a8adb38a))
- **theme:** fix I/O race condition causing auto frontmatter not to be written ([3b5e2cc](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3b5e2cc5b3ce11e168c501c3885c4663a5fe49da))
- **theme:** sidebar prefix concat incorrectly ([9f3de6b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9f3de6b8eadfdf95e9d5f47cfcec1320a8adb38a))
### Performance Improvements
* update deps to latest ([104370c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/104370ca425ee5478f6485135b2a597abc611f49))
- update deps to latest ([104370c](https://github.com/pengzhanbo/vuepress-theme-plume/commit/104370ca425ee5478f6485135b2a597abc611f49))
# [1.0.0-rc.167](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.166...v1.0.0-rc.167) (2025-10-07)
### Bug Fixes
* **theme:** incorrect configuration loading and page generation sequence ([2e1ad23](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2e1ad231120a40fba5b38e68d7d46ba367fa85f8))
- **theme:** incorrect configuration loading and page generation sequence ([2e1ad23](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2e1ad231120a40fba5b38e68d7d46ba367fa85f8))
# [1.0.0-rc.166](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.165...v1.0.0-rc.166) (2025-10-07)
### Bug Fixes
* **theme:** incorrect collection auto complete ([2a8385f](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2a8385f3aa1c8c2fa1a6de7b99cdf1ae62d8ca57))
- **theme:** incorrect collection auto complete ([2a8385f](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2a8385f3aa1c8c2fa1a6de7b99cdf1ae62d8ca57))
### Features
* **theme:** add collection breaking change log ([b37af47](https://github.com/pengzhanbo/vuepress-theme-plume/commit/b37af47dca080b3f1d6505602f79c86bde08c57b))
- **theme:** add collection breaking change log ([b37af47](https://github.com/pengzhanbo/vuepress-theme-plume/commit/b37af47dca080b3f1d6505602f79c86bde08c57b))
# [1.0.0-rc.165](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.164...v1.0.0-rc.165) (2025-10-07)
### &nbsp;&nbsp;&nbsp;🚨 Breaking Changes
- `blog & notes` is deprecated, use `collections` instead. Please refer to the [migration documentation](https://theme-plume.vuejs.press/blog/dk58a4t2/).
### Feature
- **theme**: Add collections support &nbsp;-&nbsp; by @pengzhanbo in https://github.com/pengzhanbo/vuepress-theme-plume/issues/704 [<samp>(4d236)</samp>](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4d2361a7)
##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.164...v1.0.0-rc.165)
# [1.0.0-rc.164](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.163...v1.0.0-rc.164) (2025-09-20)
### Bug Fixes
@ -846,7 +1133,7 @@
- **theme:** incorrect auto generate sidebar, close [#307](https://github.com/pengzhanbo/vuepress-theme-plume/issues/307) ([#308](https://github.com/pengzhanbo/vuepress-theme-plume/issues/308)) ([b98f46a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/b98f46a9145d915437f34b8617ac77afcab08113))
- **theme:** incorrect layer for `LinkCard` icon, close [#310](https://github.com/pengzhanbo/vuepress-theme-plume/issues/310) ([#313](https://github.com/pengzhanbo/vuepress-theme-plume/issues/313)) ([4237310](https://github.com/pengzhanbo/vuepress-theme-plume/commit/423731056047c59c183f95ac5c545af684ec6039))
- **theme:** incorrect date format, close [#312](https://github.com/pengzhanbo/vuepress-theme-plume/issues/312) ([#314](https://github.com/pengzhanbo/vuepress-theme-plume/issues/314)) ([97b59bf](https://github.com/pengzhanbo/vuepress-theme-plume/commit/97b59bfc76f050ef39a80a68f8176189021406f6))
- **theme:** incorrect time format, close [#312](https://github.com/pengzhanbo/vuepress-theme-plume/issues/312) ([#314](https://github.com/pengzhanbo/vuepress-theme-plume/issues/314)) ([97b59bf](https://github.com/pengzhanbo/vuepress-theme-plume/commit/97b59bfc76f050ef39a80a68f8176189021406f6))
### Performance Improvements
@ -874,7 +1161,7 @@
- **theme:** blog cover hydration mismatch in mobile ([#290](https://github.com/pengzhanbo/vuepress-theme-plume/issues/290)) ([cb9d7f1](https://github.com/pengzhanbo/vuepress-theme-plume/commit/cb9d7f18ede7a0cd4bbc45c5729dd4c8588dc4b7))
- **theme:** incorrect breadcrumb when blog home ([#292](https://github.com/pengzhanbo/vuepress-theme-plume/issues/292)) ([38e6009](https://github.com/pengzhanbo/vuepress-theme-plume/commit/38e6009fda79000f1be351aab4ed1b6dc0f6f2bc))
- **theme:** silent sass `[@import](https://github.com/import)` deprecation warning, close [#291](https://github.com/pengzhanbo/vuepress-theme-plume/issues/291) ([#293](https://github.com/pengzhanbo/vuepress-theme-plume/issues/293)) ([f4cc452](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f4cc4529b8e388969d9e4fcb7b142146cfd03545))
- **theme:** silent sass `@import` deprecation warning, close [#291](https://github.com/pengzhanbo/vuepress-theme-plume/issues/291) ([#293](https://github.com/pengzhanbo/vuepress-theme-plume/issues/293)) ([f4cc452](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f4cc4529b8e388969d9e4fcb7b142146cfd03545))
### Performance Improvements
@ -1154,7 +1441,7 @@
- **theme:** breadcrumb ui ([38eb41a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/38eb41a48d3cd916d8bd965fbd045fdaaf49a47b))
- **theme:** code demo ui ([cc9b5f8](https://github.com/pengzhanbo/vuepress-theme-plume/commit/cc9b5f8a40f502fa4d0fa7400e5807387445ee25))
- **theme:** hidden code block copy button in mobile ([d9c43b5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d9c43b57388cfae4a993a19b5fe6b6b813f4eab9))
- **theme:** optimize `<LinkCard />` ui ([220940b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/220940b2a574761d69269d0c76c6db1a4d33af01))
- **theme:** optimize `<LinkCard /> ui ([220940b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/220940b2a574761d69269d0c76c6db1a4d33af01))
- **theme:** optimize auto frontmatter ([4b2739b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4b2739bff0401e94a4122c2a058daa73edb10b0e))
- **theme:** optimize composables ([c16cf37](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c16cf37dd1724e78a37903a2f2a5c46b3286699a))
- **theme:** optimize load theme config ([047e052](https://github.com/pengzhanbo/vuepress-theme-plume/commit/047e0527f5cbcfb8f2a38369e98265b625e5b381))
@ -1504,12 +1791,6 @@
### Performance Improvements
- **theme:** 重命名 `avatar``profile` ([7e06520](https://github.com/pengzhanbo/vuepress-theme-plume/commit/7e065208a9ab02f3caad55975482a8a063e5c98b))
- **theme:** 重命名所有组件名为 `VP*`
- **theme:** 支持 命名插槽
- **theme:** 支持 组件覆写
- **theme:** 优化模块导出
- **theme:** 优化布局方案
- **theme:** 优化导航栏样式
# [1.0.0-rc.64](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.63...v1.0.0-rc.64) (2024-06-07)
@ -1568,17 +1849,18 @@
### Features
- 调整 plot 语法 为 `!! !!` ([12e607e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/12e607e01cfe18d2fe891a4eab424e06881b7678))
- 移除 externalLink插件 ([3d7199f](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3d7199fe29f6c85568d41f7409664c424b095dad))
- 调整plot 语法 为 `!! !!` ([12e607e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/12e607e01cfe18d2fe891a4eab424e06881b7678))
- 移除 externalLink插件,在主题内实现 ([3d7199f](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3d7199fe29f6c85568d41f7409664c424b095dad))
- 优化 shiki 插件 ([4cdd51a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4cdd51a2c6bf145be83c43e7e2ffd320e1650596))
- 支持友情链接页分组 ([de404b2](https://github.com/pengzhanbo/vuepress-theme-plume/commit/de404b24db653eda8f706911ed83b21b63bd8050))
- upgrade to `vuepress rc12` ([021f46e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/021f46ef3f9157c8a1d8f6cac4db3ab56ffd2990))
### Performance Improvements
- 优化部分正则校验规则 ([5af709a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5af709a7623f698a1630054ee8ffda8f1544b753))
- **theme:** 优化多语言配置结构 ([e358224](https://github.com/pengzhanbo/vuepress-theme-plume/commit/e3582242172a7438cf0b14a5a7c1861c4b7e50e0))
- **theme:** blog bottom padding ([ca383cd](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ca383cdd7dff1a6888dd18cea31a7d5574e800d5))
- upgrade to `vuepress rc12` ([021f46e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/021f46ef3f9157c8a1d8f6cac4db3ab56ffd2990))
- update vuepress to `rc-11` ([bc38fad](https://github.com/pengzhanbo/vuepress-theme-plume/commit/bc38fad18c3465a778fee976acd9d09c02b740a6))
# [1.0.0-rc.56](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.55...v1.0.0-rc.56) (2024-05-10)
@ -1610,7 +1892,7 @@
- supplement content MIT protocol ([1182f3e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1182f3edc0ba27b7a6eb4827158c106918c9f38a))
- update non-major deps ([2127ca4](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2127ca44a8e97c8b018a4ed65e9bc94f3ef4a633))
# [1.0.0-rc.54](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.53...v1.0.0-rc.54) (2024-4-28)
# [1.0.0-rc.54](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.53...v1.0.0-rc.54) (2024-04-28)
### Features
@ -1622,7 +1904,7 @@
- **plugin-md-power:** optimize client config output ([08f0903](https://github.com/pengzhanbo/vuepress-theme-plume/commit/08f090305cb02204dca01650b245a1878aca1b41))
- update non-major deps ([cd2c5d2](https://github.com/pengzhanbo/vuepress-theme-plume/commit/cd2c5d2335085a2621a5e9265f9b3f46c9342ed9))
# [1.0.0-rc.53](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.52...v1.0.0-rc.53) (2024-4-20)
# [1.0.0-rc.53](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.52...v1.0.0-rc.53) (2024-04-20)
### Features
@ -1634,7 +1916,7 @@
- **theme:** 优化 sidebar 数据解析 ([ba721e7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ba721e72f997a07ffcad7eaf5efc36db43066e87))
- update non-major deps to latest ([2eeaf78](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2eeaf78fc53c55a076335b2e466e6156351ac682))
# [1.0.0-rc.52](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.51...v1.0.0-rc.52) (2024-4-17)
# [1.0.0-rc.52](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.51...v1.0.0-rc.52) (2024-04-17)
### Bug Fixes
@ -1651,13 +1933,13 @@
- **theme:** 优化文章列表翻页效果 ([16f7ed6](https://github.com/pengzhanbo/vuepress-theme-plume/commit/16f7ed699b21459b8976760e5d0e93f063538159))
- update non-major deps to latest ([782f607](https://github.com/pengzhanbo/vuepress-theme-plume/commit/782f607dbb2ba6b3b359cddc4844c0ab77630173))
# [1.0.0-rc.51](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.50...v1.0.0-rc.51) (2024-4-15)
# [1.0.0-rc.51](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.50...v1.0.0-rc.51) (2024-04-15)
### Bug Fixes
- **theme:** `base` 导致的 链接跳转错误 [#63](https://github.com/pengzhanbo/vuepress-theme-plume/issues/63) ([9a94890](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9a9489031cb64feb968657b8d4ee1db0794e4ec2))
# [1.0.0-rc.50](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.49...v1.0.0-rc.50) (2024-4-14)
# [1.0.0-rc.50](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.49...v1.0.0-rc.50) (2024-04-14)
### Bug Fixes
@ -1679,7 +1961,7 @@
- update deps to latest ([7f7d382](https://github.com/pengzhanbo/vuepress-theme-plume/commit/7f7d382961f89569d0acb98eb62d8dcabb21e735))
- update vuepress non-major deps ([75c29c1](https://github.com/pengzhanbo/vuepress-theme-plume/commit/75c29c1d6d589de0ebf3ee1c3fb824d492b1847a))
# [1.0.0-rc.49](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.48...v1.0.0-rc.49) (2024-4-4)
# [1.0.0-rc.49](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.48...v1.0.0-rc.49) (2024-04-04)
### Features
@ -1691,7 +1973,7 @@
- **plugin-md-power:** add Loading ([9124f78](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9124f788a3062a518c15d78ce164350e53fb4c9a))
- **plugin-md-power:** codeSandbox button ([20d06c0](https://github.com/pengzhanbo/vuepress-theme-plume/commit/20d06c0de82f54c0b3ffc3161db31c4717a68128))
# [1.0.0-rc.48](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.47...v1.0.0-rc.48) (2024-3-30)
# [1.0.0-rc.48](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.47...v1.0.0-rc.48) (2024-03-30)
### Bug Fixes
@ -1711,7 +1993,7 @@
- update non-major deps ([29ff7bd](https://github.com/pengzhanbo/vuepress-theme-plume/commit/29ff7bdbd8a6d140f025b3cbd75436cd3f2bc7e0))
# [1.0.0-rc.47](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.46...v1.0.0-rc.47) (2024-3-25)
# [1.0.0-rc.47](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.46...v1.0.0-rc.47) (2024-03-25)
### Features
@ -1722,7 +2004,7 @@
- update non-major deps ([6ce7fa6](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6ce7fa6687b36e4299245c58646c0d36dd19f6ab))
# [1.0.0-rc.46](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.45...v1.0.0-rc.46) (2024-3-25)
# [1.0.0-rc.46](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.45...v1.0.0-rc.46) (2024-03-25)
### Bug Fixes
@ -1738,7 +2020,7 @@
- **theme:** 优化sidebar 交互 ([6ce9796](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6ce97965a15f33e342bb69d835c814a7b2f044c3))
- update `vuepress` to `rc.9` ([3cada0b](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3cada0bfd2c33dc49d3fac7b6c2125d23e1a0cb6))
# [1.0.0-rc.45](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.44...v1.0.0-rc.45) (2024-3-18)
# [1.0.0-rc.45](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.44...v1.0.0-rc.45) (2024-03-18)
### Bug Fixes
@ -1756,7 +2038,7 @@
- delete unused types ([8423e6a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8423e6a203b51e2838578c254c8bd14ed80549f6))
# [1.0.0-rc.44](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.43...v1.0.0-rc.44) (2024-3-17)
# [1.0.0-rc.44](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.43...v1.0.0-rc.44) (2024-03-17)
### Performance Improvements
@ -1765,7 +2047,7 @@
- **theme:** 优化右侧边栏交互表现 ([2e39974](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2e39974c54bdee7f128dda1ec258822e546d5a57))
- **theme:** notes list filter ([5c9ae41](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5c9ae4138006f0a2079d709c1099fb2f608beb63))
# [1.0.0-rc.43](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.42...v1.0.0-rc.43) (2024-3-15)
# [1.0.0-rc.43](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.42...v1.0.0-rc.43) (2024-03-15)
### Bug Fixes
@ -1776,7 +2058,7 @@
- **theme:** 博客页无博主信息时布局优化 ([9370464](https://github.com/pengzhanbo/vuepress-theme-plume/commit/9370464cc9fed4740f95dd0b7db749966163347c))
- **theme:** 优化notes链接生成 ([156e5ae](https://github.com/pengzhanbo/vuepress-theme-plume/commit/156e5aef27ff467d74a770f2b0889d79b2c21bc2))
# [1.0.0-rc.42](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.41...v1.0.0-rc.42) (2024-3-13)
# [1.0.0-rc.42](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.41...v1.0.0-rc.42) (2024-03-13)
### Features
@ -1788,7 +2070,7 @@
- 优化代码块、组背景色 ([d0638d5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d0638d5bf457d0426414fac80c29275a99e44267))
- **theme:** 优化预设背景交互流畅度 ([a1fa991](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a1fa99188c7a9ae32328671612db3ee405a0be68))
# [1.0.0-rc.41](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.40...v1.0.0-rc.41) (2024-3-8)
# [1.0.0-rc.41](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.40...v1.0.0-rc.41) (2024-03-08)
### Features
@ -1802,7 +2084,7 @@
- **theme:** 优化分类、标签计算逻辑 ([f2860d9](https://github.com/pengzhanbo/vuepress-theme-plume/commit/f2860d96da519f01491d9b053e55da939209cf9d))
- **theme:** 优化页面布局 ([ee30acb](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ee30acbc15a0e2f69edf09dec53ebd8421626018))
# [1.0.0-rc.40](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.39...v1.0.0-rc.40) (2024-3-3)
# [1.0.0-rc.40](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.39...v1.0.0-rc.40) (2024-03-03)
### Features
@ -1833,7 +2115,7 @@
- **theme:** 对于已使用该功能的用户,需要手动修改文章中的相关链接,以及 md front matter 中的 `permalink` 字段, 删去 `/note`
# [1.0.0-rc.39](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.38...v1.0.0-rc.39) (2024-2-26)
# [1.0.0-rc.39](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.38...v1.0.0-rc.39) (2024-02-26)
### Features
@ -1845,13 +2127,13 @@
- **plugin-shikiji:** add `experiment` type ([205cb13](https://github.com/pengzhanbo/vuepress-theme-plume/commit/205cb1336c2db651390514bc22999d1781adc07b))
- **theme:** 右侧边栏添加 headers 判断控制显示 ([ba899ec](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ba899ec7ca3a454fdf3ca39003a2024080645b76))
# [1.0.0-rc.38](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.37...v1.0.0-rc.38) (2024-2-24)
# [1.0.0-rc.38](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.37...v1.0.0-rc.38) (2024-02-24)
### Bug Fixes
- **plugin-shikiji:** 非 twoslash 代码块 添加 `v-pre` 指令 ([ef64ada](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ef64ada12ff3c6e7c4dbfde1b4291bc16b6f4cec))
# [1.0.0-rc.37](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.36...v1.0.0-rc.37) (2024-2-24)
# [1.0.0-rc.37](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.36...v1.0.0-rc.37) (2024-02-24)
### Features
@ -1863,7 +2145,7 @@
- **plugin-shikiji:** 优化开发时编译速度 ([4d950b7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4d950b7618829d61df64687626420ba3800149c3))
- **theme:** 优化文章页在大屏幕下的表现 ([4adc786](https://github.com/pengzhanbo/vuepress-theme-plume/commit/4adc7862b57a67d129c9e9fc0ea0cf5091769b8c))
# [1.0.0-rc.36](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.35...v1.0.0-rc.36) (2024-2-21)
# [1.0.0-rc.36](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.35...v1.0.0-rc.36) (2024-02-21)
### Features
@ -1877,7 +2159,7 @@
- bump `vuepress` to `rc.8` ([96166b2](https://github.com/pengzhanbo/vuepress-theme-plume/commit/96166b2a4da31b3318635a2cb17992b186fa4634))
- bump shiki to latest ([89c8a0e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/89c8a0e1d5946c769036901fd3649c03fa1fb77a))
# [1.0.0-rc.35](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.34...v1.0.0-rc.35) (2024-2-17)
# [1.0.0-rc.35](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.34...v1.0.0-rc.35) (2024-02-17)
### Bug Fixes
@ -1887,13 +2169,13 @@
- 优化导航栏在不同设备的交互表现 ([16c65da](https://github.com/pengzhanbo/vuepress-theme-plume/commit/16c65daea9812c632872c69e52fe1ed9710e2554))
# [1.0.0-rc.34](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.33...v1.0.0-rc.34) (2024-2-16)
# [1.0.0-rc.34](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.33...v1.0.0-rc.34) (2024-02-16)
### Bug Fixes
- **plugin-baidu-tongji:** 修复错误的在`enhance`中使用 composable api ([040de83](https://github.com/pengzhanbo/vuepress-theme-plume/commit/040de83f5bbc37394fb10a300dbb06de6480662f))
# [1.0.0-rc.33](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.32...v1.0.0-rc.33) (2024-2-16)
# [1.0.0-rc.33](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.32...v1.0.0-rc.33) (2024-02-16)
### Features
@ -1911,7 +2193,7 @@
- **theme:** use vuepress virtual routes ([24261ab](https://github.com/pengzhanbo/vuepress-theme-plume/commit/24261ab269f24bc718beeb686a19f34541fcf251))
- upgrade vuepress to `rc.7` ([e707e9a](https://github.com/pengzhanbo/vuepress-theme-plume/commit/e707e9a057953232190f2963e6ed95c4c4a020be))
# [1.0.0-rc.32](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.31...v1.0.0-rc.32) (2024-2-5)
# [1.0.0-rc.32](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.31...v1.0.0-rc.32) (2024-02-05)
### Features
@ -1933,7 +2215,7 @@
- 优化页面细节上的过渡效果 ([526e8d1](https://github.com/pengzhanbo/vuepress-theme-plume/commit/526e8d13c11dac8bab44dac35f2b608bf3d96b92))
- bump `shiki` ([5210925](https://github.com/pengzhanbo/vuepress-theme-plume/commit/5210925f87b183fbd2cd6012776c84461685fb67))
# [1.0.0-rc.31](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.30...v1.0.0-rc.31) (2024-2-2)
# [1.0.0-rc.31](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.30...v1.0.0-rc.31) (2024-02-02)
### Features
@ -1947,7 +2229,7 @@
- 优化文章标签页 UI ([8d56e98](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8d56e989d4c236c43017a62b7b52ef93e012496f))
- 优化文章归档页 UI ([c1e0c85](https://github.com/pengzhanbo/vuepress-theme-plume/commit/c1e0c854f675ede733c042146c141f72a2efa384))
# [1.0.0-rc.30](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.29...v1.0.0-rc.30) (2024-1-31)
# [1.0.0-rc.30](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.29...v1.0.0-rc.30) (2024-01-31)
### Features
@ -1960,90 +2242,90 @@
- bump comment plugin to latest ([28cfb04](https://github.com/pengzhanbo/vuepress-theme-plume/commit/28cfb044906eaa429fad435fbf20b605a8fc23f6))
- rename `shikiji` to `shiki` ([d087249](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d08724984056510ed2a78f615a2015f80dd48e21))
# [1.0.0-rc.29](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.28...v1.0.0-rc.29) (2024-1-26)
# [1.0.0-rc.29](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.28...v1.0.0-rc.29) (2024-01-26)
### Performance Improvements
- bump `shikiji` to `0.10` ([38bfad7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/38bfad7513a4e16d19de2cdce514fb33adb2894a))
- bump twoslash to `0.10.0` ([1beacde](https://github.com/pengzhanbo/vuepress-theme-plume/commit/1beacde1218e02fa484cee49a453017ea02d7b27))
- bump vuepress to `2.0.0-rc.2` ([81870e0](https://github.com/pengzhanbo/vuepress-theme-plume/commit/81870e0c23a2b711abe263b4b3a2674a926b7f6d))
- bump `husky` to `v9` ([87e0c39](https://github.com/pengzhanbo/vuepress-theme-plume/commit/87e0c3936259e63c15bc8311dc3acb801159a700))
- update `husky` to `v9` ([87e0c39](https://github.com/pengzhanbo/vuepress-theme-plume/commit/87e0c3936259e63c15bc8311dc3acb801159a700))
- update content style ([afb88ee](https://github.com/pengzhanbo/vuepress-theme-plume/commit/afb88ee4be00673905c9d731fd42dba29decd4cd))
# [1.0.0-rc.28](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.27...v1.0.0-rc.28) (2024-1-21)
# [1.0.0-rc.28](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.27...v1.0.0-rc.28) (2024-01-21)
### Features
- update `demo-wrapper` container ([0f8acc3](https://github.com/pengzhanbo/vuepress-theme-plume/commit/0f8acc37dcf28cc1aebc7681880ad0afe77d02e7))
# [1.0.0-rc.27](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.26...v1.0.0-rc.27) (2024-1-16)
# [1.0.0-rc.27](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.26...v1.0.0-rc.27) (2024-01-16)
### Features
- add `demo-wrapper` container support ([7784600](https://github.com/pengzhanbo/vuepress-theme-plume/commit/77846006a54915ac788643328a6b002005cd9d21))
# [1.0.0-rc.26](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.25...v1.0.0-rc.26) (2024-1-16)
# [1.0.0-rc.26](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.25...v1.0.0-rc.26) (2024-01-16)
### Features
- add `demo-wrapper` container support ([7b946d7](https://github.com/pengzhanbo/vuepress-theme-plume/commit/7b946d7b4947401475d911a5593c60b03a839f52))
# [1.0.0-rc.25](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.24...v1.0.0-rc.25) (2024-1-15)
# [1.0.0-rc.25](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.24...v1.0.0-rc.25) (2024-01-15)
### Bug Fixes
- 移动设备下 twoslash 样式兼容问题 ([fd78015](https://github.com/pengzhanbo/vuepress-theme-plume/commit/fd7801518e7996c8b054627c277a775df24869c4))
# [1.0.0-rc.24](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.23...v1.0.0-rc.24) (2024-1-12)
# [1.0.0-rc.24](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.23...v1.0.0-rc.24) (2024-01-12)
### Bug Fixes
- 修复在 windows 下的路径拼接错误 ([e2305cb](https://github.com/pengzhanbo/vuepress-theme-plume/commit/e2305cb337f88b2565851a1155791f658562f3ff))
# [1.0.0-rc.23](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.22...v1.0.0-rc.23) (2024-1-11)
# [1.0.0-rc.23](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.22...v1.0.0-rc.23) (2024-01-11)
### Features
- (试验性)代码高亮支持 twoslash ([d0fdf79](https://github.com/pengzhanbo/vuepress-theme-plume/commit/d0fdf794774d126ab7f5d24fa6de5865498105b2))
# [1.0.0-rc.22](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.21...v1.0.0-rc.22) (2024-1-8)
# [1.0.0-rc.22](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.21...v1.0.0-rc.22) (2024-01-08)
### Bug Fixes
- 修复在最小配置下的预设问题 [#40](https://github.com/pengzhanbo/vuepress-theme-plume/issues/40) ([2dbbc79](https://github.com/pengzhanbo/vuepress-theme-plume/commit/2dbbc79a757a6ea21a01a239414ead137314dcf6))
# [1.0.0-rc.21](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.20...v1.0.0-rc.21) (2024-1-8)
# [1.0.0-rc.21](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.20...v1.0.0-rc.21) (2024-01-08)
### Bug Fixes
- 修复 notes data 插件 路径解析 ([ab798d4](https://github.com/pengzhanbo/vuepress-theme-plume/commit/ab798d4234f912d98da455ecc68793af5ce92cb8))
# [1.0.0-rc.20](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.19...v1.0.0-rc.20) (2024-1-7)
# [1.0.0-rc.20](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.19...v1.0.0-rc.20) (2024-01-07)
### Performance Improvements
- 调整内容容器中代码块在移动设备 UI ([3e5ecad](https://github.com/pengzhanbo/vuepress-theme-plume/commit/3e5ecada8ec48e9833a59e24b79cd4d7cc8dcd78))
- 优化默认导航栏生成 ([6b5fd5d](https://github.com/pengzhanbo/vuepress-theme-plume/commit/6b5fd5d427c0c49ae30a1a5b729ff429481c6cbf))
# [1.0.0-rc.19](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.18...v1.0.0-rc.19) (2024-1-6)
# [1.0.0-rc.19](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.18...v1.0.0-rc.19) (2024-01-06)
### Performance Improvements
- 优化在移动设备的 UI 表现 ([33aaf36](https://github.com/pengzhanbo/vuepress-theme-plume/commit/33aaf369cfb0a621fcbd8705f18f334596fe295b))
# [1.0.0-rc.18](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.17...v1.0.0-rc.18) (2024-1-6)
# [1.0.0-rc.18](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.17...v1.0.0-rc.18) (2024-01-06)
### Performance Improvements
- 优化在移动设备的 UI 表现 ([bc4100e](https://github.com/pengzhanbo/vuepress-theme-plume/commit/bc4100e4a1c9eb52102da6862c44e681f551fa26))
# [1.0.0-rc.17](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.16...v1.0.0-rc.17) (2024-1-6)
# [1.0.0-rc.17](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.16...v1.0.0-rc.17) (2024-01-06)
### Bug Fixes
- docs search ui ([fcbd562](https://github.com/pengzhanbo/vuepress-theme-plume/commit/fcbd562dc3f20e302242c9af122f963582e9d79b))
# [1.0.0-rc.16](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.15...v1.0.0-rc.16) (2024-1-6)
# [1.0.0-rc.16](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.15...v1.0.0-rc.16) (2024-01-06)
### Features
@ -2054,7 +2336,7 @@
- 优化开发模式下 devtools 主题数据预览 ([36aa6c9](https://github.com/pengzhanbo/vuepress-theme-plume/commit/36aa6c99b527e3f90641f770d9c349bda99d805e))
# [1.0.0-rc.15](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.14...v1.0.0-rc.15) (2024-1-5)
# [1.0.0-rc.15](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.14...v1.0.0-rc.15) (2024-01-05)
### Features
@ -2068,7 +2350,7 @@
- 优化 文章列表页侧边栏 UI ([a268b84](https://github.com/pengzhanbo/vuepress-theme-plume/commit/a268b84849a8ed8989c91a5887e97c9a492aaaf1))
- 优化多语言下自动生成页面路径 ([e4e03e0](https://github.com/pengzhanbo/vuepress-theme-plume/commit/e4e03e0ae2a23ce04de84d829777ea21e5aae60f))
# [1.0.0-rc.14](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.13...v1.0.0-rc.14) (2024-1-4)
# [1.0.0-rc.14](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.13...v1.0.0-rc.14) (2024-01-04)
### Features
@ -2080,20 +2362,20 @@
- 优化博客列表页数据逻辑 ([689bde3](https://github.com/pengzhanbo/vuepress-theme-plume/commit/689bde34bbe586b3e2b936093658ae50ac3d05ee))
# [1.0.0-rc.13](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.12...v1.0.0-rc.13) (2024-1-3)
# [1.0.0-rc.13](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.12...v1.0.0-rc.13) (2024-01-03)
### Bug Fixes
- **theme:** build html fail ([8625c68](https://github.com/pengzhanbo/vuepress-theme-plume/commit/8625c6820293b98a6464b1237fc9e3ba108ac6b4))
# [1.0.0-rc.12](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.11...v1.0.0-rc.12) (2024-1-1)
# [1.0.0-rc.12](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.11...v1.0.0-rc.12) (2024-01-01)
### Performance Improvements
- 优化内容容器在移动端的表现效果 ([75c59c5](https://github.com/pengzhanbo/vuepress-theme-plume/commit/75c59c588ccaa7eea5d38e99e335d1928c85277b))
- 优化页面打印布局排版 ([aac83e0](https://github.com/pengzhanbo/vuepress-theme-plume/commit/aac83e0c14cfd5e4e01ee342125bfebe451fe570))
# [1.0.0-rc.11](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.10...v1.0.0-rc.11) (2024-1-1)
# [1.0.0-rc.11](https://github.com/pengzhanbo/vuepress-theme-plume/compare/v1.0.0-rc.10...v1.0.0-rc.11) (2024-01-01)
### Features

111
CLAUDE.md Normal file
View File

@ -0,0 +1,111 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
vuepress-theme-plume is a VuePress 2 theme monorepo for building blogs, documentation, and knowledge bases.
It includes a main theme, several plugins, a CLI tool, and example implementations.
## Commands
```bash
# Install dependencies
pnpm install
# Build all packages (required after clone, outputs to lib/)
pnpm build
# Development - runs theme + docs dev servers concurrently
pnpm dev
# Lint (eslint + stylelint)
pnpm lint
pnpm lint:fix # auto-fix
# Run tests (vitest)
pnpm test
# Run a single test file
pnpm test src/path/to/file.spec.ts
# Run tests related to changed files (for pre-commit)
cross-env TZ=Etc/UTC vitest related --run
# Build docs only
pnpm docs:build
# Serve docs locally
pnpm docs:serve
# Release workflow
pnpm release # runs lint + build + version bump + changelog + git commit
```
## Monorepo Structure
```txt
├── theme/ # Main VuePress theme (vuepress-theme-plume)
├── plugins/ # VuePress plugins
│ ├── plugin-search/ # Full-text fuzzy search
│ ├── plugin-md-power/ # Markdown enhancements
│ └── plugin-fonts/ # Special character font support
├── cli/ # CLI tool (create project scaffolding)
├── docs/ # Documentation site
└── examples/ # Example implementations
├── pure-blog/
└── layout-slots/
```
## Theme Architecture
The theme is organized into three layers:
- **`src/node/`** - Build-time code (runs during `vuepress build/dev`)
- `prepare/` - Content preparation (frontmatter parsing, collection resolution)
- `plugins/` - VuePress plugin registration
- `config/` - Theme configuration handling
- `autoFrontmatter/` - Automatic frontmatter generation
- **`src/client/`** - Client-side code (runs in browser)
- `components/` - Vue components
- `composables/` - Vue composables (outline, search, etc.)
- `styles/` - CSS/SCSS styles
- `features/` - Feature-specific components and logic
- **`src/shared/`** - Shared code (used by both node and client)
- `frontmatter/` - Frontmatter schemas and utilities
- `locale/` - i18n translations
- `options.ts` - Theme options types
- `features/` - Feature flags and shared feature logic
## Build Output
Each package uses [tsdown](https://tsdown.dev/) to compile TypeScript. Build output goes to `lib/`:
- `lib/node/` - Node-side exports
- `lib/client/` - Client-side exports
- `lib/shared/` - Shared exports
The `lib/` directory is gitignored and must be built with `pnpm build`.
## Testing
Tests use Vitest with coverage enabled. Test files are located at `**/__test__/**/*.spec.ts` and are excluded from coverage reports. Run tests with timezone fixed to UTC to ensure consistent results.
## Key Dependencies
- **VuePress**: v2.0.0-rc.28 with @vuepress/bundler-vite
- **Vue**: ^3.5.30
- **Shiki**: ^4.x for syntax highlighting
- **VueUse**: ^14.x for composables
- **markdown-it**: ^14.x for Markdown processing
## Development Notes
- Node.js 20.19.0+ required
- pnpm catalogs are used for dependency management (`dev`, `peer`, `prod`, `vuepress`)
- The theme depends on `vuepress-plugin-md-power` and `@vuepress-plume/plugin-search` as workspace dependencies
- Some peer dependencies are optional (e.g., artplayer, dashjs, three.js)
- Plugins (`plugins/*`) do not have dev commands — changes require `pnpm build` to take effect
- The `lib/` directory is gitignored and must be rebuilt after `pnpm install`

View File

@ -19,7 +19,7 @@ In the `plugins` directory:
Development requirements:
- [Node.js](http://nodejs.org/) version 20.6.0+
- [Node.js](http://nodejs.org/) version 20.19.0+
- [pnpm](https://pnpm.io/zh/) version 9+
Clone the repository and install dependencies:

View File

@ -19,7 +19,7 @@
开发要求:
- [Node.js](http://nodejs.org/) version 20.6.0+
- [Node.js](http://nodejs.org/) version 20.19.0+
- [pnpm](https://pnpm.io/zh/) version 9+
克隆代码仓库,并安装依赖:

View File

@ -4,8 +4,8 @@
| Version | Supported |
| ---------------- | ------------------ |
| >= 1.0.0-rc.170 | :white_check_mark: |
| < 1.0.0-rc.170 | :x: |
| >= 1.0.0-rc.190 | :white_check_mark: |
| < 1.0.0-rc.190 | :x: |
## Reporting a Vulnerability

View File

@ -1,7 +1,7 @@
{
"name": "create-vuepress-theme-plume",
"type": "module",
"version": "1.0.0-rc.173",
"version": "1.0.0-rc.196",
"description": "The cli for create vuepress-theme-plume's project",
"author": "pengzhanbo <q942450674@outlook.com> (https://github.com/pengzhanbo/)",
"license": "MIT",
@ -27,7 +27,7 @@
"templates"
],
"scripts": {
"build": "tsdown"
"build": "tsdown --config-loader unrun"
},
"dependencies": {
"@clack/prompts": "catalog:prod",
@ -40,9 +40,13 @@
"sort-package-json": "catalog:prod"
},
"plume-deps": {
"vuepress": "2.0.0-rc.26",
"vue": "^3.5.22",
"vuepress": "2.0.0-rc.28",
"vue": "^3.5.32",
"http-server": "^14.1.1",
"typescript": "^5.9.3"
},
"publishConfig": {
"access": "public",
"provenance": true
}
}

View File

@ -1,27 +1,86 @@
import type { Bundler, Langs, Options } from './types.js'
/**
* Language options for VuePress configuration
*
* VuePress
*/
export const languageOptions: Options<Langs> = [
{ label: 'English', value: 'en-US' },
{ label: '简体中文', value: 'zh-CN' },
]
/**
* Bundler options for VuePress build tool
*
* VuePress
*/
export const bundlerOptions: Options<Bundler> = [
{ label: 'Vite', value: 'vite' },
{ label: 'Webpack', value: 'webpack' },
]
/**
* Operation mode for VuePress CLI
*
* VuePress CLI
* @readonly
* @enum {number}
*/
export enum Mode {
/**
* Initialize existing directory
*
*
*/
init,
/**
* Create new project
*
*
*/
create,
}
/**
* Deployment type for VuePress site
*
* VuePress
* @readonly
* @enum {string}
*/
export enum DeployType {
/**
* GitHub Pages deployment
*
* GitHub Pages
*/
github = 'github',
/**
* Vercel deployment
*
* Vercel
*/
vercel = 'vercel',
/**
* Netlify deployment
*
* Netlify
*/
netlify = 'netlify',
/**
* Custom deployment
*
*
*/
custom = 'custom',
}
/**
* Deployment options for hosting platforms
*
*
*/
export const deployOptions: Options<DeployType> = [
{ label: 'Custom', value: DeployType.custom },
{ label: 'GitHub Pages', value: DeployType.github },

View File

@ -8,6 +8,15 @@ import { createPackageJson } from './packageJson.js'
import { createRender } from './render.js'
import { getTemplate, readFiles, readJsonFile, writeFiles } from './utils/index.js'
/**
* Generate VuePress project files
*
* VuePress
*
* @param mode - Operation mode (init or create) /
* @param data - Resolved configuration data /
* @param cwd - Current working directory /
*/
export async function generate(
mode: Mode,
data: ResolvedData,
@ -106,6 +115,14 @@ export async function generate(
})
}
/**
* Create documentation files based on configuration
*
*
*
* @param data - Resolved configuration data /
* @returns Array of file objects /
*/
async function createDocsFiles(data: ResolvedData): Promise<File[]> {
const fileList: File[] = []
if (data.multiLanguage) {
@ -131,6 +148,15 @@ async function createDocsFiles(data: ResolvedData): Promise<File[]> {
return updateFileListTarget(fileList, data.docsDir)
}
/**
* Update file list target path
*
*
*
* @param fileList - Array of files /
* @param target - Target directory path /
* @returns Updated file array /
*/
function updateFileListTarget(fileList: File[], target: string): File[] {
return fileList.map(({ filepath, content }) => ({
filepath: path.join(target, filepath),

View File

@ -1,3 +1,15 @@
/**
* VuePress Theme Plume CLI Entry Point
*
* VuePress Theme Plume CLI
*
* This module provides command-line interface for creating and initializing
* VuePress projects with vuepress-theme-plume.
*
* VuePress
*
* @module cli
*/
import cac from 'cac'
import { version } from '../package.json'
import { Mode } from './constants.js'

View File

@ -1,5 +1,10 @@
import type { Locale } from '../types.js'
/**
* English locale configuration for CLI prompts and messages.
*
* CLI
*/
export const en: Locale = {
'question.root': 'Where would you want to initialize VuePress?',
'question.site.name': 'Site Name:',

View File

@ -2,6 +2,15 @@ import type { Langs, Locale } from '../types.js'
import { en } from './en.js'
import { zh } from './zh.js'
/**
* Locale configurations for different languages.
*
*
*
* Maps language codes to their respective locale strings.
*
*
*/
export const locales: Record<Langs, Locale> = {
'zh-CN': zh,
'en-US': en,

View File

@ -1,5 +1,10 @@
import type { Locale } from '../types.js'
/**
* Chinese (Simplified) locale configuration for CLI prompts and messages.
*
* CLI
*/
export const zh: Locale = {
'question.root': '您想在哪里初始化 VuePress',
'question.site.name': '站点名称:',

View File

@ -1,16 +1,41 @@
import type { File, ResolvedData } from './types.js'
import { kebabCase } from '@pengzhanbo/utils'
import { attemptAsync, kebabCase } from '@pengzhanbo/utils'
import spawn from 'nano-spawn'
import _sortPackageJson from 'sort-package-json'
import { Mode } from './constants.js'
import { readJsonFile, resolve } from './utils/index.js'
/**
* Sort package.json fields in a consistent order.
*
* package.json
*
* @param json - Package.json object to sort / package.json
* @returns Sorted package.json object / package.json
*/
function sortPackageJson(json: Record<any, any>) {
return _sortPackageJson(json, {
sortOrder: ['name', 'type', 'version', 'private', 'description', 'packageManager', 'author', 'license', 'scripts', 'devDependencies', 'dependencies', 'pnpm'],
})
}
/**
* Create package.json file for VuePress project
*
* VuePress package.json
*
* @param mode - Operation mode (init or create) /
* @param pkg - Existing package.json data / package.json
* @param data - Resolved configuration data /
* @param data.packageManager - Package manager to use / 使
* @param data.siteName - Site name /
* @param data.siteDescription - Site description /
* @param data.docsDir - Documentation directory path /
* @param data.bundler - Bundler to use / 使
* @param data.injectNpmScripts - Whether to inject npm scripts / npm
*
* @returns File object with package.json content / package.json
*/
export async function createPackageJson(
mode: Mode,
pkg: Record<string, any>,
@ -21,7 +46,6 @@ export async function createPackageJson(
siteDescription,
bundler,
injectNpmScripts,
useTs,
}: ResolvedData,
): Promise<File> {
if (mode === Mode.create) {
@ -31,7 +55,7 @@ export async function createPackageJson(
pkg.description = siteDescription
if (packageManager !== 'npm') {
let version = await getPackageManagerVersion(packageManager)
let [, version] = await attemptAsync(getPackageManagerVersion, packageManager)
if (version) {
if (packageManager === 'yarn' && version.startsWith('1')) {
version = '4.10.3'
@ -47,12 +71,12 @@ export async function createPackageJson(
}
}
const userInfo = await getUserInfo()
const [, userInfo] = await attemptAsync(getUserInfo)
if (userInfo) {
pkg.author = userInfo.username + (userInfo.email ? ` <${userInfo.email}>` : '')
}
pkg.license = 'MIT'
pkg.engines = { node: '^20.6.0 || >=22.0.0' }
pkg.engines = { node: '^20.19.0 || >=22.0.0' }
}
if (injectNpmScripts) {
@ -84,8 +108,7 @@ export async function createPackageJson(
if (!hasDep('vue'))
deps.push('vue')
if (useTs)
deps.push('typescript')
deps.push('typescript')
for (const dep of deps)
pkg.devDependencies[dep] = meta[dep]
@ -96,24 +119,30 @@ export async function createPackageJson(
}
}
/**
* Get user information from git global configuration.
*
* git
*
* @returns User information object with username and email /
* @throws Error if git command fails / git
*/
async function getUserInfo() {
try {
const { output: username } = await spawn('git', ['config', '--global', 'user.name'])
const { output: email } = await spawn('git', ['config', '--global', 'user.email'])
console.log('userInfo', username, email)
return { username, email }
}
catch {
return null
}
const { output: username } = await spawn('git', ['config', '--global', 'user.name'])
const { output: email } = await spawn('git', ['config', '--global', 'user.email'])
return { username, email }
}
/**
* Get the version of a package manager.
*
*
*
* @param pkg - Package manager name (npm, yarn, pnpm) /
* @returns Version string of the package manager /
* @throws Error if package manager command fails /
*/
async function getPackageManagerVersion(pkg: string) {
try {
const { output } = await spawn(pkg, ['--version'])
return output
}
catch {
return null
}
const { output } = await spawn(pkg, ['--version'])
return output
}

View File

@ -2,7 +2,7 @@ import type { Bundler, Langs, PromptResult } from './types.js'
import { createRequire } from 'node:module'
import process from 'node:process'
import { cancel, confirm, group, select, text } from '@clack/prompts'
import { osLocale } from 'os-locale'
import osLocale from 'os-locale'
import { bundlerOptions, deployOptions, DeployType, languageOptions, Mode } from './constants.js'
import { setLang, t } from './translate.js'
@ -10,6 +10,15 @@ const require = createRequire(process.cwd())
const REG_DIR_CHAR = /[<>:"\\|?*[\]]/
/**
* Prompt user for project configuration
*
*
*
* @param mode - Operation mode (init or create) /
* @param root - Optional root directory path /
* @returns Resolved prompt result /
*/
export async function prompt(mode: Mode, root?: string): Promise<PromptResult> {
let hasTs = false
if (mode === Mode.init) {
@ -21,7 +30,7 @@ export async function prompt(mode: Mode, root?: string): Promise<PromptResult> {
const result: PromptResult = await group({
displayLang: async () => {
const locale = await osLocale()
const locale = osLocale()
if (locale === 'zh-CN' || locale === 'zh-Hans') {
setLang('zh-CN')

View File

@ -2,16 +2,33 @@ import type { ResolvedData } from './types.js'
import { kebabCase } from '@pengzhanbo/utils'
import handlebars from 'handlebars'
/**
* Extended resolved data with additional rendering information
*
*
*/
export interface RenderData extends ResolvedData {
/** Project name in kebab-case / 项目名称kebab-case 格式) */
name: string
/** Site name / 网站名称 */
siteName: string
/** Locale configuration array / 语言配置数组 */
locales: { path: string, lang: string, isEn: boolean, prefix: string }[]
/** Whether default language is English / 默认语言是否为英语 */
isEN: boolean
}
handlebars.registerHelper('removeLeadingSlash', (path: string) => path.replace(/^\//, ''))
handlebars.registerHelper('equal', (a: string, b: string) => a === b)
/**
* Create render function with Handlebars template engine
*
* 使 Handlebars
*
* @param result - Resolved configuration data /
* @returns Render function that processes Handlebars templates / Handlebars
*/
export function createRender(result: ResolvedData) {
const data: RenderData = {
...result,

View File

@ -11,6 +11,14 @@ import { prompt } from './prompt.js'
import { t } from './translate.js'
import { getPackageManager } from './utils/index.js'
/**
* Run the CLI workflow for VuePress project initialization or creation
*
* VuePress CLI
*
* @param mode - Operation mode (init or create) /
* @param root - Root directory path /
*/
export async function run(mode: Mode, root?: string): Promise<void> {
intro(colors.cyan('Welcome to VuePress and vuepress-theme-plume !'))
@ -70,6 +78,15 @@ export async function run(mode: Mode, root?: string): Promise<void> {
}
}
/**
* Resolve prompt result into final configuration data.
*
*
*
* @param result - Prompt result from user input /
* @param mode - Operation mode (init or create) /
* @returns Resolved configuration data /
*/
function resolveData(result: PromptResult, mode: Mode): ResolvedData {
return {
...result,

View File

@ -6,6 +6,14 @@ interface Translate {
t: (key: keyof Locale) => string
}
/**
* Create a translate instance with specified language
*
*
*
* @param lang - Language code /
* @returns Translate interface /
*/
function createTranslate(lang?: Langs): Translate {
let current: Langs = lang || 'en-US'
@ -19,5 +27,21 @@ function createTranslate(lang?: Langs): Translate {
const translate = createTranslate()
/**
* Get translated string by key
*
*
*
* @param key - Locale key /
* @returns Translated string /
*/
export const t: Translate['t'] = translate.t
/**
* Set current language
*
*
*
* @param lang - Language code to set /
*/
export const setLang: Translate['setLang'] = translate.setLang

View File

@ -1,57 +1,276 @@
import type { DeployType } from './constants.js'
/**
* Supported language codes for VuePress site
*
* VuePress
*/
export type Langs = 'zh-CN' | 'en-US'
/**
* Locale configuration for CLI prompts and messages
*
* CLI
*/
export interface Locale {
/**
* Question: Project root directory name
*
*
*/
'question.root': string
/**
* Question: Site name
*
*
*/
'question.site.name': string
/**
* Question: Site description
*
*
*/
'question.site.description': string
/**
* Question: Enable multi-language support
*
*
*/
'question.multiLanguage': string
/**
* Question: Default language
*
*
*/
'question.defaultLanguage': string
/**
* Question: Build tool bundler
*
*
*/
'question.bundler': string
/**
* Question: Use TypeScript
*
* 使 TypeScript
*/
'question.useTs': string
/**
* Question: Inject npm scripts
*
* npm
*/
'question.injectNpmScripts': string
/**
* Question: Initialize git repository
*
* git
*/
'question.git': string
/**
* Question: Deployment type
*
*
*/
'question.deploy': string
/**
* Question: Install dependencies
*
*
*/
'question.installDeps': string
/**
* Spinner: Start message
*
*
*/
'spinner.start': string
/**
* Spinner: Stop message
*
*
*/
'spinner.stop': string
/**
* Spinner: Git init message
*
* Git
*/
'spinner.git': string
/**
* Spinner: Install message
*
*
*/
'spinner.install': string
/**
* Spinner: Command hint message
*
*
*/
'spinner.command': string
/**
* Hint: Cancel operation
*
*
*/
'hint.cancel': string
/**
* Hint: Root directory
*
*
*/
'hint.root': string
/**
* Hint: Illegal root directory name
*
*
*/
'hint.root.illegal': string
}
/**
* Package manager types
*
*
*/
export type PackageManager = 'npm' | 'yarn' | 'pnpm'
/**
* Build tool bundler types
*
*
*/
export type Bundler = 'vite' | 'webpack'
/**
* Generic options type for CLI prompts
*
* CLI
*
* @template Value - The value type for options
* @template Label - The label type for options
*/
export type Options<Value = string, Label = string> = { label: Label, value: Value }[]
/**
* File structure for generated project
*
*
*/
export interface File {
/**
* File path relative to project root
*
*
*/
filepath: string
/**
* File content
*
*
*/
content: string
}
/**
* Result from CLI prompts
*
* CLI
*/
export interface PromptResult {
displayLang: string // cli display language
/**
* CLI display language
*
* CLI
*/
displayLang: string
/**
* Project root directory name
*
*
*/
root: string
/**
* Site name
*
*
*/
siteName: string
/**
* Site description
*
*
*/
siteDescription: string
/**
* Build tool bundler
*
*
*/
bundler: Bundler
/**
* Enable multi-language support
*
*
*/
multiLanguage: boolean
/**
* Default language
*
*
*/
defaultLanguage: Langs
/**
* Use TypeScript
*
* 使 TypeScript
*/
useTs: boolean
/**
* Inject npm scripts
*
* npm
*/
injectNpmScripts: boolean
/**
* Deployment type
*
*
*/
deploy: DeployType
/**
* Initialize git repository
*
* git
*/
git: boolean
/**
* Install dependencies
*
*
*/
install: boolean
}
/**
* Resolved data after processing prompts
*
*
*/
export interface ResolvedData extends PromptResult {
/**
* Selected package manager
*
*
*/
packageManager: PackageManager
/**
* Documentation directory name
*
*
*/
docsDir: string
}

View File

@ -2,6 +2,14 @@ import type { File } from '../types.js'
import fs from 'node:fs/promises'
import path from 'node:path'
/**
* Read all files from a directory recursively
*
*
*
* @param root - Root directory path to read from /
* @returns Array of file objects /
*/
export async function readFiles(root: string): Promise<File[]> {
const filepaths = await fs.readdir(root, { recursive: true })
const files: File[] = []
@ -18,6 +26,15 @@ export async function readFiles(root: string): Promise<File[]> {
return files
}
/**
* Write files to target directory
*
*
*
* @param files - Array of file objects to write /
* @param target - Target directory path /
* @param rewrite - Optional function to rewrite file paths /
*/
export async function writeFiles(
files: File[],
target: string,
@ -32,6 +49,14 @@ export async function writeFiles(
}
}
/**
* Read and parse JSON file
*
* JSON
*
* @param filepath - Path to JSON file / JSON
* @returns Parsed JSON object or null if parsing fails / JSON null
*/
export async function readJsonFile<T extends Record<string, any> = Record<string, any>>(filepath: string): Promise<T | null> {
try {
const content = await fs.readFile(filepath, 'utf-8')

View File

@ -1,6 +1,19 @@
import type { PackageManager } from '../types.js'
import process from 'node:process'
/**
* Detect the current package manager from environment variables.
*
* 使
*
* @returns The detected package manager name /
* @example
* // When using pnpm
* const pm = getPackageManager() // returns 'pnpm'
*
* // When using npm
* const pm = getPackageManager() // returns 'npm'
*/
export function getPackageManager(): PackageManager {
const name = process.env?.npm_config_user_agent || 'npm'
return name.split('/')[0] as PackageManager

View File

@ -3,8 +3,24 @@ import { fileURLToPath } from 'node:url'
export const __dirname: string = path.dirname(fileURLToPath(import.meta.url))
/**
* Resolve path relative to the project root
*
*
*
* @param args - Path segments to resolve /
* @returns Resolved absolute path /
*/
export const resolve = (...args: string[]): string => path.resolve(__dirname, '../', ...args)
/**
* Get template directory path
*
*
*
* @param dir - Subdirectory name within templates / templates
* @returns Resolved template directory path /
*/
export const getTemplate = (dir: string): string => resolve('templates', dir)
export * from './fs.js'

View File

@ -117,7 +117,7 @@ const demoDoc = defineCollection({
* (blog 为博客示例,如果不需要博客功能,请删除)
* (demoDoc 为参考示例,如果不需要它,请删除)
*/
export default defineCollection([
export default defineCollections([
blog,
demoDoc,
])

View File

@ -56,13 +56,13 @@ export default defineUserConfig({
/**
* 编译缓存,加快编译速度
* @see https://theme-plume.vuejs.press/config/basic/#cache
* @see https://theme-plume.vuejs.press/config/theme/#cache
*/
cache: 'filesystem',
/**
* 为 markdown 文件自动添加 frontmatter 配置
* @see https://theme-plume.vuejs.press/config/basic/#autofrontmatter
* @see https://theme-plume.vuejs.press/config/theme/#autofrontmatter
*/
// autoFrontmatter: {
// permalink: true, // 是否生成永久链接
@ -82,7 +82,7 @@ export default defineUserConfig({
// provider: 'algolia',
// appId: '',
// apiKey: '',
// indexName: '',
// indices: [''],
// },
/**
@ -120,6 +120,7 @@ export default defineUserConfig({
// jsfiddle: true, // 启用嵌入 jsfiddle 语法 @[jsfiddle](user/id)
// npmTo: true, // 启用 npm-to 容器 ::: npm-to
// demo: true, // 启用 demo 容器 ::: demo
// collapse: true, // 启用折叠容器 ::: collapse
// repl: { // 启用 代码演示容器
// go: true, // ::: go-repl
// rust: true, // ::: rust-repl
@ -176,5 +177,18 @@ export default defineUserConfig({
* @see https://theme-plume.vuejs.press/guide/features/encryption/
*/
// encrypt: {},
/**
* 启用 llmstxt 插件,用于为大语言模型提供更友好的内容
* @see https://theme-plume.vuejs.press/guide/features/llmstxt/
*/
// llmstxt: {
{{#if multiLanguage}}
// locale: '/', // 默认仅为主语言生成 llms 友好内容
// locale: 'all', // 为所有语言生成 llms 友好内容
{{else}}
// locale: '/', // 默认仅为主语言生成 llms 友好内容
{{/if}}
// }
}),
})

View File

@ -20,7 +20,7 @@ import collections from './collections'
{{/if}}
/**
* @see https://theme-plume.vuejs.press/config/basic/
* @see https://theme-plume.vuejs.press/config/theme/
*/
export default defineThemeConfig({
logo: 'https://theme-plume.vuejs.press/plume.png',
@ -52,7 +52,7 @@ export default defineThemeConfig({
{{#unless multiLanguage}}
/**
* @see https://theme-plume.vuejs.press/config/basic/#profile
* @see https://theme-plume.vuejs.press/config/theme/#profile
*/
profile: {
avatar: 'https://theme-plume.vuejs.press/plume.png',
@ -78,7 +78,7 @@ export default defineThemeConfig({
// },
{{/unless}}
/* 过渡动画 @see https://theme-plume.vuejs.press/config/basic/#transition */
/* 过渡动画 @see https://theme-plume.vuejs.press/config/theme/#transition */
// transition: {
// page: true, // 启用 页面间跳转过渡动画
// postList: true, // 启用 博客文章列表过渡动画
@ -90,7 +90,7 @@ export default defineThemeConfig({
{{#each locales}}
'{{ path }}': {
/**
* @see https://theme-plume.vuejs.press/config/basic/#profile
* @see https://theme-plume.vuejs.press/config/theme/#profile
*/
profile: {
avatar: 'https://theme-plume.vuejs.press/plume.png',

View File

@ -56,11 +56,15 @@ jobs:
# Run the build script
{{#unless (equal packageManager "yarn")}}
- name: Build VuePress site
env:
NODE_OPTIONS: --max_old_space_size=8192
run: {{packageManager}} run docs:build
{{/unless}}
{{#if (equal packageManager "yarn")}}
- name: Build VuePress site
uses: borales/actions-yarn@v4
env:
NODE_OPTIONS: --max_old_space_size=8192
with:
cmd: docs:build
{{/if}}

View File

@ -5,7 +5,8 @@ config:
-
type: hero
full: true
background: tint-plate
forceDark: true
effect: lightning
hero:
name: Theme Plume
tagline: VuePress Next Theme

View File

@ -81,7 +81,7 @@ content right
**demo wrapper**
::: demo-wrapper title="Demo" no-padding height="200px"
::: window title="Demo" height="200px"
<style scoped>
.open-door {
display: flex;

View File

@ -5,7 +5,8 @@ config:
-
type: hero
full: true
background: tint-plate
forceDark: true
effect: lightning
hero:
name: Theme Plume
tagline: VuePress Next Theme

View File

@ -95,9 +95,9 @@ H~2~O
- vscode - <Icon name="skill-icons:vscode-dark" size="2em" />
- twitter - <Icon name="skill-icons:twitter" size="2em" />
**demo wrapper**
**示例容器**
::: demo-wrapper title="示例" no-padding height="200px"
::: window title="示例" height="200px"
<style scoped>
.open-door {
display: flex;
@ -137,68 +137,6 @@ const obj = {
}
```
**Code Blocks TwoSlash**
```ts twoslash
// @errors: 2339
const welcome = 'Tudo bem gente?'
const words = welcome.contains(' ')
```
```ts twoslash
import express from 'express'
const app = express()
app.get('/', (req, res) => {
res.send
})
app.listen(3000)
```
```ts twoslash
import { createHighlighter } from 'shiki'
const highlighter = await createHighlighter({ themes: ['nord'], langs: ['javascript'] })
// @log: Custom log message
const a = 1
// @error: Custom error message
const b = 1
// @warn: Custom warning message
const c = 1
// @annotate: Custom annotation message
```
```ts twoslash
// @errors: 2540
interface Todo {
title: string
}
const todo: Readonly<Todo> = {
title: 'Delete inactive users'.toUpperCase(),
// ^?
}
todo.title = 'Hello'
Number.parseInt('123', 10)
// ^|
//
//
```
```vue twoslash
<script setup lang="ts">
import { ref } from 'vue'
const count = ref(0)
</script>
<template>
<p>{{ count }}</p>
</template>
```
**代码分组:**
::: code-tabs

View File

@ -6,6 +6,8 @@
*.jpeg binary
*.ico binary
*.gif binary
*.webp binary
*.tff binary
*.woff binary
*.woff2 binary
*.pdf binary

View File

@ -6,4 +6,5 @@ export default defineConfig({
dts: true,
format: 'esm',
sourcemap: false,
fixedExtension: false,
})

View File

@ -1,8 +1,9 @@
import type { ClientConfig } from 'vuepress/client'
import { defineMermaidConfig } from '@vuepress/plugin-markdown-chart/client'
import { h } from 'vue'
import { defineAsyncComponent, h } from 'vue'
import { Layout } from 'vuepress-theme-plume/client'
import VPPostItem from 'vuepress-theme-plume/components/Posts/VPPostItem.vue'
import PageContextMenu from 'vuepress-theme-plume/features/PageContextMenu.vue'
import { defineClientConfig } from 'vuepress/client'
import AsideNav from '~/components/AsideNav.vue'
import { setupThemeColors } from '~/composables/theme-colors.js'
@ -17,6 +18,7 @@ defineMermaidConfig({
export default defineClientConfig({
enhance({ app }) {
app.component('VPPostItem', VPPostItem)
app.component('TintPlate', defineAsyncComponent(() => import('vuepress-theme-plume/components/background/TintPlate.vue')))
},
setup() {
setupThemeColors()
@ -24,6 +26,7 @@ export default defineClientConfig({
layouts: {
Layout: h(Layout, null, {
'aside-outline-after': () => h(AsideNav),
'doc-title-after': () => h(PageContextMenu),
}),
},
}) as ClientConfig

View File

@ -4,6 +4,9 @@ import { themeGuide } from './theme-guide.js'
import { tools } from './tools.js'
export const enCollections: ThemeCollections = defineCollections([
// 博客
{ type: 'post', dir: '/blog/', link: '/blog/', title: 'Blog' },
// 文档
themeGuide,
themeConfig,
tools,

View File

@ -40,6 +40,7 @@ export const themeConfig: ThemeCollectionItem = defineCollection({
'shiki',
'search',
'reading-time',
'llms',
'markdown-enhance',
'markdown-power',
'markdown-image',

View File

@ -23,6 +23,7 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
},
'sidebar',
'write',
'auto-frontmatter',
'locales',
'deployment',
'optimize-build',
@ -41,18 +42,24 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
items: [
'basic',
'extensions',
'attrs',
'emoji',
'math',
'table',
'icons',
'mark',
'plot',
'abbr',
'annotation',
'container',
'github-alerts',
'card',
'steps',
'file-tree',
'code-tree',
'field',
'tabs',
'qrcode',
'timeline',
'demo-wrapper',
'flex',
@ -61,6 +68,8 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
'caniuse',
'chat',
'include',
'env',
'obsidian',
],
},
{
@ -144,6 +153,7 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
'replace-assets',
'seo',
'sitemap',
'llmstxt',
],
},
{
@ -172,7 +182,7 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
collapsed: false,
prefix: 'custom',
items: [
'home',
{ text: 'Custom Homepage', link: 'home', items: ['home-hero-effect'] },
'style',
'slots',
'component-overrides',

View File

@ -4,6 +4,9 @@ import { themeGuide } from './theme-guide.js'
import { tools } from './tools.js'
export const zhCollections: ThemeCollections = defineCollections([
// 博客
{ type: 'post', dir: '/blog/', link: '/blog/', title: '博客' },
// 文档
themeGuide,
themeConfig,
tools,

View File

@ -40,6 +40,7 @@ export const themeConfig: ThemeCollectionItem = defineCollection({
'shiki',
'search',
'reading-time',
'llms',
'markdown-enhance',
'markdown-power',
'markdown-image',

View File

@ -23,6 +23,7 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
},
'sidebar',
'write',
'auto-frontmatter',
'locales',
'deployment',
'optimize-build',
@ -41,18 +42,24 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
items: [
'basic',
'extensions',
'attrs',
'emoji',
'math',
'table',
'icons',
'mark',
'plot',
'abbr',
'annotation',
'container',
'github-alerts',
'card',
'steps',
'file-tree',
'code-tree',
'field',
'tabs',
'qrcode',
'timeline',
'demo-wrapper',
'flex',
@ -61,6 +68,8 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
'caniuse',
'chat',
'include',
'env',
'obsidian',
],
},
{
@ -144,6 +153,7 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
'replace-assets',
'seo',
'sitemap',
'llmstxt',
],
},
{
@ -172,7 +182,7 @@ export const themeGuide: ThemeCollectionItem = defineCollection({
collapsed: false,
prefix: 'custom',
items: [
'home',
{ text: '自定义首页', link: 'home', items: ['home-hero-effect'] },
'style',
'slots',
'component-overrides',

View File

@ -3,9 +3,7 @@ import fs from 'node:fs'
import path from 'node:path'
import { viteBundler } from '@vuepress/bundler-vite'
import { addViteOptimizeDepsInclude, addViteSsrExternal } from '@vuepress/helper'
import { llmsPlugin } from '@vuepress/plugin-llms'
import { defineUserConfig } from 'vuepress'
import { tocGetter } from './llmstxtTOC.js'
import { theme } from './theme.js'
const pnpmWorkspace = fs.readFileSync(path.resolve(__dirname, '../../pnpm-workspace.yaml'), 'utf-8')
@ -47,16 +45,6 @@ export default defineUserConfig({
'~/composables': path.resolve(__dirname, './themes/composables'),
},
plugins: [
llmsPlugin({
llmsTxtTemplateGetter: {
description: '一个简约易用的,功能丰富的 vuepress 文档&博客 主题',
details: '',
toc: tocGetter,
},
}),
],
bundler: viteBundler(),
shouldPrefetch: false,

View File

@ -1,104 +0,0 @@
import type { LLMPage, LLMState } from '@vuepress/plugin-llms'
import type { ThemeSidebarItem } from 'vuepress-theme-plume'
import { generateTOCLink as rawGenerateTOCLink } from '@vuepress/plugin-llms'
import { ensureEndingSlash, ensureLeadingSlash } from 'vuepress/shared'
import { zhCollections } from './collections/zh/index.js'
function normalizePath(prefix: string, path = ''): string {
if (path.startsWith('/'))
return path
return `${ensureEndingSlash(prefix)}${path}`
}
export function tocGetter(llmPages: LLMPage[], llmState: LLMState): string {
let tableOfContent = ''
const usagePages: LLMPage[] = []
// Blog
tableOfContent += `### 博客\n\n`
const blogList: string[] = []
llmPages.forEach((page) => {
if (page.path.startsWith('/article/') || page.path.startsWith('/blog/')) {
usagePages.push(page)
blogList.push(rawGenerateTOCLink(page, llmState))
}
})
tableOfContent += `${blogList.filter(Boolean).join('')}\n`
const generateTOCLink = (path: string): string => {
const filepath = path.endsWith('/') ? `${path}README.md` : path.endsWith('.md') ? path : `${path || 'README'}.md`
const link = path.endsWith('/') ? `${path}index.html` : `${path}.html`
const page = llmPages.find((item) => {
return ensureLeadingSlash(item.filePathRelative || '') === filepath || link === item.path
})
if (page) {
usagePages.push(page)
return rawGenerateTOCLink(page, llmState)
}
return ''
}
const processAutoSidebar = (prefix: string): string[] => {
const list: string[] = []
llmPages.forEach((page) => {
if (ensureLeadingSlash(page.filePathRelative || '').startsWith(prefix)) {
usagePages.push(page)
list.push(rawGenerateTOCLink(page, llmState))
}
})
return list.filter(Boolean)
}
const processSidebar = (items: (string | ThemeSidebarItem)[], prefix: string): string[] => {
const result: string[] = []
items.forEach((item) => {
if (typeof item === 'string') {
result.push(generateTOCLink(normalizePath(prefix, item)))
}
else {
if (item.link) {
result.push(generateTOCLink(normalizePath(prefix, item.link)))
}
if (item.items === 'auto') {
result.push(...processAutoSidebar(normalizePath(prefix, item.prefix)))
}
else if (item.items?.length) {
result.push(...processSidebar(item.items, normalizePath(prefix, item.prefix)))
}
}
})
return result
}
// Notes
zhCollections
.filter(collection => collection.type === 'doc')
.forEach(({ dir, title, sidebar = [] }) => {
tableOfContent += `### ${title}\n\n`
const prefix = normalizePath(ensureLeadingSlash(dir))
if (sidebar === 'auto') {
tableOfContent += `${processAutoSidebar(prefix).join('')}\n`
}
else if (sidebar.length) {
const home = generateTOCLink(ensureEndingSlash(prefix))
const list = processSidebar(sidebar, prefix)
if (home && !list.includes(home)) {
list.unshift(home)
}
tableOfContent += `${list.join('')}\n`
}
})
// Others
const unUsagePages = llmPages.filter(page => !usagePages.includes(page))
if (unUsagePages.length) {
tableOfContent += '### Others\n\n'
tableOfContent += unUsagePages
.map(page => rawGenerateTOCLink(page, llmState))
.join('')
}
return tableOfContent
}

View File

@ -94,7 +94,7 @@ export const enNavbar: ThemeNavItem[] = defineNavbarConfig([
{
text: `${version}`,
icon: 'codicon:versions',
badge: '',
badge: 'New',
items: [
{ text: 'Changelog', link: '/en/changelog/' },
{ text: 'Contributing', link: '/en/contributing/' },

View File

@ -29,24 +29,12 @@ export default defineThemeConfig({
locales: {
'/': {
// notes: zhNotes,
navbar: zhNavbar,
collections: [
// 博客
{ type: 'post', dir: '/blog/', link: '/blog/', title: '博客' },
// 文档
...zhCollections,
],
collections: zhCollections,
},
'/en/': {
// notes: enNotes,
navbar: enNavbar,
collections: [
// 博客
{ type: 'post', dir: '/blog/', link: '/blog/', title: 'Blog' },
// 文档
...enCollections,
],
collections: enCollections,
},
},

View File

@ -0,0 +1,4 @@
/llms.md /llms.txt 200!
/llms-full.md /llms-full.txt 200!
/en/llms.md /en/llms.txt 200!
/en/llms-full.md /en/llms-full.txt 200!

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 906 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 KiB

View File

@ -18,6 +18,15 @@ export const theme: Theme = plumeTheme({
},
markdown: {
icon: {
provider: 'iconify',
preload: [
// used within <AsideNae />
'tabler:star',
'octicon:issue-opened-16',
'ep:milk-tea',
],
},
chartjs: true,
echarts: true,
markmap: true,
@ -36,6 +45,7 @@ export const theme: Theme = plumeTheme({
imageSize: 'all',
mark: 'lazy',
pdf: true,
qrcode: true,
caniuse: true,
acfun: true,
bilibili: true,
@ -47,6 +57,8 @@ export const theme: Theme = plumeTheme({
codeSandbox: true,
jsfiddle: true,
demo: true,
encrypt: true,
obsidian: true,
npmTo: ['pnpm', 'yarn', 'npm'],
repl: {
go: true,
@ -76,4 +88,16 @@ export const theme: Theme = plumeTheme({
content: 'vuepress-theme-plume',
},
},
llmstxt: {
locale: 'all',
llmsTxtTemplateGetter: {
description: (_, { currentLocale }) => {
return currentLocale === '/'
? '一个简约易用的,功能丰富的 vuepress 文档&博客 主题'
: 'An easy-to-use and feature-rich vuepress documentation and blog theme'
},
details: '',
},
},
})

View File

@ -1,6 +1,6 @@
<script setup lang="ts">
import { computed } from 'vue'
import { VPLink } from 'vuepress-theme-plume/client'
import { VPIcon, VPLink } from 'vuepress-theme-plume/client'
import { useRouteLocale } from 'vuepress/client'
interface Locale {
@ -21,17 +21,17 @@ const locale = computed(() => locales[lang.value])
<template>
<div class="aside-nav-wrapper">
<VPLink class="link" no-icon href="https://github.com/pengzhanbo/vuepress-theme-plume">
<span class="vpi-github-star" />
<VPIcon name="tabler:star" />
<span class="link-text">{{ locale.star }}</span>
<span class="vpi-arrow-right" />
</VPLink>
<VPLink class="link" no-icon href="https://github.com/pengzhanbo/vuepress-theme-plume/issues/new/choose">
<span class="vpi-github-issue" />
<VPIcon name="octicon:issue-opened-16" />
<span class="link-text">{{ locale.issue }}</span>
<span class="vpi-arrow-right" />
</VPLink>
<VPLink class="link" href="/sponsor/">
<span class="vpi-bubble-tea" />
<VPIcon name="ep:milk-tea" />
<span class="link-text">{{ locale.sponsor }}</span>
<span class="vpi-arrow-right" />
</VPLink>
@ -65,15 +65,7 @@ const locale = computed(() => locales[lang.value])
font-size: 12px;
}
.vpi-github-star {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m12 1.5l3.1 6.3l6.9 1l-5 4.8l1.2 6.9l-6.2-3.2l-6.2 3.2L7 13.6L2 8.8l6.9-1z'/%3E%3C/svg%3E");
}
.vpi-github-issue {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M8 9.5a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3'/%3E%3Cpath fill='%23000' d='M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0a6.5 6.5 0 0 0-13 0'/%3E%3C/svg%3E");
}
.vpi-bubble-tea {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m17.95 9l-1.478 8.69c-.25 1.463-.374 2.195-.936 2.631c-1.2.931-6.039.88-7.172 0c-.562-.436-.687-1.168-.936-2.632L5.95 9M6 9l.514-1.286a5.908 5.908 0 0 1 10.972 0L18 9M5 9h14m-7 0l4-7m-5.99 12h.01m1 4h.01m1.99-2h.01'/%3E%3C/svg%3E");
.aside-nav-wrapper :deep([class*=" vpi-"]) {
margin: 0;
}
</style>

View File

@ -35,7 +35,7 @@ const locale = computed(() => LOCALES[routeLocale.value])
const { feature, featureList, onSelect, isFocus } = useCaniuseFeaturesSearch(inputEl, listEl)
const { past, pastList, future, futureList, embedType, embedTypeList } = useCaniuseVersionSelect()
const { output, rendered } = useCaniuse({ feature, embedType, past, future })
const { output } = useCaniuse({ feature, embedType, past, future })
</script>
<template>
@ -63,9 +63,8 @@ const { output, rendered } = useCaniuse({ feature, embedType, past, future })
class="feature-list-item"
@click="onSelect(item)"
@keydown.enter="onSelect(item)"
>
{{ item.label }}
</button>
v-html="item.label"
/>
</li>
</ul>
</div>
@ -80,7 +79,6 @@ const { output, rendered } = useCaniuse({ feature, embedType, past, future })
>
<input :id="`caniuse-embed-${id}-${index}`" v-model="embedType" type="radio" name="embedType" :value="item.value">
<span>{{ item.label }}</span>
<Badge v-if="item.value === 'image'" type="warning" :text="locale['no-recommend']" />
</label>
</div>
</div>
@ -109,8 +107,7 @@ const { output, rendered } = useCaniuse({ feature, embedType, past, future })
<h4>{{ locale.output }}</h4>
<CodeViewer lang="md" :content="output" />
</div>
<div v-if="embedType === 'image'" v-html="rendered" />
<CanIUseViewer v-else-if="feature" :feature="feature" :past="past" :future="future" />
<CanIUseViewer v-if="feature" :feature="feature" :past="past" :future="future" :baseline="embedType === 'baseline'" />
</div>
</template>

View File

@ -1,12 +1,20 @@
<script setup lang="ts">
import type { PlumeThemeHomeHeroTintPlate } from 'vuepress-theme-plume/client'
import { computed, watch } from 'vue'
import InputRange from './InputRange.vue'
const min = 20
const max = 240
const tintPlate = defineModel<PlumeThemeHomeHeroTintPlate>({
interface PlateItem {
value: number
offset: number
}
const tintPlate = defineModel<{
r: PlateItem
g: PlateItem
b: PlateItem
}>({
required: true,
})

View File

@ -28,7 +28,7 @@ defineProps<{
<a :href="demo.url" target="_blank" rel="noopener noreferrer" :aria-label="demo.name" :title="demo.name">{{ demo.name }}</a>
</span>
<a v-if="demo.repo" :href="demo.repo" class="github" target="_blank" rel="noopener noreferrer" :aria-label="`Link to GitHub: ${demo.name}`">
<span class="vpi-social-github" />
<span class="vpi-simple-icons-github" />
</a>
</h3>
<p :title="demo.desc">

View File

@ -0,0 +1,87 @@
<script setup lang="ts">
import { useClipboard } from '@vueuse/core'
import { computed } from 'vue'
const { list } = defineProps<{
list: Record<string, string>
}>()
const emojiList = computed(() => {
return Object.entries(list).map(([key, value]) => ({
source: `:${key}:`,
rendered: value,
}))
})
const { copy, copied, text } = useClipboard()
</script>
<template>
<div class="emoji-wrapper">
<ul>
<li
v-for="{ source, rendered } in emojiList" :key="source"
:class="{ copied: copied && text === source }"
>
<Abbreviation @click="copy(source)">
{{ rendered }}
<template #tooltip>
{{ source }}
</template>
</Abbreviation>
</li>
</ul>
</div>
</template>
<style scoped>
.emoji-wrapper ul {
display: flex;
flex-wrap: wrap;
gap: 8px;
align-items: center;
justify-content: flex-start;
padding: 0;
list-style: none;
}
.emoji-wrapper ul li {
display: flex;
align-items: center;
justify-content: center;
width: 54px;
height: 54px;
margin: 0;
font-size: 28px;
cursor: pointer;
border: solid 1px var(--vp-c-divider);
border-radius: 4px;
transition: border-color var(--vp-t-color);
}
.emoji-wrapper ul li.copied {
position: relative;
border-color: var(--vp-c-brand);
}
.emoji-wrapper ul li.copied::after {
position: absolute;
right: 0;
bottom: 0;
display: inline-block;
width: 14px;
height: 14px;
font-size: 14px;
line-height: 14px;
color: var(--vp-c-success-1);
text-align: center;
vertical-align: -0.125em;
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59z'/%3E%3C/svg%3E");
background-color: var(--vp-c-success-soft);
}
.emoji-wrapper ul li .vp-abbr {
text-decoration: none;
cursor: inherit;
}
</style>

View File

@ -1,5 +1,4 @@
<script setup lang="ts">
import type { PlumeThemeHomeHeroTintPlate } from 'vuepress-theme-plume/client'
import { computed, ref, watch } from 'vue'
import VPHomeHero from 'vuepress-theme-plume/components/Home/VPHomeHero.vue'
import { useDarkMode } from 'vuepress-theme-plume/composables'
@ -10,6 +9,11 @@ import SingleTintPlate from './SingleTintPlate.vue'
import TripletTintPlate from './TripletTintPlate.vue'
type Mode = 'single' | 'triplet' | 'custom'
interface HeroTripletTintPlate {
r: { value: number, offset: number }
g: { value: number, offset: number }
b: { value: number, offset: number }
}
const hero = { name: 'Theme Plume', tagline: 'Next Theme', text: '简约的,功能丰富', actions: [] }
const modeList: { value: Mode, label: string }[] = [
@ -21,7 +25,7 @@ const modeList: { value: Mode, label: string }[] = [
const mode = ref<Mode>('single')
const singleTintPlate = ref<number>(220)
const tripletTintPlate = ref<[number, number, number]>([220, 220, 220])
const customTintPlate = ref<PlumeThemeHomeHeroTintPlate>({
const customTintPlate = ref<HeroTripletTintPlate>({
r: { value: 220, offset: 36 },
g: { value: 220, offset: 36 },
b: { value: 220, offset: 36 },
@ -30,13 +34,13 @@ const customTintPlate = ref<PlumeThemeHomeHeroTintPlate>({
const tintPlate = computed(() => {
switch (mode.value) {
case 'single':
return singleTintPlate.value
return { rgb: singleTintPlate.value }
case 'triplet':
return tripletTintPlate.value.join(',')
return { rgb: tripletTintPlate.value.join(',') }
case 'custom':
return customTintPlate.value
default:
return ''
return { rgb: '' }
}
})
@ -48,11 +52,11 @@ watch(useDarkMode(), (value) => {
const output = computed(() => {
const tint = tintPlate.value
let content = `---\nhome: true\nconfig:\n -\n type: hero\n background: tint-plate\n tintPlate:`
if (typeof tint === 'number' || typeof tint === 'string')
content += ` ${tint}`
if (typeof tint === 'object') {
let content = `---\nhome: true\nconfig:\n -\n type: hero\n effect: tint-plate\n effectConfig:`
if ('rgb' in tint) {
content += ` ${tint.rgb}`
}
else if (typeof tint === 'object') {
content += `
r:
value: ${tint.r.value}
@ -72,9 +76,9 @@ const output = computed(() => {
<template>
<div class="hero-tint-plate-wrapper">
<h4>效果预览</h4>
<div :class="{ dark: isDark }">
<div :data-theme="isDark ? 'dark' : 'light'">
<DemoWrapper>
<VPHomeHero type="hero" background="tint-plate" :tint-plate="tintPlate" :hero="hero" />
<VPHomeHero type="hero" effect="TintPlate" :effect-config="tintPlate" :hero="hero" :index="0" />
</DemoWrapper>
</div>
<p>

View File

@ -34,8 +34,8 @@ const locales: LocaleConfig<
}
const embedTypes: SelectItem[] = [
{ label: 'iframe', value: '' },
{ label: 'image', value: 'image' },
{ label: 'caniuse', value: '' },
{ label: 'baseline', value: 'baseline' },
]
export function useCaniuseVersionSelect(): {
@ -159,18 +159,19 @@ export function useCaniuse({ feature, embedType, past, future }: {
future: Ref<string>
}): {
output: ComputedRef<string>
rendered: ComputedRef<string>
} {
const output = computed(() => {
let content = '@[caniuse'
if (embedType.value)
content += ` ${embedType.value}`
if (past.value !== '-2' || future.value !== '1') {
if (past.value === '0' && future.value === '0')
content += '{0}'
else
content += `{-${past.value},${future.value}}`
if (embedType.value !== 'baseline') {
if (past.value !== '-2' || future.value !== '1') {
if (past.value === '0' && future.value === '0')
content += '{0}'
else
content += `{-${past.value},${future.value}}`
}
}
content += ']('
@ -181,21 +182,5 @@ export function useCaniuse({ feature, embedType, past, future }: {
return `${content})`
})
const rendered = computed(() => {
if (!feature.value || !embedType.value)
return ''
return resolveCanIUse(feature.value)
})
return { output, rendered }
}
function resolveCanIUse(feature: string): string {
const link = 'https://caniuse.bitsofco.de/image/'
const alt = `Data on support for the ${feature} feature across the major browsers from caniuse.com`
return `<p><picture>
<source type="image/webp" srcset="${link}${feature}.webp">
<source type="image/png" srcset="${link}${feature}.png">
<img src="${link}${feature}.jpg" alt="${alt}" width="100%">
</picture></p>`
return { output }
}

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,8 @@ config:
-
type: hero
full: true
background: tint-plate
effect: hyper-speed
forceDark: true
hero:
name: Theme Plume
tagline: VuePress Next Theme

View File

@ -401,7 +401,7 @@ end tell
在代码块里面, `&``<``>` 会自动转成 HTML 实体,这样的方式让你非常容易使用 Markdown 插入范例用的 HTML 原始码,只需要复制粘贴,再加上缩进就可以了,剩下的 Markdown 都会帮你处理,例如:
````md
```
```html
<div class="footer">
&copy; 2004 Foo Corporation
</div>

View File

@ -239,7 +239,7 @@ Shiki 支持多种编程语言。需要做的就是将有效的语言别名附
**输入:**
````
````md
```js
export default {
name: 'MyComponent',
@ -248,7 +248,7 @@ export default {
```
````
````
````md
```html
<ul>
<li v-for="todo in todos" :key="todo.id">
@ -281,7 +281,7 @@ export default {
**输入:**
````
````md
```js{4}
export default {
data () {
@ -313,7 +313,7 @@ export default {
**输入:**
````
````md
```js{1,4,6-8}
export default { // Highlighted
data () {
@ -349,10 +349,10 @@ export default { // Highlighted
**输入:**
````
````md
```js
export default {
data () {
data() {
return {
msg: 'Highlighted!' // [\!code highlight]
}
@ -381,10 +381,10 @@ export default {
**输入:**
````
````md
```js
export default {
data () {
data() {
return {
msg: 'Focused!' // [\!code focus]
}
@ -411,10 +411,10 @@ export default {
**输入:**
````
````md
```js
export default {
data () {
data() {
return {
remove: 'Removed', // [\!code --]
add: 'Added' // [\!code ++]
@ -443,10 +443,10 @@ export default {
**输入:**
````
````md
```js
export default {
data () {
data() {
return {
error: 'Error', // [\!code error]
warning: 'Warning' // [\!code warning]
@ -473,7 +473,7 @@ export default {
**输入:**
````
````md
```ts
export function foo() { // [\!code word:Hello]
const msg = 'Hello World'
@ -495,7 +495,7 @@ export function foo() { // [!code word:Hello]
**输入:**
````
````md
```ts
// [\!code word:options:2]
const options = { foo: 'bar' }
@ -613,7 +613,7 @@ export default config
**输入:**
````
````md
When $a \ne 0$, there are two solutions to $(ax^2 + bx + c = 0)$ and they are
$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$
@ -711,7 +711,7 @@ vuepress-theme-plume 是一个 ==简洁美观== 的 主题
这将为图片添加 一个 名为 `full-width` 的 class 属性,以及一个 `width` 属性,值为 `100%`
```md
![](/plume.png){.full-width width="100%"}
![alt text](/plume.png){.full-width width="100%"}
```
同时也支持其他属性:

View File

@ -3,133 +3,3 @@ title: 示例文章9
createTime: 2024/03/01 22:56:03
permalink: /article/z8zvx0ru/
---
:::go-repl
```go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
}
```
:::
:::go-repl
```go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
for i := 0; i < 10; i++ {
dur := time.Duration(rand.Intn(1000)) * time.Millisecond
fmt.Printf("Sleeping for %v\n", dur)
// Sleep for a random duration between 0-1000ms
time.Sleep(dur)
}
fmt.Println("Done!")
}
```
:::
::: go-repl
```go
package main
import (
"fmt"
"io"
"log"
"net"
"net/http"
"os"
)
func main() {
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, playground")
})
log.Println("Starting server...")
l, err := net.Listen("tcp", "localhost:8080")
if err != nil {
log.Fatal(err)
}
go func() {
log.Fatal(http.Serve(l, nil))
}()
log.Println("Sending request...")
res, err := http.Get("http://localhost:8080/hello")
if err != nil {
log.Fatal(err)
}
log.Println("Reading response...")
if _, err := io.Copy(os.Stdout, res.Body); err != nil {
log.Fatal(err)
}
}
```
:::
::: kotlin-repl
```kotlin
class Contact(val id: Int, var email: String)
fun main(args: Array<String>) {
val contact = Contact(1, "mary@gmail.com")
println(contact.id)
}
```
:::
::: kotlin-repl
```kotlin
fun mul(a: Int, b: Int): Int {
return a * b
}
fun main(args: Array<String>) {
print(mul(-2, 4))
}
```
:::
::: rust-repl
```rust
fn main() {
println!("Hello, world!");
}
```
:::
::: rust-repl
```rust
fn main() {
printlnl!("Hello, world!");
}
```
:::

View File

@ -102,9 +102,9 @@ H~2~O
- vscode - <Icon name="skill-icons:vscode-dark" size="2em" />
- twitter - <Icon name="skill-icons:twitter" size="2em" />
**demo wrapper**
**示例容器**
::: demo-wrapper title="示例" no-padding height="200px"
::: window title="示例" height="200px"
<style scoped>
.open-door {
display: flex;

View File

@ -266,7 +266,7 @@ books:
- 1984:
author: *gOrwell
- animal-farm:
author: *gOrwell
author:*gOrwell
---
```

View File

@ -139,6 +139,30 @@ permalink: /config/frontmatter/basic/
`'deep'``[2, 6]` 相同,将显示从 `<h2>``<h6>` 的所有标题。
::: tip 小技巧
在 markdown 内容的 标题后面,使用属性语法 `{data-outline="level"}` / `{outline="level"}`
可以重新设置当前标题的后代标题的显示的最大级别。
**例如**:
```md /{data-outline="5"}/
## 标题 1 {data-outline="5"} <!-- 仅影响当前标题后代标题 -->
### 三级标题
#### 四级标题
##### 五级标题 <!-- 三四五级标题将显示在侧边栏 -->
###### 六级标题 <!-- 此标题不会显示在侧边栏 -->
## 标题 2 <!-- 同级别的标题不受影响 -->
### 三级标题 <!-- 默认仅显示到三级标题 -->
#### 四级标题 <!-- 四级标题不显示 -->
```
需要注意的是, `level` 的值应该大于当前标题的级别,否则不会生效。
:::
### prev
- 类型: `string | { text: string, link: string, icon?: string }`
@ -227,3 +251,11 @@ permalink: /config/frontmatter/basic/
当类型为 WatermarkOptions 时,表示当前页面水印配置。
可以参考 [watermark-js-plus](https://zhensherlock.github.io/watermark-js-plus/zh/config/) 。
### footer
- 类型: `boolean`
- 默认值: `true`
- 详情:
当前文章是否 显示 页脚信息。

View File

@ -14,6 +14,7 @@ permalink: /config/frontmatter/friends/
---
pageLayout: friends
title: 友情链接
cols: 2
list:
-
name: pengzhanbo
@ -62,13 +63,20 @@ list:
友情链接页的描述
### contentPosition <Badge text="新" />
### contentPosition
- 类型: `'before' | 'after'`
- 默认值: `'after'`
markdown 内容在友情链接列表之前还是之后,默认插入到列表之后。
### cols <Badge text="新" />
- 类型: `number`
- 默认值: `2`
友情链接列表每行最大显示的列数,一般设置为 `2` / `3` 时最佳。
### list
- 类型: `FriendsItem[]`

View File

@ -82,7 +82,7 @@ export default defineUserConfig({
主题提供了 `plume.config.ts` 配置文件,==对该文件的修改支持热更新,无需重启服务=={.tip} ::twemoji:confetti-ball::。
可以在其中配置支持热更新的字段,如 `navbar``profile` 等。
可以在其中配置支持热更新的字段,如 `navbar``profile` 等。
::: tip
这些字段仍可在 VuePress 配置文件的 `theme` 中配置,但主题配置文件的设置最终会合并到主配置中。

View File

@ -6,7 +6,7 @@ permalink: /config/locales/
这些选项用于配置与语言相关的文本。
如果你的站点是以非内置语言支持以外的其他语言提供服务的,你应该为每个语言设置这些选项来提供翻译。
如果您的站点是以非内置语言支持以外的其他语言提供服务的,您应该为每个语言设置这些选项来提供翻译。
## 内置语言支持

View File

@ -149,7 +149,7 @@ export default defineUserConfig({
- **默认值**: `{ provider: 'iconify' }`
- **详情**: 图标配置
[查看 **icon** 使用说明](../../theme/guide/features/icon.md){.read-more}
[查看 **icon** 使用说明](../guide/features/icon.md){.read-more}
### plot

View File

@ -11,7 +11,7 @@ permalink: /config/navigation/
主题默认会自动生成最简单的导航栏配置,仅包括 **首页****文章列表页**
你也可以自己配置导航栏,覆盖默认的的导航栏配置。
您也可以自己配置导航栏,覆盖默认的导航栏配置。
默认配置如下:

104
docs/config/plugins/llms.md Normal file
View File

@ -0,0 +1,104 @@
---
title: LLMs txt
createTime: 2025/11/19 14:48:35
permalink: /config/plugins/llmstxt/
---
## 概述
为站点添加 [llms.txt](https://llmstxt.org/),以提供对 LLM 友好的内容。
**关联插件** [@vuepress/plugin-llms](https://ecosystem.vuejs.press/zh/plugins/ai/llms.html)
## 为什么需要 llms.txt
大型语言模型越来越依赖网站信息,但面临一个关键限制:上下文窗口太小,无法完整处理大多数网站。将包含导航、广告和 JavaScript 的复杂 HTML 页面转换为适合 LLM 的纯文本既困难又不精确。
虽然网站同时为人类读者和 LLM 服务,但后者受益于在一个可访问的位置收集的更简洁、专家级的信息。这对于开发环境等使用案例尤其重要,因为 LLM 需要快速访问编程文档和 API。
向网站添加 `/llms.txt` Markdown 文件,以提供对 LLM 友好的内容。此文件提供了简短的背景信息、指南和指向详细 Markdown 文件的链接。
## 功能
插件通过检索你的文档源目录中的所有 Markdown 文件,并将其转换为 LLM 友好的纯文本文件。
::: file-tree
- .vuepress/dist
- llms.txt
- llms-full.txt
- markdown-examples.html
- markdown-examples.md
- …
:::
点击以下链接查看本文档站点的 llms.txt 文件:
- [llms.txt](/llms.txt){.no-icon}
- [llms-full.txt](/llms-full.txt){.no-icon}
::: tip
插件仅在生产构建时,即执行 `vuepress build` 命令时,生成 `llms.txt` 文件,以及其它 LLM 友好的文档文件,并将它们输出到 `.vuepress/dist` 目录中。
:::
[完整功能说明请查看 **插件官方文档**](https://ecosystem.vuejs.press/zh/plugins/ai/llms.html#%E6%8F%92%E4%BB%B6%E5%8A%9F%E8%83%BD){.read-more}
## 配置
主题默认不启用此功能,你可以通过 `llmstxt` 配置项启用它:
```ts title=".vuepress/config.ts"
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
// 使用主题内置的默认配置
// llmstxt: true,
// 使用自定义配置
llmstxt: {
locale: '/',
// ...其它配置
},
// 也可以在 `plugins.llmstxt` 配置,但不推荐
plugins: {
llmstxt: true
}
}),
})
```
[完整配置项说明请查看 **插件官方文档**](https://ecosystem.vuejs.press/zh/plugins/ai/llms.html#options){.read-more}
## 组件
为进一步增强 文档站点 与 LLMs 的互动,你可以在文档站点中添加 `<PageContextMenu />` 组件。
该组件不作为内置组件,而是主题额外的 `features` 实现,因此你需要手动引入它,
并在合适的位置,通过 [组件插槽](../../guide/custom/slots.md) 添加到文档站点中:
```ts title=".vuepress/client.ts"
import { defineAsyncComponent, h } from 'vue'
import { Layout } from 'vuepress-theme-plume/client'
import PageContextMenu from 'vuepress-theme-plume/features/PageContextMenu.vue' // [!code ++]
import { defineClientConfig } from 'vuepress/client'
export default defineClientConfig({
layouts: {
Layout: h(Layout, null, {
// 将 PageContextMenu 添加到 doc-title-after 插槽,即文章标题的右侧
'doc-title-after': () => h(PageContextMenu), // [!code ++]
}),
},
})
```
你可以在当前页面的标题的右侧,体验该组件的功能。
::: important
此组件完全依赖于 `@vuepress/plugin-llms` 插件,仅当你启用了此插件功能后,才能使用它。
因此,此组件提供的功能 **仅在构建后的生产包中才可用**
:::

View File

@ -82,6 +82,7 @@ interface SearchBoxLocale {
### 启用
```ts title=".vuepress/config.ts" twoslash
// @errors: 2353
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'

View File

@ -13,6 +13,7 @@ permalink: /config/watermark/
## 使用
```ts title=".vuepress/config.ts" twoslash
// @errors: 7006
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'

View File

@ -14,8 +14,7 @@ permalink: /config/theme/
::: warning 该字段不支持在 [主题配置文件 `plume.config.js`](./intro.md#主题配置文件) 中进行配置。
:::
无以上声明的字段,你可以在 `.vuepress/config.ts` 或者 `.vuepress/plume.config.ts` 的任意一个文件中
进行配置,一般情况下建议在 `.vuepress/plume.config.ts` 中进行配置。
无以上声明的字段,您可以在 `.vuepress/config.ts` 或者 `.vuepress/plume.config.ts` 的任意一个文件中进行配置,一般情况下建议在 `.vuepress/plume.config.ts` 中进行配置。
::: warning 已经在一个配置文件中进行配置的字段,尽量不要在另一个配置文件中重复配置
:::
@ -190,8 +189,11 @@ export default defineThemeConfig({
* 是否自动生成 permalink
*
* @default true
* - true: 自动生成 permalink
* - false: 不生成 permalink
* - 'filepath': 根据文件路径生成 permalink
*/
permalink?: boolean
permalink?: boolean | 'filepath'
/**
* 是否自动生成 createTime
@ -392,31 +394,55 @@ export default defineUserConfig({
将作为 图标链接 展示在 导航栏最右侧。
图标可选值:
- `'github'`
- `'gitlab'`
- `'npm'`
- `'docker'`
- `'discord'`
- `'telegram'`
- `'facebook'`
- `'instagram'`
- `'linkedin'`
- `'mastodon'`
- `'slack'`
- `'twitter'`
- `'x'`
- `'youtube'`
- `'juejin'`
- `'stackoverflow'`
- `'qq'`
- `'weibo'`
- `'bilibili'`
- `'zhihu'`
- `'douban'`
- `'steam'`
- `'xbox'`
- `{ svg: string, name?: string }`: 自定义图标,传入 svg 源码字符串,可选 `name` 字段,用于配置 [`navbarSocialInclude`](#navbarsocialinclude)
支持 [Iconify](https://icon-sets.iconify.design/) 任意图标,直接使用 iconify name 即可自动加载。
对于 `simple-icons` 集合下的图标,可以省略 `simple-icons:` 前缀,如 `simple-icons:github` 可以简写为 `github`
常见的社交图标示例:
::: flex
<div style="flex: 1">
- discord ::simple-icons:discord::
- telegram ::simple-icons:telegram::
- facebook ::simple-icons:facebook::
- github ::simple-icons:github::
- instagram ::simple-icons:instagram::
- linkedin ::simple-icons:linkedin::
- mastodon ::simple-icons:mastodon::
- npm ::simple-icons:npm::
- slack ::simple-icons:slack::
- twitter ::simple-icons:twitter::
- x ::simple-icons:x::
- youtube ::simple-icons:youtube::
- bluesky ::simple-icons:bluesky::
- tiktok ::simple-icons:tiktok::
</div><div style="flex: 1">
- qq ::simple-icons:qq::
- weibo ::simple-icons:sinaweibo::
- bilibili ::simple-icons:bilibili::
- gitlab ::simple-icons:gitlab::
- docker ::simple-icons:docker::
- juejin ::simple-icons:juejin::
- zhihu ::simple-icons:zhihu::
- douban ::simple-icons:douban::
- steam ::simple-icons:steam::
- stackoverflow ::simple-icons:stackoverflow::
- xbox ::simple-icons:xbox::
- kuaishou ::simple-icons:kuaishou::
- twitch ::simple-icons:twitch::
- xiaohongshu ::simple-icons:xiaohongshu::
</div>
:::
[您可以在这里查看 **simple-icons** 所有可用图标](https://icon-sets.iconify.design/simple-icons/){.readmore}
如果 **Iconify** 无法满足您的需求,可以传入 `{ svg: string, name?: string }` 格式使用自定义图标,传入 SVG 源码字符串,可选 `name` 字段用于配置 [`navbarSocialInclude`](#navbarsocialinclude)
示例:
@ -424,8 +450,10 @@ export default defineUserConfig({
export default defineUserConfig({
theme: plumeTheme({
social: [
// 使用 iconify name
{ icon: 'github', link: 'https://github.com/zhangsan' },
{
// 使用自定义图标
icon: { svg: '<svg>xxxxx</svg>', name: 'xxx' },
link: 'https://xxx.com'
},

View File

@ -14,5 +14,7 @@
"SherkeyXD",
{ "github": "Kinneyzhang", "name": "Geekinney" },
"huyunan",
{ "github": "Honahec", "name": "HAO CHEN" }
{ "github": "Honahec", "name": "HAO CHEN" },
"gnehs",
{ "github": "dahaha-365", "name": "Dahaha" }
]

View File

@ -28,9 +28,9 @@ docs:
-
name: 哦麦 MC
desc: 我的世界教学文档。
logo: https://static.ohmymc.com/img/minecraft-154749_1280.png?max_width=1920&max_height=1920
logo: https://s.xc.life/img/img/minecraft-154749_1280.png
url: https://ohmymc.com/
preview: https://static.ohmymc.com/img/20241228225159139.png?max_width=1920&max_height=1920
preview: https://s.xc.life/img/img/20241228225159139.png
-
name: NcatBotDocs
desc: NcatBot一个 QQ 机器人框架项目的使用文档。
@ -73,6 +73,32 @@ docs:
url: https://python.yxzl.dev/
repo: https://github.com/yxzlwz/python-doc-web
preview: https://python.yxzl.dev/screenshot.png
-
name: TinyPiXOS
desc: 一款国产自主可控、架构轻量且高度定制化的嵌入式移动设备桌面操作系统!
logo: https://file.tinypixos.com/tinypixos/tplogo.svg
url: https://www.tinypixos.com/
repo: https://github.com/TinyPiXOS/TinyPiXOS
preview: https://file.tinypixos.com/tinypixos/plume_theme_case.jpg
-
name: HEUOpenResource
desc: 哈尔滨工程大学资源共享计划
logo: https://cdn.jsdelivr.net/gh/HEUOpenResource/HEUOpenResource.github.io@main/docs/.vuepress/public/avatar.jpg
url: https://heu.us.kg/
repo: https://github.com/HEUOpenResource/HEUOpenResource.github.io
preview: https://cdn.jsdelivr.net/gh/HEUOpenResource/HEUOpenResource.github.io@main/docs/.vuepress/public/intro.png
-
name: SKYCRAFT 服务器文档
desc: Minecraft服务器SKYCRAFT的文档。
logo: https://official.skycraft.cn/i/3.jpg
url: https://docs.skycraft.cn/
preview: https://bbsimage.skycraft.cn/docs-preview.jpg
-
name: mcenahle Docs
desc: mcenahle 的文档网站。
logo: https://d.mcenahle.cn/images/logo.png
url: https://d.mcenahle.cn/
preview: https://mcenahle.cn/resources/docs-site-preview.jpg
blog:
-
@ -81,7 +107,7 @@ blog:
logo: https://pengzhanbo.cn/images/blogger-fav.png
url: https://pengzhanbo.cn/
repo: https://github.com/pengzhanbo/pengzhanbo.cn
preview: /images/demos/pengzhanbo.jpg
preview: /images/demos/pengzhanbo.webp
-
name: 二猫子
desc: 老老实实的二猫子,从不胡说八道
@ -188,19 +214,19 @@ blog:
repo: https://github.com/XingJi-love/XingJi-blog-plume
preview: https://i.p-i.vip/47/20250407-67f3f1eca1983.png
-
name: Paiad
desc: 种一棵树最好的时间是十年前,其次是现在
logo: https://paiad.online/sunflower.png
url: https://paiad.online
name: 𝑷𝒂𝒊𝒂𝒅
desc: 悲观者永远正确,乐观者永远前行
logo: https://blog.paiad.top/sunflower.png
url: https://blog.paiad.top
repo: https://github.com/paiad
preview: https://paiad.online/paiad-blog.png
preview: https://blog.paiad.top/paiad-blog.png
-
name: 𝙆𝙞𝙖𝙣𝙜
desc: 坚持热爱,奔赴山海
logo: https://haipeng-lin.oss-cn-shenzhen.aliyuncs.com/20250608222708.png
url: https://blog.haipeng-lin.cn/
repo: https://github.com/haipeng-lin
preview: https://haipeng-lin.oss-cn-shenzhen.aliyuncs.com/20250608223536.png
name: 𝙁𝙡𝙖𝙨𝙝
desc: 路漫漫其修远兮,吾将上下而求索
logo: https://haipeng-lin.cn/images/avatar.jpg
url: https://blog.haipeng-lin.cn
repo: https://gitee.com/linhaipengg
preview: https://img.haipeng-lin.cn/index.webp
-
name: PinkDopeyBug
desc: 山难现浮槎,心易陷镜花。
@ -218,10 +244,44 @@ blog:
-
name: 异想之旅
desc: 异想之旅のBlog
logo: https://blog.yxzl.dev/head.png
url: https://blog.yxzl.dev/
logo: https://yxzl.dev/head.png
url: https://yxzl.dev/
repo: https://github.com/yxzlwz/blog
preview: https://blog.yxzl.dev/screenshot.png
preview: https://yxzl.dev/screenshot.png
-
name: Honahec
desc: Honahec's Blog
logo: https://image.honahec.cc/avatar-circle.png
url: https://blog.honahec.cc/
repo: https://github.com/Honahec/blog
preview: https://image.honahec.cc/20251018223321710.png
-
name: Lucas
desc: Ad astra abyssosque.
logo: https://static.lucas04.top/static/favicon/favicon-64.png
url: https://blog.lucas04.top/
repo: https://github.com/lucas0-nhr/lucas04-nhr.github.io
preview: https://static.lucas04.top/static/blog_preview.png
-
name: Kairui's Website
desc: 数学是精确表达思想的艺术。
logo: https://kairui.ca/uoft.svg
url: https://kairui.ca
repo: https://github.com/orderization
preview: https://kairui.ca/img/homepage_demo.png
-
name: 此方的秘密基地
desc: 记录技术与生活的自留地
logo: https://raw.githubusercontent.com/Konata9/pic-base/main/pics/20260126223726455.png
url: https://konata9.cc/
preview: https://raw.githubusercontent.com/Konata9/pic-base/main/pics/20260125225910673.webp
-
name: Esyka
desc: Esyka's Blog
logo: https://www.esyka.top/images/logo.png
url: https://www.esyka.top/
repo: https://github.com/esyka114514
preview: https://www.esyka.top/images/preview.png
---
:::important

View File

@ -1,10 +1,12 @@
---
pageLayout: home
title: Vuepress Theme Plume
config:
-
type: hero
full: true
background: tint-plate
effect: hyper-speed
forceDark: true
hero:
name: Theme Plume
tagline: VuePress Next Theme
@ -36,7 +38,7 @@ config:
-
title: Multi-language
icon: twemoji:balance-scale
details: Built-in support for Chinese/English, and you can customize and add more language support
details: Built-in support for 7 languages including Chinese and English, and you can customize and add more language support
-
title: Dual Color Theme
icon: twemoji:cityscape
@ -56,7 +58,7 @@ config:
-
title: Markdown Enhancement
icon: twemoji:writing-hand-light-skin-tone
details: Supports Markdown syntax, code block grouping, hint containers, task lists, mathematical formulas, code demonstrations, etc.
details: Based on regular markdown syntax, adds dozens of enhanced syntaxes such as custom containers, file trees, code groups, etc.
-
type: image-text
title: Features
@ -68,7 +70,7 @@ config:
description: Add tags, categories, word count, reading time, writing date, and other information to articles.
-
title: Comments
description: Supports 4 comment systems Giscus, Waline, Twikoo, Artalk<br>You can freely choose the comment system that suits your needs.
description: "Supports 4 comment systems: Giscus, Waline, Twikoo, Artalk<br>You can freely choose the comment system that suits your needs."
-
title: Search
description: Supports local search based on minisearch, and also supports Algolia search.
@ -80,7 +82,7 @@ config:
description: Code copying, CodePen demonstration, JSFiddle demonstration, CodeSandbox demonstration, code groups, line highlighting, line focusing, line warnings, difference comparison, code block folding, etc.
-
title: Resource Embedding
description: Chartschart.js/ECharts/Mermaid/flowchart<br>VideosBilibili/Youtube/ArtPlayer<br>PDF, 200K+ Iconify icons
description: "Charts: chart.js/ECharts/Mermaid/flowchart<br>Videos: Bilibili/Youtube/ArtPlayer<br>PDF, 200K+ Iconify icons"
-
type: text-image
title: Blog
@ -115,64 +117,48 @@ config:
<div style="max-width: 960px;margin:0 auto;" class="home-custom-content">
::: center
![GitHub Repo stars](https://img.shields.io/github/stars/pengzhanbo/vuepress-theme-plume)
![npm version](https://img.shields.io/npm/v/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=npm)
![npm downloads](https://img.shields.io/npm/dm/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=downloads)
![npm downloads](https://img.shields.io/npm/dt/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=downloads)
![github license](https://img.shields.io/github/license/pengzhanbo/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A)
![peer dependency](https://img.shields.io/npm/dependency-version/vuepress-theme-plume/peer/vuepress?color=32A9C3&labelColor=1B3C4A)
![codecov](https://codecov.io/gh/pengzhanbo/vuepress-theme-plume/graph/badge.svg?token=W6KYBX7WO5)
![GitHub Repo stars](https://img.shields.io/github/stars/pengzhanbo/vuepress-theme-plume){.no-view}
![npm version](https://img.shields.io/npm/v/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=npm){.no-view}
![npm downloads](https://img.shields.io/npm/dm/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=downloads){.no-view}
![npm downloads](https://img.shields.io/npm/dt/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A&label=downloads){.no-view}
![github license](https://img.shields.io/github/license/pengzhanbo/vuepress-theme-plume?color=32A9C3&labelColor=1B3C4A){.no-view}
![peer dependency](https://img.shields.io/npm/dependency-version/vuepress-theme-plume/peer/vuepress?color=32A9C3&labelColor=1B3C4A){.no-view}
![codecov](https://codecov.io/gh/pengzhanbo/vuepress-theme-plume/graph/badge.svg?token=W6KYBX7WO5){.no-view}
:::
### Installation
### Usage
:::code-tabs
@tab pnpm
Use the following command to quickly create a new ==VuePress== project using this theme.
:::npm-to
```sh
pnpm add vuepress@next vuepress-theme-plume vue
```
@tab npm
```sh
npm install vuepress@next vuepress-theme-plume
```
@tab yarn
```sh
yarn add vuepress@next vuepress-theme-plume
npm create vuepress-theme-plume@latest
```
:::
### Configuration
### Start the project
::: code-tabs
@tab .vuepress/config.ts
::: npm-to
```ts :no-line-numbers
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
// vuepress config...
theme: plumeTheme({
// theme config...
})
})
```sh
npm run docs:dev
```
:::
### Update Log
### Changelog
[Changelog](../changelog)
[Changelog](./changelog)
### Contributors
Thanks to all contributors!
<Contributors :contributors="data" />
</div>

View File

@ -269,7 +269,7 @@ books:
- 1984:
author: *gOrwell
- animal-farm:
author: *gOrwell
author:*gOrwell
---
```

View File

@ -124,8 +124,8 @@ export default defineUserConfig({
'/': {
// Chinese collection configuration // [!code focus:4]
collections: [
{ type: 'post', dir: 'blog', title: '博客' },
{ type: 'doc', dir: 'typescript', title: 'TypeScript笔记', sidebar: 'auto' }
{ type: 'post', dir: 'blog', title: 'Blog' },
{ type: 'doc', dir: 'typescript', title: 'TypeScript Notes', sidebar: 'auto' }
],
},
'/en/': {
@ -150,8 +150,8 @@ export default defineThemeConfig({
'/': {
// Chinese collection configuration // [!code focus:4]
collections: [
{ type: 'post', dir: 'blog', title: '博客' },
{ type: 'doc', dir: 'typescript', title: 'TypeScript笔记', sidebar: 'auto' }
{ type: 'post', dir: 'blog', title: 'Blog' },
{ type: 'doc', dir: 'typescript', title: 'TypeScript Notes', sidebar: 'auto' }
],
},
'/en/': {

View File

@ -138,6 +138,30 @@ Display a badge on the right side of the article title.
`'deep'` is the same as `[2, 6]`, which displays all headings from `<h2>` to `<h6>`.
::: tip Tips
In markdown content, using the attribute syntax `{data-outline="level"}` / `{outline="level"}`
after a heading allows you to reset the maximum display level for descendant headings under the current heading.
**For example**:
```md /{data-outline="5"}/
## Heading 1 {data-outline="5"} <!-- Only affects descendant headings of the current heading -->
### Level 3 Heading
#### Level 4 Heading
##### Level 5 Heading <!-- Level 3, 4, and 5 headings will appear in the sidebar -->
###### Level 6 Heading <!-- This heading will NOT appear in the sidebar -->
## Heading 2 <!-- Headings at the same level are not affected -->
### Level 3 Heading <!-- By default, only up to level 3 headings are shown -->
#### Level 4 Heading <!-- Level 4 headings are not shown -->
```
Note that the value of `level` should be greater than the level of the current heading; otherwise, it will not take effect.
:::
### prev
- Type: `string | { text: string, link: string, icon?: string }`
@ -228,3 +252,11 @@ Display a badge on the right side of the article title.
When the type is WatermarkOptions, it represents the watermark configuration for the current page.
You can refer to [watermark-js-plus](https://zhensherlock.github.io/watermark-js-plus/zh/config/).
### footer
- Type: `boolean`
- Default: `true`
- Details:
Whether to display the footer for the current article.

View File

@ -14,6 +14,7 @@ Example:
---
pageLayout: friends
title: Friends Links
cols: 2
list:
-
name: pengzhanbo
@ -69,6 +70,13 @@ The description of the friends links page.
Whether the markdown content is placed before or after the friends links list. By default, it is inserted after the list.
### cols
- Type: `number`
- Default: `1`
The maximum number of columns displayed per line in the friends link list is generally best set to `2` / `3`.
### list
- Type: `FriendsItem[]`

View File

@ -159,7 +159,7 @@ The `include` configuration is implemented by the
- **Default:** `{ provider: 'iconify' }`
- **Details:** Icon configuration.
[View **icon** usage instructions](../../theme/guide/features/icon.md){.read-more}
[View **icon** usage instructions](../guide/features/icon.md){.read-more}
### plot

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