dsh-tiddlywiki 0.16.15 → 0.16.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -4
- package/lib/client.bundle.js +26 -26
- package/lib/client.js +26 -26
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/editor-popup.ts +29 -3
- package/src/client/knowledge-fab.ts +8 -2
- package/src/client/note-widget.ts +64 -27
- package/src/client/quick-note-dock.ts +25 -5
- package/src/client/session-summary.ts +65 -0
- package/src/client/settings-page.ts +19 -1
- package/src/client/ui-config.ts +61 -44
- package/src/host/config.ts +6 -0
- package/src/host/routes.ts +2 -0
- package/src/index.ts +6 -4
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
| 🧭 **内嵌编辑器** | 侧边栏「TiddlyWiki」入口(**显示名可自定义**,`ui.sidebarLabel`)→ 中央列内嵌完整 TW 5 编辑器(**同源代理**,经 DSH origin 访问,Tailscale/内网/域名/HTTPS 均可用) |
|
|
24
24
|
| 📚 **会话「知识库」Tab** | 每个会话顶部新增「知识库」Tab(v0.16.11,`ui.tabLabel` 可改、`ui.showSessionTab` 可关):**本会话产生/读取/检索过的 wiki 笔记汇总**,TW 原生渲染;后端用 DSH `sessionQuery` 读本会话 + 后代子代理的完整事件日志判定相关性,汇总写入 **volatile `$:/temp`**(不落盘、不进 git、重启即消失),绝无 UI 重复造轮子 |
|
|
25
25
|
| 🌗 **跟随 DSH 主题** | 嵌入式 TW(中央面板 +「在 TW 中编辑」弹窗)**自适应 DSH 深浅主题**:暗色自动切深色 palette、浅色恢复原 palette;**纯内存切换,不写回 wiki、不进 git**;设置页可关可换深色 palette |
|
|
26
|
-
| 📝 **快速笔记** | 右下角「知识库」悬浮按钮 **或聊天输入框上方的快捷按钮**(`ui.showQuickNoteDock`,与 todo/cost-meter/goal 等插件内容同槽位纵向排列、不重叠;按钮右缘实时贴齐输入框)→
|
|
26
|
+
| 📝 **快速笔记** | 右下角「知识库」悬浮按钮 **或聊天输入框上方的快捷按钮**(`ui.showQuickNoteDock`,与 todo/cost-meter/goal 等插件内容同槽位纵向排列、不重叠;按钮右缘实时贴齐输入框)→ **两种打开方式可切换**(`ui.quickNoteMode`,默认**原生模式**):**原生模式**点击直接弹出 **TW 原生编辑页**(独立可拖动/缩放小窗,草稿自动续写,✕/Esc/再点按钮均可关闭);**卡片模式**为原有快速笔记卡片:**CodeMirror 6** Markdown 编辑器(语法高亮 + 撤销/重做)、文件上传、多选/自动补全 tag、**草稿自动保存(刷新不丢)**、**「🕘 最近」一键载入旧笔记**,Ctrl+Enter 保存;**从按钮打开时卡片在按钮上方弹出、按住标题栏可自由拖动、再次点按钮可收起**;**卡片只允许点右上角 ✕ 或输入框按钮关闭**(点页面其他位置不会误关);可整体隐藏 |
|
|
27
27
|
| 🔄 **一键同步** | 「知识库」按钮 →「🔁 同步」:pull → commit → push;FAB 上的状态点实时反映 git 状态(已同步/待提交/可更新/离线),菜单里的状态行**悬停弹出详细 tip**(TW 服务 + git 状态 + 最近日志) |
|
|
28
28
|
| ⚙️ **设置页** | DSH 设置 →「TiddlyWiki 知识库」:插件/主题/语言管理与运行配置,应用后自动重启 TW;**「初始化」区块**列出所有一次性预置项(说明笔记/发送按钮/首页/所有文章/**menubar 顶栏主题自适应**/同源代理基址)的实时状态:**功能必需项**(发送按钮 + 代理基址)启动自动写入,**可选项默认不写入、不强绑定**——每项可手动**重新初始化**,可选项可**反初始化**(移除);**「所有文章」每页条数**可在配置里调整(实时生效,无需重新初始化) |
|
|
29
29
|
| 🛡 **零摩擦生命周期** | 随 dsh 自动启停;TW 子进程崩溃自动重启(退避);端口/目录/首次 git init 全自动 |
|
|
@@ -35,6 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
> 最近几个主要版本的一句话更新记录(完整变更见 git log / Releases)。
|
|
37
37
|
|
|
38
|
+
- **v0.16.17**(2026-09-07):**新:点击「快速笔记」可直达 TW 原生编辑页(`ui.quickNoteMode` 可切换)+ 修「✏️ 在 TW 中编辑」弹窗关不掉**。① **原生模式(默认)**:点击输入框上方/「知识库」菜单里的「快速笔记」不再先弹 Markdown 卡片,而是**直接弹出 TW 原生编辑页**(独立小窗):有未保存草稿自动继续编辑(标题/正文/tag 全恢复),没有则新建「时间戳标题 + 默认 tag」空草稿;在 TW 里编辑、保存/取消都是 TW 原生行为。设置页「常规配置」新增「点击快速笔记的打开方式」下拉(原生编辑器 / Markdown 卡片,`ui.quickNoteMode: native|card`,默认 native;改为 card 即恢复旧卡片体验,卡片全部功能保留)。② **修复弹窗 ✕ 关不掉**:根因是弹窗标题栏的拖动 handler 对**任何** pointerdown 都 `preventDefault()`——包括点在 ✕ 上(Pointer Events 规范里取消的 pointerdown 会吞掉派生的 click 事件,✕ 的 click 监听永远不触发,弹窗只能靠刷新页面关掉;快速笔记卡片自己的拖动 handler 有排除关闭按钮的守卫,弹窗漏了)。修复:拖动 handler 排除 ✕(与卡片一致),另加 **Esc 键关闭**;原生模式下再次点击输入框按钮也可收起弹窗。host 改动:`npm run build:host` + **重启 dsh web**;客户端改动刷新页面即生效,设置页改完即时生效。
|
|
39
|
+
|
|
40
|
+
- **v0.16.16**(2026-09-07):**修:会话「知识库」Tab 整页显示 wikitext 源码、链接点不动——根因是误入了 TW 的 ✏️ 编辑草稿视图**。汇总条目正文是 TW wikitext,数据/类型/渲染链路本身都是好的(服务端 render 实测输出含可点击 `<a>`);但一旦在该条目上点过 ✏️ 编辑,`Draft of '…'` 草稿会**继承全文**并以编辑框(textarea)呈现——看起来就是「没正确渲染、显示的是源码」,草稿还会被浏览器端 TW 同步回流服务端/落盘(日志里可看到 `Draft of '$:/temp/dsh/session-summary/…'` 的 save/delete 任务)。修复(纯客户端):注入后对汇总条目做**三层防误编辑**——① 清理每次挂载时残留的该汇总草稿(含从故事列表移除);② 在 iframe 的 `wiki.addTiddler` 层吞掉 `draft.of` 指向汇总的新草稿创建(幂等,每个 window 只包装一次);③ 禁用该 tiddler 帧的 ✏️ 编辑按钮(本地化 tooltip 定位,不依赖固定语言)。**顺带修复**:TW 面板 iframe 首帧侧边栏布局测量——load 后延时驱动 `$tw.rootWidget.refresh` 重渲染 `$:/core/ui/PageTemplate/sidebar` 并派发一次 `resize`(5.4.1 没有 `wiki.refreshTiddler`,用等价的 change 信号;多次延时兜底 boot 时序,theme-sync 同款 load 钩子模式,卸载时清定时器)。刷新页面即生效。
|
|
41
|
+
|
|
38
42
|
- **v0.16.15**(2026-09-07):**修:agent 写笔记不指定内容类型 → 显示解析错乱;现在自动默认 `text/markdown`**。`tiddlywiki_put` / `tiddlywiki_batch_put` 组装 tiddler 时从不设 `type`,TW 把无 type 条目按 wikitext(`text/vnd.tiddlywiki`)解析,agent 写的 Markdown 正文(`##`、`**`、列表…)全部原样显示。修复:两工具在写入前对**未指定类型**的条目自动补 `type: text/markdown`(`$:/` 系统条目除外——config/插件内部件不能被强标 markdown;显式传 `fields.type` 仍然生效,可写 `text/vnd.tiddlywiki`);工具输出新增「类型: …(未指定,已默认 markdown)」让 agent 可见。**顺带修掉一个隐患**:工具描述与 README 里的 `fields` 示例原来是 `{"type":"meeting","date":…}`——`type` 是 TW 的**内容类型保留字段**,agent 照抄示例会把内容类型写成 `meeting`、渲染直接坏掉——示例改为 `{"date":…}` 并在描述/注入提示词里明确警告「业务分类放 tags,不要放 fields.type」。注入提示词新增「**内容类型约定**」段(默认 markdown、如何写 wikitext、fields.type 警告)。host 改动:`npm run build:host` + **重启 dsh web** 后生效(提示词/工具都是启动时装配)。
|
|
39
43
|
- **v0.16.14**(2026-09-07):**修:「知识库」Tab 仍显示「佚失条目」——根因是浏览器端 TW 根本看不到 `$:/temp`**。v0.16.13 的过滤/自愈治标不治本:TW 浏览器端同步机制天生排除 volatile 条目——服务端 recipe 列表默认 `[all[tiddlers]!is[system]]`(`get-tiddlers-json.js`),tiddlyweb adaptor 的请求过滤器又显式 `-[prefix[$:/temp/]]`(`tiddlywebadaptor.js getSkinnyTiddlers`),lazyLoad 只补「已知 skinny」不拉「完全缺失」——所以 iframe 里的 TW 永远拿不到 `$:/temp/dsh/session-summary/<会话ID>`,`#<标题>` hash 直达必然渲染「佚失条目」,客户端再怎么自动重新生成也无济于事(服务端有、浏览器没有)。修复(纯客户端,host 无变化):iframe **不带 hash** 挂载(注入落地前盖加载浮层,不闪现默认页),就绪后由客户端**注入**——同源 `/get` 读回汇总字段 → `iframe.contentWindow.$tw.wiki.addTiddler(...)` 写进 iframe 的 TW store → 设 `contentWindow.location.hash` 走 TW 原生 hash 导航(与中央面板 `openTiddler` 同一机制,落地重试绕开 boot 时序竞争);自愈升级:30s 探测在「服务端丢失(TW 重启)→ 重新生成」之外,新增「服务端仍在而 iframe store 丢失(iframe 自身重载)→ 重新注入并导航」,不打扰用户在 iframe 内的浏览。汇总条目仍只存在于服务端内存 + iframe 内存——**不落盘、不进 git、重启即消失(设计不变)**。刷新页面即生效。
|
|
40
44
|
- **v0.16.13**(2026-09-07):**修:会话「知识库」Tab 出现「佚失条目」**。① 汇总内容里的死链/垃圾条目:会话日志常混入模型的示例/残缺写法(`#…`、`#标题`、带反引号的截断链接),旧代码会把它们原样收进汇总并写成 `[[…`]]` 这种坏 wikitext,TW 渲染成「佚失条目」——现在采集时统一过滤(控制字符 / `]` `|` 反引号 `#` / `…` 占位 / 超长标题一律丢弃)。② 汇总条目本身是 volatile 的 `$:/temp`,**TW 重启即消失**,若 Tab 一直开着,iframe 会停在 TW 的「佚失条目」页——客户端新增自愈:每 30s 探测一次 `/get`,条目不存在就自动重新生成(连续 3 次仍缺失则交还手动「🔄 刷新」)。刷新页面 + 重启 dsh web 后,重新打开 Tab 即生成干净汇总。
|
|
@@ -148,7 +152,9 @@ dsh plugin --profile web add link:/path/to/your/dsh-tiddlywiki
|
|
|
148
152
|
- 切换是**纯内存**的(写入 `$:/palette` 后同步校准 syncer 的 changeCount,阻止它 PUT 回服务端)——**不写回 wiki、不进 git 历史**,你的 palette 选择与知识库 git 状态始终干净;
|
|
149
153
|
- 开关与深色 palette 可在设置页「常规配置」调整。
|
|
150
154
|
|
|
151
|
-
**📝 快速笔记** —
|
|
155
|
+
**📝 快速笔记** — 两个入口,两种打开方式(`ui.quickNoteMode`,设置页可切换):
|
|
156
|
+
- **原生模式(默认,v0.16.17)**:点击入口**直接弹出 TW 原生编辑页**(独立小窗,可拖动/缩放)——立刻可用 TW 自己的 Markdown 编辑、标签、保存/取消;有未保存草稿会自动继续编辑它,没有则新建「时间戳标题 + 默认 tag」的空草稿;再次点击输入框上方的按钮可收起弹窗,弹窗右上角 ✕ / Esc 也能关(v0.16.17 修复了 ✕ 关不掉的问题);
|
|
157
|
+
- **卡片模式(`ui.quickNoteMode: "card"`)**:保留原有 Markdown 卡片体验(下面列出的功能全在卡片模式里);
|
|
152
158
|
- **入口一**:聊天输入框上方的**快捷按钮**(v0.16.4,`ui.showQuickNoteDock` 控制、默认开)——挂在 DSH 官方 `conversation.input.dock` 槽位(「输入框上方的全宽条目」,todo/cost-meter/goal/queue/git-graph 等插件内容也在这里),纵向 flex 排列,**天然不重叠**;按钮**右缘实时贴齐输入框**(v0.16.6,随窗口/列宽变化自动重对齐),不再悬在整列最右端;
|
|
153
159
|
- **入口二**:右下角「**知识库**」悬浮按钮 →「📝 快速笔记」;
|
|
154
160
|
- 从**输入框按钮**打开时,卡片在**按钮上方跟随弹出**(水平居中、自动收进视口;v0.16.6);从 FAB 打开走右下角默认位;
|
|
@@ -159,7 +165,7 @@ dsh plugin --profile web add link:/path/to/your/dsh-tiddlywiki
|
|
|
159
165
|
- **🕘 最近**:一键列出最近修改的笔记,点标题直接载入编辑器继续改(不需要开完整 TW 去找);
|
|
160
166
|
- **文件上传**:点「📎 上传」或直接把文件拖进编辑器——文件存到 wiki 的 `files/` 文件夹并随 git 同步;图片插入 ``、其它文件插入 `[名](/dsh-tiddlywiki/tw/files/名)`(**同源代理 URL**,在 TW 与快速笔记预览里都能打开);
|
|
161
167
|
- **Ctrl+Enter 保存**为独立 tiddler;笔记 `type` 自动设为 `text/markdown`,所以上传的图片/链接在 TW 里按 Markdown 正常渲染;
|
|
162
|
-
-
|
|
168
|
+
- 卡片模式里点「**✏️ 在 TW 中编辑**」→ 保存后弹出**独立小窗**(可拖动/缩放)加载 TW 原生编辑器编辑该条。
|
|
163
169
|
|
|
164
170
|
**🔧 一键同步 + 面板** —「知识库」按钮是一个**统一入口**,替代了旧版三个叠在右下角的悬浮按钮:
|
|
165
171
|
- **🖥 打开/收起 TW 面板** 与 **🔄 重载 TW 面板**(`ui.showPanelStatus` 控制);
|
|
@@ -174,6 +180,7 @@ dsh plugin --profile web add link:/path/to/your/dsh-tiddlywiki
|
|
|
174
180
|
**📚 会话「知识库」Tab(本会话相关 wiki 汇总)** — 每个会话顶部在「对话 | 轨迹」旁新增一个 Tab(v0.16.11,默认名**「知识库」**,可在设置页改 `ui.tabLabel`;`ui.showSessionTab` 可整体关闭):
|
|
175
181
|
- 进入 Tab 自动生成当前会话的 wiki 汇总页,**TW 原生渲染**(复用同源代理 iframe + TW 自己的主题/链接/导航,不另造 UI);顶栏有「🔄 刷新」按钮可重新生成;
|
|
176
182
|
- 渲染机制(v0.16.14):浏览器端 TW 的同步过滤器天生排除 `$:/temp`(volatile 条目到不了 iframe),因此由客户端在 iframe 就绪后**注入**汇总条目(`addTiddler`)再走 TW 原生 hash 导航显示;
|
|
183
|
+
- 汇总条目**不可编辑**(v0.16.16):它是 volatile 临时内容、每次自动重新生成,编辑毫无意义——若误入 TW 的 ✏️ 编辑草稿视图,整页会呈现为 wikitext 源码(链接点不动),草稿还会被浏览器端同步回流服务端。插件在注入后自动**清理残留草稿**、**吞掉指向汇总的新草稿创建**并**禁用 ✏️ 编辑按钮**;
|
|
177
184
|
- 判定「哪些笔记和本会话相关」由后端 `POST /dsh-tiddlywiki/session/summary` 完成:用 DSH `sessionQuery` 读本会话(**含后代子代理**,`traceSession` 递归)的完整事件日志,按工具调用归类——**产生 📝**(`put`/`batch_put`/`rename`)、**读取 👀**(`get` + 助手回复里 `/dsh-tiddlywiki/tw/#…` 引用链接)、**检索 🔍**(`search`/`recent` 记关键词);每篇列出当前标签/修改时间/是否已删除,仅子代理触达的标注「(子代理)」;
|
|
178
185
|
- 汇总页写入 TW 的 **volatile 命名空间 `$:/temp/dsh/session-summary/<会话ID>`**——TW 默认 SyncFilter 显式排除 `$:/temp`,**不落盘、不进 git、TW 重启即消失**,绝不污染知识库;
|
|
179
186
|
- 与左侧边栏「TiddlyWiki」完整面板互不影响:那里保持原样,本 Tab 只是多一个快速入口。
|
|
@@ -183,7 +190,7 @@ dsh plugin --profile web add link:/path/to/your/dsh-tiddlywiki
|
|
|
183
190
|
| 区块 | 内容 |
|
|
184
191
|
|---|---|
|
|
185
192
|
| 状态/重启 | TW 运行状态 + git 概览 + 「同步」按钮 + 「重启 TW」按钮 |
|
|
186
|
-
| 常规配置 | 快速笔记默认 tag
|
|
193
|
+
| 常规配置 | 快速笔记默认 tag、**点击「快速笔记」的打开方式(原生编辑器 / Markdown 卡片,`ui.quickNoteMode`)**、git 自动 commit/防抖/远端/分支、ui 开关(快速笔记/输入框上方快捷按钮/面板状态/同步按钮——分别控制对应入口)、**侧边栏 TW 入口显示名称**、**跟随 DSH 主题开关 + 深色 palette**——改了什么保存什么 |
|
|
187
194
|
| 插件管理 | 自带官方插件勾选(可搜索)→ 应用并自动重启 TW |
|
|
188
195
|
| 主题管理 | 自带主题**多选加载 + 单选活动** → 应用并自动重启 TW |
|
|
189
196
|
| 语言管理 | 自带官方语言包勾选(含 zh-Hans 简体)→ 应用并自动重启 TW |
|
|
@@ -279,6 +286,7 @@ TW 子进程只监听 **127.0.0.1 回环**(更安全),**agent 工具、快
|
|
|
279
286
|
ui:
|
|
280
287
|
showQuickNote: true # 是否显示「知识库」按钮里的「快速笔记」入口
|
|
281
288
|
showQuickNoteDock: true # 是否显示聊天输入框上方的「快速笔记」快捷按钮
|
|
289
|
+
quickNoteMode: "native" # 点击「快速笔记」的打开方式:native=直达 TW 原生编辑页(默认);card=Markdown 卡片
|
|
282
290
|
sidebarLabel: "TiddlyWiki" # 左侧侧边栏 TW 入口的显示名称(可自定义)
|
|
283
291
|
showPanelStatus: true # 是否显示「知识库」按钮里的 TW 面板/重载入口与状态行
|
|
284
292
|
showSyncButton: true # 是否显示「知识库」按钮里的「同步」入口(git 状态点常驻 FAB)
|