> [English](README.en.md) ｜ [中文](README.md)

# dsh-clock — 省钱时钟 ⏰

> 主人为了**省钱**，让 AI 写了这个时钟：提醒他别在**高峰时段**（API 最贵的时候）
> 烧 token。高峰时时钟亮起**闪烁红灯**——看到红灯就收手，钱就省下来了 💸

给 [DeepSeek Harness](https://github.com/deepseek-ai/dsh) Web GUI 的浮动时钟插件：
**可拖拽、可缩放**，自动记住位置与大小；高峰时段（**北京时间 9:00-12:00、14:00-18:00**）
显示闪烁红灯，颜色与闪烁均可通过设置修改。

> [English (README.md)](README.md)

## ✨ 功能

- 🕐 浮动显示当前时间（HH:MM:SS + 日期 + 星期），每秒刷新
- 🖱️ 按住时钟主体拖拽移动；拖拽右下角三角手柄放大/缩小（0.5× – 3×）
- 💾 位置与大小自动记住（浏览器 localStorage）
- 🔴 高峰时段（北京时间 9:00-12:00、14:00-18:00）亮起红灯，默认**闪烁**警示
- 🎨 设置项：`enabled` 总开关 / `color` 时间颜色（任意 CSS 颜色代号）/ `blinkPeak` 闪烁开关

## 📦 安装

### 方式一：npm 快速安装（推荐）

```sh
dsh plugin --profile web add dsh-clock
```

然后**重启 `dsh web`**，刷新页面即可看到时钟。

### 方式二：手动安装

1. 下载/克隆本仓库，或 `npm pack` 后解包；
2. 编辑 web profile 的 `package.json`（`~/.dsh/profiles/web/package.json`）：

```jsonc
// dependencies 加入
"dsh-clock": "^0.1.0"
// dsh.profile.bundles 末尾追加
"dsh-clock"
```

3. 在 profile 目录执行 `pnpm install`，重启 `dsh web`。

### 方式三：本地目录直装（开发用）

```sh
dsh plugin --profile web add E:\工作区\dsh-clock
```

> ⚠️ 本地直装时若插件不在 profile 目录内，需在插件目录建 `node_modules` 链接指向
> 宿主包：`@deepseek-ai` 与 `schemastery`（见 README.md「解析说明」）。npm 安装版无需此步。

## ⚙️ 设置

GUI 设置 → 插件配置 → dsh-clock：

- **显示时钟**：总开关
- **时间颜色**：任意 CSS 颜色代号（`#9aa0a6` / `red` / `rgb(255,0,0)`）
- **高峰时段闪烁红灯**：关闭后高峰只亮不闪

## ⏰ 高峰时段规则

按**北京时间（UTC+8）**判断，与浏览器本地时区无关：

- 上午 9:00 – 12:00（不含 12:00）
- 下午 14:00 – 18:00（不含 18:00）

高峰时时钟右侧出现红点；`blinkPeak` 开启时红点以 1s 周期闪烁。

## 🗂️ 目录结构

| 文件 | 作用 |
|---|---|
| `cordis.patch.yml` | bundle patch：把插件行插入 web profile roster |
| `lib/index.js` | host 侧：注册 `dsh-clock` settings 命名空间 |
| `lib/client.js` | 浏览器侧：浮动时钟 + 拖拽缩放 + 持久化 + 设置卡 |

## 🔧 开发

client bundle 是手写的 `window.__ModuleLoader__.load(...)` 格式（与 dsh-web-ui
全家桶插件一致），无需构建步骤；修改 `lib/client.js` 后刷新页面（dev）或
重启 `dsh web`（生产）生效。

## 📤 发布

```sh
npm publish          # 发布到 npm
git push origin main # 推送 GitHub
```

## 📄 License

MIT
