From 2fe3fc9a0f6722124013c0bec576d8bf0e6b255b Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Tue, 4 Jun 2024 10:19:05 +0800 Subject: [PATCH 01/13] Update blog.config.js update name and some descriptions --- blog.config.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/blog.config.js b/blog.config.js index 12663fcfe84..67719ce58f2 100644 --- a/blog.config.js +++ b/blog.config.js @@ -20,14 +20,14 @@ const BLOG = { // 3.14.1版本后,欢迎语在此配置,英文逗号隔开 , 即可支持多个欢迎语打字效果。 GREETING_WORDS: process.env.NEXT_PUBLIC_GREETING_WORDS || - 'Hi,我是一个程序员, Hi,我是一个打工人,Hi,我是一个干饭人,欢迎来到我的博客🎉', + 'Hi,你要和我一起摸鱼吗', CUSTOM_MENU: process.env.NEXT_PUBLIC_CUSTOM_MENU || false, // 支持Menu 类型,从3.12.0版本起,各主题将逐步支持灵活的二级菜单配置,替代了原来的Page类型,此配置是试验功能、默认关闭。 - AUTHOR: process.env.NEXT_PUBLIC_AUTHOR || 'NotionNext', // 您的昵称 例如 tangly1024 - BIO: process.env.NEXT_PUBLIC_BIO || '一个普通的干饭人🍚', // 作者简介 - LINK: process.env.NEXT_PUBLIC_LINK || 'https://tangly1024.com', // 网站地址 - KEYWORDS: process.env.NEXT_PUBLIC_KEYWORD || 'Notion, 博客', // 网站关键词 英文逗号隔开 + AUTHOR: process.env.NEXT_PUBLIC_AUTHOR || '吨吨吨吨吨', // 您的昵称 例如 tangly1024 + BIO: process.env.NEXT_PUBLIC_BIO || '努力减脂ing🍚', // 作者简介 + LINK: process.env.NEXT_PUBLIC_LINK || 'https://dundun0504.com', // 网站地址 + KEYWORDS: process.env.NEXT_PUBLIC_KEYWORD || 'blog', // 网站关键词 英文逗号隔开 // 社交链接,不需要可留空白,例如 CONTACT_WEIBO:'' CONTACT_EMAIL: process.env.NEXT_PUBLIC_CONTACT_EMAIL || '', // 邮箱地址 例如mail@tangly1024.com @@ -285,12 +285,12 @@ const BLOG = { DIFY_CHATBOT_BASE_URL: process.env.NEXT_PUBLIC_DIFY_CHATBOT_BASE_URL || '', DIFY_CHATBOT_TOKEN: process.env.NEXT_PUBLIC_DIFY_CHATBOT_TOKEN || '', // 悬浮挂件 - WIDGET_PET: process.env.NEXT_PUBLIC_WIDGET_PET || true, // 是否显示宠物挂件 + WIDGET_PET: process.env.NEXT_PUBLIC_WIDGET_PET || false, // 是否显示宠物挂件 WIDGET_PET_LINK: process.env.NEXT_PUBLIC_WIDGET_PET_LINK || 'https://cdn.jsdelivr.net/npm/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json', // 挂件模型地址 @see https://github.com/xiazeyu/live2d-widget-models WIDGET_PET_SWITCH_THEME: - process.env.NEXT_PUBLIC_WIDGET_PET_SWITCH_THEME || true, // 点击宠物挂件切换博客主题 + process.env.NEXT_PUBLIC_WIDGET_PET_SWITCH_THEME || false, // 点击宠物挂件切换博客主题 // 音乐播放插件 MUSIC_PLAYER: process.env.NEXT_PUBLIC_MUSIC_PLAYER || false, // 是否使用音乐播放插件 @@ -355,7 +355,7 @@ const BLOG = { process.env.NEXT_PUBLIC_COMMENT_UTTERRANCES_REPO || '', // 你的代码仓库名, 例如我是 'tangly1024/NotionNext'; 更多文档参考 https://utteranc.es/ // giscus @see https://giscus.app/ - COMMENT_GISCUS_REPO: process.env.NEXT_PUBLIC_COMMENT_GISCUS_REPO || '', // 你的Github仓库名 e.g 'tangly1024/NotionNext' + COMMENT_GISCUS_REPO: process.env.NEXT_PUBLIC_COMMENT_GISCUS_REPO || 'TonyKing0504/NotionBlog', // 你的Github仓库名 e.g 'tangly1024/NotionNext' COMMENT_GISCUS_REPO_ID: process.env.NEXT_PUBLIC_COMMENT_GISCUS_REPO_ID || '', // 你的Github Repo ID e.g ( 設定完 giscus 即可看到 ) COMMENT_GISCUS_CATEGORY_ID: process.env.NEXT_PUBLIC_COMMENT_GISCUS_CATEGORY_ID || '', // 你的Github Discussions 內的 Category ID ( 設定完 giscus 即可看到 ) @@ -380,9 +380,9 @@ const BLOG = { process.env.NEXT_PUBLIC_COMMENT_CUSDIS_SCRIPT_SRC || '/js/cusdis.es.js', // change this if you're using self-hosted version // gitalk评论插件 更多参考 https://gitalk.github.io/ - COMMENT_GITALK_REPO: process.env.NEXT_PUBLIC_COMMENT_GITALK_REPO || '', // 你的Github仓库名,例如 'NotionNext' - COMMENT_GITALK_OWNER: process.env.NEXT_PUBLIC_COMMENT_GITALK_OWNER || '', // 你的用户名 e.g tangly1024 - COMMENT_GITALK_ADMIN: process.env.NEXT_PUBLIC_COMMENT_GITALK_ADMIN || '', // 管理员用户名、一般是自己 e.g 'tangly1024' + COMMENT_GITALK_REPO: process.env.NEXT_PUBLIC_COMMENT_GITALK_REPO || 'NotionBlog', // 你的Github仓库名,例如 'NotionNext' + COMMENT_GITALK_OWNER: process.env.NEXT_PUBLIC_COMMENT_GITALK_OWNER || 'TonyKing0504', // 你的用户名 e.g tangly1024 + COMMENT_GITALK_ADMIN: process.env.NEXT_PUBLIC_COMMENT_GITALK_ADMIN || '吨吨', // 管理员用户名、一般是自己 e.g 'tangly1024' COMMENT_GITALK_CLIENT_ID: process.env.NEXT_PUBLIC_COMMENT_GITALK_CLIENT_ID || '', // e.g 20位ID , 在gitalk后台获取 COMMENT_GITALK_CLIENT_SECRET: From 210b008fb218abacc9be831a56150fd371f3728c Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Tue, 4 Jun 2024 11:10:45 +0800 Subject: [PATCH 02/13] update menu function and favicon --- blog.config.js | 6 +++--- public/favicon.ico | Bin 15406 -> 15086 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blog.config.js b/blog.config.js index 67719ce58f2..ff8d25ed215 100644 --- a/blog.config.js +++ b/blog.config.js @@ -7,9 +7,9 @@ const BLOG = { PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章URL都以 .html 结尾。 NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 5, // 更新内容缓存间隔 单位(秒);即每个页面有5秒的纯静态期、此期间无论多少次访问都不会抓取notion数据;调大该值有助于节省Vercel资源、同时提升访问速率,但也会使文章更新有延迟。 THEME: process.env.NEXT_PUBLIC_THEME || 'simple', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple - THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || false, // 是否显示切换主题按钮 + THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || true, // 是否显示切换主题按钮 LANG: process.env.NEXT_PUBLIC_LANG || 'zh-CN', // e.g 'zh-CN','en-US' see /lib/lang.js for more. - SINCE: process.env.NEXT_PUBLIC_SINCE || 2021, // e.g if leave this empty, current year will be used. + SINCE: process.env.NEXT_PUBLIC_SINCE || 2022, // e.g if leave this empty, current year will be used. APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式 , dark夜间模式, auto根据时间和主题自动夜间模式 APPEARANCE_DARK_TIME: process.env.NEXT_PUBLIC_APPEARANCE_DARK_TIME || [18, 6], // 夜间模式起至时间,false时关闭根据时间自动切换夜间模式 @@ -22,7 +22,7 @@ const BLOG = { process.env.NEXT_PUBLIC_GREETING_WORDS || 'Hi,你要和我一起摸鱼吗', - CUSTOM_MENU: process.env.NEXT_PUBLIC_CUSTOM_MENU || false, // 支持Menu 类型,从3.12.0版本起,各主题将逐步支持灵活的二级菜单配置,替代了原来的Page类型,此配置是试验功能、默认关闭。 + CUSTOM_MENU: process.env.NEXT_PUBLIC_CUSTOM_MENU || true, // 支持Menu 类型,从3.12.0版本起,各主题将逐步支持灵活的二级菜单配置,替代了原来的Page类型,此配置是试验功能、默认关闭。 AUTHOR: process.env.NEXT_PUBLIC_AUTHOR || '吨吨吨吨吨', // 您的昵称 例如 tangly1024 BIO: process.env.NEXT_PUBLIC_BIO || '努力减脂ing🍚', // 作者简介 diff --git a/public/favicon.ico b/public/favicon.ico index 92e7de8ffce12527bfb75119df2c350a65f82959..abf6d17f8244ed2a4ebb0c3aaa7ea60952a9c21e 100644 GIT binary patch literal 15086 zcmeI3d2AF_9LL}8wq082x#_X9Te}qyjKo$&4h1nnJcGd~BnD%^s-Qvr!+2nTa!7)L zT!IqH5hXDiJkW&1Ka4^mYBaIwyiWgPVS6&Vyi>|=eOf9eEt1&U6RBG4>}SLNuGp044f{=UvTn{- zQaNRrl#RMiYM=T<;+wiP^lnf69nij6q;m2L5_#lpeIMGWBRhMRh0n^#FT#Fnj`sHc z(dH5`5o`nNw5qaEdiqKM1goun%>@&Vc(H=_%`UP%#hpH|@Y^a1^9IGu-TNg>4CNeFbO(rU5tptY!DWULWJ!3NZb* z<>>!M*w?czw_8U4oD1Mts-w>f9OL8YAI~Yy7x>&71qSjs+R&g&we=5w4NLY(P1|b{ znemorD-WkW%dD~IaW?*A@cR>3?C2l9>)XGU;>H#RQ&b=zrNbwS_VRHj4cYjQ!|wsG z)X_is;eZKGNU*$CD(-BT(rfOKKyg2b%-WVZAF{?EfBw<_y5~NZnup)euYLW(?AduR)SdLd4*Q+pckmlv3=V?*U_xx#D~|rPl}99e*$u|{?e%9Ry6m86tB%^AH|+Mpz7Dv3{L(j>1pWo~KG^Qe zZKus=paOXH&$$cde8)WS2W&WZ)Z5}#0OyRRZ4J^^aJ5T@pgiZVZe9E3{Rs3~1jM?X zR!y>BRf2FTT{zB$9SIelZ^C`Ej!HR>I&C(tQ(%cyO#|KQ6oYW!Z+-;)2>223BXGe) zfO8kXwZBGiMV=UjdIp11pfr!`gS`cbbpvXj1^AtX-wX1^A=I@Q)PvrncskE|0l%+N zv;F)#_x!o0A5R)H8KumfXZN9Y#$+ex&o<<9i=$7nPOuF0RqR>sx4`!MXD;n2p#JZC z{XMT#*74`NGruJ}ze79qKiBa$*B`jXQwG9Z?@q3HCtH%0erVQKAH(yW*E^cVgHAXrw-K`)K)<>T>9;)t6z6jnd`%!)syBr#mq9f~wb|Ldpg>u4$v6csFz zng_Qyt>;_sg~IDceEYRbM4xGp+9yBKW6gEAlID?moBEGwvuboYF06h&%Ww^%OAkoo z(RU=?amLVwK2?6(GrIop(3^~VIlJdx;q{wsNE*jokZ|QTT`u_D2TX(wW7-b!^jAPgHH-}rh`&6&*k9Jzn2K`;0@AG!&?eqG2{fFy& zZuGbzdfFZ<{rv6c0>Cv~{*Io%h0h0n zqn_;`0Wyoo@eJz*Yy*EsJ2sE-zXjDm#rkOdKgXu~=6(eH2>223BXFJ~Ao|AtH*s^5 y?og_o<>xCk&XP8n#}4Vaaj?Vrb4}+b-5)UgW=i#TS@n-gZRZZN{chuyUj9FYzz5m@ literal 15406 zcmeI350F(=9mnsoZ2v4JYIC5C-PT=LmR;Bd(UJ)qv?vsrnvt5ch6HTOsY#opp$1Yc zgrJPFloZOOX*6a+(W!)jOdOr@Pc@7)WHE^(iI|2HF`)JNzCGvlduQ*x@4UzQRvhol zZ-2jYe*eDb&pr3t^X?`|T~eQn7?HqRlD^?daz>IQEiL`!j<+Vsdg^+5oPKPQ>}*Vu z4s3A2qrVBw2OR<-{3=-KU_hl8;uE zUaFH$HfV-fZEtVybmDJ-KL+3IXsx%QzR%Y?n+=p_cs=qe;m=iM07%0E|5ezwSzGjen@*L_i(KZ?gy_5AI3@Be!o_m2&eFh*6~za>E;3R-7cptB*ZPlJ8Ac5Gn`wn!fA z_*wDXIIJP>UdDQ%$jNKUtYcXrW9v1KE>$l0YTeh~Q8IPkbh=BaFIfk@UA3IJ)1ilH z>z&Mdo+Rm)bh2@_;eC+qlv7KbX5#7I+ePeIIi@8l*~-WHHkT+P3izLd|JC^KgFcT7 zPtuC7;qoQUlknw=84;n5al8nhz0g0P#rQ4=iTZQGSYyYIeS2u9vSL8{Aa*_>^CLmB+v4gG0;Q)p+)_?#;rt@{!x>+AcA=$^@B40+<))RYrpa^pY^&`ytJ;A z@rj;);&#=GNR5=wC?5y_z^}@ zcS_cpn&XwSzGFvnRSei>*)I#ib)$Z7I%<+`97Y5q( zP7@X z51;MOzrpcqSH3QMhsrDC+n0r(J*v*)ZqM_#I&j}04DdVf(|GKl9cO06NB7sKnZUEyPJkIxe}Fy8CyLhkUdv-c-4F8A?bIAeTa z7}uAZo15PNh7B=sWCNb1-dFn*eAmU`S3h|_@GpwZCp*Tg_-^iFc}J%_lqT^<2)n>S^Da*m&SCuEo{jr~hZh=93-kL|*^vJBF2vLFRe3%>{maQ&YIA z#n1lXeKuw}S>xq%rf{7}>s&4hKW$y$V^oWu{?Gl*ENl<>=lYx}T<5FT)Dl1Q;q(w= zUKxCu>p$(${^#mi;-~*}&+NmtFlR4L>33h{@kjl(Fc|ZPdDjzS%qxSxxMq9MhU*;p zD*C@>_?geZ{r`7r%p(@NoscgRx$tg(dN{50Oq33&nww~)_na@-_pke zen;0p==VRy=RmnJ^!mY=|Lnh~`FOFMHt4hCcfW}W(wfMOgF9_pi zmBFfaF-&OJi67tfcf#m^j^pO?q# z$aw?n?Wwe5zpbxS#$Uhhex@*S+@IsXe_2d^avr0tiE+f7m7+jIB|V(YAPz}`4t{!uZHGS&?L*!JJ&61> zd@t8{8Gr3ld!W_mqt6e0PI1?cK5{%QBF=KK6!rtw&dI`^`)#tmV*}3!txq}|7T5UL zdrh(28P`>=jnC5dzHnS!&L~E|yo{|RLNv=j{6?yl< zAE!;1K<@zWfcrP44LXBpE{|trzs=WcqI#eR)Wn za<{dS%v{m`@%&0Qw0j5gRQZN>LsbTz&gVY|uE!uf|CWKXMe7&xQs^M`XW7{E`Juv_ kl^47x~eoCKjl8nA&KNi@(R(!1ohNK7n2PJxF%K!iX From 689f331dd946b4b6ad45dd73e41389a298a30451 Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Mon, 8 Jul 2024 13:38:16 +0800 Subject: [PATCH 03/13] cancel theme switching --- .Rhistory | 0 blog.config.js | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 .Rhistory diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 00000000000..e69de29bb2d diff --git a/blog.config.js b/blog.config.js index 8b493a64b25..62a503ba572 100644 --- a/blog.config.js +++ b/blog.config.js @@ -6,8 +6,8 @@ const BLOG = { '02ab3b8678004aa69e9e415905ef32a5,en:7c1d570661754c8fbc568e00a01fd70e', PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章URL都以 .html 结尾。 NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 5, // 更新内容缓存间隔 单位(秒);即每个页面有5秒的纯静态期、此期间无论多少次访问都不会抓取notion数据;调大该值有助于节省Vercel资源、同时提升访问速率,但也会使文章更新有延迟。 - THEME: process.env.NEXT_PUBLIC_THEME || 'simple', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple - THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || true, // 是否显示切换主题按钮 + THEME: process.env.NEXT_PUBLIC_THEME || 'fukasawa', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple + THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || false, // 是否显示切换主题按钮 LANG: process.env.NEXT_PUBLIC_LANG || 'zh-CN', // e.g 'zh-CN','en-US' see /lib/lang.js for more. SINCE: process.env.NEXT_PUBLIC_SINCE || 2022, // e.g if leave this empty, current year will be used. APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式 , dark夜间模式, auto根据时间和主题自动夜间模式 From 41a85ee9ad2476a003ae7b36749580ac2ed25ed6 Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Thu, 11 Jul 2024 09:37:09 +0800 Subject: [PATCH 04/13] update twikko cdn --- blog.config.js | 2 +- themes/fukasawa/.Rhistory | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 themes/fukasawa/.Rhistory diff --git a/blog.config.js b/blog.config.js index 62a503ba572..9331fb3d5cb 100644 --- a/blog.config.js +++ b/blog.config.js @@ -352,7 +352,7 @@ const BLOG = { process.env.NEXT_PUBLIC_COMMENT_TWIKOO_COUNT_ENABLE || false, // 博客列表是否显示评论数 COMMENT_TWIKOO_CDN_URL: process.env.NEXT_PUBLIC_COMMENT_TWIKOO_CDN_URL || - 'https://cdn.staticfile.net/twikoo/1.6.17/twikoo.min.js', // twikoo客户端cdn + 'https://cdn.staticfile.net/twikoo/1.6.36/twikoo.min.js', // twikoo客户端cdn // utterance COMMENT_UTTERRANCES_REPO: diff --git a/themes/fukasawa/.Rhistory b/themes/fukasawa/.Rhistory new file mode 100644 index 00000000000..e69de29bb2d From f6fcf70fcb96a7f5aeaffd56f21c2ad2bd2b4666 Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Tue, 16 Jul 2024 17:55:51 +0800 Subject: [PATCH 05/13] tiny adjustments change the web icon add contact methods --- blog.config.js | 6 +++--- public/favicon.ico | Bin 15086 -> 270398 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blog.config.js b/blog.config.js index 9331fb3d5cb..b4d707c3a7c 100644 --- a/blog.config.js +++ b/blog.config.js @@ -30,13 +30,13 @@ const BLOG = { KEYWORDS: process.env.NEXT_PUBLIC_KEYWORD || 'blog', // 网站关键词 英文逗号隔开 // 社交链接,不需要可留空白,例如 CONTACT_WEIBO:'' - CONTACT_EMAIL: process.env.NEXT_PUBLIC_CONTACT_EMAIL || '', // 邮箱地址 例如mail@tangly1024.com + CONTACT_EMAIL: process.env.NEXT_PUBLIC_CONTACT_EMAIL || 'tony.jt2001@gmail.com', // 邮箱地址 例如mail@tangly1024.com CONTACT_WEIBO: process.env.NEXT_PUBLIC_CONTACT_WEIBO || '', // 你的微博个人主页 CONTACT_TWITTER: process.env.NEXT_PUBLIC_CONTACT_TWITTER || '', // 你的twitter个人主页 - CONTACT_GITHUB: process.env.NEXT_PUBLIC_CONTACT_GITHUB || '', // 你的github个人主页 例如 https://github.com/tangly1024 + CONTACT_GITHUB: process.env.NEXT_PUBLIC_CONTACT_GITHUB || 'https://github.com/TonyKing0504', // 你的github个人主页 例如 https://github.com/tangly1024 CONTACT_TELEGRAM: process.env.NEXT_PUBLIC_CONTACT_TELEGRAM || '', // 你的telegram 地址 例如 https://t.me/tangly_1024 CONTACT_LINKEDIN: process.env.NEXT_PUBLIC_CONTACT_LINKEDIN || '', // 你的linkedIn 首页 - CONTACT_INSTAGRAM: process.env.NEXT_PUBLIC_CONTACT_INSTAGRAM || '', // 您的instagram地址 + CONTACT_INSTAGRAM: process.env.NEXT_PUBLIC_CONTACT_INSTAGRAM || 'https://www.instagram.com/dundundundundun0504/', // 您的instagram地址 CONTACT_BILIBILI: process.env.NEXT_PUBLIC_CONTACT_BILIBILI || '', // B站主页 CONTACT_YOUTUBE: process.env.NEXT_PUBLIC_CONTACT_YOUTUBE || '', // Youtube主页 CONTACT_XIAOHONGSHU: process.env.NEXT_PUBLIC_CONTACT_XIAOHONGSHU || '', // 小红书主页 diff --git a/public/favicon.ico b/public/favicon.ico index abf6d17f8244ed2a4ebb0c3aaa7ea60952a9c21e..6d5ad23892e90514ca55e76c3a88d83fa4e3f166 100644 GIT binary patch literal 270398 zcmeI536vDo*@iJu0XKqzf}(LjWfPUS#Gn`ySp_tLaRCh|vYe?w+2Ww>ZVEuBp0p>*;>K zyMMPqgDp1vW80#^o(MZN_Nh~+ z#&^5to_oTFAAVRPUcT7`%83AZ;}>6i5w5)Q%FwW3!|>Iwel_k}ZnpSnlJ8ZSp zR$=R{w+AS236HlQwPUujkP(LLwB@r`eUMT-^%*}8K6 z4*hN>P*noxLfZKApZ^@b{q1jO$^g<-T?&=w6L#vc(-!yLU}V9s#s3jjUa} zHjElIDr~>~_OTs6W$9AYzuNj}?`zbkQ8?|i)55Z4%cAzHN5glSK>Z_t4Pa-Zt^Af- zZVCJCx8Fu>fy!S?$ri{y?Xkxm;kxUt3m<&&L3{_jOZ?#fOuz&xB#_iTKpEiKFh?kvbu~QbIPyg0iZw<6nV5^kI>b;@wG655) zhydE6Of8L39(d}hr^4vbqr(9Q91zO{=v4Y7tf>u1$F_A2D;qxY70#zp<-78cK=xxoKHDSh#8R5bUFAQC}bP26mwF-?JH;(#G zYdD)tP~M)lAB;zC(V|5x-=BBhdEvhM?h7kdt_=VD=Rf1)m6mLw(nrYOZ5NV6d~5>w zCqVgN-MV#Q$&w|pt$=p;VZ(;Sa{7)t?ikAko6|pK`lF9NI<_^A8#gZ8d+)t*+#X|- zYch5R?Q75fTRTP*sJ{d%%X_g2Z@>L^=-Rbwh5D!6fN}!$2*x0*JTI!!F3+mYruzx2 z8%K4X>w8R~J`j)%kiL?idH=ut?Qh|@tFvGR;^kU?TXIj8kes#0TZYh0rXE>{pQ*PmH$isRefSo^Vkd82nd%hT^fG$qaTIU zt5?U*RgKrzn}7+_j6h}jR~sSa|9t2lTR{2Y$tRx-j8~XGeR}-NIp_a1`!0RA2~?Fp zW%^gUe@*qTbTRgK!h{K7uf6t){gaGiR(-j9|LC87#fKk$I1CyzD2@{%9{l_<_gB8YC>wY)0TZY_ z0_eY6w{DsCf9X9P;;TpH^@>u9uj2Xh=ZCAWzB(LvA9d?NE5*K+teoUF8z@{=n zMREDO37A0P2uOcu_LyUii8{p>FXQ}}r%!)B{esLbzUr#0;+THQ^2zP*fB$<}wW06+ zvBw?@mtTH)ydIt7=R;!&$@7mo>Zmvd8DGZUOuz(cp8)!&{EhyvzyA7|H#2we*=L`P zzIhneyMF!p*jLZBX!o6W-U%YN_g&tv{qNl=sJ{fzu{P!ZX-%Se%K7*jee}^s!{o`6!zGto63{xndUxAxx7dE4 ztRG18=$P+UhD;N62CVSFoD`5kkme@VD1ii`{R#49`k4V z;r88k-{>De{p2S<3E%tP_hOl!{y%RfU;?E@fbu?hKl;S~ zCS`cEpDgEdOdI_vr<@Xf^)Z)M_r3DUE8(uY?h0eZj0wjde|+fBp+g+Ai~nx!Bd+%C z+gE%3Z)wqTYD}QK2%ux;*WvG%{~?UMhK-=BQ)$+1pAIi3xB!F{yZ4;(l!b07C= zm-hKwlli~pMcZ#<0;NZQ{G0LiXjVJAWenbwDN|y-fK;P-cFoVFj-MR=uX~fB^O?a%~Dj{x&;=(Cgd z(f^)%?iuFHnNw+E(SM=+|5cg@Utj_zP;CPE@=uo6>D#~TvddyQzp_ZJ|H=sY?

X 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 literal 15086 zcmeI3d2AF_9LL}8wq082x#_X9Te}qyjKo$&4h1nnJcGd~BnD%^s-Qvr!+2nTa!7)L zT!IqH5hXDiJkW&1Ka4^mYBaIwyiWgPVS6&Vyi>|=eOf9eEt1&U6RBG4>}SLNuGp044f{=UvTn{- zQaNRrl#RMiYM=T<;+wiP^lnf69nij6q;m2L5_#lpeIMGWBRhMRh0n^#FT#Fnj`sHc z(dH5`5o`nNw5qaEdiqKM1goun%>@&Vc(H=_%`UP%#hpH|@Y^a1^9IGu-TNg>4CNeFbO(rU5tptY!DWULWJ!3NZb* z<>>!M*w?czw_8U4oD1Mts-w>f9OL8YAI~Yy7x>&71qSjs+R&g&we=5w4NLY(P1|b{ znemorD-WkW%dD~IaW?*A@cR>3?C2l9>)XGU;>H#RQ&b=zrNbwS_VRHj4cYjQ!|wsG z)X_is;eZKGNU*$CD(-BT(rfOKKyg2b%-WVZAF{?EfBw<_y5~NZnup)euYLW(?AduR)SdLd4*Q+pckmlv3=V?*U_xx#D~|rPl}99e*$u|{?e%9Ry6m86tB%^AH|+Mpz7Dv3{L(j>1pWo~KG^Qe zZKus=paOXH&$$cde8)WS2W&WZ)Z5}#0OyRRZ4J^^aJ5T@pgiZVZe9E3{Rs3~1jM?X zR!y>BRf2FTT{zB$9SIelZ^C`Ej!HR>I&C(tQ(%cyO#|KQ6oYW!Z+-;)2>223BXGe) zfO8kXwZBGiMV=UjdIp11pfr!`gS`cbbpvXj1^AtX-wX1^A=I@Q)PvrncskE|0l%+N zv;F)#_x!o0A5R)H8KumfXZN9Y#$+ex&o<<9i=$7nPOuF0RqR>sx4`!MXD;n2p#JZC z{XMT#*74`NGruJ}ze79qKiBa$*B`jXQwG9Z?@q3HCtH%0erVQKAH(yW*E^cVgHAXrw-K`)K)<>T>9;)t6z6jnd`%!)syBr#mq9f~wb|Ldpg>u4$v6csFz zng_Qyt>;_sg~IDceEYRbM4xGp+9yBKW6gEAlID?moBEGwvuboYF06h&%Ww^%OAkoo z(RU=?amLVwK2?6(GrIop(3^~VIlJdx;q{wsNE*jokZ|QTT`u_D2TX(wW7-b!^jAPgHH-}rh`&6&*k9Jzn2K`;0@AG!&?eqG2{fFy& zZuGbzdfFZ<{rv6c0>Cv~{*Io%h0h0n zqn_;`0Wyoo@eJz*Yy*EsJ2sE-zXjDm#rkOdKgXu~=6(eH2>223BXFJ~Ao|AtH*s^5 y?og_o<>xCk&XP8n#}4Vaaj?Vrb4}+b-5)UgW=i#TS@n-gZRZZN{chuyUj9FYzz5m@ From 1132906e28de9a437683dbdd9f40e7bb7c0b6bad Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Thu, 5 Mar 2026 21:24:15 -0500 Subject: [PATCH 06/13] Remove .env.example Delete the .env.example file that provided commented environment variable examples and documentation (Next.js/Notion settings, analytics, comment systems, theme and UI options, etc.). Removes the sample env template from the repository to avoid tracking local configuration. --- .env.example | 177 --------------------------------------------------- 1 file changed, 177 deletions(-) delete mode 100644 .env.example diff --git a/.env.example b/.env.example deleted file mode 100644 index f6191df81f7..00000000000 --- a/.env.example +++ /dev/null @@ -1,177 +0,0 @@ -# 环境变量 @see https://www.nextjs.cn/docs/basic-features/environment-variables - -# 可在此添加环境变量,去掉最左边的(# )注释即可 -# Notion页面ID,必须 -# NOTION_PAGE_ID=097e5f674880459d8e1b4407758dc4fb -# API_BASE_URL=https://www.notion.so/api/v3 - -# 非必须 -# NEXT_PUBLIC_VERSION= -# NEXT_PUBLIC_PSEUDO_STATIC= -# NEXT_PUBLIC_REVALIDATE_SECOND= -# NEXT_PUBLIC_THEME=matery -# NEXT_PUBLIC_THEME_SWITCH= -# NEXT_PUBLIC_LANG= -# NEXT_PUBLIC_APPEARANCE= -# NEXT_PUBLIC_APPEARANCE_DARK_TIME= -# NEXT_PUBLIC_GREETING_WORDS= -# NEXT_PUBLIC_CUSTOM_MENU= -# NEXT_PUBLIC_AUTHOR= -# NEXT_PUBLIC_BIO= -# NEXT_PUBLIC_LINK= -# NEXT_PUBLIC_KEYWORD= -# NEXT_PUBLIC_CONTACT_EMAIL= -# NEXT_PUBLIC_CONTACT_WEIBO= -# NEXT_PUBLIC_CONTACT_TWITTER= -# NEXT_PUBLIC_CONTACT_GITHUB= -# NEXT_PUBLIC_CONTACT_TELEGRAM= -# NEXT_PUBLIC_CONTACT_LINKEDIN= -# NEXT_PUBLIC_CONTACT_INSTAGRAM= -# NEXT_PUBLIC_CONTACT_BILIBILI= -# NEXT_PUBLIC_CONTACT_YOUTUBE= -# NEXT_PUBLIC_FAVICON= -# NEXT_PUBLIC_FONT_STYLE= -# NEXT_PUBLIC_FONT_URL= -# NEXT_PUBLIC_FONT_SANS= -# NEXT_PUBLIC_FONT_SERIF= -# NEXT_PUBLIC_FONT_AWESOME_PATH= -# NEXT_PUBLIC_PRISM_THEME_PREFIX_PATH= -# NEXT_PUBLIC_PRISM_THEME_SWITCH= -# NEXT_PUBLIC_PRISM_THEME_LIGHT_PATH= -# NEXT_PUBLIC_PRISM_THEME_DARK_PATH= -# NEXT_PUBLIC_CODE_MAC_BAR= -# NEXT_PUBLIC_CODE_LINE_NUMBERS= -# NEXT_PUBLIC_CODE_COLLAPSE= -# NEXT_PUBLIC_CODE_COLLAPSE_EXPAND_DEFAULT= -# NEXT_PUBLIC_MERMAID_CDN= -# NEXT_PUBLIC_QR_CODE_CDN= -# NEXT_PUBLIC_BACKGROUND_LIGHT= -# NEXT_PUBLIC_BACKGROUND_DARK= -# NEXT_PUBLIC_SUB_PATH= -# NEXT_PUBLIC_POST_SHARE_BAR= -# NEXT_PUBLIC_POST_SHARE_SERVICES= -# NEXT_PUBLIC_POST_URL_PREFIX= -# NEXT_PUBLIC_POST_LIST_STYLE= -# NEXT_PUBLIC_POST_PREVIEW= -# NEXT_PUBLIC_POST_RECOMMEND_COUNT= -# NEXT_PUBLIC_POSTS_PER_PAGE= -# NEXT_PUBLIC_POST_SORT_BY= -# NEXT_PUBLIC_ALGOLIA_APP_ID= -# ALGOLIA_ADMIN_APP_KEY= -# NEXT_PUBLIC_ALGOLIA_SEARCH_ONLY_APP_KEY= -# NEXT_PUBLIC_ALGOLIA_INDEX= -# NEXT_PUBLIC_PREVIEW_CATEGORY_COUNT= -# NEXT_PUBLIC_PREVIEW_TAG_COUNT= -# NEXT_PUBLIC_POST_TITLE_ICON= -# NEXT_PUBLIC_POST_DISABLE_GALLERY_CLICK= -# NEXT_PUBLIC_FIREWORKS= -# NEXT_PUBLIC_FIREWORKS_COLOR= -# NEXT_PUBLIC_SAKURA= -# NEXT_PUBLIC_NEST= -# NEXT_PUBLIC_FLUTTERINGRIBBON= -# NEXT_PUBLIC_RIBBON= -# NEXT_PUBLIC_STARRY_SKY= -# NEXT_PUBLIC_CHATBASE_ID= -# NEXT_PUBLIC_WEB_WHIZ_ENABLED= -# NEXT_PUBLIC_WEB_WHIZ_BASE_URL= -# NEXT_PUBLIC_WEB_WHIZ_CHAT_BOT_ID= -# NEXT_PUBLIC_WIDGET_PET= -# NEXT_PUBLIC_WIDGET_PET_LINK= -# NEXT_PUBLIC_WIDGET_PET_SWITCH_THEME= -# NEXT_PUBLIC_MUSIC_PLAYER= -# NEXT_PUBLIC_MUSIC_PLAYER_VISIBLE= -# NEXT_PUBLIC_MUSIC_PLAYER_AUTO_PLAY= -# NEXT_PUBLIC_MUSIC_PLAYER_LRC_TYPE= -# NEXT_PUBLIC_MUSIC_PLAYER_CDN_URL= -# NEXT_PUBLIC_MUSIC_PLAYER_ORDER= -# NEXT_PUBLIC_MUSIC_PLAYER_AUDIO_LIST= -# NEXT_PUBLIC_MUSIC_PLAYER_METING= -# NEXT_PUBLIC_MUSIC_PLAYER_METING_SERVER= -# NEXT_PUBLIC_MUSIC_PLAYER_METING_ID= -# NEXT_PUBLIC_MUSIC_PLAYER_METING_LRC_TYPE= -# NEXT_PUBLIC_COMMENT_ARTALK_SERVER= -# NEXT_PUBLIC_COMMENT_ARTALK_JS= -# NEXT_PUBLIC_COMMENT_ARTALK_CSS= -# NEXT_PUBLIC_COMMENT_ENV_ID= -# NEXT_PUBLIC_COMMENT_TWIKOO_COUNT_ENABLE= -# NEXT_PUBLIC_COMMENT_TWIKOO_CDN_URL= -# NEXT_PUBLIC_COMMENT_UTTERRANCES_REPO= -# NEXT_PUBLIC_COMMENT_GISCUS_REPO= -# NEXT_PUBLIC_COMMENT_GISCUS_REPO_ID= -# NEXT_PUBLIC_COMMENT_GISCUS_CATEGORY_ID= -# NEXT_PUBLIC_COMMENT_GISCUS_MAPPING= -# NEXT_PUBLIC_COMMENT_GISCUS_REACTIONS_ENABLED= -# NEXT_PUBLIC_COMMENT_GISCUS_EMIT_METADATA= -# NEXT_PUBLIC_COMMENT_GISCUS_INPUT_POSITION= -# NEXT_PUBLIC_COMMENT_GISCUS_LANG= -# NEXT_PUBLIC_COMMENT_GISCUS_LOADING= -# NEXT_PUBLIC_COMMENT_GISCUS_CROSSORIGIN= -# NEXT_PUBLIC_COMMENT_CUSDIS_APP_ID= -# NEXT_PUBLIC_COMMENT_CUSDIS_HOST= -# NEXT_PUBLIC_COMMENT_CUSDIS_SCRIPT_SRC= -# NEXT_PUBLIC_COMMENT_GITALK_REPO= -# NEXT_PUBLIC_COMMENT_GITALK_OWNER= -# NEXT_PUBLIC_COMMENT_GITALK_ADMIN= -# NEXT_PUBLIC_COMMENT_GITALK_CLIENT_ID= -# NEXT_PUBLIC_COMMENT_GITALK_CLIENT_SECRET= -# NEXT_PUBLIC_COMMENT_GITALK_JS_CDN_URL= -# NEXT_PUBLIC_COMMENT_GITALK_CSS_CDN_URL= -# NEXT_PUBLIC_COMMENT_GITTER_ROOM= -# NEXT_PUBLIC_COMMENT_DAO_VOICE_ID= -# NEXT_PUBLIC_COMMENT_TIDIO_ID= -# NEXT_PUBLIC_VALINE_CDN= -# NEXT_PUBLIC_VALINE_ID= -# NEXT_PUBLIC_VALINE_KEY= -# NEXT_PUBLIC_VALINE_SERVER_URLS= -# NEXT_PUBLIC_VALINE_PLACEHOLDER= -# NEXT_PUBLIC_WALINE_SERVER_URL= -# NEXT_PUBLIC_WALINE_RECENT= -# NEXT_PUBLIC_WEBMENTION_ENABLE= -# NEXT_PUBLIC_WEBMENTION_AUTH= -# NEXT_PUBLIC_WEBMENTION_HOSTNAME= -# NEXT_PUBLIC_TWITTER_USERNAME= -# NEXT_PUBLIC_WEBMENTION_TOKEN= -# NEXT_PUBLIC_ANALYTICS_VERCEL= -# NEXT_PUBLIC_ANALYTICS_BUSUANZI_ENABLE= -# NEXT_PUBLIC_ANALYTICS_BAIDU_ID= -# NEXT_PUBLIC_ANALYTICS_CNZZ_ID= -# NEXT_PUBLIC_ANALYTICS_GOOGLE_ID= -# NEXT_PUBLIC_ANALYTICS_ACKEE_TRACKER= -# NEXT_PUBLIC_ANALYTICS_ACKEE_DATA_SERVER= -# NEXT_PUBLIC_ANALYTICS_ACKEE_DOMAIN_ID= -# NEXT_PUBLIC_SEO_GOOGLE_SITE_VERIFICATION= -# NEXT_PUBLIC_SEO_BAIDU_SITE_VERIFICATION= -# NEXT_PUBLIC_ADSENSE_GOOGLE_ID= -# NEXT_PUBLIC_ADSENSE_GOOGLE_TEST= -# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_IN_ARTICLE= -# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_FLOW= -# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_NATIVE= -# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_AUTO= -# NEXT_PUBLIC_WWAD_ID= -# NEXT_PUBLIC_WWADS_AD_BLOCK_DETECT= -# NEXT_PUBLIC_NOTION_PROPERTY_PASSWORD= -# NEXT_PUBLIC_NOTION_PROPERTY_TYPE= -# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_POST= -# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_PAGE= -# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_NOTICE= -# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_MENU= -# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_SUB_MENU= -# NEXT_PUBLIC_NOTION_PROPERTY_TITLE= -# NEXT_PUBLIC_NOTION_PROPERTY_STATUS= -# NEXT_PUBLIC_NOTION_PROPERTY_STATUS_PUBLISH= -# NEXT_PUBLIC_NOTION_PROPERTY_STATUS_INVISIBLE= -# NEXT_PUBLIC_NOTION_PROPERTY_SUMMARY= -# NEXT_PUBLIC_NOTION_PROPERTY_SLUG= -# NEXT_PUBLIC_NOTION_PROPERTY_CATEGORY= -# NEXT_PUBLIC_NOTION_PROPERTY_DATE= -# NEXT_PUBLIC_NOTION_PROPERTY_TAGS= -# NEXT_PUBLIC_NOTION_PROPERTY_ICON= -# NEXT_PUBLIC_ENABLE_RSS= -# NEXT_PUBLIC_IS_TAG_COLOR_DISTINGUISHED= -# MAILCHIMP_LIST_ID= -# MAILCHIMP_API_KEY= -# NEXT_PUBLIC_DEBUG= -# ENABLE_CACHE= -# VERCEL_ENV= -# NEXT_PUBLIC_VERSION= -# NEXT_BUILD_STANDALONE= From 1af70a18b09c04a920c8c7650b77896f965af02b Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Thu, 5 Mar 2026 22:42:56 -0500 Subject: [PATCH 07/13] Update NOTION_PAGE_ID to new page ID Replace the previous comma-separated NOTION_PAGE_ID value with a single Notion page ID ('73e215be006e466e9c36442b39670776') so the blog points to the updated Notion source for content. --- blog.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog.config.js b/blog.config.js index b94b6d7cb72..c2b3cb3bd72 100644 --- a/blog.config.js +++ b/blog.config.js @@ -5,7 +5,7 @@ const BLOG = { // Important page_id!!!Duplicate Template from https://tanghh.notion.site/02ab3b8678004aa69e9e415905ef32a5 NOTION_PAGE_ID: process.env.NOTION_PAGE_ID || - '02ab3b8678004aa69e9e415905ef32a5,en:7c1d570661754c8fbc568e00a01fd70e', + '73e215be006e466e9c36442b39670776', PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章URL都以 .html 结尾。 NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 5, // 更新内容缓存间隔 单位(秒);即每个页面有5秒的纯静态期、此期间无论多少次访问都不会抓取notion数据;调大该值有助于节省Vercel资源、同时提升访问速率,但也会使文章更新有延迟。 THEME: process.env.NEXT_PUBLIC_THEME || 'fukasawa', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple From 8bc6e0e3117826eb63fc33dd8f0042be25e03f95 Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Thu, 5 Mar 2026 23:45:12 -0500 Subject: [PATCH 08/13] Add UUID redirect option to blog config Introduce UUID_REDIRECT in blog.config.js to enable redirecting UUID-based article paths to slug-based paths (relies on build-generated /public/redirect.json). The flag is controlled via NEXT_PUBLIC_UUID_REDIRECT and defaults to false. Also normalize EOF newline in the file. --- blog.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blog.config.js b/blog.config.js index c2b3cb3bd72..7ac4f6eb380 100644 --- a/blog.config.js +++ b/blog.config.js @@ -144,6 +144,8 @@ const BLOG = { // 文章URL前缀 POST_URL_PREFIX: process.env.NEXT_PUBLIC_POST_URL_PREFIX ?? 'article', + // 根据文章 UUID 路径重定向到 slug 路径(依赖构建生成的 /public/redirect.json) + UUID_REDIRECT: process.env.NEXT_PUBLIC_UUID_REDIRECT === 'true' || false, // POST类型文章的默认路径前缀,例如默认POST类型的路径是 /article/[slug] // 如果此项配置为 '' 空, 则文章将没有前缀路径 // 支援類似 WP 可自訂文章連結格式的功能:https://wordpress.org/documentation/article/customize-permalinks/,目前只先實作 %year%/%month%/%day% @@ -484,4 +486,4 @@ const BLOG = { VERSION: process.env.NEXT_PUBLIC_VERSION // 版本号 } -module.exports = BLOG \ No newline at end of file +module.exports = BLOG From b6d0707ded6494813022e89cf742cc75dfb10f5d Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Fri, 6 Mar 2026 00:06:57 -0500 Subject: [PATCH 09/13] open theme switch function --- blog.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog.config.js b/blog.config.js index 7ac4f6eb380..e5567d93618 100644 --- a/blog.config.js +++ b/blog.config.js @@ -9,7 +9,7 @@ const BLOG = { PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章URL都以 .html 结尾。 NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 5, // 更新内容缓存间隔 单位(秒);即每个页面有5秒的纯静态期、此期间无论多少次访问都不会抓取notion数据;调大该值有助于节省Vercel资源、同时提升访问速率,但也会使文章更新有延迟。 THEME: process.env.NEXT_PUBLIC_THEME || 'fukasawa', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple - THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || false, // 是否显示切换主题按钮 + THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || true, // 是否显示切换主题按钮 LANG: process.env.NEXT_PUBLIC_LANG || 'zh-CN', // e.g 'zh-CN','en-US' see /lib/lang.js for more. SINCE: process.env.NEXT_PUBLIC_SINCE || 2022, // e.g if leave this empty, current year will be used. APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式 , dark夜间模式, auto根据时间和主题自动夜间模式 From ef790d41b16b716aa1fe182d9b948957b4f5dd89 Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Wed, 25 Mar 2026 14:32:07 -0400 Subject: [PATCH 10/13] Enable theme switch, update greetings, pin Node 20.x Enable the theme switch in the floating widget (widget.config.js) and remove the duplicate THEME_SWITCH entry from blog.config.js. Update the GREETING_WORDS default with new welcome phrases and remove duplicate/unused entries (CUSTOM_MENU, BEI_AN) while tidying a contact.config comment. Also pin the Node engine in package.json to 20.x for consistent runtime. --- blog.config.js | 17 +++-------------- conf/widget.config.js | 2 +- package.json | 2 +- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/blog.config.js b/blog.config.js index e5567d93618..01a38f9a990 100644 --- a/blog.config.js +++ b/blog.config.js @@ -9,7 +9,6 @@ const BLOG = { PSEUDO_STATIC: process.env.NEXT_PUBLIC_PSEUDO_STATIC || false, // 伪静态路径,开启后所有文章URL都以 .html 结尾。 NEXT_REVALIDATE_SECOND: process.env.NEXT_PUBLIC_REVALIDATE_SECOND || 5, // 更新内容缓存间隔 单位(秒);即每个页面有5秒的纯静态期、此期间无论多少次访问都不会抓取notion数据;调大该值有助于节省Vercel资源、同时提升访问速率,但也会使文章更新有延迟。 THEME: process.env.NEXT_PUBLIC_THEME || 'fukasawa', // 当前主题,在themes文件夹下可找到所有支持的主题;主题名称就是文件夹名,例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple - THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || true, // 是否显示切换主题按钮 LANG: process.env.NEXT_PUBLIC_LANG || 'zh-CN', // e.g 'zh-CN','en-US' see /lib/lang.js for more. SINCE: process.env.NEXT_PUBLIC_SINCE || 2022, // e.g if leave this empty, current year will be used. APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式 , dark夜间模式, auto根据时间和主题自动夜间模式 @@ -19,10 +18,10 @@ const BLOG = { IS_TAG_COLOR_DISTINGUISHED: process.env.NEXT_PUBLIC_IS_TAG_COLOR_DISTINGUISHED === 'true' || true, // 对于名称相同的tag是否区分tag的颜色 - // 3.14.1版本后,欢迎语在此配置,英文逗号隔开 , 即可支持多个欢迎语打字效果。 + // 欢迎语打字效果, 英文逗号隔开多个欢迎语。 GREETING_WORDS: process.env.NEXT_PUBLIC_GREETING_WORDS || - 'Hi,你要和我一起摸鱼吗', + 'Hi,你要和我一起攀岩吗,Hi,我是一只吗喽,Hi,我是一个打工人,Hi,我是一个干饭人,欢迎来到我的博客🎉', CUSTOM_MENU: process.env.NEXT_PUBLIC_CUSTOM_MENU || true, // 支持Menu 类型,从3.12.0版本起,各主题将逐步支持灵活的二级菜单配置,替代了原来的Page类型,此配置是试验功能、默认关闭。 @@ -58,7 +57,7 @@ const BLOG = { // 其它复杂配置 // 原配置文件过长,且并非所有人都会用到,故此将配置拆分到/conf/目录下, 按需找到对应文件并修改即可 ...require('./conf/comment.config'), // 评论插件 - ...require('./conf/contact.config'), // 作者联系方式配置 + ...require('./conf/contact.config'), // ...require('./conf/post.config'), // 文章与列表配置 ...require('./conf/analytics.config'), // 站点访问统计 ...require('./conf/image.config'), // 网站图片相关配置 @@ -80,9 +79,6 @@ const BLOG = { CUSTOM_EXTERNAL_JS: [''], // e.g. ['http://xx.com/script.js','http://xx.com/script.js'] CUSTOM_EXTERNAL_CSS: [''], // e.g. ['http://xx.com/style.css','http://xx.com/style.css'] - // 自定义菜单 - CUSTOM_MENU: process.env.NEXT_PUBLIC_CUSTOM_MENU || true, // 支持Menu类型的菜单,替代了3.12版本前的Page类型 - // 文章列表相关设置 CAN_COPY: process.env.NEXT_PUBLIC_CAN_COPY || true, // 是否允许复制页面内容 默认允许,如果设置为false、则全栈禁止复制内容。 @@ -90,13 +86,6 @@ const BLOG = { LAYOUT_SIDEBAR_REVERSE: process.env.NEXT_PUBLIC_LAYOUT_SIDEBAR_REVERSE || false, - // 欢迎语打字效果,Hexo,Matery主题支持, 英文逗号隔开多个欢迎语。 - GREETING_WORDS: - process.env.NEXT_PUBLIC_GREETING_WORDS || - 'Hi,我是一个程序员, Hi,我是一个打工人,Hi,我是一个干饭人,欢迎来到我的博客🎉', - - BEI_AN: process.env.NEXT_PUBLIC_BEI_AN || '', // 备案号 闽ICP备XXXXXXX - // START********代码相关******** // PrismJs 代码相关 PRISM_JS_PATH: 'https://npm.elemecdn.com/prismjs@1.29.0/components/', diff --git a/conf/widget.config.js b/conf/widget.config.js index 4e207451c43..faaa5937625 100644 --- a/conf/widget.config.js +++ b/conf/widget.config.js @@ -2,7 +2,7 @@ * 悬浮在网页上的挂件 */ module.exports = { - THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || false, // 是否显示切换主题按钮 + THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || true, // 是否显示切换主题按钮 // Chatbase 是否显示chatbase机器人 https://www.chatbase.co/ CHATBASE_ID: process.env.NEXT_PUBLIC_CHATBASE_ID || null, // WebwhizAI 机器人 @see https://github.com/webwhiz-ai/webwhiz diff --git a/package.json b/package.json index 3741d013463..8c68504c092 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "homepage": "https://github.com/tangly1024/NotionNext.git", "license": "MIT", "engines": { - "node": ">=20" + "node": "20.x" }, "repository": { "type": "git", From 66047e7cc9708ba953702eeb8af7366183110660 Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Mon, 30 Mar 2026 01:43:56 -0400 Subject: [PATCH 11/13] fix: upgrade react-notion-x to 7.10.0 to support header_4 block type Fixes client-side crash on articles containing Notion H4 headings (header_4 block type) which were unsupported in v7.7.1. --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 8c68504c092..11b86eed09f 100644 --- a/package.json +++ b/package.json @@ -62,13 +62,13 @@ "lodash.throttle": "^4.1.1", "memory-cache": "^0.2.0", "next": "^14.2.30", - "notion-client": "7.7.1", - "notion-utils": "7.7.1", + "notion-client": "7.10.0", + "notion-utils": "7.10.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-facebook": "^8.1.4", "react-hotkeys-hook": "^4.6.2", - "react-notion-x": "7.7.1", + "react-notion-x": "7.10.0", "react-share": "^5.2.2", "react-tweet-embed": "~2.0.0" }, From 588643c97c609cbe51e9ef9788e05a959e0b16ca Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Mon, 30 Mar 2026 02:10:30 -0400 Subject: [PATCH 12/13] chore: update yarn.lock for react-notion-x 7.10.0 Ensures Vercel installs the correct version from the lockfile. --- yarn.lock | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index 30e4ae272c7..abf55372cbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4385,10 +4385,10 @@ jsonp@^0.2.1: object.assign "^4.1.4" object.values "^1.1.6" -katex@^0.16.21: - version "0.16.22" - resolved "https://registry.npmmirror.com/katex/-/katex-0.16.22.tgz" - integrity sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg== +katex@0.16.21: + version "0.16.21" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.21.tgz#8f63c659e931b210139691f2cc7bb35166b792a3" + integrity sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A== dependencies: commander "^8.3.0" @@ -4793,30 +4793,30 @@ normalize-url@^8.0.1: resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-8.0.1.tgz" integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== -notion-client@7.7.1: - version "7.7.1" - resolved "https://registry.yarnpkg.com/notion-client/-/notion-client-7.7.1.tgz#b0e4c2bf978c3dc16fdc032950f4e5de909276dc" - integrity sha512-xBz/+Lr7V40TpVpvMYb3Xw9lcxHhN+zvCc0JtNhVICTV5jnuMwIjQkSpaT8+gqlhBif+6DYEnMZptBrONWBPyQ== +notion-client@7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/notion-client/-/notion-client-7.10.0.tgz#5312567bb80b180dd9c737de577a749c9f58ec96" + integrity sha512-Rb4/nR4vIRwIExvKiVhZKJEpGoE0IRFlHMKbs0tcZcecZaUVRzVAu7PHuaHC5ivSds26z497dxXYF3mnMrMt7g== dependencies: - notion-types "7.7.1" - notion-utils "7.7.1" + notion-types "7.10.0" + notion-utils "7.10.0" ofetch "^1.4.1" p-map "^7.0.3" -notion-types@7.7.1: - version "7.7.1" - resolved "https://registry.yarnpkg.com/notion-types/-/notion-types-7.7.1.tgz#06c28e2cf503808ec88ff03d1351d756ea650f38" - integrity sha512-565D6k9rjRomec063p17iZe93ixhcomoDXy7K/Eq7t5826MUiU+g3IJiykoiDbBgx+cxn/4JHaHZIux+DYv74g== +notion-types@7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/notion-types/-/notion-types-7.10.0.tgz#471983703d4a63b73d7e07a92b334f70167dc3b4" + integrity sha512-t57RdnGnup7NcMGJkrlshe3gXaFYOj565NL1Q1l/MrZZ/K2xbHO06PtBXDEFTFYjvxQagU0NzKzaSNKocU9e4Q== -notion-utils@7.7.1: - version "7.7.1" - resolved "https://registry.yarnpkg.com/notion-utils/-/notion-utils-7.7.1.tgz#bfe7d19aa054faa77a8fde30a4905156f91dfb18" - integrity sha512-NZuG45RBUtBIh9djHylehsmdyFpByvY+bND8Xh9ihIFs8T9QVBwGq4l7sNfDJv0Pl9cmXven5jkUDYs9bAJOFA== +notion-utils@7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/notion-utils/-/notion-utils-7.10.0.tgz#bcd546eaff726913063633131a7f3d0b8a1ae193" + integrity sha512-Z/L+xOzVWM5wBHOqLu3PwCzA/11yzVExMpR8FUcwHbS60DDULSgZgipXQBzKOlbQMnB+04BOkSGDNan+AxfxmA== dependencies: is-url-superb "^6.1.0" memoize "^10.1.0" normalize-url "^8.0.1" - notion-types "7.7.1" + notion-types "7.10.0" p-queue "^8.1.0" npm-run-path@^4.0.1: @@ -5388,16 +5388,16 @@ react-modal@^3.16.3: react-lifecycles-compat "^3.0.0" warning "^4.0.3" -react-notion-x@7.7.1: - version "7.7.1" - resolved "https://registry.yarnpkg.com/react-notion-x/-/react-notion-x-7.7.1.tgz#a1ca8c0f1663568f882f85272601870a47eeb701" - integrity sha512-M3xJaivcO6TnU2tEhoQEiFW2Uc5RcHzUqx3fJb8rlFbYD3QI2xOKY4XKVIuz9bN1BBftYVGjCacU50XELcUD5g== +react-notion-x@7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/react-notion-x/-/react-notion-x-7.10.0.tgz#51362cd60c513b67141a883e981f04521691d1e5" + integrity sha512-i5FZKruMoRESnx5Lqq1kTp8a/eseErQ3Ph93dKCoCeRRN9hnPGCxUdnu/wsBp5h2BHMqswRujDiclqZvoQE2IA== dependencies: "@fisch0920/medium-zoom" "^1.0.7" "@matejmazur/react-katex" "^3.1.3" - katex "^0.16.21" - notion-types "7.7.1" - notion-utils "7.7.1" + katex "0.16.21" + notion-types "7.10.0" + notion-utils "7.10.0" prismjs "^1.30.0" react-fast-compare "^3.2.0" react-hotkeys-hook "^4.5.1" From 06f7ab59b72b6f3e1aa29b67edb93e2c140f22b6 Mon Sep 17 00:00:00 2001 From: TonyKing0504 Date: Mon, 30 Mar 2026 03:05:41 -0400 Subject: [PATCH 13/13] fix: handle header_4 in TOC generation to prevent client-side crash The getPageTableOfContents function crashed when encountering Notion's header_4 block type because indentLevels only mapped header, sub_header, and sub_sub_header. The header_4 type matched the indexOf('header') check but returned undefined for indentLevel, causing the indent stack to empty and crash with "Cannot destructure property 'actual' of undefined". Co-Authored-By: Claude Opus 4.6 --- lib/db/notion/getPageTableOfContents.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/db/notion/getPageTableOfContents.js b/lib/db/notion/getPageTableOfContents.js index 738c22031cf..fb7b61e9f62 100644 --- a/lib/db/notion/getPageTableOfContents.js +++ b/lib/db/notion/getPageTableOfContents.js @@ -3,7 +3,8 @@ import { getTextContent } from 'notion-utils' const indentLevels = { header: 0, sub_header: 1, - sub_sub_header: 2 + sub_sub_header: 2, + header_4: 3 } /** @@ -72,7 +73,7 @@ function getBlockHeader(contents, recordMap, toc) { if (block.content?.length > 0) { getBlockHeader(block.content, recordMap, toc) } else { - if (type.indexOf('header') >= 0) { + if (type.indexOf('header') >= 0 && indentLevels[type] !== undefined) { const existed = toc.find(e => e.id === blockId) if (!existed) { toc.push({