Repository navigation
Releases
Knowledge Map 0.0.15
Knowledge Map 0.0.15 — iPadOS support
Changes
- Touch navigation: tap to select, drag to pan, pinch to zoom, double-tap to focus or reset, and long-press or the Preview button to read a note or heading.
- Single-element layout adjustment with save, undo and redo. Touch group dragging and parent selection are deferred.
- Compact mobile toolbar, a details drawer for narrow windows, and preview controls for opening notes and returning to the map.
- English and Chinese hints appropriate to touch input, with improved separation from Obsidian's sidebar gestures.
- Worker failures fall back to cooperative graph construction with progress and cancellation. Both paths share graph and layout operations.
- Desktop and mobile share the smoother layer fades and top-level visibility behavior.
- Links and arrowheads extend to the canvas bottom alongside nodes, fixing the premature cutoff near footer information.
- A shorter README presents the hierarchy, connections and layout controls with six existing demos.
Validation and limits
User-reported testing covers iPad Pro 2022 / iPadOS 26.5.2 / Obsidian 1.15.0 (396): loading, navigation, preview, single-element adjustment, layout persistence, rotation, narrow windows, host themes, Chinese composition with the soft keyboard and Magic Keyboard, and recovery after system-panel interruptions.
In the user's 85-note / 3,050-node test vault, build completion messages reported 0.26s initially and 0.18s on rebuild. The user described full-screen and narrow-window interaction as smooth. These are device-specific reports; completion-message times are not a time-to-interactive measurement or an FPS/memory benchmark.
Windows Obsidian 1.15.0 tests cover Worker failure and cancellation, 5,000-node synthetic graphs, and footer link/arrow pixels. The latest PC-F2 technical run passed the 11 synthetic check scripts. User acceptance also covers the desktop zoom and footer fixes.
Final 0.0.15 candidate checks passed the build and 11 synthetic scripts, plus 10 checks in a fresh Windows Obsidian 1.15.0 synthetic vault: three-file installation, empty-state handling, graph construction, native preview, drag persistence, undo/redo, rebuild, map reopening and plugin disable/enable. No captured runtime errors or warnings. The runtime JavaScript and CSS match the user-accepted PC-F2 package byte for byte; this final packaging step changes the manifest version. This is desktop evidence, not a new iPad test.
iPad cancellation remains explicitly untested in the report. iOS Worker failure injection, objective mobile FPS and system-memory peaks, the planned minimum mobile OS versions, and iPhone hardware have not been validated. The user has scoped 0.0.15 to desktop and iPadOS; Android adaptation and validation are scheduled for the following version and are no longer a gate for this release. iPhone remains unverified; iPad results must not be presented as validation of all mobile platforms.
Layout editing retains the limit of 128 siblings per group and 5,000 affected nodes. Undo keeps the last 50 steps within a session and clears on structural changes or plugin reload. The canvas remains dark with a light host theme.
Upgrade
The plugin ID (knowledge-graph-smoke), data location and schema 3 are unchanged. Back up your plugin directory, replace only main.js, manifest.json and styles.css, and keep your own data.json. Restart Obsidian or disable and re-enable the plugin. See the installation guide.
minAppVersion remains 1.6.7, a host compatibility setting rather than a verified minimum iPadOS version. isDesktopOnly: false enables mobile installation but cannot express iPad-only validation. iPhone is unverified and Android adaptation is planned for the next version.
SHA-256 checksums
8801c3a3e5c2d96fcd6d230e8b703eac8472ac815e677e915c81c23249411391 main.js
67f707c580bb80580bffd0c005e719292d887c346883f3c708b440bbd4ae0b43 manifest.json
50e33695e56f27070669d219d9ecf9d64f76e2359f1de1fa38fa42e30a4adb56 styles.css
Release notes source: docs/RELEASE_NOTES_0.0.15.md
Build run: https://github.com/xidianhush/knowledge-graph-obsidian-plugin/actions/runs/42355198309
Knowledge Map 0.0.14
Knowledge Map 0.0.14 — bilingual interface, cleaner releases
0.0.14 is a UI and release-hygiene update. The layout data format (schema 3), the
capture / reconcile / apply contracts, and the rendering and physics code in
upstream/ are unchanged, so upgrading needs no data migration.
What's new
English and 简体中文 interface
The whole interface is now translatable: top bar, search, level pills, legend,
layout toolbar, tooltips, toasts, side panel, settings tab, status bar, notices and
command names. The UI language follows Obsidian's language on startup (anything
other than Chinese falls back to English), and can be pinned in
Settings → Community plugins → Knowledge Map → Language:
- Follow the app (default) — uses Obsidian's language
- 中文 — always Chinese
- English — always English
Changing the setting re-renders an open map and the settings tab immediately.
Command-palette entries, the ribbon tooltip and the tab title are captured when the
plugin loads, so they pick up a language change after the plugin is reloaded — the
notice shown after saving says so. Existing data.json files without a language
field are treated as "follow the app".
The release contains exactly three files
The GitHub release for this version ships only main.js, manifest.json and
styles.css — the three files Obsidian actually downloads. SHA256SUMS and the
release notes now live in the release body instead of being extra assets, and the
build provenance of all three files is attested with GitHub Actions artifact
attestations. See RELEASE_CI.md for the workflow and how to verify
an attestation with gh attestation verify.
No :has() selector
The layout toolbar used to make room for the details sidebar with a CSS :has()
selector. It is now driven by an explicit kg-sidebar-open class that the HUD
toggles together with the sidebar, so the behaviour no longer depends on selector
engine support and avoids the broad-invalidation warning this pattern raises in
plugin review. The toolbar offset is unchanged.
Legend state is stored with the plugin's data API
Whether the legend is collapsed is now written to the plugin's data.json
(top-level ui object) instead of localStorage. The last localStorage value is
imported once on first load and then ignored. This is the only UI state that is
persisted; nothing new is stored, and layout data, settings and their timing are
unchanged.
README rewritten as an introduction and tutorial
The README is now a product guide and a tutorial, built around three ideas:
see your knowledge layout (containment has depth, links have a plane; pan, zoom
through levels, Ctrl + hover to preview), see how knowledge connects (links form
chains you can follow when debugging) and arrange the map yourself (drag the
important regions to the middle and push details aside, then keep that arrangement).
Each section pairs the idea with a short recording or screenshot from a synthetic
demo vault (English UI): knowledge-map-overview.png, knowledge-map-pan.gif,
knowledge-map-zoom.gif, knowledge-map-preview.gif, knowledge-map-links.png and
knowledge-map-layout.gif. It also documents the real interaction model (single
click selects, double click focuses, scroll moves between levels) instead of the
older, inaccurate description.
Fixes and internal changes
- The schema-3 differential check now actually exercises the layout write-failure
path (previously its "write failure" scenario was rejected earlier by the
single-owner guard, so the assertion passed without testing anything). Both sides
are asserted to reject, report a failure message and preserve committed groups. - Added
scripts/i18n_check.mjsto the synthetic test suite: it loads the real
language dictionaries, checks that English and Chinese define the same keys, that
no English value contains Chinese characters, that every template binding resolves,
and that no user-facing Chinese string literal remains outside the dictionaries.
npm testnow runs 11 synthetic checks. - Bumped
versions.jsonto{"0.0.13":"1.6.7","0.0.14":"1.6.7"}.
Unchanged contracts
- Layout data stays schema 3;
data.jsonlayout records and migration logic are
untouched. Upgrading from 0.0.13 keeps your layout. capture/reconcile/apply, drag/save/undo/Esc, hover preview and native
note opening behave as before.upstream/rendering and layout physics are untouched.- The plugin id remains
knowledge-graph-smoke(UI-A14 was explicitly deferred).
Known limits
- Desktop Obsidian 1.6.7+ only (
isDesktopOnly: true). - Layout adjustment supports up to 128 siblings per group and 5000 affected nodes;
undo history keeps the last 50 steps for the current session. - Data written by 0.0.10 and older cannot be adjusted by schema-3 builds; the
original data is preserved.
Install / upgrade
Community directory: https://community.obsidian.md/plugins/knowledge-graph-smoke.
Manual install and upgrade: replace main.js, manifest.json and styles.css in
.obsidian/plugins/knowledge-graph-smoke/, keeping data.json. See
INSTALL.md for rollback and known limits.
中文摘要
0.0.14 是界面与发布流程更新:界面全面支持英文 / 简体中文(默认跟随 Obsidian
语言,非中文环境为英文,可在设置里固定为「跟随应用 / 中文 / English」),切换后
已打开的图谱与设置页立即刷新,命令面板/ribbon 提示/标签页标题在重载插件后更新;
GitHub Release 只保留 main.js、manifest.json、styles.css 三个文件,
SHA256SUMS 与发布说明移入正文,三资产带 GitHub Actions 构建来源证明;布局工具条
不再依赖 CSS :has(),改由 JS 同步 kg-sidebar-open 类;图例收起状态改存插件
data.json 的 ui 字段(首次从 localStorage 迁移);README 重写为「理念 + 上手
教程 + 动图」。布局数据仍为 schema 3,capture/reconcile/apply 与 upstream/
渲染物理逻辑未改,升级无需迁移;插件 id 仍为 knowledge-graph-smoke。
SHA-256 checksums
b022a4d810c38280e23068e718e68f9e0030bd4ba763b2dc0abae0b847903dc5 main.js
aa3cc460b8e50a16b35ac72f9df5476de19c4a17df149382239b5eefb636b1e8 manifest.json
c14381d9c9844151ac037a6164bd25b606dfe21f7b51cc417c0dea19570a450b styles.css
Release notes source: docs/RELEASE_NOTES_0.0.14.md
Build run: https://github.com/xidianhush/knowledge-graph-obsidian-plugin/actions/runs/42164446268
0.0.13
Knowledge Map 0.0.13 — UI/UX 打磨
首次正式发布(非 pre-release)。功能与布局数据格式沿用 0.0.11/0.0.12(schema3),本轮只改界面结构与样式。
界面变化(0.0.12 → 0.0.13)
- 「重新构建」进入顶部工具条:与「重置视角」并列,随时可点,不必关开视图;按钮固定为
↻图标(悬停提示含义),构建中图标旋转、按钮禁用并提示「正在重新构建图谱」,构建结束自动恢复。 - 构建完成提示 2 秒后自动消失:改成画布底部居中的胶囊提示(「构建完成 · N 篇笔记 · M 个节点 · E 条边 · X 秒」),不再常驻占行;构建中/取消/失败提示仍然保留,需要时可在状态条里取消。
- 「调整布局」入口收进顶部工具条:新增
✥图标按钮;进入编辑后顶栏下方出现一条全宽工具条(选父级/撤销/重做/恢复此组/全库恢复自动布局 + 状态提示),退出后整条隐藏。阅读时右上角不再有浮动面板,图谱有效显示区是完整矩形。 - 工具栏与面板不再互相遮挡:布局工具条展开时,图例、搜索命中列表与画布可见区按工具条真实高度避让;对象详情侧栏打开时工具条自动让出侧栏宽度。
- 顶栏不再被文字挤爆:两个动作按钮固定为单字形图标(悬停提示与读屏标签提供含义),宽/窄窗口都保持一行,不再把「重置视角」挤出右缘。
- 细节:状态胶囊与图例的分层、「调整布局」激活态高亮、编辑提示文案、按钮图标对齐。
缺陷修复(候选验收期间)
- 删除任一标题后,同一笔记的标题层级不再整篇重排(2026-11-04 日常库验收 Node 11 反馈):当一篇笔记里存在「同名且正文为空」的知识点时,删除笔记中任意一处标题会让该笔记顶层分组的旧布局被保守校验拒绝,导致所有一级标题按自动布局重新打包(实测 H1 最大偏移约 64 世界像素,放大后肉眼明显)。现在空正文的同名标题仍按保守规则比对——同名计数改变或证据不一致时照旧回退——但在纯增删且证据一致时保留已保存布局,只让真正变化的子树重排。新增合成回归:
scripts/layout_incremental_check.mjs覆盖「空正文同名标题 + 无关删除后仍保留修复」与「删除同名标题本身仍回退」。 - 布局编辑提示指向实际按钮:提示原文写「点『结束调整』退出」,但收到顶栏后按钮只显示
✥图标。改为「再次点击顶栏 ✥ 退出」,aria-label仍随状态在「调整布局 / 结束布局调整」之间切换。
两处修复后的候选构建:main.js 333,570 B sha256 37589a6f32203026ff82a564ad83013b72dbb19c8a8180f7c04da67a49ba8ab5(0.0.13 首次正式发布将使用该构建)。 发布门禁(2026-11-04 晚):打包/版本一致性、空白新库安装与空态/建图/重开、日常库副本真实数据 reconcile 回归(原删除标题缺陷场景、删除同名标题、重命名一级标题、新增一级标题)全部通过;另修复「笔记含同名且正文为空标题时重命名会整篇回退」的同族边界。
未改动的契约
- 布局数据:schema3(笔记级共享 structures)、
data.json格式与迁移逻辑不变,0.0.12 升级无需迁移。 - 交互契约:capture / reconcile / apply、拖动/保存/撤销/Esc、预览与悬停行为不变。
- 渲染与物理:
upstream/的渲染与布局物理逻辑未改,只新增 HUD 结构与样式。 - 内部 id 仍为
knowledge-graph-smoke(0.0.12 起显示名为 Knowledge Map)。
已知限制
- 不要对渲染页整页 reload(会让插件视图停在初始化态;FB-006 已定因为测试脚本行为,非插件缺陷)。重载视图请在 Obsidian 内关闭再打开标签页。
- 单组/局部修复预算:受影响节点超过 5000 或子节点超过 128 时拒绝自动修复并回退;撤销栈 50 步且仅当前会话。
- 仅桌面(
isDesktopOnly: true),最低 Obsidian 1.6.7。 - 0.0.10 及更早版本读到 schema3 会禁用布局调整并保留数据;回退前先备份
data.json。 - 悬停摘要取自内存索引,不写入布局数据。
安装与升级
见 docs/INSTALL.md(发布资产:main.js、manifest.json、styles.css、SHA256SUMS;只替换这三个文件即可升级,data.json 保留)。校验 SHA256SUMS 后再安装;首次使用前建议备份插件目录。
0.0.11 (pre-release)
0.0.11 (pre-release) — 布局数据 schema3:同笔记结构共享
亮点
长笔记多组布局的存储、耗时与内存同时下降(同机 A/B,0.0.10 vs 0.0.11):
| 场景 | 记录大小 | 模型+协调+JSON p50 |
|---|---|---|
| 5000 标题 × 10 组 | 11.50 MB → 0.88 MB(-92.4%) | 472.5 ms → 93.1 ms |
| 1000 标题 × 10 组 | 2.26 MB → 0.19 MB | 92.3 ms → 16.7 ms |
| 5000 标题 × 1 组 | 1.15 MB → 0.86 MB | 61.4 ms → 39.1 ms |
| 50 篇 × 100 标题 | 1.19 MB → 0.92 MB | 66.9 ms → 40.8 ms |
5000 标题 10 组时保留堆内存 21.1 MB → 1.4 MB。根因是此前每个分组各存一份整篇 outline/identity,schema3 改为按笔记唯一存一份 structures,组记录只保留 shape/points/note/structure。
数据迁移与回退
- 读到 schema1/schema2 的
layoutOverrides时自动懒迁移为 schema3,首次建图会写一次data.json,状态栏提示“布局已保存;已局部适配结构变化,撤销记录已清空”。 - 升级前建议备份
data.json。 - 降级到 0.0.10:旧版本会提示“布局数据版本不受支持,调整已禁用;原数据保留”,不破坏数据;要回到旧版布局需清空/恢复
data.json的layoutOverrides。
已验证
- 合成回归 10 个脚本全过(
node scripts/test.mjs),含 schema1→3、schema2→3、写失败回滚、冷启动、撤销/重做、文件/文件夹改名、重复标题改名与歧义拒绝、局部修复、降级拒绝。 - 独立差异对照(0.0.10 冻结核心 vs 0.0.11):7 场景语义 EQUIVALENT。
- 原生 Obsidian 回归(0.0.11 独立库):拖动/保存/重建恢复、Esc 取消、撤销、schema3 冷启动、同笔记两组共享 structures。
- 30 分钟连续编辑/预览/隐藏恢复压力:1161 轮、0 失败、0 渲染异常。
- 用户体验验收(日常库 0.0.11):报告见仓库根
47-P3_PRODUCT_SITE_ACCEPTANCE_REPORT.md。
已知限制
- FB-006(宿主主进程偶发异常)本轮日志通道下 0 复现,仍未定因,不宣称修复。
- 46-A2/A4 兼容矩阵(其它插件共存)尚未覆盖。
- 30 分钟压力为单实例、单窗口;多视图与真实大库规模仍待后续验证。
- 本版本标为 pre-release,适合体验与回归,不建议作为社区目录首发。
安装
覆盖插件目录三文件后重载 Obsidian:
.obsidian/plugins/knowledge-graph-smoke/
├── main.js
├── manifest.json
└── styles.css
校验值见 Release 附件 SHA256SUMS:
- main.js
205b1bd0383a223f92aef6f09e36327882bd081f3c707bab725fb47b9d3bf049 - manifest.json
c2cc6672b034be128c545e25497f0e7ca71846fec54331eb094649c39d7d258f - styles.css
ac10538ccf5bae7e70ef605e906b7aaca76fea3a1b1f6326ce815ace4ea51559