Repository navigation
Releases
Pulsewright 1.0.3 · 惦记
Pulsewright 1.0.3 · 惦记
你的知识,有自己的脉搏。
前几版回答的是「你的笔记怎么样」。这一版换了个问题:今天怎么样,有没有哪条线断了,现在能做哪一件。
打开就是一个页面,不是一个菜单
上一版横着排了十个页签,窄一点的侧栏里最后一个直接被挤出可视区。排不下等于没有。
这一版把它们收进左上角一个 今天 ▾ 的下拉,分成四栏:现在 / 时间 / 内容 / 做事。不点它的时候,你看不到任何页签。
默认打开的是「今天」——全插件唯一一个回答「你现在该做什么」的页面。
今天
三个数字,每个都带参照。 今天写了多少字、动过哪几篇、连着写了几天;底下一行给的是「比昨天多/少多少」「近七天日均」「最长连了几天」。不让你对着一串数字猜好坏。
两条带子。 一条 12 周的时间带(哪天写过就亮一格,带月份刻度),一条最近七天的柱子。右边写着「上周共 N 字 · 比前一周 +X%」——周对比是这一版新加的,因为「昨天比前天多」几乎没有意义。
一张只做一件事的卡。 给你一篇现在就能动手的笔记:优先挑「写过 50 词以上、超过 30 天没动」的旧账;库里没有旧账,就推最近在写的那篇。两个按钮,「接着写」直接打开,「先放着」换下一篇并记住。
放下了的都会记账:按钮底下出现一行「今天放下了 N 篇 · 恢复」,点一下全放回来;全放下之后它说「今天挑完了」,明天再给你看。没有「换一篇」这个按钮——它和先放着在界面上是同一件事,留着只会让人犹豫。
回声。 从一年前、一个月前、三年前的同一天附近,各挑一篇你写过的笔记,把第一句话摘出来放在底下,点标题跳回原文。挑不到就退到前后 5 天内最近的一天;还挑不到,就老实说「库里还没有够老的笔记」。
惦记(进阶,可选)
「今天」管一天,「惦记」管一个月。
自己写几条在意的事,每条给一个匹配规则和一个节奏:
练琴 | tag:练琴 | 3
项目 | folder:项目 | 0
读书 | tag:读书 | 2
匹配支持 tag:、folder:、path: 三种,标签可以嵌套(tag:项目 会命中 项目/抚州)。节奏写 0 表示不设节奏,只看上次动是几天前。
每条画成一条 12 周的时间带。哪天动过就亮一格,一片空白就是那几天没碰。
只有当某条线超过自己节奏的两倍时间没动,底部才出一张卡片,而且只会出一张:
英语作文这条线安静了 9 天。最后一次是 2026-10-18,那篇叫《旧稿》。
要现在给它半小时,还是先记一笔「推迟到哪天」?写下来比记在脑子里牢。
它给「推迟」这个选项。只会催人的工具,都会在第三周被卸载。
第一次打开不用填表:扫一遍库里出现最多的目录和标签,直接给五行预填好,勾一下就能开始。
这一年
库档案。 年度画像页底部四格:第一次动笔是哪天、平均每天多少字、一共多少篇、最长的一篇是哪篇。
导出年报。 旁边一个按钮,生成一份 Markdown 存进 Pulse/导出/Pulsewright-YYYY年报.md——里面有全年数字、最高的一天、最用力的月份、最常动笔的星期、月度分布表。只有数字,不含任何笔记正文。
外观
面板材质三档,设置里切换:
- 实心(默认):最稳,任何主题下都不出错
- 毛玻璃:透出一点背景,边缘有一道高光
- 亚克力:在毛玻璃上加一层很淡的颗粒和更厚的顶光
浏览器不支持 backdrop-filter 时会自动退回实心,不会糊成一片。
每页一个主色。 今天是青,惦记与时间类是蓝,复盘 / 地图 / 洞察是紫,速记 / 数据是琥珀。页签、标题前的小圆点、柱状、当天格子、主按钮都跟着这一页走。状态色按语义分:青=正常,琥珀=该注意,珊瑚=断了。
卡片分三层:底、面、内嵌。KPI 顶上一条主色刻度线,头部压一条渐变线。之前所有东西共用一个紫、长一个样,看着平。
改变
- 首页换成了「今天」,不再是看板。
- 「看板」改名「概览」,降为第二层:全部历史的总量、节奏和热力图。
- 「贡献分」从首页撤下。算法一个字没改,累计值挪到「数据」页,热力图的指标里也还能选,只是不再当门面。一个 0 到 100 的数字会让人焦虑,而焦虑的人会关掉插件。
- 十一个页面收进下拉,不再横着排。
- 命令名去掉前缀:
open而不是pulsewright-open(Obsidian 会自己加pulsewright:)。
修复与性能
- 洞察页冷启动 158 ms → 61 ms。 慢在
similarNotes:214 篇笔记两两算标题相似度,每对都新建临时对象。改成预先存好词元、用sa + sb - inter算并集、先用「小集合大小 < 阈值」剪枝,67 ms → 19 ms(3.5 倍)。再加一层按数据签名失效的缓存,数据没变就不重算。 noteCache缺path字段:路径是对象的 key,第一版folder:匹配和目录建议永远为空。现在路径显式作为参数传入,并加了回归测试。- 悬停气泡不消失:气泡是
body级复用节点,鼠标停在格子上直接切页时mouseleave不触发,气泡会挂在别的页面上。现在换页手动收。 - 知识地层图挤在最右边:新库前面几十周都是 0,面积图缩在角落像坏了。现在从第一个有数据的周往前留两周开始画,标题周数跟着变。
- 今天页的死胡同:库里没有「该翻的旧账」时,原来只有一句「没什么可提醒的」。现在改成推最近在写的那篇。
- 速记的内联编辑框没有样式:只有类名、CSS 里完全没定义,是个裸
textarea。 - 惦记的阈值算了两遍且不一致:
laneStatus有Math.max(0.5, …),laneAdvice没有。抽成laneGapDays()。 - 回声卡上残留 Markdown:
>、-、链接语法会原样显示。现在剥干净。 - 删掉
metricText、openSettings两个死函数和 14 个死样式块。
技术细节
- 新增 18 个纯函数,全部登记进
PURE导出,可以脱离 Obsidian 单测:laneMatch、laneStats、laneSeries、laneStatus、laneAdvice、laneAdviceText、suggestLanes、parseLanes、formatLanes、echoPicks、echoLead、lanePretty、laneGapDays、latestNote、recentNotes、weekWordsRecap、libraryFacts、yearReportMarkdown。 - 单元测试 228 → 289 项全绿。
main.js3352 → 4356 行,styles.css1181 → 1977 行,零新增依赖。- 安装程序从 WinForms 换成 WPF:圆角是真矢量(
DwmSetWindowAttribute+ Win10 退回Region)、阴影是真高斯、文字在 175% 缩放下仍是矢量。代价是要求 .NET Framework 4.8(Win10 1903 以上、Win11 自带)。
安装
方式一 · 安装程序(Windows)
下载 Pulsewright-Setup-1.0.3.exe,双击运行。它会读出你电脑上所有 Obsidian 库,选中一个点「安装到这个库」。
方式二 · 压缩包
下载 pulsewright-1.0.3.zip,解压出 pulsewright 文件夹,放进 <你的库>/.obsidian/plugins/ 下面,重启 Obsidian,到设置里打开开关。
方式三 · 社区目录
已经上架 Obsidian 社区市场。设置 → 第三方插件 → 浏览,搜 Pulsewright。
社区目录只拉
main.js、manifest.json、styles.css三个文件,Release 里挂的.exe和.zip它不会下载——想要安装程序得自己从下面拿。
MIT License © 2026 Luo
Pulsewright 1.0.2 · 按社区目录审核意见整改
Pulsewright 1.0.2 · 知识脉冲
你的知识,有自己的脉搏。
一个把 Obsidian 库变成「可读的生命体征」的插件:贡献分、年度热力图、知识地层、月相日历、年度画像、知识复盘、笔记地图、笔记洞察、速记、分享卡。
全本地计算 · 零授权校验 · 只读笔记(不会改动你的任何一篇)。
这一版在做什么
这一版没有新功能。它是为了进 Obsidian 社区市场,照着目录审核的 11 项检查逐条改的。
审核结果里 4 项直接通过(网络请求、读库、写库、依赖),剩下 7 项建议和警告,能改的全改了。改的都是那种「不影响你自己用,但会让审核卡住、或者让装插件的人犯嘀咕」的地方。
改进
- 命令 ID 去掉插件前缀:
open-pulsewright→open、rescan-pulsewright→rescan、export-pulsewright-csv→export-csv、export-pulsewright-json→export-json、pulsewright-memo→memo、pulsewright-map→map、pulsewright-insight→insight。Obsidian 自己会补上pulsewright:前缀,命令面板里显示的名字不变。 - manifest 名称改纯英文:
Pulsewright · 知识脉冲→Pulsewright。社区目录里一万多个插件,名称含非 ASCII 字符的一个都没有。 - 描述结尾改用半角句号:中文的
。换成.,符合目录的格式要求。 - README 补齐完整英文介绍:之前只有一小节开发说明,审核判为「没有英文文本」。现在英文节从 2.9K 字符扩到 18K,逐个说明九个页签、分享卡、评分公式、十三项设置、隐私边界、已知限制。
修复
- 10 处
!important清零:原来的写法是「先用动画,再用@media (prefers-reduced-motion: reduce)全部!important覆盖成 0」。改成把动效声明放进@media (prefers-reduced-motion: no-preference)——系统开启「减少动态效果」时那一段根本不匹配,自然不需要覆盖。效果一样,代码干净一半。 - 删死代码:
.kp-logo与@keyframes kp-breathe是早期版本留下的,全仓库无引用。
无障碍与隐私(回应审核的两条行为提示)
- Clipboard:插件只往剪贴板写,从不读。三处调用分别是「导出 Markdown」「复制分享文案」「复制分享卡文案」,都是你主动点按钮才触发。
- Vault Enumeration:为了统计贡献分和构建笔记地图,插件需要遍历库里的 Markdown 文件路径。这些路径只在本机内存里参与计算,不写日志、不发网络、不落任何缓存文件。
.obsidian、.trash、templates三个目录默认排除,你还可以在设置里追加要排除的目录。
安装
方式一:安装程序(推荐)
下载 Pulsewright-Setup-1.0.2.exe,双击运行,选中你的笔记库,点「安装到这个库」。装完打开 Obsidian → 设置 → 第三方插件 → 关掉「安全模式」→ 启用 Pulsewright。已经开着 Obsidian 的话按 Ctrl+R 重新加载。
静默安装(脚本/批量):Pulsewright-Setup-1.0.2.exe /silent "D:\你的库",日志写在 %TEMP%\pulsewright-setup.log。
方式二:压缩包
下载 pulsewright-1.0.2.zip,解压后把 pulsewright 整个文件夹放进 <你的库>/.obsidian/plugins/,再按上面的步骤启用。
方式三:社区目录
已经提交审核,通过之后可以直接在「设置 → 第三方插件 → 浏览」里搜到。
技术细节
- 测试:228 项单元测试全绿(
node tests/kp_test.js ./main.js)。 - 零依赖,无网络请求,无授权校验,不收集任何数据。
- 新增
package-lock.json(lockfileVersion: 3,零依赖,只有根包一条),让构建可复现。 - 新增
.github/workflows/release.yml:Release 发布后自动跑测试、对main.js/manifest.json/styles.css生成 GitHub artifact attestation(构建来源可验证),再上传到 Release。 styles.css25566 → 24960 字符。- 安装器为 C# WinForms 单文件(
csc编译,237056 B),三份插件文件以嵌入资源形式打包,运行时流式写出,不落地临时文件。
MIT License © 2026 Luo
Pulsewright 1.0.1 · 启动动画与流畅度优化
Pulsewright 1.0.1 · 知识脉冲
你的知识,有自己的脉搏。
一个把 Obsidian 库变成「可读的生命体征」的插件:贡献分、年度热力图、知识地层、月相日历、年度画像、知识复盘、笔记地图、笔记洞察、速记、分享卡。
全本地计算 · 零授权校验 · 只读笔记(不会改动你的任何一篇)。
这一版在做什么
1.0.0 已经能用,但打开时是「啪」一下全亮。这一版把「打开」这件事做成一段可以被感知的仪式:品牌标记先描出轮廓,标题与口号淡入,页签错峰浮起,卡片依次落位——大约 1.6 秒,之后完全静止。
同时把「顺滑」当正经事处理:切页签、换区间、翻月翻年、速记增删改,都不再重建整个外壳。
新增
- 插件启动入场动画:品牌环 760ms 描边生长(
pathLength="1"+stroke-dashoffset),脉冲折线延后 400ms 跟进;标题/口号 420ms 淡入上浮;九个页签按 26ms 错峰;正文卡片按 40ms 依次淡入。全程只用opacity与transform,走 GPU 合成,不触发布局。 - 安装器动画:窗口 260ms 淡入,logo 从 0.74 缩放到 1,标题→副标→口号→分隔线→列表→按钮→状态行依次上浮落位(680ms 收尾);点「安装到这个库」后进度条 460ms 缓入缓出推进,写盘完成后状态行变色并提示下一步。
/noanim开关:安装器支持/noanim关闭全部动画;检测到远程桌面会话(SystemInformation.TerminalServerSession)时自动降级为无动画。
改进
- 正文级重绘:新增
renderBodyOnly(),18 处整壳render()中 16 处改为只重建.kp-body——切页签、换区间、换指标、翻月、翻年、翻周、速记的保存/搜索/编辑/删除、地图标签筛选、数据页重建。仅「换画风」与「刷新」保留整壳重建(它们本来就要换外壳类名或复位按钮文案)。 - 搜索输入 rAF 合并:速记与地图的搜索框改为
requestAnimationFrame合并,一帧内多次按键只重绘一次,光标位置与选区保持。 - 指纹短路:
viewSignature()把 daily 六项汇总、笔记缓存条数、速记条数、当前页签/区间/指标/画风/设置版本拼成一个串;refresh()发现指纹未变就直接返回,不再做无意义的 DOM 重建。 - 滚动体验:
.kp-body加scrollbar-gutter: stable(切换页签时不再因滚动条出现/消失而横向抖动)与overscroll-behavior: contain(滚到底不把整个 Obsidian 一起带着滚)。 - 过渡属性具名化:
.kp-chip、.kp-btn、.kp-tab从transition: all改为逐属性声明,避免无关属性变化也触发合成。
无障碍
- 全站尊重
prefers-reduced-motion: reduce:系统开启「减少动态效果」后,入场动画、呼吸动画、描边生长全部关闭,描边直接归位,过渡归零。 - 补
:focus-visible焦点环,键盘 Tab 走页签时有清晰可见的落点。
安装
方式一:安装程序(推荐)
下载 Pulsewright-Setup-1.0.1.exe,双击运行,选中你的笔记库,点「安装到这个库」。装完打开 Obsidian → 设置 → 第三方插件 → 关掉「安全模式」→ 启用 Pulsewright。已经开着 Obsidian 的话按 Ctrl+R 重新加载。
静默安装(脚本/批量):Pulsewright-Setup-1.0.1.exe /silent "D:\你的库",日志写在 %TEMP%\pulsewright-setup.log。
方式二:压缩包
下载 pulsewright-1.0.1.zip,解压后把 pulsewright 整个文件夹放进 <你的库>/.obsidian/plugins/,再按上面的步骤启用。
技术细节
- 测试:228 项单元测试全绿(
node tests/kp_test.js ./main.js)。 - 零依赖,无网络请求,无授权校验,不收集任何数据。
- 新增纯函数
introDelay(i, step, base, cap)、viewSignature(o),均登记进PURE导出表。 - 安装器为 C# WinForms 单文件(
csc编译,237568 B),三份插件文件以嵌入资源形式打包,运行时流式写出,不落地临时文件。
MIT License © 2026 Luo
Pulsewright v1.0.0
给你自己的 Obsidian 库做一次体检:九个标签页、一套自绘图表、一份能直接发出去的分享卡,全部在本地算完。
你的知识,有自己的脉搏。
安装
插件还没上 Obsidian 社区市场,所以要手动放进库目录。下面两个包挑一个下载,都在本页底部的 Assets 里。
方式一:运行安装程序(Windows,最省事)
下载 Pulsewright-Setup-1.0.0.exe,双击运行。它会自动读出你电脑上所有 Obsidian 笔记库并列出来,选中一个点「安装到这个库」就装好了。
如果列表里没有你的库,点「浏览其他库…」自己选文件夹。装完打开 Obsidian → 设置 → 第三方插件 → 关掉「安全模式 / 受限模式」→ 启用 Pulsewright。Obsidian 已经开着的话按 Ctrl + R 重新加载。
没有数字签名,Windows SmartScreen 可能拦一下:点「更多信息」→「仍要运行」。安装器只做一件事——把三个文件复制进你选的库的
.obsidian/plugins/pulsewright/,不写注册表、不装服务、不改系统设置。
方式二:解压压缩包(Windows / macOS 通用)
下载 pulsewright-1.0.0.zip,解压得到一个 pulsewright 文件夹,里面是插件本体和一份《安装说明.txt》。
- 打开你的笔记库目录(就是放
.md文件的那个文件夹)。 - 进
.obsidian/plugins/(没有plugins就自己新建一个)。 - 把整个
pulsewright文件夹拖进去,最终长这样:<你的库>/.obsidian/plugins/pulsewright/manifest.json - Obsidian → 设置 → 第三方插件 → 关掉「安全模式 / 受限模式」→ 启用 Pulsewright。
.obsidian是隐藏文件夹。Windows 在资源管理器里勾「显示隐藏的项目」;macOS 在 Finder 里按Cmd + Shift + .。
如果整个库都没有.obsidian,先在 Obsidian 里点开一次「设置 → 第三方插件」,它会自动建出来。
方式三:自己拉源码
git clone https://github.com/yhjes2019/pulsewright.git
cp -r pulsewright <你的库>/.obsidian/plugins/pulsewrightWindows PowerShell:
Copy-Item -Recurse .\pulsewright "$env:USERPROFILE\Documents\你的库\.obsidian\plugins\pulsewright"不需要 npm install,没有构建步骤,也没有任何第三方运行时依赖 —— 全文只有一句 require('obsidian')。
用 BRAT
装了 BRAT 的话,添加仓库地址 yhjes2019/pulsewright 即可,后续更新走 BRAT 的「Check for updates」。
卸载
禁用插件后删掉 .obsidian/plugins/pulsewright/ 目录。你的笔记一篇都不会少。
九个标签页
| 页签 | 它回答什么 |
|---|---|
| 看板 | 这个月我投入了多少?连续了几天? |
| 知识地层 | 近 52 周,四种动作(写词 / 新建 / 内链 / 修订)各占多少 |
| 月相日历 | 每一天的月亮亮度=那天的强度 |
| 年度画像 | 一年里最好的那一天、最活跃的月份和星期 |
| 知识复盘 | 一份能直接贴进周报的 Markdown 周报 |
| 笔记地图 | 孤儿笔记、断链、标签云、目录分布 |
| 笔记洞察 | 我什么时候写、哪些笔记最该补、哪些标题快重复了 |
| 速记 | 面板里随手记,回车就存 |
| 数据 | 公式写在明面上,权重可改,CSV / JSON 一键导出 |
分享卡
数据页的「分享」卡可以导出 PNG 1080×1440 与同版 SVG,另可复制一段纯文本文案。卡上只有统计数字,不出现任何笔记标题或正文。
隐私
- 全部本地计算,不联网、无授权码、无设备指纹、无账号。
- 对
.md只有cachedRead,从不修改你的笔记正文。 - 写操作只有两处:库里的
data.json,和你指定的数据目录(默认Pulse/)。删掉即干净。
技术细节
- 零运行时依赖,
main.js单文件。 - 210 项单元测试 +
node --check,GitHub Actions 在 Ubuntu / Node 20 跑 CI。 - 界面全部自绘 CSS + 内联 SVG,不加载任何远程字体或图片。
- 代码从零开始写,不基于任何其他插件。
MIT License © 2026 Luo