Repository navigation
Releases
0.2.0
中文
0.2.0 是功能版本:MCP 现在能读计算列,另外修了几处会让编辑丢失或读到旧内容的问题。.layer 数据格式没有变化,仍是版本 1。需要 Obsidian 1.13.0 或更高。
新增
- MCP 的
read_table现在能读派生列:公式、汇总、查找、反向关联、自增编号、笔记属性都返回单元格在界面上显示的值。跨表读到的值会带上computedFrom,说明它来自哪张表的哪一列、是算出来的而不是存下来的。 read_table的每个字段现在标明readable/writable,有上限的值带readLimit/writeLimit;行级notes会说明公式错误,以及指向嵌套 frontmatter 的笔记属性为什么读不了。这样 AI 不会把「读不到」报成「空的」。- 关联、反向关联、汇总、查找指向的表被移动后仍能按文件名解析到;回答里给的是解析后的路径,文件里存的
linkPath不会被改写。
修复
- 另一个进程(MCP、同步客户端)写入文件后,已经打开的表格会自动刷新;本地有未保存的编辑时,会把本地版本另存为冲突副本,而不是覆盖掉。副本写失败会在 30 秒后重试一次。
- MCP 写入改为先比对读到的原文:文件在读取之后被改过,这次写入就拒绝并提示重新读取,不会盖掉别人的修改。
- 编辑期间遇到的保存、外部清空文件、旧读取晚到,都不再丢内容:保存过程中落下的编辑会再保存一次;空文件也算外部改动;过期的读取结果会被丢弃。
- 笔记属性指向嵌套 frontmatter 时,格子会显示「读不了」的本地化提示,而不是看起来像空值。
内部
- 删除 7 个没有调用方的导出和一段死代码。
升级:用新版的 main.js、manifest.json、styles.css 覆盖插件目录里的同名文件。.layer 数据不需要迁移。Release 另外提供 layer-base-0.2.0.zip,里面就是这三个文件、不含外层目录。用 MCP server 的话,把它指向的 mcp-server.cjs 换成新版并重启客户端,客户端里显示的版本会变成 0.2.0。
English
0.2.0 is a feature release: the MCP server can read computed columns, and several ways an edit could be lost or a stale value could reach the screen are fixed. The .layer format is unchanged (still version 1). Requires Obsidian 1.13.0 or later.
Added
read_tablenow reads derived columns: formula, rollup, lookup, backlinks, auto number and note property cells come back as the value the screen shows. A value read from another table carriescomputedFrom, naming the table and column it is computed from.- Every field now reports
readable/writable, withreadLimit/writeLimitwhere a value has a boundary; row-levelnotesexplain a formula error and why a note property over nested frontmatter cannot be read, so an assistant does not report "unreadable" as "empty". - A relation, backlink, rollup or lookup still resolves after its table is moved: the answer names the path that opens, and the stored
linkPathis left alone.
Fixed
- An open table reloads when another process (the MCP server, a sync client) writes the file. Unsaved edits are kept as a conflict copy instead of being overwritten, and a failed copy is retried once after 30 seconds.
- An MCP write now compares the file it read first: if the file changed since, nothing is written and the call asks to read it again.
- An edit that lands during a save, an empty file written by a sync client, and a read that arrives late can no longer drop or replace content: the edit is saved again, the empty file counts as an outside change, and the stale read is discarded.
- A note property over nested frontmatter says it cannot be read, in the interface language, instead of looking empty.
Behind the scenes
- Seven exports with no caller and a dead wrapper are gone; the whole repository's comments were rewritten (5855 → 1585 lines). No behaviour change.
Upgrading: replace main.js, manifest.json and styles.css in the plugin folder. No data migration. The release also carries layer-base-0.2.0.zip, which holds exactly those three files with no wrapping folder. If you use the MCP server, replace the mcp-server.cjs you point it at and restart the client — the version it reports becomes 0.2.0.
Full Changelog: 0.1.2...0.2.0
0.1.2
Full Changelog: 0.1.1...0.1.2
中文
维护版:没有新增功能,.layer 数据格式没有变化。
修复
- 弹出面板(新建字段、筛选、排序、行高、颜色规则、列可见性、看板字段)改用自己的类名标记容器,不再依赖
:has()。表格每次重绘时,浏览器不必再重新匹配文档里所有弹窗容器。 - 输入法拦截不再读取已废弃的
KeyboardEvent.keyCode,改用isComposing和Process键值。中文输入法里按回车选词的行为与之前完全一致。
内部
- MCP server 用到的 Node 接口(
node:fs、node:path、process)集中到mcp/node-api.ts,并写明了确切签名。在没有加载 Node 类型声明的检查环境里,这些调用不会再被逐条判成 unsafe 值——社区目录的自动扫描曾因此报了 76 条。 - MCP server 一直在向客户端自报
0.1.0;现在跟随manifest.json,并且npm run check:version会把这一处一起校验,漏改就会失败。
升级:覆盖 main.js、manifest.json、styles.css(目录 layer-base)。数据不需要迁移。Release 另外附 layer-base-0.1.2.zip,里面就是这三个文件、不含外层目录。用 MCP server 的话,把它指向的 mcp-server.cjs 换成新版并重启客户端——客户端里显示的版本会从 0.1.0 变成 0.1.2。
English
A maintenance release: nothing new to use, and the .layer format is unchanged.
Fixed
- The anchored panels (new field, filter, sort, row height, colour rules, column visibility, board fields) mark their own container with a class instead of matching it with
:has(), so a table redraw no longer makes the browser re-match every modal container in the document. - The IME guard reads
isComposingand theProcesskey instead of the deprecatedKeyboardEvent.keyCode. Typing Chinese and pressing Enter to commit a candidate behaves exactly as it did.
Behind the scenes
- The Node surface the MCP server uses (
node:fs,node:path,process) now lives in one module with its signatures written out,mcp/node-api.ts. A checker that runs without Node's own declarations no longer reads every one of those calls as an unsafe value — the community directory's automated scan reported 76 of them. - The MCP server announced
0.1.0to every client. It now followsmanifest.json, andnpm run check:versionfails when the two drift.
Upgrading: replace main.js, manifest.json and styles.css in the layer-base folder. No data migration. The release also carries layer-base-0.1.2.zip, which holds exactly those three files with no wrapping folder. If you use the MCP server, replace the mcp-server.cjs you point it at and restart the client — the version it reports goes from 0.1.0 to 0.1.2.
0.1.1
Full Changelog: 0.1.0...0.1.1
中文
修复
- 编辑完一个格子后,撤销(
Ctrl/Cmd+Z)要先把光标点回表格才生效——现在编辑一结束就能撤销;Ctrl/Cmd+Shift+Z、Ctrl/Cmd+Y同样修好。 - 底部状态栏的行号按"文件里的记录顺序"计算,和左侧行号列对不上,排序或筛选后差得更远;现在改按当前视图的行号。
调整
- 安装目录改名为
layer-base:插件 id 从obsidian-layer-base改成layer-base,因为 Obsidian 目录不允许 id 里含 "obsidian"。装过 0.1.0 的请先删掉.obsidian/plugins/obsidian-layer-base/再装 0.1.1。 - 新建入口三处统一为新建多维看板:功能区、命令面板、右键文件夹(0.1.0 里是三种不同写法)。
- 新建文件的默认名跟随界面语言:中文下是「未命名看板」,不再固定英文
Untitled board;设置里留空即跟随语言,旧的默认值会自动迁移,手动填过的名字不受影响。 - README 增加了表格视图和看板视图两张截图。
升级:用新版的 main.js、manifest.json、styles.css 覆盖即可(目录换成 layer-base)。.layer 数据格式没有变化,不需要迁移。Release 页面另外提供 layer-base-0.1.1.zip,里面就是这三个文件,不含外层目录。
English
Fixed
- Undo (
Ctrl/Cmd+Z) did nothing after an edit until the table was clicked again; it now works the moment the edit ends. Same forCtrl/Cmd+Shift+ZandCtrl/Cmd+Y. - The status bar counted rows in file order rather than the order the view draws them, so it disagreed with the row numbers — and drifted further under a sort or filter. It now counts the way the view shows.
Changed
- The install folder is now
layer-base: the plugin id changed fromobsidian-layer-basetolayer-base, because the community directory does not allow an id containing "obsidian". If you installed 0.1.0, delete.obsidian/plugins/obsidian-layer-base/before installing 0.1.1. - All three ways in now say New board: the ribbon, the command palette and the folder menu (0.1.0 used three different names).
- A new file is named in the reader's language (
中文:未命名看板) instead of alwaysUntitled board. The previously stored default is migrated; a name you typed is kept. - The README shows the table and board views.
Upgrading: replace main.js, manifest.json and styles.css, in the layer-base folder. The .layer format is unchanged. The release also carries layer-base-0.1.1.zip, which holds exactly those three files with no wrapping folder.
0.1.0
Full Changelog: https://github.com/CryingObsidian-CO/obsidian-layer-base/commits/0.1.0
Layer Base brings Airtable-style tables and boards to Obsidian. A .layer file
is a self-contained database — columns, records and views — that renders as a table
or a board, independent of the folder it sits in.
This is the first release.
Highlights
- Table view — edit in place, paste from a spreadsheet, drag and resize columns,
filter, sort, and total a column in the footer. - Board view — group by any column, drag cards between columns, choose what a card
shows; several boards per file. - 16 column types — text, long text, number, date, date and time, select,
multi-select, checkbox, relation, lookup, rollup, backlinks, auto number, formula,
note, note property. - Computed columns read each other — a formula, lookup or rollup can take a
relation's names, another column's total, or a note's frontmatter value. - Undo and redo for everything that changes data (view settings stay out of the
undo stack on purpose). - Optional MCP server — an assistant can read and edit tables through tool calls.
Desktop only.
Install
Not in the community catalog yet, so install it by hand:
- From this release, download
main.js,manifest.jsonandstyles.css. - Put them in
<Vault>/.obsidian/plugins/obsidian-layer-base/(create the folder if
it does not exist). - Restart Obsidian, then enable Layer Base in Settings → Community plugins.
mcp-server.cjs is only needed if you want the MCP server — Obsidian never loads it.
Requires Obsidian 1.13.0 or later. Works on desktop and mobile; the MCP server is
desktop only.
Notes
- Licensed under the GNU GPL v3.0 or later.
- Much of the code was written with heavy AI assistance, under human direction — see
the README for the full statement.
中文
Layer Base 多维表格给 Obsidian 带来 Airtable 式的表格与看板。一个 .layer 文件就是
一份自包含的数据库——字段定义、记录和多个视图——既可以当表格用,也可以当看板用,与仓库
的目录结构无关。这是首个版本。
能做什么
- 表格视图 — 就地编辑、从电子表格粘贴、拖动列、调整行高列宽、筛选排序。
- 看板视图 — 任意列分组、拖动卡片换列、选卡片显示哪些列,一个文件可放多个看板。
- 16 种字段类型 — 文本、长文本、数字、日期、日期时间、单选、多选、勾选、关联、
查找、反向关联、汇总、公式、自增编号、笔记、笔记属性。 - 派生列能互相读 — 公式、查找、汇总都能取到关联行的名字、别的列的合计、笔记
frontmatter 里的值。 - 撤销与重做 — 覆盖所有改数据的操作;视图设置(列宽、筛选、排序、合计、隐藏列)
刻意不进撤销栈。 - 可选的 MCP 服务器 — 让 AI 通过结构化调用读写表格,仅桌面端。
安装
插件还没进社区目录,需要手动装:
- 在本页下载
main.js、manifest.json、styles.css。 - 放进
<仓库>/.obsidian/plugins/obsidian-layer-base/(目录不存在就新建)。 - 重启 Obsidian,在 设置 → 第三方插件 里启用 Layer Base。
要用 AI 接入才需要另外下载 mcp-server.cjs,Obsidian 不会加载它。需要 Obsidian
1.13.0 或更高;桌面端和移动端都能用,MCP 服务器仅桌面端。
说明
- 许可:GNU GPL v3.0 或更高版本。
- 本插件的大量代码在人工指导下、由 AI 大量辅助编写,详见 README。
Full Changelog: https://github.com/CryingObsidian-CO/obsidian-layer-base/commits/0.1.0