Skip to content

Releases

Pulsewright 1.0.3 · 惦记

Choose a tag to compare

@yhjes2019 yhjes2019 released this 11 Nov 15:58

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.js 3352 → 4356 行,styles.css 1181 → 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 · 按社区目录审核意见整改

Choose a tag to compare

@yhjes2019 yhjes2019 released this 09 Nov 09:28

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.css 25566 → 24960 字符。
  • 安装器为 C# WinForms 单文件(csc 编译,237056 B),三份插件文件以嵌入资源形式打包,运行时流式写出,不落地临时文件。

MIT License © 2026 Luo

Pulsewright 1.0.1 · 启动动画与流畅度优化

Choose a tag to compare

@yhjes2019 yhjes2019 released this 09 Nov 07:51

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

Choose a tag to compare

@yhjes2019 yhjes2019 released this 09 Nov 06:07

给你自己的 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》。

  1. 打开你的笔记库目录(就是放 .md 文件的那个文件夹)。
  2. 进 .obsidian/plugins/(没有 plugins 就自己新建一个)。
  3. 把整个 pulsewright 文件夹拖进去,最终长这样:<你的库>/.obsidian/plugins/pulsewright/manifest.json
  4. Obsidian → 设置 → 第三方插件 → 关掉「安全模式 / 受限模式」→ 启用 Pulsewright。

.obsidian 是隐藏文件夹。Windows 在资源管理器里勾「显示隐藏的项目」;macOS 在 Finder 里按 Cmd + Shift + .。
如果整个库都没有 .obsidian,先在 Obsidian 里点开一次「设置 → 第三方插件」,它会自动建出来。

方式三:自己拉源码

git clone https://github.com/yhjes2019/pulsewright.git
cp -r pulsewright <你的库>/.obsidian/plugins/pulsewright

Windows 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