Serendipity c1c05d9bd4 docs: 更新 CLAUDE.md 与 README.md 反映最新架构
CLAUDE.md:
- 修正覆盖策略描述(Halo 2.25 用 UnoCSS + BEM 类,非 Tailwind)
- 补充 injector.ts 侧边栏注入方案与 halo-core.css 核心地位
- 新增真实环境验证工作流章节

README.md:
- 补充验证过的页面列表与 JDK 25 构建说明
- 补全项目结构中 styles/overrides/ 目录

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 22:54:24 +08:00

dark-mode

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

功能

  • ☀️/🌙 三种模式:浅色、深色、跟随系统
  • 💾 偏好持久化:自动记忆用户选择(localStorage),刷新不丢失
  • 🖥️ 系统偏好跟随:切换系统外观时自动响应
  • 瞬间切换CSS 变量瞬时生效,无可见闪烁
  • 🧩 侧边栏注入:切换按钮自动出现在侧边栏底部(UserProfileBanner 上方)
  • ⚙️ 设置页面:提供详细的模式选择界面(菜单 → 偏好设置 → 深色模式)
  • 🎨 OKLCH 色彩空间:感知均匀,暗色模式天然适配,WCAG AA 对比度保证
  • 📦 零后端依赖:纯前端实现,不需要后端 API
  • 覆盖已验证:仪表盘、内容管理(文章/页面/评论)、链接、订阅、瞬间、用户、主题、设置、编辑器、模态框等页面已针对 Halo 2.25 真实 DOM 逐一验证

开发环境

  • Java 21+(Halo 插件编译要求;本机开发使用 JDK 25 + --release 21
  • Node.js 18+
  • pnpm

快速开始

# 启用插件并启动 Halo 开发服务器
./gradlew haloServer

# 前端开发(watch 模式)
cd ui
pnpm install
pnpm dev

构建

# 完整构建(后端 + 前端)
./gradlew build

构建完成后,插件 JAR 文件位于 build/libs/,可直接在 Halo 后台安装。

前端命令

cd ui

pnpm dev           # 开发构建(watch
pnpm build         # 生产构建
pnpm type-check    # TypeScript 类型检查
pnpm lint          # Lintoxlint + eslint
pnpm prettier      # 代码格式化
pnpm test:unit     # 单元测试

项目结构

├── build.gradle              # 根构建(BOM 2.25.0, DevTools 0.8.0
├── settings.gradle           # 包含 :ui 子项目
├── src/
│   └── main/
│       ├── java/run/halo/darkmode/
│       │   └── DarkModePlugin.java    # 插件主类(极简骨架)
│       └── resources/
│           └── plugin.yaml            # 插件清单
│
└── ui/
    └── src/
        ├── index.ts                   # definePlugin 入口
        ├── injector.ts                # ThemeToggle 侧边栏注入器
        ├── composables/
        │   ├── useDarkMode.ts         # 核心状态管理(模块级单例)
        │   └── useSystemPreference.ts # 系统偏好监听
        ├── components/
        │   └── ThemeToggle.vue        # 侧边栏切换按钮
        ├── views/
        │   └── SettingsView.vue       # 设置页面
        └── styles/
            ├── index.css              # 样式入口
            ├── variables.css          # 40+ CSS 变量(浅色 + 深色)
            └── overrides/
                ├── halo-core.css      # ★ 核心:真实 DOM 类名覆盖
                ├── layout.css         # 侧边栏/内容区/页脚
                ├── components.css     # 组件类覆盖
                ├── forms.css          # FormKit 表单
                ├── editor.css         # 富文本编辑器
                ├── scrollbar.css      # 滚动条
                └── utilities.css      # 通用工具类

许可证

GPL-3.0 © LHY

S
Description
Halo 2.25 暗色模式插件 — 为 Halo 后台管理面板提供深色/浅色模式切换,支持跟随系统、手动切换和偏好记忆。
Readme GPL-3.0 4.1 MiB
1.0.5 Latest
2026-08-08 18:28:57 +08:00
Languages
Python 36.2%
HTML 30.4%
TypeScript 19.1%
CSS 6.7%
Vue 5.2%
Other 2.4%