dsh-tiddlywiki 0.28.3 → 0.28.5
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 +2 -0
- package/docs/CHANGELOG.md +2 -0
- package/lib/client.js +52 -42
- package/lib/index.js +41 -3
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/knowledge-fab.ts +38 -4
- package/src/client/settings-page.ts +45 -1
- package/src/client/sidebar-entry.ts +14 -12
- package/src/client/status-cache.ts +2 -0
- package/src/client/styles.ts +25 -15
- package/src/client/wiki-icon.ts +65 -0
- package/src/host/wiki-registry.ts +47 -0
- package/src/index.ts +4 -0
package/README.md
CHANGED
|
@@ -67,6 +67,8 @@ dsh plugin --profile web add dsh-tiddlywiki
|
|
|
67
67
|
|
|
68
68
|
## 🕘 版本记录
|
|
69
69
|
|
|
70
|
+
- **v0.28.5**(2026-09-28):**修「多库模式下侧边栏多出一个没有库名的 `TiddlyWiki` 入口」**(作者报障)。根因是**同一个 CSS 陷阱踩了第 12 次**:`hidden` 属性在 CSS 里只是 `display:none`,而 `.dsh-tw-entry` 有显式 `display:flex` —— **显式 display 盖掉了 hidden**,于是那行让位给每库入口的默认行照样渲染。这次不再给它单独补一条规则,而是**收敃成一条全局兜底** `[hidden] { display: none !important; }`,并删掉本仓库历史上为此在不同元素上各补的 **12 条逐元素规则**(面板 iframe / 错误块 / 快速笔记 / FAB 菜单与提示 / 右侧栏 / 目标库下拉 / 草稿栏 / 最近列表…)。守门同时改为断言「全局兜底存在 + 不允许再出现逐元素版本」,并反向验证(把全局规则改成挂在类名下 → 红)。
|
|
71
|
+
- **v0.28.4**(2026-09-28):**每库自定义图标 + 修「右键菜单切库后选中项不更新」**。① **右侧「知识库」菜单的选中项停在旧值** —— 根因是选中标记(`●`/`○`)只在**菜单构建时**算了一次,之后无论怎么切都不重画;现在改为从当前焦点重算,并在 `setFocusWiki` 订阅里即时重画、每次打开菜单前再兜一次(切库也可能来自侧边栏入口或快速笔记卡片)。② **每个库的入口图标可自定义**:`wikis.json` 的条目新增可选 `icon` 字段,值可以是内置图形名(book / briefcase / home / notebook / flask / globe / star / archive,各是一枚继承 `currentColor` 的手写 16×16 线性 SVG,两套主题下都对)或**一个短 emoji**(📚 / 💼 / 🏠 …,用来一眼区分四五个库,不用下载任何资源)。设置页「知识库列表」每行多了图标下拉(当前值若不在候选里会保留,不会被抹掉)。校验口径:名字或 ≤8 字符的可打印短串,超长与控制字符一律拒绝;空值 = 清除自定义回落默认。**emoji 用 `textContent` 渲染而不是 `innerHTML`** —— 这个值来自用户可编辑的文件,绝不能变成注入点。缺省不设 = 内置默认图标,升级用户看到的一模一样。
|
|
70
72
|
- **v0.28.3**(2026-09-28):**修三个真机报障 + 插件说明补「多库 / 升级」两节**(作者拆库实测中发现)。① 单库模式下快速笔记露出一个没有选项的下拉 —— 根因是 **CSS `hidden` 只是 `display:none`,被显式 `display` 盖掉**(修法:显式 `[hidden]{display:none}` + 组件兜底)。② 会话级选择器没和输入框对齐 —— **对齐规则原本只写在 quick-note 条目内部**,已抽成 `client/dock-align.ts` 两处共用。③ 左侧入口按库显示:多库时每个在运行的库一个入口行、用各自显示名,点该行先切焦点库再开面板。④ 插件说明新增「多知识库」与「从旧版本升级上来」两节:明确升级后**不会自动变成多库**、`wikis.json` 在哪、旧指针文件何时还权威。守门扩到 19 条(含反向验证)。
|
|
71
73
|
- **v0.28.2**(2026-09-28):**设置页去掉重复的「知识库位置」**(作者反馈:多库配置做完后它重复且逻辑冲突)。这一块的语义是「把**唯一的那个库**换到别处」——写的是 wiki 之外的指针文件 `location.json`,措辞也是单库时代的("切换到这个位置" / "恢复为配置默认")。现在**按模式二选一**:**单库模式**保留它(那里它是唯一正确入口);**多库模式整块不渲染**,某个库换目录收到「知识库列表」那一行的**「改目录」**(默认库经 `/admin/wiki/switch` → 改清单 + farm 收敛 + 校验;非默认库直接 `update`)。宿主接口**没有**冲突也**没有**改动:`/admin/wiki/switch|reset` 从 v0.28.0 起就按模式分派。守门:`verify-wiki-focus` 新增"多库模式下不得渲染该块"的断言;farm-boot 补上 location 面接线(22 条),保证藏了界面之后**接口仍按模式正确分派**。
|
|
72
74
|
- **v0.28.1**(2026-09-28):**修「拆库 skill 在 wiki 启动慢 / 起不来时永远装不上」+ 快速笔记的目标库可切换(R7)**。① **真实事故**(作者升级 0.28.0 后重启宿主时发现,测试没拦住):技能安装写在了 `farm.startAll()` **之后**,而那个 wiki 很大、启动要几十秒 —— 于是"技能装没装"取决于"wiki 起得快不快";更糟的是 wiki 若因配置问题**永远起不来**,技能就永远不装,而它跟 wiki 毫无关系(只往 `$DSH_HOME/skills/` 写一个文件)。已挪到启动任务**最前面**并新增**顺序守门**(`verify-skill-install` 断言安装早于 `startAll()`,已反向验证)。② 快速笔记卡片新增「写入」目标库:**默认跟随你在 GUI 里看的那个库**(焦点库),卡片内可临时改、改过后不再被焦点带走。要点是**整张卡片一起换库**:标签建议 / 最近 / 草稿读取 / 附件上传 / 保存 / 随后弹出的 TW 编辑器必须落在同一个库 —— 只改保存那一处会产出"标签列表来自 A、笔记写进 B",比不做还糟(弹窗那条另有一条守门:写入 A、编辑器打开 B(空白)是典型的"看起来成功了"的失败)。目标库没在运行时卡片**先讲清楚**,而不是让你写完一段再失败。单库安装不显示选择器、请求 URL 逐字不变。
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
> 最近几个主要版本的一句话记录(完整变更见 [Releases](https://github.com/bbqisbbq/dsh-tiddlywiki/releases) / git log)。
|
|
6
6
|
|
|
7
|
+
- **v0.28.5**(2026-09-28):**修「多库模式下侧边栏多出一个没有库名的 `TiddlyWiki` 入口」**(作者报障)。根因是**同一个 CSS 陷阱踩了第 12 次**:`hidden` 属性在 CSS 里只是 `display:none`,而 `.dsh-tw-entry` 有显式 `display:flex` —— **显式 display 盖掉了 hidden**,于是那行让位给每库入口的默认行照样渲染。这次不再给它单独补一条规则,而是**收敃成一条全局兜底** `[hidden] { display: none !important; }`,并删掉本仓库历史上为此在不同元素上各补的 **12 条逐元素规则**(面板 iframe / 错误块 / 快速笔记 / FAB 菜单与提示 / 右侧栏 / 目标库下拉 / 草稿栏 / 最近列表…)。守门同时改为断言「全局兜底存在 + 不允许再出现逐元素版本」,并反向验证(把全局规则改成挂在类名下 → 红)。
|
|
8
|
+
- **v0.28.4**(2026-09-28):**每库自定义图标 + 修「右键菜单切库后选中项不更新」**。① **右侧「知识库」菜单的选中项停在旧值** —— 根因是选中标记(`●`/`○`)只在**菜单构建时**算了一次,之后无论怎么切都不重画;现在改为从当前焦点重算,并在 `setFocusWiki` 订阅里即时重画、每次打开菜单前再兜一次(切库也可能来自侧边栏入口或快速笔记卡片)。② **每个库的入口图标可自定义**:`wikis.json` 的条目新增可选 `icon` 字段,值可以是内置图形名(book / briefcase / home / notebook / flask / globe / star / archive,各是一枚继承 `currentColor` 的手写 16×16 线性 SVG,两套主题下都对)或**一个短 emoji**(📚 / 💼 / 🏠 …,用来一眼区分四五个库,不用下载任何资源)。设置页「知识库列表」每行多了图标下拉(当前值若不在候选里会保留,不会被抹掉)。校验口径:名字或 ≤8 字符的可打印短串,超长与控制字符一律拒绝;空值 = 清除自定义回落默认。**emoji 用 `textContent` 渲染而不是 `innerHTML`** —— 这个值来自用户可编辑的文件,绝不能变成注入点。缺省不设 = 内置默认图标,升级用户看到的一模一样。
|
|
7
9
|
- **v0.28.3**(2026-09-28):**修三个真机报障 + 插件说明补「多库 / 升级」两节**(作者拆库实测中发现)。① **单库模式下快速笔记露出一个没有选项的「写入」下拉** —— 根因是 **CSS 的 `hidden` 属性只是 `display:none`,任何显式 `display` 都能盖掉它**:我给 `.dsh-tw-note-wiki` 写了 `display:inline-flex`,于是 `hidden` 失效,那个空下拉照常渲染。修法两层:CSS 显式加 `[hidden]{display:none}`(且必须写在设 `display` 的那条**之后**,同优先级靠后者生效)+ 组件侧兜底(单库时 `disabled` 并直接 `display:none`)。② **会话级知识库选择器没有和输入框对齐** —— 根因是**规则只写在了一个使用者的内部**:找 composer 输入卡片、按差值补 `paddingRight` 的整套测量逻辑原本长在 `quick-note-dock.ts` 里,第二个 dock 条目加进来时没人知道要对齐。已抽成 `client/dock-align.ts`(`alignDockEntry`)两处共用,并守门断言「条目内不得再自带测量实现」。③ **左侧入口按库显示** —— 多库时每个**在运行**的库一个入口行、用各自的显示名;点该行**先切焦点库再开面板**(否则点 A 打开 B);当前焦点库有左侧标线。单库安装仍走原来那一行 + `ui.sidebarLabel`,逐字不变。④ **插件说明新增两节**:升级用户最大的困惑是"装完了不知道有这个东西",所以明确写了——升级后**不会自动变成多库**、行为与升级前一致;想用多库去哪点;`wikis.json` 在哪;旧 `location.json` 在哪些模式下还权威;每个库要有自己的 `tiddlywiki.info`。守门 `verify-wiki-focus` 扩到 19 条(`hidden` 那条已反向验证)。
|
|
8
10
|
- **v0.28.2**(2026-09-28):**设置页去掉重复的「知识库位置」**(作者反馈:多库配置做完后它重复且逻辑冲突)。这一块的语义是「把**唯一的那个库**换到别处」——写的是 wiki 之外的指针文件 `location.json`,措辞也是单库时代的("切换到这个位置" / "恢复为配置默认")。现在**按模式二选一**:**单库模式**保留它(那里它是唯一正确入口);**多库模式整块不渲染**,某个库换目录收到「知识库列表」那一行的**「改目录」**(默认库经 `/admin/wiki/switch` → 改清单 + farm 收敛 + 校验;非默认库直接 `update`)。宿主接口**没有**冲突也**没有**改动:`/admin/wiki/switch|reset` 从 v0.28.0 起就按模式分派。守门:`verify-wiki-focus` 新增"多库模式下不得渲染该块"的断言;farm-boot 补上 location 面接线(22 条),保证藏了界面之后**接口仍按模式正确分派**。
|
|
9
11
|
- **v0.28.1**(2026-09-28):**修「拆库 skill 在 wiki 启动慢 / 起不来时永远装不上」+ 快速笔记的目标库可切换(R7)**。① **真实事故**(作者升级 0.28.0 后重启宿主时发现,测试没拦住):技能安装写在了 `farm.startAll()` **之后**,而作者的知识库很大、TW 冷启动要几十秒 —— 于是"技能装没装"取决于"wiki 起得快不快";更糟的是 wiki 若因配置问题**永远起不来**,技能就永远不装,而它跟 wiki 毫无关系(只往 `$DSH_HOME/skills/` 写一个文件)。已挪到启动任务**最前面**,并新增**顺序守门**:`verify-skill-install` 断言 `installSplitSkill()` 出现在 `farm.startAll()` 之前(已反向验证:在安装前插一次 startAll → 该条红)。② **R7 快速笔记目标**:卡片新增「写入」目标库,**默认跟随 GUI 的焦点库**(你在看哪个库,快速笔记就进哪个库),卡片内可临时改且改过之后不再被焦点带走。设计的核心是**整张卡片一起换库** —— 标签建议(memo 以 URL 为键,换库自动重读)/ 最近列表 / 草稿读取 / 附件上传 / 保存 / 随后弹出的 TW 编辑器,六处全部经 `withWikiQuery()`(`?wiki=<id>`)与 `twProxyFor()` 定向;只改保存那一处会产出"标签列表来自 A、笔记写进 B",比不做还糟。目标库没在运行时卡片会**先讲清楚**("先在右下角「知识库」菜单里打开它"),而不是让用户写完一段再失败;这里刻意**不自动启动** —— 启动是「知识库」菜单的职责,保存路由顺手 spawn 进程不该由一次误点触发。单库安装不显示选择器、请求 URL 逐字不变。守门 `verify-wiki-focus` 扩到 16 条(含 `withWikiQuery` 的四条纯逻辑断言与"整张卡片同库"的源码级断言,已反向验证);`verify-tw-origin` 的弹窗接线断言跟着间接层更新(保留强度)。
|