FIT2CLOUD
深色模式 的图标

深色模式

957
511

为 Halo 后台管理面板提供深色/浅色模式切换,支持跟随系统、手动切换和偏好记忆

1.1.9
Serendipity 发布于

1.1.9

最新
>=2.25.0

v1.1.9(2026-09-13)

新增

  • 在“外观 -> 深色模式”中增加“显示侧栏快捷切换按钮”开关,默认关闭,避免升级后直接改变已有侧栏布局。
  • 开启后,在 Halo 左侧栏用户资料区域正上方显示浅色 / 深色快捷切换按钮;按钮复用现有主题状态和 toggle() 行为,不维护第二份主题偏好。

调整

  • 将“编辑页 Dark Reader”由二选一列表改为官方 VSwitch 开关:开启时编辑页跟随 Dark Reader,关闭时编辑工作区使用浅色纸面;原有 halo-dark-mode-editor 配置值保持兼容。
  • 快捷按钮设置使用独立的本地偏好键,支持多标签页同步;非法值按关闭处理。
  • 侧栏按钮采用受控 DOM 挂载:仅定位 .sidebar__profile,处理 Halo 侧栏延迟渲染和重建,并在关闭设置时卸载组件、容器和观察器。
  • 运行时验证脚本改为检查快捷按钮的默认隐藏、开启、位置、点击切换和关闭清理流程。

验证

  • 前端单元测试、类型检查、静态 lint 和生产构建已在功能分支完成。
  • 真实 Halo 页面验证和用户安装验收尚未完成;本版本尚未合并、推送或发布。

资源下载

  • plugin-dark-mode-1.1.9.jar
1.1.8
Serendipity 发布于
>=2.25.0

v1.1.8(2026-09-03)

修复

  • 收窄文章和自定义页面编辑页识别范围,仅匹配 /console/posts/editor 与 /console/single-pages/editor,避免链接编辑弹窗、代码注入页面和普通可编辑控件误触发编辑页策略。
  • 深色模式下保留 Dark Reader 对整页的处理,仅将内容编辑工作区恢复为浅色纸面,左侧导航、顶栏和编辑页外围继续保持深色。
  • 为编辑工作区增加局部 color-scheme: light,保证工作区内原生按钮、下拉控件和滚动条采用浅色控件。

行为变化

  • “编辑页使用浅色纸面”现在表示局部编辑工作区浅色,不再关闭整页 Dark Reader;“编辑页也使用 Dark Reader”仍使编辑工作区完全跟随 Dark Reader。
  • 所有深色页面统一使用同一组 Dark Reader fixes 参数,避免跨路由切换时保留错误配置。

验证

  • 新增严格编辑路由、普通可编辑页面误判、链接页、代码注入页和跨路由状态回归测试。
  • pnpm type-check、pnpm lint:check、pnpm test:unit、pnpm build 与 ./gradlew clean build 通过。
  • 真实 Halo 页面验证仍需在登录网关可用且本地实例恢复后执行,详见本次开发记录。

资源下载

  • plugin-dark-mode-1.1.8.jar
1.1.7
Serendipity 发布于
>=2.25.0

v1.1.7(2026-09-02)

修复

  • 修复深色模式设置页中自定义单选按钮不可见的问题。
  • 修复 Vue scoped 样式无法作用于 Halo VEntity 插槽内容的问题,确保主题模式和编辑页策略选项均显示圆形单选控件。

验证

  • 在本地 Halo 实例中实测 5 个单选控件均正常渲染。
  • pnpm type-check、pnpm lint:check、pnpm test:unit、pnpm build 与 ./gradlew build 通过。

资源下载

  • plugin-dark-mode-1.1.7.jar
1.1.6
Serendipity 发布于
>=2.25.0

v1.1.6(2026-08-31)

新增

  • 设置页新增「编辑页 Dark Reader」选项,二选一:
    • 完全使用 Dark Reader:文章 / 页面编辑页也保持深色,适合使用 Markdown 等不受崩溃影响的编辑器
    • 在文章编辑页面禁用 Dark Reader:编辑页强制白天,避免富文本编辑器与 Dark Reader 动态分析互相触发导致的卡死(默认)

调整

  • 编辑页是否禁用 Dark Reader 由上述设置决定,不再一刀切全部禁用;策略持久化到 localStorage(halo-dark-mode-editor)并在多标签页间同步

验证

  • 前端单元测试通过(新增编辑页策略相关用例)
  • ./gradlew build 成功,产物 plugin-dark-mode-1.1.6.jar

资源下载

  • plugin-dark-mode-1.1.6.jar
1.1.5
Serendipity 发布于
>=2.25.0

v1.1.5(2026-08-31)

修复

  • 解决文章 / 页面编辑页深色模式下卡死的问题:在编辑页彻底禁用 Dark Reader 引擎,切断 contenteditable(如 ByteMD / 富文本)与引擎动态分析之间的相互触发

