dsh-tiddlywiki 0.28.11 → 0.28.13
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/docs/CHANGELOG.md +4 -0
- package/docs/features.md +3 -2
- package/docs/usage.md +3 -2
- package/lib/client.js +27 -27
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/note-widget.ts +5 -5
- package/src/client/settings-page-config.ts +21 -6
- package/src/client/settings-page-wikis.ts +6 -2
- package/src/client/sidebar-entry.ts +87 -16
- package/src/client/wiki-scope-dock.ts +58 -7
- package/src/host/seed-notes.ts +1 -1
- package/src/index-clip.ts +1 -1
- package/src/index-git.ts +1 -1
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
> 最近几个主要版本的一句话记录(完整变更见 [Releases](https://github.com/bbqisbbq/dsh-tiddlywiki/releases) / git log)。
|
|
6
6
|
|
|
7
|
+
- **v0.28.13**(2026-09-29):**修「左侧多 wiki 入口有时候要点两次才能切到对应的库」**(作者报障)。① **症状**:面板正开着「工作」时点侧边栏「个人」那一行,得点两次才切过去。② **根因**:入口行的点击**一律**走 `state.toggle()` —— `setFocusWiki()` 确实把焦点换过去了(内核也开始换库),但**同一击**里的 toggle 又把面板关掉;用户看到的只是"面板没了",于是再点一次。开着面板时点**另一个**库,用户要的是切换,不是关面板。③ **修法**:判定收成一个纯函数 `resolveEntryClick()`(面板关着 → `open`;开着且就是当前显示的那个库 → `close`;开着但是别的库 → `switch`),副作用收进 `applyEntryClick()`;`switch` 只切焦点、面板保持打开,换库仍由焦点订阅驱动内核重载(`tw-frame.ts`)。**两条顺序/同源要求**:(a) 判定必须在 `setFocusWiki()` **之前**求值 —— 反了的话刚切过去的那个库会被当成"面板此刻显示的就是它"→ 判成 `close`,等于没修;(b) 行**高亮**与点击判定改用同一个解析 `shownWiki()` —— 原来高亮那一路把 `defaultId` 传成了 `undefined`,焦点还没显式设过时会点亮**第一行**而不是默认库;高亮与点击语义不一致时,"点看起来没亮的那一行"就会变成关面板(同一个报障的第二个来源)。④ **守门**:`verify-wiki-focus.mjs` 新增两条 —— 判定表(7 个用例,含单库那一行)与**行为级**用例(真 `PanelState` + 真 `setFocusWiki`,直接断言本次报障的原始场景:"面板开着时点另一个库,面板必须仍开着且焦点已切过去"),另加源码级反向断言(入口行里不得再出现 `toggle()`、判定必须在切焦点之前求值)。**已反向验证**:注入旧行为(切换判成关闭 / 退回无条件 toggle / 把判定挪到切焦点之后)三种改法都稳定变红。**单库安装行为逐字不变**(那一行没有 `wikiId`,仍是纯粹的开关)。⑤ **顺带修好一个长期红着没人看的守门**:`scripts/smoke-client.mjs`(CI 里那条「client bundle module-loader 形状」检查)的 React 替身缺 `createContext`,而 `src/client/tool-views.ts` 自 v0.28.8 起在**模块作用域**调用 `React.createContext(...)` —— 这个脚本于是每次都抛 `c.createContext is not a function`(已在 HEAD 的 `lib/client.js` 上复现确认,与本次改动无关),等于**从那时起就在 CI 里空转**。补全替身(`createContext`/`useContext`/`useMemo`/`useCallback`/`useLayoutEffect`/`forwardRef`/`memo`)并在注释里写清「stub 漏一个 API 就是漏一次检查」。
|
|
8
|
+
|
|
9
|
+
- **v0.28.12**(2026-09-29):**「默认库」不再是一个名字:哪里都直接用被设为默认的那个库的真实显示名**(作者要求:「设置了默认库之后,在其他所有的地方不出现默认库的字样……开启会话时默认选中的就是被设置成默认库的库,而不是显示默认库这个选项,这个选项都不该在下拉列表中出现」)。① **会话选择器**(输入框上方那一行):删掉那个无名的 `value=''`「默认库」选项;默认那个库直接用自己的显示名排在最前,后缀「(默认)」只作**身份标记**;新会话打开时它已经是选中项 —— 靠 `/session/wiki` 返回的 `resolved{id,label}`(宿主解析出来的"这个会话实际用哪个库"),没显式选过就显示它。选中默认那一项 = 清空显式作用域(仍然跟随默认),所以以后改了默认库、没动过选择器的会话会跟着走(语义与旧的无名选项**逐字一致**,只是不再有那个名字)。② **快速笔记「写入」目标**:同样去掉名为「默认库」的占位项(清单里本来就有那个库本身),只给默认库加「(默认)」标记。③ **设置页剪藏目标**:空值那一项就地改名成默认库的显示名 +「(默认)」,并且**跳过**它自己那一行(否则同一个库在下拉里出现两次);读不到清单时给中性说法「(跟随默认的那个库)」,绝不退回「默认库」。④ **设置页「运行模式」**:`单库(只跑默认库)` → `单库(只跑 <那个库的名字>)`,切单库的确认文案同样直呼其名。⑤ 顺带清掉两处宿主日志里的「默认库」措辞(共用仓库的 git 冲突、剪藏回落),插件说明 seed 里那句也改成「运行模式、库清单、以及哪个库是默认的」。**守门**:`verify-wiki-focus.mjs` 新增一条——把四个界面模块的**注释剥掉**后断言代码里不存在「默认库」字样(注释当然要能讲这段历史),并逐条断言会话选择器读 `resolved`、带「(默认)」标记、默认选中、选中默认项发 null,快速笔记无占位项,剪藏下拉改名且不重复列默认库,单库模式文案直呼其名。单库安装行为逐字不变。
|
|
10
|
+
|
|
7
11
|
- **v0.28.11**(2026-09-29):**修两个多库界面的真机报障(卡片链接开错库、新会话两个选择器)+ README 不再放版本记录**(三条都是作者当天报的)。① **点卡片上的「在 TW 打开」跳到最后打开的那个库** —— 卡片把会话作用域(`wikiId`)塞进了 `openTiddler` 的事件 detail,但 `panel.ts` 的事件处理**只读了 title**;而面板与右栏都按 GUI 的**焦点库**加载 `/tw/<id>/`,链接的库被整个丢掉(`undefined` 当时还同时表示"默认库"和"未指定",根本区分不开)。现在 `TwWikiTarget` 把三者分开(`string` = 该库 / `null` = 明确默认库 / `undefined` = 未指定、跟随焦点库):卡片与列表行传 `null` 而不是省略;`panel.ts` 拿到 `wiki` 先 `setFocusWiki()` 再路由(两个 TW 界面都按焦点库加载),并把目标库透传给右栏 tab 与中央面板。内核补齐**换库时序**:`wikiSwitchPending` 期间不落 hash —— 否则 hash 会写进正在被替换的旧文档,随后整页重载把它连同 `pendingHash` 一起吞掉(表现为"停在库首页、笔记没打开")。全局链接拦截面同样不再把裸 `/tw/#标题` 一律当默认库:链接自带 `/tw/<id>/` 就用它,裸路径取**所在卡片 / 会话汇总面板**的 `data-dsh-tw-wiki`(工具卡与会话「知识库」Tab 的根节点新增该属性),两者都没有才跟随焦点库。② **新会话出现两个知识库选择器**(其中一个与快速笔记同一行)—— 根因是 v0.28.8 给 `conversation.input.selector.context` 配的**「2 秒没等到就回落到 dock」**:回落会往 `conversation.input.dock` **再注册一个 blank-only 条目**,而 dock 里本来就有同一个选择器(v0.28.7 起由快速笔记条目的 `scope` 参数渲染在同一行)——本机 shell 恰好不声明 `selector.context`(`app.asar` 里连这个字符串都没有),于是回落成了常态、两个选择器同时渲染。现在**删掉回落**(dock 里那个才是唯一常驻的家),并把"谁在用"做成显式协议:`scope-seat.ts` 用 `isBlankSeatMounted()` 公布 context 那一格是否已挂上,dock 里的选择器在**空白会话 + 那一格在挂着**时返回 null 让位(`useSessions` 随之从快速笔记条目透传给子组件,否则子组件认不出空白会话、让位不了)。③ **README 不再放版本记录**(作者要求:只放最新最重要的信息,版本历史单独一个文档)—— 删掉 README 那一节(内容本来就是 `docs/CHANGELOG.md` 的副本),版本一致性的第三个锚点从 README 改到 `docs/CHANGELOG.md` 顶部第一条,并**反向断言 README 里不得再出现逐版本条目**(防止它随每次发布慢慢长回去)。守门:`verify-frame-surface.mjs` 新增换库时序行为单测(旧文档不得收到 hash、新文档必须收到);`verify-wiki-focus.mjs` 重写选择器座位那条(不许再回落注册 dock 条目、必须有 blankSeat 让位协议)并新增「卡片链接必须带库」的源码级断言;`verify-version-consistency.mjs` 改锚点 + 新增 README 反向断言。单库安装行为逐字不变。
|
|
8
12
|
|
|
9
13
|
- **v0.28.10**(2026-09-28):**修「图标弹层出现在设置弹窗后面、被遮挡」**(作者 v0.28.9 重启后实测报障)。① **根因是层级用错了数**:设置页是 DSH 的 `Modal`,渲染进 portal 且根层就是 `position:fixed; z-index:1000`(`dsh-client-ui-primitives/Modal.module.css` 的 `.root`),而弹层写的是 `z-index:60`。**`z-index` 只在同一个层叠上下文里比较** —— 弹层虽然是 `document.body` 的直接子节点(自己也在根上下文),但 60 < 1000,所以整层被 Modal 盖住:弹是弹了,在设置弹窗**后面**。② **修法**:改为 **1100**。这不是随手挑的"大一点的数",而是 DSH 自己给「锚点在对话框内部的浮层」定的值 —— `Menu.module.css` 的 `.portal`,注释原话:*"Portaled lists must layer above modal overlays (z 1000) — an anchor inside a dialog still expects its menu on top"*。跟它对齐即高于 Modal(1000)、低于我们自己的 toast(10001)。③ **守门**:断言弹层 `z-index ≥ 1100`,并**解析规则体时先剥掉注释**(第一版按字符往后切 400 字符,结果切到了我新写的注释里那句「DSH Modal 的 1000」,解析出 1000 而误报)。已反向验证:改回 `z-index:60` → 红;恢复 1100 → 绿。④ **顺带补 `styles.ts` 模板串守门**:CSS 正文里的反引号会让 `CSS_TEXT` 提前结束,`typecheck` 报 TS1005、而 `lib/` 已被 `clean-lib` 删掉(构建到一半失败)。本仓库踩过两次(v0.25.0 注释里引 `.dsh-tw-settings`;v0.28.9 我在解释 z-index 时又写了一次)。⑤ **这条守门的第一版是错的,值得单独记**:它检查「第一个闭引号之前有没有反引号」—— 可一旦正文多了一个反引号,**那个反引号本身就变成了"闭引号"的位置**,body 在它之前就结束了,于是"body 里没有反引号"**永远成立**:注入反引号反而让断言更容易通过。**用出错的输入去验证出错的解析器,必然假绿。** 改成检查「模板串有没有被提前截断」——正文须以 CSS 注释开头、以 `}` 结尾,且闭引号之后必须紧跟正常模块代码(`/**` / `import` / `const` …)。再注入反引号即稳定变红。⑥ 复核:`typecheck` / `build`(`client.bundle.js` 704856 字节,并确认 `z-index:1100` 进了 bundle)/ `verify:static` / `verify:unit` / `verify:e2e` / `verify:large` 全绿。
|
package/docs/features.md
CHANGED
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
| 能力 | 说明 |
|
|
6
6
|
|---|---|
|
|
7
7
|
| 🏠 **文档中心起步包** | 首次安装自动 seed:插件说明 + 「示例与文档」(主题汇总模板 / 教程 / 三个示例主题页),首页「📚 插件文档」栏一键查阅;**同名 tiddler 已存在一律安全跳过,绝不覆盖你的数据**(v0.16.22);插件说明里的**工具清单由工具注册表实时生成**,不会再写着「10 个工具」却已经 15 个(v0.22.0) |
|
|
8
|
-
| 🗂 **多知识库(v0.28.0)** | **多个 TiddlyWiki 同时在线**,每个库独立配置、独立 git 仓库(或共用仓库按文件夹物理划分 —— 「工作 + 个人」同仓、「书籍」独立仓,两种拓扑都支持)。开关是 `wikis.json` 的 `mode`,**缺省 `single`**:升级用户的行为逐字不变(位置仍由旧指针文件 > cordis 默认决定)。每个库有自己的编辑器与入口(右下角「知识库」菜单的分组、每个库自己的 `/tw/<id>/` 同源基址),设置页「知识库列表」负责增删改 / 启停 / 设为默认 / 开局自启 / 对 Agent 可见性;「移出列表」明确**不会删除目录**。快速笔记卡片也能选目标库(默认跟随你在 GUI 里看的那个库;**整张卡片一起换库**:标签建议 / 最近 / 附件 / 保存 /
|
|
8
|
+
| 🗂 **多知识库(v0.28.0)** | **多个 TiddlyWiki 同时在线**,每个库独立配置、独立 git 仓库(或共用仓库按文件夹物理划分 —— 「工作 + 个人」同仓、「书籍」独立仓,两种拓扑都支持)。开关是 `wikis.json` 的 `mode`,**缺省 `single`**:升级用户的行为逐字不变(位置仍由旧指针文件 > cordis 默认决定)。每个库有自己的编辑器与入口(右下角「知识库」菜单的分组、每个库自己的 `/tw/<id>/` 同源基址),设置页「知识库列表」负责增删改 / 启停 / 设为默认 / 开局自启 / 对 Agent 可见性;「移出列表」明确**不会删除目录**。快速笔记卡片也能选目标库(默认跟随你在 GUI 里看的那个库;**整张卡片一起换库**:标签建议 / 最近 / 附件 / 保存 / 弹窗编辑器同库)。**左侧边栏每个在运行的库一行**(各用自己在「知识库列表」里配的显示名与图标,当前显示的那个高亮):**点另一个库 = 立刻切过去**(v0.28.13 起面板保持打开),点当前那个库才收起 —— 入口同时也是开关。 |
|
|
9
9
|
| 🎨 **每库图标用 DSH 官方图标系统(v0.28.8)** | 知识库列表里每行的图标是个**弹出式网格**:收录 **DSH 官方的 36 个图标**(内联的是上游的 path 数据,客户端保持纯 DOM、零运行时依赖)+ 本插件自绘的 8 个 + 一组 emoji,超出 **48 个一页**分页展示;选中即写入 `wikis.json` 的 `icon`。同时修掉一个真 bug:`/admin/wikis` 的读取视图漏了 `icon` 字段,导致「选了图标、界面立刻变回默认」(写进去了、读回来是 `undefined`)—— 守门钉死该字段并反向验证过。 |
|
|
10
10
|
| 📑 **设置页分页:总览 / 本库配置 / 全局(v0.28.8)** | 多库模式下十几块面板挤在一页里,既分不清「改这个库」还是「改整个插件」,改完也没有退出口。现在按作用域分成三个 tab:「**总览**」(名册 + 全局项)、「**本库配置**」(点某个库的「配置」才出现;按钮变成「**退出配置**」,再点一次就回到总览)、「**全局**」。「插件管理(自带官方插件)/ 主题管理 / 语言管理 / 初始化」这些**per-库**面板只在本库配置里渲染(此前它们混在全局项中,看着像所有库共用一个设置)。**单库安装没有 tab 条**,就是原来那一页,逐字不变。 |
|
|
11
|
-
| 🆕 **新会话也能选知识库(v0.28.8)** | 会话知识库选择器此前只长在输入框上方;空白会话(还没发过消息、输入框尚未出现)里它挂在**预设/模式选择旁边**。实现是**声明感知**的:DSH 声明了 `conversation.input.selector.context`
|
|
11
|
+
| 🆕 **新会话也能选知识库(v0.28.8 / v0.28.11)** | 会话知识库选择器此前只长在输入框上方;空白会话(还没发过消息、输入框尚未出现)里它挂在**预设/模式选择旁边**。实现是**声明感知**的:DSH 声明了 `conversation.input.selector.context` 就注入那里(那一格只对空白会话渲染),声明不到**就留在 dock 里那一行** —— 任何情况下都只有**一个**选择器(v0.28.11 修:旧实现"2 秒没等到就回落到 dock"会**再注册一个条目**,而 dock 里本来就有同一个选择器,于是新会话里出现两个、其中一个和快速笔记同一行)。 |
|
|
12
|
+
| 🏷 **「默认库」不再是一个名字(v0.28.12)** | 设置过默认知识库之后,界面**不再显示「默认库」这个字样**——被设为默认的那个库一律直接用**它自己的显示名**(后缀「(默认)」只作身份标记)。会话选择器里它排在最前、**新会话打开时它已经是选中项**(选中它 = 清空显式作用域,所以以后改了默认库,没动过选择器的会话会跟着走);剪藏目标下拉里它代表"不指定",同一个库不会出现两次;快速笔记「写入」目标、设置页「单库(只跑 X)」与切单库的确认文案同样直呼其名。只读清单失败时给中性说法,绝不退回「默认库」。 |
|
|
12
13
|
| 🖥 **桌面版(DSH Desktop)能起 TW 了(v0.28.8)** | TW 子进程需要真正的 `node`,而桌面版里 `process.execPath` 是 Electron —— 以前直接拿它 spawn,TW 起不来。现在按 `DSH_TIDDLYWIKI_NODE` → `where node` / `which node` → `process.execPath` 的顺序解析并缓存,启动日志写明用了哪个;`scripts/verify-desktop-node.mjs` 以行为级断言守门(进 `verify:unit`)。 |
|
|
13
14
|
| 🔒 **对 Agent 的可见性(v0.28.0)** | 每个库可设「对 Agent 隐身」= **彻底不可达**:不进会话选择器、不进注入提示词、`tiddlywiki_*` 工具永不触及(人在 GUI 里照常用它)。会话级作用域**单选**(输入框上方的选择器,选择存在 `$DSH_HOME/dsh-tiddlywiki/sessions.json` 并跨重启存活),工具按会话路由,**可见库多于一个时每条回执都标明库名**,注入提示词按会话求值并读**该库自己**的 `prompt.*`。两条刻意的拒绝:作用域指向隐身库 → 忽略(隐身是硬边界);指向可见但**没在跑**的库 → **报错并带上库名**,绝不静默落到别的库 —— 静默换库会让笔记落进你没指定过的库,而且看起来一切正常。 |
|
|
14
15
|
| 🧩 **拆库引导(v0.28.0)** | 想把现有库按用途拆开(语料/归档 vs 工作集)时有一份现成流程:[docs/wiki-split.md](wiki-split.md) 顶部是**一整段可直接复制给 Agent 的话**;Agent 会先只读体检、再问五个问题(每个都给默认建议)、出方案表格等你确认,然后备份 → `git mv` 保历史 → 登记进插件 → 校验,**旧库一个都不删**。随包 skill `dsh-tiddlywiki-wiki-split` 会在启动时装进 `$DSH_HOME/skills/`(**只覆盖带标记的文件**,你自己写的 skill 不被碰),也可以直接说「用拆库 skill 帮我拆」。 |
|
package/docs/usage.md
CHANGED
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
- **🗂️ 右侧边栏 Tab**(v0.16.21):DSH 新右侧栏展开后,首页会出现「**TiddlyWiki 知识库**」入口盒,点击即在右侧栏以 tab 形式打开完整 TW 编辑器——**与聊天并排**,适合边聊边查/边记。由 `ui.showRightbarTab` 控制(默认开);老版本 DSH(无右侧栏)自动跳过。
|
|
66
66
|
- **🧩 Better Sidebar 共存**:装了 [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) 时,插件只做 UI 共存(中央 TW 面板的 z-index 自动压在其侧边栏展开/收起按钮之下,按钮始终可点)。**v0.17.0 起不再向 dsh-better-sidebar 注册「TiddlyWiki 知识库」tab**(旧版可用 `ui.showBetterSidebarTab` 关闭)——该 tab 的 kind 会与其它注册方冲突报 `tab kind "dsh-tiddlywiki" is already registered`。右侧边栏入口请用上面的 **右侧边栏 Tab**(DSH 原生 rightbar)。
|
|
67
67
|
- **📝 快速笔记**:输入框上方快捷按钮(`ui.showQuickNoteDock`)或 FAB;`ui.quickNoteMode` 选打开方式——**native**(默认,直达 TW 原生编辑页,草稿自动续写)或 **card**(CodeMirror 6 Markdown 高亮、文件上传、多选 tag、草稿自动保存、「🕘 最近」载入、Ctrl+Enter 保存)。**v0.22.6**:原生编辑弹窗里用 TW 的「🗑 删除」把笔记删掉后不会再变成打不开的白板——再点一次「快速笔记」就会重新载入编辑器;card 模式底部操作条改成「按钮文字永不折行、放不下时整组换行」,窄卡片里不再把「✏️ 在 TW 中编辑」压成两行。
|
|
68
|
-
- **📌 本地剪藏桥**(可选,v0.16.24+/v0.16.25 支持图片):DSH 设置 → 常规配置 → 勾选「**启用本地剪藏桥**」(保存后立即生效)——DSH 即监听 `127.0.0.1:8618` 接收剪藏请求。浏览器书签栏新建书签,把知识库文档里的 JS 代码粘贴为地址,点一下弹出**浮层**:确认/修改标题与划线文字、勾选页面图片(封面自动标出)→「剪藏」即写入 wiki。文字成笔记(默认 `clip` 标签、正文含来源与选中文字、重名自动 `(2)` 去重);**图片由 DSH 本机下载字节存为二进制附件**(`clip-url`/`clip-note` 溯源字段,笔记内 `[img[标题]]` 内嵌展示;某张下载失败自动降级为链接),全部随 wiki 自动 git commit。「📚 插件文档」栏的 `本地剪藏桥(书签小工具)` seed 文档含完整步骤、书签代码、安全说明与 curl 用法。安全:桥只监听 127.0.0.1 + Host 白名单防 DNS rebinding;**强烈建议设 `bridge.token`**(非空时校验书签的 `x-clip-token` 头,防止任意网页往 wiki 里塞内容)。图片附件按设计不参与 `search`/`recent`(避免刷屏),`get` 只回元数据。**v0.28.8 起可指定写进哪个库**:`bridge.wiki
|
|
68
|
+
- **📌 本地剪藏桥**(可选,v0.16.24+/v0.16.25 支持图片):DSH 设置 → 常规配置 → 勾选「**启用本地剪藏桥**」(保存后立即生效)——DSH 即监听 `127.0.0.1:8618` 接收剪藏请求。浏览器书签栏新建书签,把知识库文档里的 JS 代码粘贴为地址,点一下弹出**浮层**:确认/修改标题与划线文字、勾选页面图片(封面自动标出)→「剪藏」即写入 wiki。文字成笔记(默认 `clip` 标签、正文含来源与选中文字、重名自动 `(2)` 去重);**图片由 DSH 本机下载字节存为二进制附件**(`clip-url`/`clip-note` 溯源字段,笔记内 `[img[标题]]` 内嵌展示;某张下载失败自动降级为链接),全部随 wiki 自动 git commit。「📚 插件文档」栏的 `本地剪藏桥(书签小工具)` seed 文档含完整步骤、书签代码、安全说明与 curl 用法。安全:桥只监听 127.0.0.1 + Host 白名单防 DNS rebinding;**强烈建议设 `bridge.token`**(非空时校验书签的 `x-clip-token` 头,防止任意网页往 wiki 里塞内容)。图片附件按设计不参与 `search`/`recent`(避免刷屏),`get` 只回元数据。**v0.28.8 起可指定写进哪个库**:`bridge.wiki`(设置页里是「剪藏写入」下拉,只在多库时才有意义)——**不指定 = 写进知识库列表里带 ★ 的那个库**(下拉里那一项直接显示那个库的名字 +「(默认)」,v0.28.12 起不再出现「默认库」这种无名选项);填了某个库的 id 就固定写它,与你在 GUI 里看的那个库无关(剪藏来自浏览器书签,没有"当前会话"可以跟随)。填了一个不存在的 id 时**不静默改落点**:`/clip` 回执带 `wiki` 字段说明实际落在哪,插件日志里也会提示一次。
|
|
69
69
|
- **🏠 首页(初始化 home-index 后)**:待办四象限(`todo` 标签 + `q` 字段拖放分类)+ 快速记笔记(完整编辑器,勾选「同时加入待办」即建任务)+「所有标签 / 所有文章」入口 +「📚 插件文档」栏(自动收录所有带 `dsh-docs` 标签的 seed 文档)。
|
|
70
70
|
- **📚 会话知识库 Tab**:会话顶部 Tab(`ui.tabLabel` 改名、`ui.showSessionTab` 关闭),自动汇总本会话读写过的 wiki 笔记(写入 volatile `$:/temp`,不落盘不进 git),**TW 原生渲染**(v0.16.19 起 `/tw/render` 片段管线,与回复流工具卡同链路),链接点击直达中央 TW 面板,不可编辑。
|
|
71
71
|
- **🌗 跟随 DSH 主题**:内嵌 TW 随 DSH 深浅切换 palette,纯内存不写回 wiki(`ui.followDshTheme`/`ui.darkPalette`)。
|
|
@@ -101,6 +101,7 @@
|
|
|
101
101
|
目录),也可以各自独立仓库。共用仓库时**只有一个自动提交者**(`git add -A` 会作用于整个工作树),
|
|
102
102
|
`git.*` 以该仓库下**列表里第一个库**为准、配置不一致时打印警告;pull 之后**只重启内容真的变了的库**。
|
|
103
103
|
- **快速笔记的目标库**:卡片里有一个「写入」下拉,**默认跟随你在 GUI 里看的那个库**(右下角菜单切换焦点库,它就跟着变);在里面手动选过之后,这张卡片就不再被焦点带走。改目标库是**整张卡片一起换**——标签建议、最近列表、附件上传、保存、以及随后弹出的 TW 编辑器都会落到同一个库。目标库没在运行时卡片会先提示你,而不是等你写完再失败。
|
|
104
|
+
- **左侧边栏每个库一行**(v0.28.3 起,点击语义见 v0.28.13):每个**在运行**的库一个入口行,用自己的显示名与图标(在「知识库列表」里改),**当前面板显示的那个库高亮**。**点另一个库 = 立刻切过去**(面板保持打开,不会先关掉让你再点一次);点**当前那个库** = 收起面板 —— 入口同时也是开关。没在运行的库不在这一列(它们仍可从右下角「知识库」菜单启动)。
|
|
104
105
|
- **「移出列表」不删目录**:只是让插件不再管理它,内容原样保留。
|
|
105
106
|
- **每个库一个图标**(v0.28.8):知识库列表每行的图标是个**弹出式网格**——里面是 **DSH 官方的 36 个图标**(与侧边栏/工具栏那套同源,深浅主题都对)、本插件自绘的 8 个(书籍 / 公文包 / 首页 / 笔记本 / 烧瓶 / 地球 / 星标 / 归档),外加一组 emoji 快捷选择;图标多了按 **48 个一页**翻页。选中即写入 `wikis.json` 的 `icon` 字段。当前值若不在候选里(比如你手写的短 emoji)会原样保留,不会被候选列表抹掉。**v0.28.8 同时修了一个真 bug**:此前选了图标界面会立刻变回默认 —— `/admin/wikis` 的读取视图漏了 `icon` 字段,于是"写进去了、读回来是 undefined",看起来就是没生效(现在有守门钉死这个字段,反向验证过)。
|
|
106
107
|
- **还没发过消息的新会话也能选库**(v0.28.8):选择器此前只长在输入框上方;新会话(空白页,输入框还没出现)时它挂在**预设/模式选择旁边**,位置由声明决定、声明不到就 2 秒后回落,两种布局不会同时出现两个。
|
|
@@ -217,7 +218,7 @@ seed 是把「wiki 里预置内容」随插件分发的机制:**ONE-SHOT(只
|
|
|
217
218
|
port: 8618 # 监听端口(127.0.0.1;改后需重启 dsh web 才绑定新端口)
|
|
218
219
|
token: "" # 共享口令;非空时校验书签的 x-clip-token 头(强烈建议设置)
|
|
219
220
|
tag: "clip" # 剪藏笔记默认 tag
|
|
220
|
-
wiki: "" # 剪藏写进哪个库(v0.28.8):空 =
|
|
221
|
+
wiki: "" # 剪藏写进哪个库(v0.28.8):空 = 知识库列表里带 ★ 的那个库;多库时可钉死到某个 id
|
|
221
222
|
ui:
|
|
222
223
|
showQuickNote: true # FAB 里显示快速笔记入口
|
|
223
224
|
showQuickNoteDock: true # 输入框上方快捷按钮
|