- Home
- Plugins
- UI Enhancements
- dsh-matrix-todo
dsh-matrix-todo
zhang-eli/dsh-matrix-todo
An Eisenhower-matrix to-do panel for the DSH sidebar: importance × urgency quadrants that fill the panel, inline quick-add with a hand-drawn due-date calendar, drag to reorder or move between quadrants, a draggable center handle for quadrant proportions, one-click switch to the completed view, and random encouragement toasts that tell praised on-time finishes apart from overdue ones. Minimal styling uses only DSH theme tokens; bilingual UI.
Install
dsh plugin --profile web add github:zhang-eli/dsh-matrix-todoREADME
四象限待办 · dsh-matrix-todo
DeepSeek Harness 的侧栏待办插件:主界面是艾森豪威尔矩阵(重要 × 紧急四个象限),可一键切换到「已完成」;数据与界面设置写入本机 profile 下的一个 JSON 文件。
- 侧边栏新增入口「四象限待办」,排在自带「待办」之后
- 首次打开且清单为空时,自动写入一组本地化引导条目(覆盖四个象限、逾期变色与日期面板);删掉后不会再出现
- 矩阵视图:立即做 / 计划做 / 委托做 / 别做,四个象限自动撑满面板、各自计数
- 拖动四象限中心的圆点即可调整行/列比例,双击圆点恢复均分
- 每个象限都能直接点击空白处或底部「+ 添加」就地新增,可为该条设置截止日期
- 到期日临期/逾期会在行内变色标识,逾期标题转为警示色
- 拖动任意待办可在象限内上下排序,或直接拖到另一个象限
- 双击待办文字即可就地重写标题,回车保存、Esc 取消
- 完成一项时在插件面板正中(不含左侧边栏)弹出随机鼓励浮窗(中英各 8 条,避免连续重复)
- 顶部一键切换「四象限 ↔ 已完成」,已完成项可恢复或删除,清空需二次确认
- 齿轮设置:紧急列在左 / 在右、边框风格(卡片 / 田字格 / 十字线)、象限底色(纯色 / 淡彩)、圆角幅度、待办字号、文字显示、日期显示、侧栏名称、恢复默认
- 设置面板底部有一条链接行:左侧「反馈问题」,右侧是带头像的「Developed by Zhang-Eli」(都在系统浏览器中打开)
- 极简风:界面颜色只用
--dsw-alias-*主题 token(淡彩底色由 token 混出),跟随明暗外观与配色风格 - 界面文案中英双语,跟随 Harness 语言设置
安装
从 npm 安装(推荐):
dsh plugin --profile desktop add dsh-matrix-todo
或在 Harness 里用插件管理工具安装:
plugin_manager install_bundle target: dsh-matrix-todo
从本仓库目录安装(开发用,改 client.js 由 HMR 即时生效):
plugin_manager install_bundle target: <本目录绝对路径>
安装后侧边栏出现「四象限待办」,点击即打开矩阵面板。
使用
新增
- 点击象限空白处,或点象限底部「+ 添加」,输入标题后回车;连续回车可连续添加,Esc 退出。
- 新增项直接使用该象限的重要/紧急标记,不需要先选分类。
- 新增区右侧的日历按钮打开日期面板:
- 单击某天只预览/改选,面板保持打开,可以反复点选;
- 双击某天即确定截止日期,面板关闭并自动把这条待办加入该象限;
- 面板里还能切换月份、选「今天」、或「清除」已选日期。
- 也可以只单击选好日期后按回车提交,效果相同(带上该日期)。
到期标识
- 到期日 = 今天的待办,日期文字用警示色加粗;已过期则日期变红、标题也转红。
- 日期固定在每行最右侧,两种显示方式可在设置里切换:日期(如
11-11)或倒计时(如7d、0d、-3d)。 - 点日期本身会打开同一个自绘日历:单击预览、双击确认保存;「清除」可去掉日期。还没设日期的行,悬浮工具条里会出现日历按钮作为入口。
拖拽排序 / 跨象限
- 按住任意待办行上下拖动,出现蓝色插入线时松手即完成排序。
- 拖到另一个象限的列表里松手,该条会连同「重要 / 紧急」标记一起移过去,并落在外框高亮的目标象限。
- 顺序会持久保存;一旦手动排过序,之后新增的待办仍排在该象限最前面。
完成反馈
完成一项时会在插件面板正中(右侧主面板区域,不含左侧边栏)弹出一个小浮窗,按是否按期分成两类语气:
| 情况 | 弹窗内容 | 图标 |
|---|---|---|
| 按期完成(当天或提前完成,或未设日期) | 表扬,「Well done! 按期完成」「漂亮,正好赶上」等 | 成功色对勾 |
| 逾期完成(完成时截止日期已过) | 勉励,「完成了就好,下次早点开始」「逾期也完成了,值得肯定」等 | 品牌色箭头 |
中英各 8 条,同类内随机且不会连续重复;约 2.6 秒后自动消失,不拦截鼠标操作。取消完成/恢复不会触发。
双击编辑
- 双击任意待办的文字即进入就地编辑,输入框带下划线提示。
- 回车或点击别处保存,Esc 取消;标题去空白后为空(或没有改动)则视为放弃修改。
整理
- 勾选复选框 → 完成,移入「已完成」;「已完成」里的复选框可恢复。
- 行内悬浮(或键盘聚焦)出现小按钮:改「重要」、改「紧急」、设日期、删除;改标记会即时在象限间移动。
- 「清空已完成」点一次变成「确认清空」,再点一次才真正清除(3 秒后自动退回)。
设置
点右上角齿轮展开设置,修改即时生效并自动保存:
| 设置项 | 取值 | 说明 |
|---|---|---|
| 紧急方向 | 在左 / 在右 | 「紧急」列放在矩阵左侧或右侧;默认在右 |
| 边框风格 | 卡片 / 田字格 / 十字线 | 卡片=四个圆角框;田字格=外框 + 中间十字线;十字线=只有中间十字、无外框;默认十字线 |
| 象限底色 | 纯色 / 淡彩 | 淡彩用低饱和主题色给四个象限分别铺一层很淡的底色;默认纯色 |
| 圆角幅度 | 0–24px(步长 2) | 卡片风格作用于每个象限框,田字格/十字线风格作用于外框;默认 10px |
| 字号 | 11–17px(步长 1) | 待办标题与象限内输入框的字号;默认 14px |
| 文字显示 | 完整换行 / 单行截断 | 完整换行时内容全部展示;单行截断时超长内容以省略号收尾;默认完整换行 |
| 侧边栏名称 | 0–24 字 | 自定义左侧入口显示的文字,留空则用默认的「四象限待办」 |
| 日期显示 | 日期 / 倒计时 | 日期显示 11-11;倒计时显示距今天数 7d、0d、逾期 -3d;默认倒计时 |
| 恢复默认 | 按钮 | 立即回到 紧急在右 / 十字线 / 纯色 / 10px / 14px / 完整换行 / 倒计时 / 均分 |
象限大小
鼠标移动到矩阵中心附近(约 56px 内)才会浮出一个小圆点,避免平时干扰视线。按住圆点拖动即可实时调整四象限的行列比例(左右各 20%–80%),松手自动保存。
拖动过程中会出现一个默认等分参考标记——正中央一段两端渐隐的短十字线与一个实心圆点;把圆点拖到它附近会自动吸附回正中间(吸附时参考标记与圆点都会高亮),方便一键恢复等分。双击圆点也能直接复位。
十字线风格下中间的实际十字线会跟着比例移动。
关于与链接
设置面板最下方有一条链接行,都会用系统默认浏览器打开:
| 位置 | 内容 | 地址 | 说明 |
|---|---|---|---|
| 最左 | 反馈问题 | https://github.com/Zhang-Eli/dsh-matrix-todo/issues | 提 issue、报告 bug |
| 最右 | Developed by + 头像 + Zhang-Eli | https://github.com/Zhang-Eli | 顺序为斜体的「Developed by」、16px 圆形 GitHub 头像、用户名;只有用户名是可点击链接,跳转 GitHub |
数据文件
默认 %DSH_PROFILE_DIR%\data\dsh-matrix-todo\todos.json(无 DSH_PROFILE_DIR 时退化为进程工作目录下的同名相对路径)。
{
"version": 1,
"todos": [
{
"id": "e_m3k2_ab12",
"title": "交周报",
"important": true,
"urgent": false,
"done": false,
"dueDate": "2026-11-15",
"createdAt": "2026-11-09T10:00:00.000Z",
"updatedAt": "2026-11-09T10:00:00.000Z",
"completedAt": null
}
],
"settings": {
"urgentSide": "right",
"frame": "cross",
"radius": 10,
"tint": "plain",
"fontSize": 14,
"dueFormat": "countdown",
"titleStyle": "wrap",
"colRatio": 0.5,
"rowRatio": 0.5,
"navLabel": ""
},
"reordered": false,
"seeded": true
}
todos 的数组顺序就是同象限内的显示顺序。reordered 为 false 时顺序按创建时间倒序派生(新条目在前);一旦手动拖拽排序,它就变成 true,此后数组顺序即你的顺序。dueDate 为 YYYY-MM-DD 或 null。
seeded 表示首次使用引导只写过一次:面板首次打开且清单为空时,会按当前界面语言向 Host 提交 7 条引导待办,Host 写入后把 seeded 置为 true。之后即使把引导全部删掉,也不会再自动生成。
写盘是「临时文件 + rename」的原子替换,写操作串行排队;文件损坏时会先备份为 todos.corrupt-<时间戳>.json,再以空清单 + 默认设置启动。手改文件里的 settings 非法值会被忽略并回落到默认值。
可在 cordis.patch.yml 的插件行里覆盖路径:
- id: matrix-todo
config:
dataPath: 'D:\notes\todos.json'
HTTP 接口(面板自用)
Host 半在 /matrix-todo/api 注册 prefix 路由,只接受 POST,并做同源/回环校验:
| 方法 | body | 说明 |
|---|---|---|
list | {} | 取全部待办与设置 |
seed | { items: [{ title, important, urgent, dueDate? }] } | 首次使用引导:仅在 seeded 为 false 时写入,幂等 |
create | { title, important, urgent, dueDate? } | 新建 |
update | { id, title?, important?, urgent?, dueDate? } | 改字段(含象限标记、截止日期;dueDate: null 清除) |
toggle | { id } | 完成 / 恢复 |
reorder | { id, important?, urgent?, beforeId } | 拖动结果:移到目标象限并插到 beforeId 之前(null = 末尾) |
remove | { id } | 删除 |
clearCompleted | {} | 清空已完成 |
saveSettings | { urgentSide?, frame?, radius?, tint?, fontSize?, dueFormat?, titleStyle?, colRatio?, rowRatio?, navLabel? } | 合并保存界面设置 |
成功返回 { ok: true, result: { todos, settings, seeded } };失败返回 { ok: false, error: { code, message } },状态码 invalid-input 400 / not-found 404 / io-error 500。标题去空白后 1–200 字符,清单上限 500 条,圆角 0–24 整数,字号 11–17 整数,dueDate 必须是真实存在的 YYYY-MM-DD 日期。
文件结构
| 文件 | 作用 |
|---|---|
package.json | 包清单:dsh.bundle.patch + dsh.client(web、immediately、locale/sidebar 依赖) |
cordis.patch.yml | 插入插件行 matrix-todo |
index.js | Host 半:注册 HTTP 路由,管理 store 生命周期 |
lib/store.js | 文件型 store:待办与设置、校验、原子写、备份损坏文件 |
client.js | Client 半:侧栏入口、矩阵与已完成两个视图、设置面板、全部样式 |
locale/en.json、locale/zh.json | 插件管理器的标题/描述 |
icon.svg | 插件图标(2×2 矩阵) |
已知边界
- 不提供 agent 工具;待办数据只由面板读写(Harness 已自带
personal_todo工具,避免重复暴露两套语义)。 - 没有多选与批量操作;一次拖拽只移动一条,删除也只针对单条。
- 淡彩底色用 CSS
color-mix()从主题 token 混出;很旧的 Chromium 不支持时自动回落到单色背景。 - 侧栏图标与面板的视觉细节无法在无浏览器控制的环境里截图验证;本次通过实时插槽注册、接口契约、存储测试与语法/资源检查验证。
- 改
client.js由 HMR 自动拾取;改index.js/lib/store.js(Host 半)需要重启该插件行或重启 Harness。
Related plugins
dsh-web (dsh-task-board)
zhu1090093659/dsh-web
dsh-web (dsh-web-all)
zhu1090093659/dsh-web
dsh-TUI
ccch1mneyyy/dsh-tui
dsh-web-ui (dsh-task-board)
zhu1090093659/dsh-web-ui