Duowei Table

approved

by jepicaju862-lab

Local structured data in .duowei files, with table, kanban, and gallery views plus a Bases-compatible layout. - This plugin has not been manually reviewed by Obsidian staff.

19 downloadsUpdated 8d agoGPL-3.0

Duowei Table

Language / 语言: English · 中文

Local, spreadsheet-style structured data for Obsidian. Records live in plain-text .duowei files inside your vault — no account, no license key, no server, no network.

在 Obsidian 中本地存放的多维表格数据,保存为 vault 内的纯文本 .duowei 文件—— 无需账号、许可证、服务器,也不联网。

An optional paid edition, Duowei Table Pro, is distributed separately and is never required to use this plugin.

可选的付费版本 Duowei Table Pro 单独分发,使用本插件永远不需要它。


English

Duowei Table adds a standalone .duowei file type with table, kanban, and gallery views, and also registers a duowei-grid layout for the core Bases plugin. Every record lives in a plain-text JSON file inside your vault that you can read, diff, and back up with any tool.

Interface language: the plugin interface, commands, and settings are currently in Simplified Chinese. English localization is planned. Command names below are given in Chinese with an English gloss.

Features

Field types (9): text, number, checkbox, date, single select, multi select, email, note link, attachment.

Views (3): table, kanban, gallery.

  • Standalone .duowei files; a command creates a blank table
  • Add and delete rows and columns, rename fields, change field types with a migration preview shown before the change is applied
  • Cell preview and editing, range selection, copy and paste, clear, undo and redo, autosave
  • Per-view field visibility, filtering, sorting, and row height, all persisted into the file
  • Kanban groups by a chosen field with drag-to-change-value; gallery supports cover, title, and card field configuration
  • Create, switch, rename, duplicate, and delete views; a record detail sidebar exposes every field
  • Fill down, fill right, drag fill handle, and bulk edit with a preview
  • CSV/TSV import with preview, field mapping, type confirmation, and error report
  • Create a standalone .duowei table from the current .base file, migrating Markdown/frontmatter records
  • Bind a record to a Markdown note and write selected fields back into its frontmatter one-way, with a sync log and retry for failed items
  • From a Markdown note, find the .duowei records bound to it and open the table
  • Email, note link, and attachment fields render as icons with open and basic validation; attachment and note link editing offers a vault file picker
  • Rename, recolor, and delete select options
  • Row virtualization for large tables; frozen columns and column widths persist
  • External modification is detected before saving; on conflict a backup is written instead of silently overwriting, with a conflict recovery panel showing a diff summary, a backup restore panel, an autosave backup policy, and a persistent operation log
  • Conflict recovery supports per-cell merge (falls back to a diff summary only above 200 conflicting cells)
  • Keyboard: Ctrl+C copy, Ctrl+V paste a cell or a TSV matrix, Delete/Backspace clear, Tab/Shift+Tab move
  • Light, dark, and mobile responsive styles

Usage

Standalone tables

  1. Run 创建空白多维表格 (Create blank table) from the command palette.
  2. The plugin creates and opens a .duowei file.
  3. Add rows and columns, edit cells, select ranges, copy, paste, and undo directly in the table.

Design principles:

  • A row is a record. It does not have to correspond to a Markdown file.
  • A column is a field, added, deleted, renamed, and retyped inside the table.
  • Cell values are stored in the .duowei file.
  • Markdown note binding, frontmatter sync, and Bases import are optional capabilities, not prerequisites.

Bases-compatible layout

  1. Enable the core Bases plugin.
  2. Enable this plugin.
  3. Create or open a .base file.
  4. Switch the layout to 多维表格 (Duowei Table) in the view menu.

To move to a standalone table, open the .base file and run 从当前 Base 创建独立多维表格 (Create standalone table from current Base).

Other commands: 查找当前笔记关联的多维表格 (Find tables linked to the current note), 创建示例多维表格 (Create a demo table), and 了解与升级到 Duowei Table Pro (Learn about and upgrade to Duowei Table Pro), which opens https://peyote.info/plugins/duowei-table-pro/ in your browser.

Editions

This plugin — the community edition — is free to install and free to use. Every feature listed above works without an account, a license key, a trial, or a payment. Nothing is time-limited, feature-gated behind a purchase prompt, or disabled after a trial period.

A separately distributed paid edition, Duowei Table Pro, adds formulas, relations, lookups, rollups, long text, datetime and link fields, calendar and timeline views, and summary statistics. It is not installed or updated through the Obsidian Community Plugins directory, and this repository contains none of its code. Pro is entirely optional; this edition is a complete product on its own.

Pricing, trial, and purchase options: https://peyote.info/plugins/duowei-table-pro/

The plugin surfaces this link in two places, both of which only open your default browser when you click them: the 升级到 Duowei Table Pro (Upgrade to Duowei Table Pro) button in Settings, and the 了解与升级到 Duowei Table Pro (Learn about and upgrade to Duowei Table Pro) command. There are no other upgrade prompts, banners, or nags anywhere in the interface.

The two editions share one .duowei file format (schemaVersion: 1) under one hard guarantee: no direction silently loses data.

  • This edition → Pro: lossless. Files written here contain only a subset Pro also understands.
  • Pro → this edition, within the supported feature set: opens and edits normally.
  • Pro → this edition, containing unsupported content: the file opens in protective read-only mode. A banner explains why, the content stays viewable, and the original file is never rewritten. Reopen it in Pro to keep editing.

Read-only is triggered by a strict whitelist — for example formula, relation, lookup, or rollup field types, calendar or timeline views, or any configuration key outside the shared protocol. The design deliberately prefers locking a file over writing back a version with unrecognized data stripped out.

Do not enable both editions at the same time: they register the same .duowei file extension and the same view types.

Data and privacy

  • All data stays inside your vault. .duowei files are plain-text JSON you can read, diff, and back up with any tool.
  • The plugin does not read or write anything outside the vault.
  • No analytics, no telemetry, no crash reporting, no identifiers of any kind.
  • Backups created by conflict detection and the autosave policy are written into your vault as ordinary files.

Network use

This plugin makes no network requests. It contains no HTTP client, no telemetry endpoint, and no update mechanism of its own. Updates are delivered through Obsidian's official plugin update mechanism.

The only outbound activity is a link: the Settings button and the upgrade command described above call window.open on https://peyote.info/plugins/duowei-table-pro/, which hands the URL to your default browser. A static ?source=community parameter is appended so the page can tell which edition a visitor arrived from; it is a fixed string and carries nothing about you or your vault. Nothing is sent, and no request is made, unless you click.

Installation

From the Community Plugins directory: search for Duowei Table in Settings → Community plugins → Browse, install, and enable it.

Manual installation: download main.js, manifest.json, and styles.css from the Releases page of this repository and place them in <vault>/.obsidian/plugins/duowei-table/, then reload Obsidian and enable the plugin in Settings → Community plugins.

Development

npm install
npm run build

npm run build runs a tsc type check first, then bundles main.js with esbuild. npm run verify additionally runs the build verification and the virtual-window benchmark.

Support

Pick the channel that matches what you need:

  • Bug reports — this repository's issue tracker. Reports are most useful with your Obsidian version, your operating system, and a minimal .duowei file that reproduces the problem.
  • Questions and discussion — QQ group <1094620986>. The group is Simplified Chinese only; if you prefer English, please use the issue tracker or email instead.
  • Email — jepicaju862@gmail.com. Use this for anything you would rather not post in public, such as a .duowei file that contains private data.
  • Duowei Table Pro — https://peyote.info/plugins/duowei-table-pro/. Licensing, billing, or questions about Pro-only fields and views belong on its own page rather than in this repository.

License

GNU General Public License v3.0


中文说明

Duowei Table(多维表格)是 Obsidian 的本地多维表格插件。它新增了独立的 .duowei 文件类型,提供表格、看板、画廊三种视图,同时为核心插件 Bases 注册了 duowei-grid 布局。每条记录都保存在 vault 内的纯文本 JSON 文件里,可用任意工具 阅读、diff 和备份,无需账号、许可证或付款,也不联网

界面语言: 插件界面、命令与设置目前为简体中文,英文本地化在计划中。

功能

字段类型(9 种): 文本、数字、勾选、日期、单选、多选、邮箱、笔记链接、附件。

视图(3 种): 表格、看板、画廊。

  • 独立的 .duowei 文件;一条命令即可创建空白表格
  • 增删行列、重命名字段、更改字段类型(更改前会显示迁移预览)
  • 单元格预览与编辑、区域选择、复制粘贴、清除、撤销重做、自动保存
  • 按视图分别设置字段显示、筛选、排序与行高,全部持久化到文件中
  • 看板按指定字段分组并支持拖拽改值;画廊可配置封面、标题与卡片字段
  • 创建、切换、重命名、复制、删除视图;记录详情侧边栏可查看每个字段
  • 向下填充、向右填充、拖拽填充手柄,以及带预览的批量编辑
  • CSV/TSV 导入,支持预览、字段映射、类型确认与错误报告
  • 从当前 .base 文件创建独立 .duowei 表格,迁移 Markdown/frontmatter 记录
  • 将记录绑定到 Markdown 笔记,把选定字段单向写回其 frontmatter,带同步日志与失败重试
  • 从 Markdown 笔记反查绑定到它的 .duowei 记录并打开表格
  • 邮箱、笔记链接、附件字段以图标呈现,可打开并做基础校验;附件与笔记链接编辑提供 vault 文件选择器
  • 重命名、改色、删除选项
  • 大表格行虚拟化;冻结列与列宽持久化
  • 保存前检测外部修改;冲突时写入备份而非静默覆盖,并提供冲突恢复面板(含差异摘要)、 备份还原面板、自动保存备份策略与持久化操作日志
  • 冲突恢复支持逐单元格合并(冲突单元格超过 200 个时回退为仅显示差异摘要)
  • 键盘:Ctrl+C 复制,Ctrl+V 粘贴单元格或 TSV 矩阵,Delete/Backspace 清除, Tab/Shift+Tab 移动
  • 亮色、暗色与移动端自适应样式

使用

独立表格

  1. 在命令面板执行 创建空白多维表格
  2. 插件会创建并打开一个 .duowei 文件。
  3. 直接在表格中增删行列、编辑单元格、选择区域、复制、粘贴、撤销。

设计原则:

  • 一行是一条记录,不必对应某个 Markdown 文件。
  • 一列是一个字段,可在表格内增删、重命名、改类型。
  • 单元格的值保存在 .duowei 文件中。
  • Markdown 笔记绑定、frontmatter 同步、Bases 导入都是可选能力,而非前置条件。

Bases 兼容布局

  1. 启用核心插件 Bases。
  2. 启用本插件。
  3. 创建或打开一个 .base 文件。
  4. 在视图菜单中把布局切换为 多维表格

如需转为独立表格,打开该 .base 文件并执行 从当前 Base 创建独立多维表格

其他命令:查找当前笔记关联的多维表格创建示例多维表格,以及 了解与升级到 Duowei Table Pro(在浏览器中打开 https://peyote.info/plugins/duowei-table-pro/)。

版本说明

本插件(社区版)免费安装、免费使用,上述所有功能都无需账号、许可证、试用或付款。 没有任何功能受时间限制、被购买弹窗挡住,或在试用期后停止工作。

单独分发的付费版本 Duowei Table Pro 额外提供公式、关联、Lookup、 Rollup、长文本、日期时间与链接字段、日历与时间线视图,以及统计概览。Pro 通过 Obsidian 社区插件目录安装或更新,本仓库也不包含其任何代码。Pro 完全可选,社区版本身 就是一个完整可用的产品。

定价、试用与购买方案:https://peyote.info/plugins/duowei-table-pro/

插件内只有两处会引导到该页面,且都只在你主动点击时才会打开系统默认浏览器:设置中的 升级到 Duowei Table Pro 按钮,以及命令 了解与升级到 Duowei Table Pro。 界面其余位置没有任何升级提示、横幅或弹窗打扰。

两个版本共用同一份 .duowei 文件格式(schemaVersion: 1),并遵守一条硬性保证: 任何方向都不会静默丢失数据。

  • 社区版 → Pro: 无损。社区版写出的文件只是 Pro 也能理解的一个子集。
  • Pro → 社区版(在受支持功能范围内): 正常打开与编辑。
  • Pro → 社区版(包含不受支持的内容): 文件以保护性只读模式打开。横幅会说明 原因,内容仍可查看,且原文件绝不会被改写。用 Pro 重新打开即可继续编辑。

只读由严格白名单触发——例如 formularelationlookuprollup 字段类型, 日历或时间线视图,或任何超出共用协议的配置键。设计上宁可锁定文件,也不写回一个 剥离了未识别数据的版本。

请勿同时启用两个版本:它们会注册相同的 .duowei 文件扩展名与相同的视图类型。

数据与隐私

  • 所有数据都留在你的 vault 内。.duowei 是纯文本 JSON,可用任意工具阅读、diff、备份。
  • 插件不会读写 vault 以外的任何内容。
  • 无统计分析、无遥测、无崩溃上报、无任何形式的标识符。
  • 冲突检测与自动保存策略生成的备份,都以普通文件写入你的 vault。

网络使用

本插件不发起任何网络请求。 它不含 HTTP 客户端、遥测端点,也没有自带的更新机制。 更新通过 Obsidian 官方插件更新机制交付。

唯一的对外动作是一个链接:上文提到的设置按钮与升级命令会对 https://peyote.info/plugins/duowei-table-pro/ 调用 window.open,把该网址交给系统 默认浏览器打开。网址后附带一个固定的 ?source=community 参数,仅用于标记访客来自哪个 版本,它是一个写死的字符串,不包含任何关于你或你的 vault 的信息。不点击就不会发出任何 请求,也不会发送任何数据。

安装

从社区插件目录: 在 设置 → 第三方插件 → 浏览 中搜索 Duowei Table,安装并启用。

手动安装: 从本仓库 Releases 页面下载 main.jsmanifest.jsonstyles.css, 放入 <vault>/.obsidian/plugins/duowei-table/,重新加载 Obsidian,然后在 设置 → 第三方插件 中启用。

开发

npm install
npm run build

npm run build 会先运行 tsc 类型检查,再用 esbuild 打包 main.jsnpm run verify 还会额外运行构建校验与虚拟窗口基准测试。

支持

按你的需要选择对应渠道:

  • Bug 反馈——本仓库的 issue 附上你的 Obsidian 版本、操作系统, 以及一个能复现问题的最小 .duowei 文件,对定位问题最有帮助。
  • 使用问题与交流——QQ 群 <1094620986> 群内为简体中文交流。
  • 邮件——jepicaju862@gmail.com 不方便公开的内容走邮件,例如包含隐私数据的 .duowei 文件。
  • Duowei Table Pro——https://peyote.info/plugins/duowei-table-pro/ 授权、付款,或 Pro 独有字段与视图的问题,请前往其专属页面,不要发到本仓库。

许可

GPLv3

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.