Releases: xwtaidev/obsidian-weekly-schedule-plugin
Release list
0.5.0
Weekly Schedule 0.5.0
让待办事项真的能写完整,也让写它这件事不用把手从键盘上拿开:一条待办可以写成多行,回车就是「提交,然后写下一条」。前者补的是表达力 —— 一句需要两行才说得清的事,此前只能硬塞进一行,或者被拆成两条看起来像两件事的行;后者补的是节奏 —— 往格子里添东西,此前每次都要以鼠标去点那个按钮收尾。
一条待办可以写成多行
一条待办现在可以占几行。文件里它仍然是纯文本:- [ ] 那一行是首行,其余几行缩进两格跟在下面,不注入任何标记 —— 不用学就能读,手工写也不会写错。
- [ ] 评审季度预算
先看上个季度的偏差
再确认明年的增长假设缩进也正是它与「下一条待办」的分界,手写的文件因此保持它看上去的样子:缩进的 - [ ] 仍然是独立的一条,空行、或者回到行首的行,才结束上一条。
一条待办里放不下空行(空行就是结束),也留不住行首自己的空白(那会在每次保存后越缩越深)。两者都在存下来之前就被丢掉,而不是写进文件等着下次读的时候被无声地吞掉。
回车与 Shift + 回车谁提交、谁换行,由你定(设置 → 每周看板)。默认回车提交、Shift + 回车换行;Ctrl / Cmd + 回车在两种设置下都提交,所以「提交」永远不会被某个设置藏起来。换行由插件自己插入,输入法正在组词时按下的回车留给输入法 —— 否则会把一个词拦腰截断。
回车 = 提交,然后在下一条上继续
一条待办提交完,光标落到它正下方新开的那一条上 —— 位置就在你刚写完的这行下面,而不是格子末尾。往同一个格子里再添一条,现在是回车一次,手指不用离开键盘。
于是**「添加一个待办事项」按钮只属于还显示不出任务的格子**,负责给它开第一条。格子里已经有一条之后按钮就不再出现:通往下一条的路,是已经在手指底下的那个键。判据是「这个格子现在显示得出任务吗」,不是「这个格子里存着几条」 —— 被「隐藏已完成」全部挡住的格子仍然留着入口。一周 28 个格子、每周都摆一个按钮,是在用一整行说一句键盘一句话就能说完的话。
三个出口各有各的意思。 回车提交并继续下一条;Ctrl / Cmd + 回车提交并就此收工(它不受设置影响,所以也是「一定结束」的那个键);Esc 撤销这次编辑。光标自己走开(点了别处)只提交、什么都不开 —— 离开不是对「下一条写什么」的决定。在空行上再按一次提交键,就把这一行收掉。
顺带统一的一条规则
回车新开的那一条,在你还一个字都没写的时候就已经在面板上了 —— 必须如此,光标才有地方可去。但它还不是一件要做的事:没有文字的它不写进文件、不给格子挣一个 ### 标题、也不进本周的计数。
此前它会带来两个副产物:在格子里按下回车,日列头上的「N 项」凭空 +1;空格子还可能在文件里留下一个底下空无一物的标题。现在「这算不算一条待办」只有一个答案,计数、写盘、删行三处问的是同一句。
兼容性
- Markdown 格式、目录结构、文件位置没有变化,可以直接覆盖升级
- 多行待办的续行是普通文字、不带任何语法;旧版本读到它只会忽略那几行(旧版本重新保存该文件时那几行会丢,所以别在新旧版本之间来回编辑同一份周文件)
main.js与styles.css都有变化minAppVersion仍是 1.5.7- 设置里多了一项「待办事项里的回车键」,默认值与此前的习惯一致(回车提交)
如果你还在 0.4.x,这一版带来的是多行待办与回车接力录入,没有行为被撤掉;还在 0.3.x 或更早的,请先看 0.4.0 的说明 —— 带入功能是那一版的事。
升级后需要重新加载插件(关闭再开启,或重启 Obsidian)—— Obsidian 只在插件加载时读取 main.js。
0.4.0
Weekly Schedule 0.4.0
把「没做完的」接着往前推:上周剩下的带进本周,昨天剩下的带进今天。两者都从同一处出发 —— 文件里已经写着、还没打勾的那些行 —— 但落点不同,规则也就不同:一周是一条记录,一天是一个工作台。
上周剩下的,带进本周
命令面板里是「把上周未完成的带入本周」,看板工具栏上是一个箭头按钮。目标周就是你看板上打开的那一周,来源是它的前一周,所以先翻到你要安排的那一周。
它先问一遍。 弹窗按天列出上周所有没打勾的项,每行都标出它会落到哪个星期、哪个优先级格子里;默认全部勾上,按钮跟着勾选走(一项都不勾时禁用),所以整周一起搬是一下,只搬其中一条也是一下。目标周里已经有的那件事不会被藏起来,而是标上「已在本周」照常列出,也不会被放进去第二遍。
它保持那一周的形状。 每项留在原来的星期和原来的优先级格子里,不会塌成一堆;只有未完成的项会过去。
它是复制,不是剪切。 过去的那一周原封不动,仍然是一份诚实的记录 —— 上周计划过什么,几个月后翻回来还看得见。搬走的那些在原文件里留下标记:
- [ ] 修崩溃(已带入 2026-W40)标记写的是目标周的实际周名,而不是「下一周」:这类文件几个月后再打开,「下一周」三个字说明不了任何事。它写在那份文件自己的语言里,与界面语言无关。标记在比较和复制之前就会被摘掉,所以它不会跟着任务走进下一周,同一周确认两次也不会有任何变化。末尾的通知会说清带进来几项、另有几项本来就在。
昨天剩下的,带进今天
命令面板里是「把昨天未完成的带入今天」,按钮挂在今天那一列的日列头上(指针移上去才浮现)。任务同样留在原来的优先级格子里。
它不问。 一天的剩余是张短清单,「搬过去」本身就是决定。
它是移动,不是复制 —— 这是它与周维度唯一的分歧:昨天不留副本,于是过去的那一天只留下仍然开着的事。今天已经有同样文字的那条不动、也不重复;通知会说清移了几项、另有几项本来就在。
它只在一周之内。 两个日子同属一个周文件;周一的「昨天」是上周日、在上一周的文件里,这时什么都不会动,只给一句提示 —— 那种情况用上面的周维度带入。移动的目标始终是今天所在的周,与看板正显示哪一周无关。
按钮之所以挂在日列头而不是工具栏,因为这个动作的落点是某一天而不是某一周。它只出现在今天那一列,平时不占视线,日期和「N 项」也不会因为它的出现被推来推去;面板开着过午夜,它会跟着日历一起走到新的那一列。
顺带修掉的观感
- 日列头的按钮是纯字形,不是盒子。 Obsidian 用
button:not(.clickable-icon)(优先级 0,1,1)给所有按钮铺了底色、内阴影和水平内边距,插件原来那条单类名规则(0,1,0)压不过它 —— 底色其实一直存在,只是按钮平时透明,浮现那一刻才暴露成一个色块。现在选择器带上元素名,按钮回到图标本身,悬停只变色、不出现底色。 - 今天那条分隔线加粗到 2px。 同时把
padding-bottom从 7px 减到 6px:这条线占的高度是padding + border固定的 8px,只加边框宽度会让今天那一列整体比其它列低 1px。
兼容性
- Markdown 格式、目录结构、文件位置没有变化,可以直接覆盖升级
- 新增的只有任务行尾那个标记,它是普通文字,旧版本照读
main.js与styles.css都有变化minAppVersion仍是 1.5.7- 触屏设备没有悬停,日列头上的按钮不会自动浮现;从命令面板调用即可,功能完全一样
如果你还在 0.3.x,这一版是第一次带来带入功能,其余行为不变。
升级后需要重新加载插件(关闭再开启,或重启 Obsidian)—— Obsidian 只在插件加载时读取 main.js。
0.3.3
Weekly Schedule 0.3.3
修两个「只在打开那一刻算过一次、之后再没更新」的地方:跨天之后停在昨天的高亮,和始终贴不到底的汇总条。
今天的高亮会自己跟上日历
看板在哪一列打高亮,是画的时候算一次的。而画只发生在切周、换语言、外部改动文件、改设置这几种时机 —— 所以面板一直开着过夜,第二天的高亮还停在昨天,要刷新或重开面板才更新。
Obsidian 不会告诉你「午夜过了」,插件此前只对界面语言做定时检查。现在日期也同样周期检查(30 秒一次),另外在窗口重新获得焦点、页面重新可见时各查一次 —— 合盖睡一晚再打开是立刻更新,而不是等下一次轮询。
检查方式是比对日期,不是给午夜设一个定时器:机器睡过、应用在后台待过,醒来后第一次检查就能补上,不会永远错过那一刻。
不做整板重绘:跨天不会改变屏幕上这一周,而重绘会把正在编辑的光标连同 DOM 一起丢掉,所以只改那一列的高亮类名,编辑中途跨天不会被打断。如果新的一天已经不在当前显示的周里(周日夜里停在上一周),那一周就不再有高亮 —— 看板不会自己跳周。
年度总览同理:只有跨周才需要重画(当前周格子、已过去周的填充与底部合计会一起变),日期变了但还在同一周时什么都不做,也不读取任何文件。
汇总条真正贴到底部
汇总条是 position: sticky; bottom: 0,却停在面板底边上方 32px,下面那条缝里能看到正在滚动的看板 —— 滚到底还会有一条空带。顶部工具栏其实也差 12px 贴不到顶,内容会从那道缝里滑过去。
原因:Obsidian 给视图内容加了内边距,规则是
.workspace-leaf-content .view-content {
padding: var(--size-4-3) var(--size-4-3) var(--size-4-8); /* 12px 12px 32px */
overflow: auto;
}
它的优先级是 (0,2,0),高于插件写在容器上的 padding: 0((0,1,0))—— 也就是说那句 padding: 0 从来没有生效过;原本用来处理它的 --file-margins: 0 属于旧版 Obsidian,新版已经不在那里读这个变量。
关键在 sticky 本身:粘性元素不能越出自己的包含块。容器有 32px 下内边距时,包含块的底边就在面板底边上方 32px,所以无论怎样写偏移量,汇总条最多只能贴到那里。
做法:把归零写到真正生效的选择器上(.weekly-schedule-leaf .view-content),面板自带的下内边距随之消失,汇总条与工具栏分别贴住面板的上下两端。汇总条自己带上移动端安全区 —— padding: 8px 18px calc(8px + env(safe-area-inset-bottom, 0px)) —— 去掉内边距后不会压到 home 指示条。
验证:用 Obsidian 自带的核心样式加上插件的样式表,在无头浏览器里按真实面板尺寸复现并逐像素核对。修复前,汇总条上边框之下仍能看到象限色导轨与文字;修复后,汇总条背景铺满面板整个宽度、一直到底边,其下方没有任何非背景像素,滚动到中间和最底部都如此。
兼容性:这一版 main.js 与 styles.css 都有变化(新增日期轮询、跨天重绘逻辑与上述样式修正);Markdown 格式、目录结构与文件位置完全没变,可以直接覆盖升级;minAppVersion 仍为 1.5.7。
如果你还在 0.3.0 或更早,这一版也会一并带上 0.3.1 的按钮扁平化和 0.3.2 的本周汇总。
升级后需要重新加载插件(关闭再开启,或重启 Obsidian)—— Obsidian 只在插件加载时读取 main.js。
0.3.2
Weekly Schedule 0.3.2
看板底部多了一条本周汇总:本周 12 项 · 已完成 5 · 完成 42%。
年度总览一直有汇总,而看板以前只在每天头部说明「还剩几项」。两者回答的不是同一个问题 —— 每天剩多少告诉你今天做什么,本周总计告诉你这周走到哪了。
它是粘在底部的
不是接在七天网格后面,而是固定在面板底部(与顶部工具栏同一套机制)。一周长到需要滚动时,汇总不会跟着滚走。它与工具栏共用同一条分隔线和同一个底色,读起来是同一个框架的上下两面。
数字是即时的
从内存中的看板直接统计,不等防抖写盘:勾选、删除、新增,数字立刻变。空周不显示「0 项 · 已完成 0 · 完成 0%」,而是一句「本周还没有待办」。
跟着语言走
汇总文案同样跟随 Obsidian 语言,并区分单复数(1 task this week / 12 tasks this week)。
兼容性:只在看板底部增加了一条信息,Markdown 格式、目录结构与文件位置均无变化;minAppVersion 仍为 1.5.7。
如果你还在 0.2.2,这一版会连同 0.3.0 的多语言、0.3.1 的按钮扁平化一起生效。
升级后需要重新加载插件(关闭再开启,或重启 Obsidian)—— Obsidian 只在插件加载时读取 main.js。
0.3.1
Weekly Schedule 0.3.1
看板上的按钮不再是凸起的灰盒子。这是一个从 0.1.0 就存在的问题。
原因
Obsidian 自己的样式表里有:
button:not(.clickable-icon) {
background-color: var(--interactive-normal);
box-shadow: var(--input-shadow);
}
它的优先级是 (0,1,1),而插件对这些元素写的规则都是单类名 (0,1,0) —— 主题的填充与内阴影永远压在上面,插件写的 background: transparent 没人听。受影响的不止添加按钮:
- 「+ 添加一个待办事项」:白底 + 五层 input 阴影,一个看板 28 个
- 工具栏的「本周 / 本年」文字按钮:同样
- 年度总览的 53 个格子:同样,一直在主题按钮盒子里
- 任务复选框:被 Obsidian 自己的 16px 复选框和它的对勾覆盖,插件设计的 13px 方框从未生效
做法
把每个重置规则限定到它自己的容器,优先级升到 (0,2,0),从此高于主题;颜色、字体与悬停反馈仍由主题提供,只把「盒子」拿掉:
- 添加按钮回到纯文字:淡色小字,悬停时出现底色、文字提亮,键盘聚焦同样
- 复选框回到 13px 设计,并关掉 Obsidian 那个更大、会和插件对勾重叠的
::after打勾 - 年度总览的格子回到「只画边框与热力填充」的扁平形态
文字保持常显 —— 让人眼花的是盒子,不是文字。
兼容性:只改 styles.css,JS、Markdown 格式与目录结构均无变化,可直接覆盖升级;minAppVersion 仍为 1.5.7。
如果你还在 0.2.2,这一版会连同 0.3.0 的多语言一起生效。
升级后需要重新加载插件(关闭再开启,或重启 Obsidian)—— Obsidian 只在插件加载时读取 main.js。
0.3.0
Weekly Schedule 0.3.0
插件现在跟随 Obsidian 的界面语言。英文与简体中文内置,切换语言后看板、年度总览、设置页、命令一起变 —— 不需要重载插件,最长 2 秒内跟上,也没有多出任何设置项。
跟随切换的地方
- 看板:星期名、四个象限的「重要 / 不重要 · 紧急 / 不紧急」、工具栏按钮提示、任务右键菜单、每天头部的「N 项」
- 年度总览:年份标题、「已结束 N 周 · 共 N 项 · 完成 N%」、方块的无障碍朗读文本
- 设置页全部文案与「每周起始日」下拉项、命令面板里的 6 条命令、左侧 ribbon 悬停提示、标签页标题
- 「整理年份文件夹」的提示,并区分单复数(「移动 2 个文件」/ “moved 2 files”)
未内置的语言回退到最接近的一种:zh-TW 回退到简体中文,其余回退到英文。
日期跟着语言走
周标题在中文下是 2026 年第 12 周 · 3月16日 – 3月22日,英文下是 Week 12 of 2026 · Mar 16 – Mar 22;年度总览方块里的日期范围同理。用的是运行时自带的日期格式,不是写死的模板,所以以后加语言时日期不用单独处理。
你的文件不会被改写
本次只有一条规则需要留意:文件保留它原本的标题语言。
已经存在的周文件(中文标题)在切到英文界面后,看板显示英文,文件里依然是:
## 周一
### 重要 · 紧急
- [ ] 交周报新建的周文件使用当前界面语言。两种语言的标题都能解析,0.2.2 及更早版本写入的写法(重要 紧急、urgent but not important 等)也仍然能读,所以仓库里中英混排不会出问题。想把某个旧文件转成另一种语言,改它的第一个标题即可。
修掉一个跨年错误
周标题以前取的是周一的日历年,于是 2025-12-29 那一周显示成「2025 年第 1 周」。现在按 ISO 年显示为「2026 年第 1 周」,与文件所在目录、年度总览的年份一致。
数据与兼容性
- Markdown 格式、目录结构、文件位置完全没变,可以直接覆盖升级
minAppVersion仍是 1.5.7,老版本 Obsidian 不受影响- 打包改为输出 UTF-8,
main.js小约 1.3 KB(39.8 KB) - 新增开发用检查
npm run check:i18n,不随插件发布
升级后需要重新加载插件(关闭再开启,或重启 Obsidian)—— Obsidian 只在插件加载时读取 main.js。
0.2.2
Weekly Schedule 0.2.2
修复一个已完成任务的显示问题:勾选完成后,那一行没有立刻变成「已完成」的样子,要等到切换周、重开笔记或重载插件才生效。
原因:面板只在「隐藏已完成」模式下重绘,而该模式默认是关闭的。任务状态其实当场就写进了 Markdown 文件,只是那一行的样式没有被应用。
已完成的行现在一眼可辨
- 整行降到次要字色,任务文字加删除线
- 删除线颜色跟随文字颜色 —— 之前用的是边框色,在部分主题下几乎和背景同色,看起来像没有划线
- 复选框转为灰色:保留白色对勾的可读性,同时去掉象限强调色
- 行内的上移 / 下移 / 删除按钮一并压暗
因此已完成的行不再带着「待办」的强调色,和仍在进行中的任务可以直接区分开。
数据没有任何变化:仍是标准的 - [ ] / - [x] Markdown,文件位置、目录结构和格式都与 0.2.1 一致,可以直接覆盖升级。
升级后需要重新加载插件(关闭再开启,或重启 Obsidian)—— Obsidian 只在插件加载时读取 main.js。
0.2.1
Weekly Schedule 0.2.1
修正插件描述,使其符合 Obsidian 目录的提交要求。
旧描述包含 "Obsidian" 一词,而目录的自动审核会拒绝:
Plugin description must not include the word "Obsidian".
The word "Obsidian" in the description is redundant. It is implied by the
context of the plugin directory.
新描述:
Plan each week in four priority quadrants, stored as plain Markdown you can edit
by hand.
同时新增 npm run check:manifest,在本地和 CI 中检查官方提交要求(描述规范、
id、版本号、README 与 LICENSE、产物完整性),避免这类问题再以"被打回"的形式出现。
功能没有变化 —— 如果你已经装了 0.2.0,可以不升级。
0.2.0
Weekly Schedule 0.2.0
年度总览的修正版本。
格子和布局
- 格子从 131×131 正方形改为略宽于高的长方形(约 131×97),整年 6 行一屏可见
- 修正字色层级:之前所有档位的文字都继承了次要字色,完成率看起来像禁用状态
悬停反馈
- 改为沿热力色阶加深,并配合边框高亮与轻微放大
- 之前悬停会把底色换成灰色,导致颜色深浅消失;亮色主题下深紫变浅灰配白字,实测只有 1.10:1
- 深色主题下空周/未来周之前完全没有悬停反馈,已补上
对比度
- 深色主题最高两档白字不足 4.5:1(实测 4.37:1),填充透明度收到 72%/82%
- 现在两个主题下所有档位、以及 10 个悬停档位全部达标
需要 Obsidian 1.5.7 或更高版本。
0.1.1
安装门槛大幅降低:minAppVersion 从 1.13.0 降到 1.5.7。
之前只有较新的 Obsidian 能装。原因是设置页用了 1.13 才有的声明式设置 API,
现已改回命令式 API,可用范围扩大到你那台设备能装的任何 Obsidian 版本。
代价是设置项不再出现在 Obsidian 的设置搜索里(1.13+ 的特性)——两个下拉框
不值得为此把所有人挡在门外。
同时把「整理年份文件夹」也放进设置页,之前它只有命令面板入口。
第一次安装?看 0.1.0 的说明,功能没有变化。