行为变化

  • 编辑页识别采用「路由 + 编辑区 DOM」双重判断:只要 URL 以 /editor 结尾,或页面出现 .ProseMirror / .editor-content / [contenteditable] / .editor 任一编辑区节点,即执行 disable(),并强制 color-scheme: light
  • 编辑页整页转为白天模式:无论全局主题是深色还是浅色,进入编辑页时左侧导航、工具栏、正文均显示为 Halo 默认浅色;退出编辑页后自动恢复全局主题
  • 通过劫持 history.pushState / history.replaceState、监听 popstate、MutationObserver 与兜底轮询,在进出编辑页时即时重应用 DR,无需整页刷新

验证

  • 前端单元测试通过(含“编辑页 URL 命中强制禁用”“编辑区 DOM 出现强制禁用”“离开编辑页恢复”用例)
  • ./gradlew build 成功,产物 plugin-dark-mode-1.1.5.jar

资源下载

  • plugin-dark-mode-1.1.5.jar
1.1.4
Serendipity 发布于
>=2.25.0

v1.1.4(2026-08-30)

调整

  • 移除插件对 Halo 官方设计 token(--halo-*)的全局覆盖,后台所有页面(官方页 + 第三方插件页)配色回归官方默认,不再被自定义绿色系主色污染
  • README 补充 Dark Reader vendored 依赖溯源:说明 4.9.129 与官方 4.9.128 的差异、构建所需文件清单,以及 SHA256SUMS 的生成与校验命令
  • 消除 Gradle 脚本中 group '...' 空格赋值语法的弃用(改用 group = '...'),并记录 run.halo.plugin.devtools 的 generatePluginComponentsIdx 已知弃用限制

清理

  • 移除未被引用的前端资产 ui/src/assets/logo.svg(插件图标实际使用 src/main/resources/logo.png)
  • 移除 0 字节的空文件 workplace/roleTemplates.yaml
  • 移除 useDarkMode 中系统偏好变化时的冗余 DOM 应用逻辑(行为不变)

验证

  • pnpm type-check / lint / test:unit(3 份测试文件、17 例)/ build 全绿
  • ./gradlew build 成功,产物 plugin-dark-mode-1.1.4.jar 内含更新后的 ui/main.js、ui/style.css 与 logo.png

资源下载

  • plugin-dark-mode-1.1.4.jar
1.1.3
Serendipity 发布于
>=2.25.0

v1.1.3(2026-08-14)

调整

  • 移除 3 个未使用的生产依赖(axios、canvas-confetti、@halo-dev/api-client),缩小依赖审计面与产物体积
  • 通过 pnpm-workspace.yaml overrides 将间接依赖 glob(10.4.5 → 10.5.0)与 nanoid(3.3.17 → 3.3.18)升级到修复版本,pnpm audit --audit-level=high 结果归零
  • Gradle Wrapper 补充 distributionSha256Sum(Gradle 9.4.0 官方哈希)并开启 validateDistributionUrl=true,防止发行版被篡改
  • CI 发版流程新增依赖安全审计步骤(官方 registry),存在 high 级漏洞时阻止发版

验证

  • pnpm type-check / lint / test:unit(8 例)/ build 全绿
  • pnpm audit --audit-level=high --registry=https://registry.npmjs.org/ 输出 0 vulnerabilities
  • ./gradlew build 成功,JAR 内 Implementation-Version 为 1.1.3

说明

  • 功能零变化,仅构建/依赖/供应链加固;覆盖安装即可,原主题偏好保留

资源下载

  • plugin-dark-mode-1.1.3.jar
1.1.2
Serendipity 发布于
>=2.25.0

Halo 深色模式 v1.1.2

为 Halo 后台管理面板提供深色/浅色模式切换。插件内置 Dark Reader 通用暗色引擎,自动分析页面 CSS 与 DOM,无需逐页手工适配,即可覆盖 Halo 核心页面和第三方插件页面。

功能特性

  • 三种主题模式:浅色(light)、深色(dark)、跟随系统(auto)
  • 偏好记忆:自动将选择持久化到 localStorage,刷新不丢失
  • 跟随系统:切换系统外观时自动响应(auto 模式)
  • Dark Reader 通用引擎:自动转换 Halo 核心页面与第三方插件页面,动态渲染内容也能适配
  • 官方外观分组:设置入口位于 Halo「外观」分组,与主题、菜单、插件同组
  • 零后端依赖:纯前端实现,不依赖额外后端 API,安装即用

🆕 本次更新(v1.1.2)

  • 更新插件 Logo 为新的深色风格图标
  • 更新 README 截图预览:插件信息、模式选择、文章写作、仪表盘、主题界面

安装

  1. 从本 Release 下载 plugin-dark-mode-1.1.0.jar
  2. 在 Halo 后台「插件管理」中上传并安装
  3. 启用插件后,进入「外观 → 深色模式」设置页面选择显示模式

使用

配置项 可选值 说明
主题模式 light 始终使用浅色模式
主题模式 dark 始终使用深色模式
主题模式 auto 跟随系统外观自动切换

验证

  • 前端 8 项单元测试全部通过,type-check / lint / build 全绿
  • ./gradlew build 构建成功,JAR 内 ui/main.js 包含 Dark Reader 引擎,logo.png 为新图标
  • 切换深浅色后在 Halo 核心页面与第三方插件页面验证通过

环境要求

  • Halo >= 2.25.0

资源下载

  • plugin-dark-mode-1.1.2.jar