Skip to content

chore(appearance): 删除未被注册的 dark-mode 死插件 - #81

Merged
PoxenStudio merged 1 commit into
PoxenStudio:developfrom
shiningsprk-arch:fix-remove-dead-dark-mode-plugin
Sep 20, 2026
Merged

PoxenStudio merged 1 commit into
PoxenStudio:developfrom
shiningsprk-arch:fix-remove-dead-dark-mode-plugin

Conversation

@shiningsprk-arch

Copy link
Copy Markdown
Contributor

这个 PR 做什么

删除 app/src/plugins/dark-mode.js —— 一个三重失效的死文件。删除后行为完全不变,改动只有 1 个文件、11 行删除。

为什么它是死代码(三条独立证据)

1. 从来没有被注册

app/nuxt.config.js 的 plugins 只注册了四个:

plugins: [
  "~/plugins/mybooks.js",
  "~/plugins/load-plugins.js",
  "~/plugins/i18n.js",
  { src: "~/plugins/appearance.js", mode: "client" }
],

全仓(排除 .git / node_modules)没有任何地方 import 或引用 plugins/dark-mode.js。

2. 它读的 localStorage key 从来没有写入侧

const darkModeEnabled = localStorage.getItem('darkMode') === 'true';
  • 全仓 getItem('darkMode') 只出现在这一行;
  • 全历史检索 git log -S "setItem('darkMode'" --all 的结果为空 —— 这个 key 从被加入那天起就没有人写过;
  • 当前 app/src 下 30 余处 localStorage.setItem 也没有这个 key。

真正的键是 appearance_settings(app/src/utils/appearance.js 的 STORAGE_KEY),走 readCache()/writeCache() 读写。

3. 即便跑起来也只是空转

它只做 document.documentElement.classList.add/remove('dark'),但全仓所有 CSS / Vue 里没有任何 html.dark / .dark 选择器(搜出来只有 Vuetify 自带的 .theme--dark,见 app/src/assets/css/scrollbar.css)。

它唯一的消费者是 Tailwind 的 darkMode: 'class',而 Tailwind 已随 335ada9a(直接使用vuetify切换样式,去除tailwindcss)整体移除,app/tailwind.config.js、postcss.config.js 与相关依赖都已不存在。

现在的深浅色机制是 data-appearance-dark 属性(app/src/app.html 的首帧防闪烁脚本 + app/src/utils/appearance.js 的 applyAppearance())+ vuetify.theme.dark,与本文件无关。

它是怎么活下来的(顺带发现的历史问题)

提交 动作
53c0be56 新建文件,同时注册进了 plugins(Tailwind 时代)
335ada9a 删文件 + 撤掉插件注册 + 移除 Tailwind
111d0df8 把该文件当成「新文件」又加了回来

111d0df8 的作者时间是 06-14 18:00、committer 时间是 06-15 11:33,晚于 335ada9a(06-14 18:07),且 git merge-base --is-ancestor 335ada9a 111d0df8 为真。它的 diff 里还残留着未解决的冲突标记:

+<<<<<<< HEAD
         localStorage.setItem('site_theme', ...);
+=======
+          // document.documentElement.classList.add('dark');
+>>>>>>> a1686a5 (暗亮模式切换)

也就是说:一次冲突解决不完整的合并把已删文件复活成了孤儿(插件注册与 Tailwind 都没跟着回来)。冲突标记本身后来被清理了,HEAD 里已无残留,所以只留下这个没有注册的插件文件。

顺带说明

app/src/plugins/dark-mode.js 是一段三重失效的死代码,删除:

1. 从未被注册。nuxt.config.js 的 plugins 只注册了 mybooks / load-plugins /
   i18n / appearance,全仓没有任何地方 import 或引用它。
2. 它读的 localStorage key `darkMode` 从来没有写入侧。全历史检索
   `git log -S "setItem('darkMode'" --all` 为空,当前 app/src 下 30 余处
   localStorage.setItem 也没有这个 key —— 从加入那天起它就是半成品。
   真正的键是 `appearance_settings`(app/src/utils/appearance.js 的 STORAGE_KEY)。
3. 即便跑起来也是空转。它只给 <html> 加/去 `dark` class,而全仓 CSS/Vue 里
   没有任何 `html.dark` / `.dark` 选择器(只有 Vuetify 自带的 `.theme--dark`)。
   它唯一的消费者是 Tailwind 的 `darkMode: 'class'`,而 Tailwind 已随
   335ada9(“直接使用vuetify切换样式,去除tailwindcss”)整体移除。

现状的深浅色机制是 `data-appearance-dark` 属性(app/src/app.html 的首帧脚本 +
app/src/utils/appearance.js)+ `vuetify.theme.dark`,与本文件无关。

成因:335ada9a 已删除本文件并撤掉插件注册,但后面的 111d0df(作者时间早于
335ada9、committer 时间晚于它,且其 settings.vue 片段里残留未解决的冲突标记)
把该文件当成新文件又加了回来,于是留下这个没有注册的孤儿文件。

删除后行为完全不变。
@PoxenStudio
PoxenStudio merged commit 3e4db06 into PoxenStudio:develop Sep 20, 2026
@shiningsprk-arch
shiningsprk-arch deleted the fix-remove-dead-dark-mode-plugin branch September 20, 2026 04:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants