Skip to content

Repository files navigation

PlainBoard

像白板一样自由编辑,像思维导图一样快速组织,像代码一样保存和比较。

PlainBoard 是一个 Local-first、Git-native、AI-editable 的语义无限画板。Markdown 保存内容,显式关系保存语义,View 文件保存空间布局;Web、CLI 与 Agent 共享同一个 operation kernel。

Open PlainBoard Web

当前状态

  • [done] v0.1.2 Beta:M0–M3 设计范围已实现,并通过单元、CLI integration、生产构建和 Chromium 回归。
  • [plan] 真实使用验证:以研究构思、系统架构和 AI synthesis 三类画板收集问题;触发条件是开始日常使用,下一动作是记录首批 10 个摩擦点。
  • [drop] 多人实时协作、云端账户、CRDT、自由笔迹和完整 Visio 图形库不进入 v0.1;本地单人格式稳定且有真实需求后才能重开。

权威产品范围、格式、架构决策与验收标准见 PlainBoard_产品与系统设计文档_v0.1.md

已实现

  • 无限画布、矩形/套索选择、实时拖动、节点缩放、多 View、Frame 和语义 Group;
  • Enter/Tab 快速思维导图输入、新建后原位输入、双击内联编辑、局部布局、pin、Undo/Redo 和命令面板;
  • Markdown 节点、8 种可切换形状、卡片/仅标题展示、3 种连接线、语义 relation type、四边连接点、专用 L 连线工具、拖入/粘贴图片与三套主题;
  • 本地目录直接读写、自动保存、OPFS 恢复、外部文件冲突保护与 ZIP fallback;
  • JSON Canvas 导入导出,以及 SVG、PNG、PDF 渲染;
  • canonical JSON、稳定 ID、结构化 validation issue、原子 operation batch 和精确 changed paths;
  • provenance-aware synthesis、source hash、stale 检测、人工 dry-run/确认;
  • @plainboard/agent 局部上下文与 Agent operation preview;
  • plainboard CLI 的 initinspectvalidateapplylayoutrender

开发

要求 Node.js 22 或更高版本。

npm install
npm run dev
npm run verify

npm run verify 依次运行 TypeScript project references、Vitest、生产构建、真实 CLI integration 和 Playwright Chromium 回归。若本机没有 Chromium,先执行:

npx playwright install chromium

CLI

node packages/cli/dist/cli.js init ./my-board --title "My research board"
node packages/cli/dist/cli.js inspect ./my-board --json
node packages/cli/dist/cli.js validate ./my-board --json
node packages/cli/dist/cli.js apply ./my-board --ops operations.json --dry-run --json
node packages/cli/dist/cli.js apply ./my-board --ops operations.json --history --json
node packages/cli/dist/cli.js layout ./my-board --direction right
node packages/cli/dist/cli.js render ./my-board --format pdf --output ./board.pdf

安装发布包后,可把 node packages/cli/dist/cli.js 换成 plainboard--ops - 支持从 stdin 读取 operation 数组。

项目格式

my-board/
├── project.json
├── graph.json
├── theme.json
├── nodes/*.md
├── views/*.json
└── assets/images/*

修改正文只触及对应 Markdown;移动节点只触及当前 View;语义关系只写入 graph.json。Web、CLI 和 Agent 都调用 @plainboard/core,不存在第二套保存逻辑。

关系可从节点上、右、下、左任一连接点拖到另一个节点的任一边。连接边以 fromHandle / toHandle 写入 graph.json,因此 Web、CLI、Agent、SVG 与 JSON Canvas 导出看到的是同一条确定连接;旧项目缺少这两个字段时继续按右出左入渲染。

Workspace

  • packages/core:schema、migration、validation、operations、layout、serialization、互操作和 SVG renderer;
  • packages/agent:局部 Agent context、synthesis plan 与安全 preview;
  • packages/cli:Node storage、CLI 和 Chromium PNG/PDF renderer;
  • apps/web:React Flow 编辑器、本地目录/ZIP/OPFS 与人工 operation review。

License

MIT

About

A local-first semantic canvas where Markdown stores meaning, Git preserves history, and AI edits through constrained operations.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages