@fgbg/mdocs 1.3.15 → 1.3.16

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.
Files changed (68) hide show
  1. package/README.md +6 -6
  2. package/agent-skills/changelog/SKILL.md +16 -1
  3. package/agent-skills/core-concepts-all-files/SKILL.md +3 -3
  4. package/agent-skills/core-concepts-domain/SKILL.md +49 -46
  5. package/agent-skills/core-concepts-invitation/SKILL.md +9 -9
  6. package/agent-skills/core-concepts-no-account/SKILL.md +1 -1
  7. package/agent-skills/deployment-requirements/SKILL.md +2 -2
  8. package/agent-skills/faq/SKILL.md +2 -2
  9. package/agent-skills/getting-started-first-kb/SKILL.md +2 -2
  10. package/agent-skills/getting-started-installation/SKILL.md +3 -3
  11. package/agent-skills/index/SKILL.md +2 -2
  12. package/agent-skills/index.json +8 -8
  13. package/agent-skills/usage-bookmarks/SKILL.md +5 -5
  14. package/agent-skills/usage-cli-token/SKILL.md +6 -6
  15. package/agent-skills/usage-comments/SKILL.md +1 -1
  16. package/agent-skills/usage-domain-members/SKILL.md +27 -27
  17. package/agent-skills/usage-html-documents/SKILL.md +1 -1
  18. package/agent-skills/usage-knowledge-graph/SKILL.md +5 -5
  19. package/agent-skills/usage-my-documents/SKILL.md +8 -8
  20. package/agent-skills/usage-onboarding-ai/SKILL.md +6 -6
  21. package/agent-skills/usage-search/SKILL.md +2 -2
  22. package/agent-skills/usage-settings/SKILL.md +8 -8
  23. package/dist/server/agent/Agent/system-prompt.js +3 -3
  24. package/dist/server/agent/Agent/system-prompt.js.map +1 -1
  25. package/dist/server/agent/Agent/tool-ui-effects.js +1 -1
  26. package/dist/server/agent/Agent/tools-documents.js +12 -12
  27. package/dist/server/agent/Agent/tools-documents.js.map +1 -1
  28. package/dist/server/agent/Agent/tools-domains.js +14 -14
  29. package/dist/server/agent/Agent/tools-domains.js.map +1 -1
  30. package/dist/server/agent/Agent/tools-visitors.js +1 -1
  31. package/dist/server/agent/Agent/tools-visitors.js.map +1 -1
  32. package/dist/server/documents/document.service.js +6 -6
  33. package/dist/server/documents/document.service.js.map +1 -1
  34. package/dist/server/documents/graph-task.js +1 -1
  35. package/dist/server/documents/graph-task.js.map +1 -1
  36. package/dist/server/documents/graph.service.js +1 -1
  37. package/dist/server/documents/graph.service.js.map +1 -1
  38. package/dist/server/domains/change-domain-permission.js +1 -1
  39. package/dist/server/domains/change-domain-permission.js.map +1 -1
  40. package/dist/server/routes/folders.routes.js +4 -4
  41. package/dist/server/routes/folders.routes.js.map +1 -1
  42. package/dist/web/assets/AgentChatPanel-Bsx3DwQ7.js +22 -0
  43. package/dist/web/assets/{AgentSkillFormCard-llRkQdK_.js → AgentSkillFormCard-TFpdC5LM.js} +3 -3
  44. package/dist/web/assets/AiWriteWorkbench-Jl0I9eM9.js +7 -0
  45. package/dist/web/assets/{DiagramEditor-NtNY3sZL-D0FE-I9-.js → DiagramEditor-NtNY3sZL-CAEe_iNQ.js} +1 -1
  46. package/dist/web/assets/DocChrome-BWMgRxlr.js +21 -0
  47. package/dist/web/assets/DocumentEditor-DALklXO2.js +1 -0
  48. package/dist/web/assets/HtmlEditor-CX0e0ifD.js +1 -0
  49. package/dist/web/assets/{MergeView-DsVxYKKc.js → MergeView-DNu_ac5f.js} +2 -2
  50. package/dist/web/assets/{PlaygroundPage-BEqH8lAT.js → PlaygroundPage-mv9P6czE.js} +1 -1
  51. package/dist/web/assets/{SettingsPage-ClwYG9Q8.js → SettingsPage-nT9hvcPA.js} +2 -2
  52. package/dist/web/assets/{Toolbar-D5TrWh7K.js → Toolbar-Hsam79hu.js} +1 -1
  53. package/dist/web/assets/{VisitorPickerModal-B0fxKY7g.js → VisitorPickerModal-CqHzml8s.js} +1 -1
  54. package/dist/web/assets/{check-s9DVK_zH.js → check-soiTDN2u.js} +2 -2
  55. package/dist/web/assets/{copy-D_-gX8nM.js → copy-B4fvX0p8.js} +2 -2
  56. package/dist/web/assets/{index-B3TBoi2p.css → index-CuXb3X2-.css} +1 -1
  57. package/dist/web/assets/index-OmOf_og0.js +283 -0
  58. package/dist/web/assets/{meta2dEngine-BD2XbzaV-DLBNOz_m.js → meta2dEngine-BD2XbzaV-Bq3HuUfD.js} +1 -1
  59. package/dist/web/assets/{plus-BR1kwsYl.js → plus-DKKQ-AoS.js} +2 -2
  60. package/dist/web/assets/{react-DCTIdd3e.js → react-CI5PDFXT.js} +3 -3
  61. package/dist/web/index.html +2 -2
  62. package/package.json +1 -1
  63. package/dist/web/assets/AgentChatPanel-ePXffWJl.js +0 -22
  64. package/dist/web/assets/AiWriteWorkbench-DtD5xWmd.js +0 -7
  65. package/dist/web/assets/DocChrome-BkDnBqBu.js +0 -21
  66. package/dist/web/assets/DocumentEditor-CUdNMfU8.js +0 -1
  67. package/dist/web/assets/HtmlEditor-BFOWf-Xl.js +0 -1
  68. package/dist/web/assets/index-vbUbFD-2.js +0 -283
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  面向个人开发者与小团队:产品内 **智能助手 + 帮写**,外部 **CLI / Skills** 接入 Cursor / Claude;SQLite + 本地文件,**无账户**即可协作。
6
6
 
7
- [文档站点](https://xuhuafeifei.github.io/mdocs-site/) · [GitHub](https://github.com/xuhuafeifei/mdocs) · [npm `@fgbg/mdocs`](https://www.npmjs.com/package/@fgbg/mdocs) · 当前版本 **1.3.15**
7
+ [文档站点](https://xuhuafeifei.github.io/mdocs-site/) · [GitHub](https://github.com/xuhuafeifei/mdocs) · [npm `@fgbg/mdocs`](https://www.npmjs.com/package/@fgbg/mdocs) · 当前版本 **1.3.16**
8
8
 
9
9
  <p align="center">
10
10
  <img src="image/site主页.png" alt="mdocs 文档站点首页" width="860" />
@@ -17,7 +17,7 @@
17
17
  | **AI 双模式** | **智能助手**:答疑、搜文、结构操作、有条件全文覆写(低交互),帮你省操作时间。**帮写**:左聊右 Diff、按段接受后再写回(高交互),精细控制每一段文字。 |
18
18
  | **Agent 开发闭环** | CLI Token + [mdocs-cli](https://github.com/xuhuafeifei/mdocs-cli) Skills:在 Cursor / Claude 里搜索、读写知识库;`mdocs-dev` / `diagram` 把契约与 Mermaid 落进仓库,减少决策不落盘与知识漂移。 |
19
19
  | **本地私有** | 单进程,SQLite + 磁盘文件,无外部 DB / 缓存 / 队列。 |
20
- | **无账户协作** | 访客即身份;域隔离 + 文档级邀请,从私有到开放按需放开。 |
20
+ | **无账户协作** | 访客即身份;工作空间 + 文档级邀请,从私有到开放按需放开。 |
21
21
  | **双模编辑与草稿** | Markdown + 富文本工具栏;Meta2d / Mermaid / Markmap;本地草稿自动保存,空闲可同步云端。 |
22
22
 
23
23
  <p align="center">
@@ -74,13 +74,13 @@ DeepSeek API Key 在设置页配置(按访客隔离):
74
74
 
75
75
  详见:[Agent 开发闭环](https://xuhuafeifei.github.io/mdocs-site/docs/usage/agent-dev-loop.html) · [CLI Token](https://xuhuafeifei.github.io/mdocs-site/docs/usage/cli-token.html)
76
76
 
77
- ### 编辑、域与协作
77
+ ### 编辑与协作
78
78
 
79
- 斜杠菜单插入 Meta2d / Markmap 等;域管理、评论、收藏等能力齐全。
79
+ 斜杠菜单插入 Meta2d / Markmap 等;工作空间、评论、收藏等能力齐全。
80
80
 
81
81
  <p align="center">
82
82
  <img src="docs/screenshots/slash-menu.png" alt="斜杠菜单" width="420" />
83
- <img src="docs/screenshots/domain-manager.png" alt="域管理" width="420" />
83
+ <img src="docs/screenshots/domain-manager.png" alt="工作空间" width="420" />
84
84
  </p>
85
85
 
86
86
  <p align="center">
@@ -114,7 +114,7 @@ mdocs update
114
114
 
115
115
  ```
116
116
  src/
117
- server/ Express API、Agent、文档/域服务、CLI
117
+ server/ Express API、Agent、文档与工作空间、CLI
118
118
  web/ Vite + React 前端
119
119
  shared/ 两侧共用类型与路径工具
120
120
  ```
@@ -1,13 +1,28 @@
1
1
  ---
2
2
  id: changelog
3
3
  name: "更新日志"
4
- description: "同 v1.3.13(npm 上 1.3.13 卡在 staged,改发此版本)。"
4
+ description: "现行文档里,产品概念「域」已改称 **工作空间**。下面各版本仍按当时的叫法记录。"
5
5
  keywords: []
6
6
  source: changelog.md
7
7
  ---
8
8
 
9
9
  # 更新日志
10
10
 
11
+ 现行文档里,产品概念「域」已改称 **工作空间**。下面各版本仍按当时的叫法记录。
12
+
13
+ ## v1.3.16
14
+
15
+ ### 顶栏状态
16
+ - **「编辑中 / 已发布」只跟未发布的本地草稿**:没有草稿就是已发布;草稿写入或删除后,顶栏同一轮改字。打开已有草稿时不再先闪一下「已发布」
17
+ - 打字后仍等约 1 秒落盘,才变成「编辑中」
18
+
19
+ ### AI 帮写
20
+ - 桌面端「完成并写回」「取消」改用应用内确认框。系统确认框在桌面壳里不会弹出,所以之前点了没反应
21
+ - 完成时只问「是否回写」:确认写入本地草稿,不自动发布;返回留在帮写界面
22
+
23
+ ### 手机端
24
+ - 窄屏阅读顶栏增加拉取更新按钮
25
+
11
26
  ## v1.3.15
12
27
 
13
28
  ### 升级
@@ -19,7 +19,7 @@ mdocs 的存储模型将文档目录树映射为两层结构:
19
19
 
20
20
  | `file_type` | 含义 | `relative_path` | `parent_id` |
21
21
  |-------------|------|-----------------|-------------|
22
- | `dir` | 目录 | 域内相对路径(如 `folder/sub`) | 指向父目录的 `document_id` |
22
+ | `dir` | 目录 | 工作空间内相对路径(如 `folder/sub`) | 指向父目录的 `document_id` |
23
23
  | `md` | 文档 | 完整路径(如 `folder/sub/a.md`) | 指向父目录的 `document_id` |
24
24
 
25
25
  目录树由 `parent_id` 关系直接确定,不依赖路径切割。
@@ -32,7 +32,7 @@ mdocs 的存储模型将文档目录树映射为两层结构:
32
32
  ~/.mdocs/files/docs/{domain_id}/folder/sub/a.md
33
33
  ```
34
34
 
35
- - `{domain_id}` 是域的唯一标识,每个域拥有独立的磁盘子目录
35
+ - `{domain_id}` 是工作空间的唯一标识,每个工作空间拥有独立的磁盘子目录
36
36
  - 磁盘路径与 `relative_path` 一一对应
37
37
  - 目录节点(`file_type = 'dir'`)不写磁盘文件,仅存在于数据库中
38
38
 
@@ -49,5 +49,5 @@ mdocs 的存储模型将文档目录树映射为两层结构:
49
49
 
50
50
  - SQLite 管理逻辑结构(谁是父目录、谁有权限)
51
51
  - 文件系统管理实际数据(Markdown / JSON 内容)
52
- - 域之间在磁盘上完全隔离,不同域可以拥有同名文件
52
+ - 工作空间之间在磁盘上完全隔离,不同工作空间可以拥有同名文件
53
53
 
@@ -1,70 +1,72 @@
1
1
  ---
2
2
  id: core-concepts-domain
3
- name: "域隔离(Domain)"
4
- description: "mdocs 中的「域」是最顶层的逻辑隔离单元。它的设计目标是:"
3
+ name: "工作空间(Workspace)"
4
+ description: "文档和侧栏里的隔离单元叫**工作空间**。早期文案叫「域」,指的是同一件事。数据库和接口字段仍是 `domain_id`,那是实现名,不是给新用户看的概念。"
5
5
  keywords: []
6
6
  source: core-concepts/domain.md
7
7
  ---
8
8
 
9
- # 域隔离(Domain)
9
+ # 工作空间(Workspace)
10
+
11
+ 文档和侧栏里的隔离单元叫**工作空间**。早期文案叫「域」,指的是同一件事。数据库和接口字段仍是 `domain_id`,那是实现名,不是给新用户看的概念。
10
12
 
11
13
  ## 设计意图
12
14
 
13
- mdocs 中的「域」是最顶层的逻辑隔离单元。它的设计目标是:
15
+ 工作空间是最顶层的逻辑边界,用来:
14
16
 
15
- - 不同团队或项目之间的文档在**浏览入口**(域列表、侧栏树)上彼此隔离
16
- - 在不引入复杂 RBAC 的前提下实现最基本的访问边界
17
- - 让每个用户拥有一个「个人域」作为私密工作区
17
+ - 让不同团队或项目的文档,在工作空间列表和侧栏树上彼此分开
18
+ - 在不引入复杂权限系统的前提下,划出谁能进来
19
+ - 给每个用户一个「个人工作空间」当私密区
18
20
 
19
- 域是存在于数据库逻辑上的虚拟概念,文档通过 `domain_id` 字段归属到某个域。
21
+ 一篇文档通过 `domain_id` 归属到某一个工作空间。
20
22
 
21
- ## 三种域类型
23
+ ## 三种类型
22
24
 
23
- | 域类型 | 谁可以进入 | 文档 permission 档位 | 用途 |
24
- |--------|-----------|---------------------|------|
25
- | **public**(公开域)| 任何人(含未登录访客) | 仅 `public_read(3)`、`public_write(4)` | 开放协作,默认域 |
26
- | **restricted**(受限域)| **域成员** 与 **创建者** 为完整入口;仅被某篇文档 invite 的访客为受限入口(可见相关文档,**不能**凭此在域内任意新建文档) | 仅 `domain_read(1)`、`domain_write(2)` | 团队内部知识库 |
27
- | **private**(个人域)| 仅域主(`domain_id === visitor_id`) | 0~4 **全部**档位均可 | 私人笔记本 |
25
+ | 类型 | 谁可以进入 | 文档 permission 档位 | 用途 |
26
+ |------|-----------|---------------------|------|
27
+ | **public**(公开) | 任何人(含未登录访客) | 仅 `public_read(3)`、`public_write(4)` | 开放协作,默认工作空间 |
28
+ | **restricted**(受限) | **成员**与**创建者**为完整入口;只被某篇文档邀请的访客是受限入口(能看相关文档,**不能**凭此在工作空间里任意新建) | 仅 `domain_read(1)`、`domain_write(2)` | 团队知识库 |
29
+ | **private**(个人) | 仅创建者(`domain_id` 等于该访客的 `visitor_id`) | 0~4 **全部**档位 | 私人笔记本 |
28
30
 
29
- > 域类型会**约束**域内文档可选的 permission 值——public 域不允许 private 档,restricted 域不允许 public 档。这是与之前版本的关键区别。
31
+ > 类型会约束里面的文档能选哪些 permission:公开工作空间不允许 private 档,受限工作空间不允许 public 档。
30
32
 
31
33
  ## 五级文档权限
32
34
 
33
- 每篇文档有一个 `permission` 字段(0~4),定义谁能读、谁能写(在「能接触到该文档」的前提下):
35
+ 每篇文档有一个 `permission`(0~4),定义谁能读、谁能写(前提是对方已经能碰到这篇文档):
34
36
 
35
37
  | 数值 | 名称 | 谁可读 | 谁可写 |
36
38
  |------|------|--------|--------|
37
39
  | 0 | private | 仅 owner | 仅 owner |
38
- | 1 | domain_read | 域成员 | 仅 owner |
39
- | 2 | domain_write | 域成员 | 域成员 |
40
+ | 1 | domain_read | 工作空间成员 | 仅 owner |
41
+ | 2 | domain_write | 工作空间成员 | 工作空间成员 |
40
42
  | 3 | public_read | 任何人 | 仅 owner |
41
43
  | 4 | public_write | 任何人 | 任何人 |
42
44
 
43
- <!-- ![权限矩阵示意图](./domain/permission-matrix.png) -->
45
+ `domain_read` / `domain_write` 是字段名,界面上对应「工作空间内可读 / 可编辑」。
44
46
 
45
- ### 档位与域类型的约束关系
47
+ ### 档位与类型的约束
46
48
 
47
- | 域类型 | 允许的文档 permission | 说明 |
48
- |--------|----------------------|------|
49
- | **public** | **仅** `public_read(3)`、`public_write(4)` | 公开域内不允许出现「仅域成员」或「仅 owner」的文档 |
50
- | **restricted** | **仅** `domain_read(1)`、`domain_write(2)` | 受限域内文档不暴露给域外任何人;非成员若需访问则靠 **invite** 叠加 |
51
- | **private** | **全部** 0~4 | 不设档位上限;private 域下文档也可以设为 `public_write(4)` 对外公开 |
49
+ | 类型 | 允许的文档 permission | 说明 |
50
+ |------|----------------------|------|
51
+ | **public** | **仅** `public_read(3)`、`public_write(4)` | 公开工作空间里不能出现「仅成员」或「仅 owner」的文档 |
52
+ | **restricted** | **仅** `domain_read(1)`、`domain_write(2)` | 文档不暴露给成员以外的人;外人要看,靠 **邀请** |
53
+ | **private** | **全部** 0~4 | 不设上限;个人工作空间里的文档也可以设成 `public_write(4)` 对外公开 |
52
54
 
53
55
  ### 创建默认值
54
56
 
55
- | 域类型 | 新建文档默认 permission |
56
- |--------|----------------------|
57
+ | 类型 | 新建文档默认 permission |
58
+ |------|----------------------|
57
59
  | private | `private(0)` |
58
60
  | restricted | `domain_read(1)` |
59
61
  | public | `public_read(3)` |
60
62
 
61
- ## invite:独立叠加层
63
+ ## 邀请:单独一层
62
64
 
63
- 在五级权限之上,还有一个独立于档位的 **invite** 机制:owner 可以为任意一篇文档添加受邀者(read / edit),不受文档当前档位限制。
65
+ 在五级权限之上,还有 **邀请**:文档创建者可以给任意一篇文档加人(read / edit),不受当前档位限制。
64
66
 
65
- - invite **不是**一个权限档位(它不是 0~4 中的一员)
66
- - invite 与域成员**互斥**:已经是域成员的人,不能再被 invite
67
- - 鉴权顺序:owner → 档位语义 → invite 兜底
67
+ - 邀请不是 0~4 里的一档
68
+ - 邀请与工作空间成员**互斥**:已经是成员的人,不能再被邀请
69
+ - 鉴权顺序:owner → 档位 → 邀请兜底
68
70
 
69
71
  详见 [文档级邀请](./invitation.md)。
70
72
 
@@ -73,34 +75,35 @@ mdocs 中的「域」是最顶层的逻辑隔离单元。它的设计目标是
73
75
  ```
74
76
  读权限:
75
77
  1. owner → 放行
76
- 2. public 域 → 3/4 档放行
77
- 3. restricted 域 → 域成员走 1/2 档;非成员走 invite
78
- 4. private 域 → 按档位实际语义 + invite
78
+ 2. 公开工作空间 → 3/4 档放行
79
+ 3. 受限工作空间 → 成员走 1/2 档;非成员走邀请
80
+ 4. 个人工作空间 → 按档位实际语义 + 邀请
79
81
 
80
82
  写权限:
81
83
  1. owner → 放行
82
- 2. public 域 → 仅 4 档放行
83
- 3. restricted 域 → 仅 2 档且为域成员;非成员走 invite
84
- 4. private 域 → 按档位实际语义
84
+ 2. 公开工作空间 → 仅 4 档放行
85
+ 3. 受限工作空间 → 仅 2 档且为成员;非成员走邀请
86
+ 4. 个人工作空间 → 按档位实际语义
85
87
  ```
86
88
 
87
- ## 个人域(Private)
89
+ ## 个人工作空间(Private)
88
90
 
89
- - 每个访客注册时自动创建一个个人域,`domain_id` 等于该访客的 `visitor_id`
90
- - 个人域**只有域主一个成员**(不通过 `domain_members` 表维护多成员)
91
- - 文件权限可设为 0~4 任意档位——即使名为「个人」域,也可以公开某篇文档
91
+ - 访客注册时自动创建一个个人工作空间,`domain_id` 等于该访客的 `visitor_id`
92
+ - 库里的名字以「个人域」结尾(历史存储后缀),界面显示为「某某个人工作空间」
93
+ - 只有创建者一人,不通过 `domain_members` 维护多人
94
+ - 文档权限可以是 0~4 任意档;名为「个人」也可以把某一篇公开
92
95
  - 创建文档时默认权限为 `private(0)`
93
96
 
94
97
  ## 列表 vs 直链
95
98
 
96
- 侧栏树、域下列表会按域准入过滤;若某人持有**文档 ID 直链**,读权限主要由**文档档位 + invite** 决定——例如 restricted 域内一篇 `domain_read` 文档,对非域成员不可读(除非被 invite)。需要更强保密时,请用 **`private(0)`** 档。
99
+ 侧栏树、工作空间里的列表会按「能不能进这个工作空间」过滤。若某人拿着**文档 ID 直链**,读权限主要由**文档档位 + 邀请**决定。例如受限工作空间里一篇 `domain_read` 文档,非成员不可读(除非被邀请)。需要更强保密时,用 **`private(0)`**。
97
100
 
98
101
  ## 设计取舍
99
102
 
100
- - **不引入团队/组织树**:域只是逻辑标签。对于小团队,一个 public 域 + 每人一个 private 域就足够
101
- - **域隔离在数据库和文件系统两个层面**:磁盘上每个域拥有独立的子目录(`~/.mdocs/files/docs/{domain_id}/`),数据库通过 `domain_id` 进行查询过滤;跨域「移动」需更新数据库记录并移动磁盘文件
103
+ - **不引入团队 / 组织树**:工作空间只是一块地方。小团队通常一个公开工作空间,再加每人一个个人工作空间就够
104
+ - **数据库和磁盘都分开**:每个工作空间在磁盘上有自己的目录(`~/.mdocs/files/docs/{domain_id}/`),查询用 `domain_id` 过滤。把文档挪到另一个工作空间,要改库并移动文件
102
105
 
103
- **操作说明**(创建受限域、维护成员、套用模板):见 [受限域成员与名单模板](../usage/domain-members.md)。
106
+ **操作说明**(创建受限工作空间、维护成员、套用模板):见 [受限工作空间成员与名单模板](../usage/domain-members.md)。
104
107
 
105
108
  行为以 mdocs 应用代码与 SQLite schema 为准;随版本迭代本页会跟进。
106
109
 
@@ -30,7 +30,7 @@ source: core-concepts/invitation.md
30
30
  ## 设计要点
31
31
 
32
32
  1. **基于访客 ID,而非邮箱**:mdocs 没有用户账户系统,所以邀请的载体是访客 ID——每个浏览器注册后获得的唯一标识
33
- 2. **文档级粒度**:不是整个域或整个项目,而是单篇文档。适合「这篇文档需要给某人看一下」的场景
33
+ 2. **文档级粒度**:不是整个工作空间或整个项目,而是单篇文档。适合「这篇文档需要给某人看一下」的场景
34
34
  3. **与档位解耦**:邀请不是权限档位——它独立于文档的五级权限(0~4)之上。任何档位的文档都可以叠加 invite,不受限制
35
35
  4. **所有者和受邀者的关系在数据库中存储**:
36
36
 
@@ -43,19 +43,19 @@ document_invites 表
43
43
 
44
44
  邀请仅由文档所有者管理。所有者可以随时撤销邀请。
45
45
 
46
- ## 与域成员互斥
46
+ ## 与工作空间成员互斥
47
47
 
48
- 一条重要约束:**已是某域成员的人,不能再被该域内文档邀请**。域成员已经拥有域内文档的读/写权限(取决于档位),invite 是给**域外人员**的通道。
48
+ 一条重要约束:**已是某工作空间成员的人,不能再被该工作空间内文档邀请**。工作空间成员已经拥有工作空间内文档的读/写权限(取决于档位),invite 是给**工作空间外人员**的通道。
49
49
 
50
- - **restricted 域**:域成员直接走 `domain_read(1)` / `domain_write(2)` 档位语义,不需要也不应该被 invite
51
- - **private 域**:域内仅有域主一人,实际效果相同——无法 invite 域主
52
- - **public 域**:public 域没有域成员概念,invite 不会因此被拦截
50
+ - **restricted(受限)**:工作空间成员直接走 `domain_read(1)` / `domain_write(2)` 档位语义,不需要也不应该被 invite
51
+ - **private(个人)**:工作空间内仅有创建者一人,实际效果相同——无法 invite 创建者
52
+ - **public(公开)**:公开工作空间没有成员名单,invite 不会因此被拦截
53
53
 
54
- ## invite 在各域类型中的角色
54
+ ## invite 在各工作空间类型中的角色
55
55
 
56
- | 域类型 | invite 的作用 |
56
+ | 类型 | invite 的作用 |
57
57
  |--------|-------------|
58
58
  | **public** | 对非 owner 补充写权限(`public_read(3)` 档文档默认仅 owner 可写);`public_write(4)` 档下用不到 invite |
59
- | **restricted** | 非域成员通过 invite 获得**某篇文档**的读/写能力,同时在服务端呈现「经文档邀请」的域入口(不足以在域内任意新建文档;在域内随意创建内容需成为 `domain_members` 成员) |
59
+ | **restricted** | 非成员通过 invite 获得**某篇文档**的读/写能力,同时在服务端呈现「经文档邀请」的入口(不足以在工作空间内任意新建文档;在工作空间内随意创建内容需成为 `domain_members` 成员) |
60
60
  | **private** | 非 owner 能否访问取决于文件档位 + invite 叠加。例如 `private(0)` 档文档,非 owner 只能通过 invite 进入 |
61
61
 
@@ -79,6 +79,6 @@ pnpm mdocs visitor list --all # 看全部(含已禁用的)
79
79
 
80
80
  - **放弃重型「用户体系」**换低准入;跨端能力用「可选密码」补齐,而不是一上来就上完整账号平台
81
81
  - **HttpOnly Cookie 日常鉴权**:服务端重启不轻易丢当前浏览器会话
82
- - **可以匿名浏览**:不注册也能看到公开域的公开文档
82
+ - **可以匿名浏览**:不注册也能看到公开工作空间的公开文档
83
83
  - **恢复码**:服务早期 Cookie-only 身份的自助找回;密码普及后降为兼容能力
84
84
 
@@ -34,8 +34,8 @@ source: deployment/requirements.md
34
34
  data.sqlite # 元数据(文档索引、访客、权限、审计日志)
35
35
  files/
36
36
  docs/
37
- {domain_id}/ # 每个域独立的子目录
38
- a.md # 域内文档(Lexical JSON 格式)
37
+ {domain_id}/ # 每个工作空间独立的子目录
38
+ a.md # 工作空间内文档(Lexical JSON 格式)
39
39
  assets/ # 上传的附件
40
40
  logs/ # 运行日志(按日期轮转)
41
41
  ```
@@ -25,8 +25,8 @@ source: faq.md
25
25
 
26
26
  ### 支持多人协作吗?
27
27
 
28
- 支持。通过「域 + 文档级邀请」实现:
29
- - public 域的文档默认可被所有人查看
28
+ 支持。通过「工作空间 + 文档级邀请」实现:
29
+ - 公开工作空间的文档默认可被所有人查看
30
30
  - 文档所有者可以邀请特定访客获得编辑权限
31
31
  - 不需要协作者注册账户
32
32
 
@@ -15,7 +15,7 @@ source: getting-started/first-kb.md
15
15
 
16
16
  ## 创建文档
17
17
 
18
- 1. 注册完成后,点击左侧边栏的「新建文档」
18
+ 1. 注册完成后,点侧栏或欢迎页的「开始写作」
19
19
  2. 输入文件名(如 `hello.md`),点击创建
20
20
  3. 文档创建后自动进入编辑器
21
21
 
@@ -23,7 +23,7 @@ source: getting-started/first-kb.md
23
23
 
24
24
  ![mdocs主页](./first-kb/mdocs-main.png)
25
25
 
26
- 点击`新建文档`,创建md文档。点击`创建文件夹`,创建文件夹
26
+ 点「开始写作」,创建 Markdown 文档。已有的文件夹仍会显示在左侧目录树里。
27
27
 
28
28
  ## 编辑与保存
29
29
 
@@ -89,9 +89,9 @@ mdocs start
89
89
  data.sqlite # 元数据(文档索引、权限、访客、审计日志)
90
90
  files/
91
91
  docs/
92
- {domain_id}/ # 每个域独立的子目录
93
- a.md # 域内文档
94
- folder/ # 域内子目录(逻辑存在于数据库)
92
+ {domain_id}/ # 每个工作空间独立的子目录
93
+ a.md # 工作空间内文档
94
+ folder/ # 工作空间内子目录(逻辑存在于数据库)
95
95
  b.md
96
96
  assets/ # 上传的附件
97
97
  logs/ # 运行日志
@@ -23,7 +23,7 @@ source: index.md
23
23
 
24
24
  ## 核心设计
25
25
 
26
- - [域隔离](./core-concepts/domain.md)——团队与个人的逻辑边界
26
+ - [工作空间](./core-concepts/domain.md)——团队与个人的逻辑边界
27
27
  - [无账户身份识别](./core-concepts/no-account.md)——打开即用,无需注册
28
28
  - [文档级邀请](./core-concepts/invitation.md)——精细到单篇文档的权限控制
29
29
 
@@ -38,7 +38,7 @@ source: index.md
38
38
  - [我的文章与邀请](./usage/my-documents.md)——集中管理创作内容
39
39
  - [收藏功能](./usage/bookmarks.md)——快速标记重要文档
40
40
  - [文档评论](./usage/comments.md)——协作讨论与反馈
41
- - [受限域成员与名单模板](./usage/domain-members.md)——团队域邀人、复用成员名单
41
+ - [受限工作空间成员与名单模板](./usage/domain-members.md)——团队工作空间邀人、复用成员名单
42
42
 
43
43
  ## 部署运维
44
44
 
@@ -13,7 +13,7 @@
13
13
  {
14
14
  "id": "changelog",
15
15
  "name": "更新日志",
16
- "description": "同 v1.3.13(npm 上 1.3.13 卡在 staged,改发此版本)。",
16
+ "description": "现行文档里,产品概念「域」已改称 **工作空间**。下面各版本仍按当时的叫法记录。",
17
17
  "keywords": [],
18
18
  "source": "changelog.md"
19
19
  },
@@ -26,8 +26,8 @@
26
26
  },
27
27
  {
28
28
  "id": "core-concepts-domain",
29
- "name": "域隔离(Domain)",
30
- "description": "mdocs 中的「域」是最顶层的逻辑隔离单元。它的设计目标是:",
29
+ "name": "工作空间(Workspace)",
30
+ "description": "文档和侧栏里的隔离单元叫**工作空间**。早期文案叫「域」,指的是同一件事。数据库和接口字段仍是 `domain_id`,那是实现名,不是给新用户看的概念。",
31
31
  "keywords": [],
32
32
  "source": "core-concepts/domain.md"
33
33
  },
@@ -111,7 +111,7 @@
111
111
  {
112
112
  "id": "usage-bookmarks",
113
113
  "name": "收藏功能",
114
- "description": "收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨域快速访问。",
114
+ "description": "收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨工作空间快速访问。",
115
115
  "keywords": [],
116
116
  "source": "usage/bookmarks.md"
117
117
  },
@@ -131,8 +131,8 @@
131
131
  },
132
132
  {
133
133
  "id": "usage-domain-members",
134
- "name": "受限域成员与名单模板",
135
- "description": "本文说明如何在 mdocs 里维护 **restricted(受限)域** 的成员,以及如何使用 **域成员模板** 减少重复勾选。与权限模型相关的设计背景见 [域隔离](../core-concepts/domain.md)。",
134
+ "name": "受限工作空间成员与名单模板",
135
+ "description": "本文说明如何在 mdocs 里维护 **restricted(受限)工作空间** 的成员,以及如何使用 **成员模板** 减少重复勾选。与权限模型相关的设计背景见 [工作空间](../core-concepts/domain.md)。",
136
136
  "keywords": [],
137
137
  "source": "usage/domain-members.md"
138
138
  },
@@ -181,7 +181,7 @@
181
181
  {
182
182
  "id": "usage-my-documents",
183
183
  "name": "我的文章",
184
- "description": "「我的文章」功能聚合展示你创建的所有文档,集中管理跨域内容,并提供快捷的文档操作入口。",
184
+ "description": "「我的文章」功能聚合展示你创建的所有文档,集中管理跨工作空间内容,并提供快捷的文档操作入口。",
185
185
  "keywords": [],
186
186
  "source": "usage/my-documents.md"
187
187
  },
@@ -209,7 +209,7 @@
209
209
  {
210
210
  "id": "usage-settings",
211
211
  "name": "设置页面",
212
- "description": "设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、域与成员模板、智能助手、草稿同步等都在这里。",
212
+ "description": "设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、工作空间与成员模板、智能助手、草稿同步等都在这里。",
213
213
  "keywords": [],
214
214
  "source": "usage/settings.md"
215
215
  },
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: usage-bookmarks
3
3
  name: "收藏功能"
4
- description: "收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨域快速访问。"
4
+ description: "收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨工作空间快速访问。"
5
5
  keywords: []
6
6
  source: usage/bookmarks.md
7
7
  ---
@@ -10,7 +10,7 @@ source: usage/bookmarks.md
10
10
 
11
11
  ## 功能概述
12
12
 
13
- 收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨域快速访问。
13
+ 收藏功能帮助你快速标记和访问重要文档。已收藏的文档会出现在「我的收藏」列表中,便于跨工作空间快速访问。
14
14
 
15
15
  ## 收藏文档
16
16
 
@@ -34,7 +34,7 @@ source: usage/bookmarks.md
34
34
 
35
35
  ![设置 → 我的收藏](./bookmarks/settings-list.png)
36
36
 
37
- 表格列包括:标题、域、作者、收藏时间;行内可 **取消收藏**。
37
+ 表格列包括:标题、工作空间、作者、收藏时间;行内可 **取消收藏**。
38
38
 
39
39
  收藏列表的显示规则:
40
40
  - 正常文档:可点击打开
@@ -62,7 +62,7 @@ source: usage/bookmarks.md
62
62
 
63
63
  ### 无权限文档的收藏
64
64
 
65
- 即使你失去了某篇文档的访问权限(如被移出域成员),收藏项仍然保留。你可以手动取消收藏来清理。
65
+ 即使你失去了某篇文档的访问权限(如被移出工作空间成员),收藏项仍然保留。你可以手动取消收藏来清理。
66
66
 
67
67
  ---
68
68
 
@@ -73,7 +73,7 @@ source: usage/bookmarks.md
73
73
  | 文档权限 | 能否收藏 | 能否查看内容 |
74
74
  |---------|----------|-------------|
75
75
  | 公开可读/可编辑 | ✅ 可以 | ✅ 可以 |
76
- | 受限域成员 | ✅ 可以 | ✅ 可以 |
76
+ | 受限工作空间成员 | ✅ 可以 | ✅ 可以 |
77
77
  | 文档被邀请 | ✅ 可以 | ✅ 可以 |
78
78
  | 无权限但已收藏 | ➖ 保持收藏 | ❌ 无法打开 |
79
79
 
@@ -73,13 +73,13 @@ export MDOCS_SERVER="http://101.132.222.88:4000"
73
73
 
74
74
  | 命令 | 用途 |
75
75
  | ---------------------------------------------------------------------------------- | ----------------------------- |
76
- | `search --q <关键词> [--domain <域ID>] [--topn <数量>]` | 全文检索文档 |
76
+ | `search --q <关键词> [--domain <工作空间 ID>] [--topn <数量>]` | 全文检索文档 |
77
77
  | `get <文档ID>` | 读取文档完整内容 |
78
- | `create --name <文件名.md> --content <正文> [--domain <域ID>] [--parent <目录ID>]` | 创建文档 |
78
+ | `create --name <文件名.md> --content <正文> [--domain <工作空间 ID>] [--parent <目录ID>]` | 创建文档 |
79
79
  | `update <文档ID> --content <新正文> [--title <新标题>]` | 更新文档内容 |
80
- | `domains` | 列出当前 Token 可访问的所有域 |
81
- | `mkdir --domain <域ID> --name <目录名> [--parent <目录ID>]` | 创建目录 |
82
- | `ls <documentId>` 或 `ls "关键词" --domain <域ID>` | 列出目录下子节点 |
80
+ | `domains` | 列出当前 Token 可访问的所有工作空间 |
81
+ | `mkdir --domain <工作空间 ID> --name <目录名> [--parent <目录ID>]` | 创建目录 |
82
+ | `ls <documentId>` 或 `ls "关键词" --domain <工作空间 ID>` | 列出目录下子节点 |
83
83
 
84
84
  ### 使用示例
85
85
 
@@ -92,7 +92,7 @@ node ~/.mdocs-cli/mdocs.mjs create \
92
92
  --name "笔记.md" \
93
93
  --title "我的笔记" \
94
94
  --content "# 标题\n\n正文内容" \
95
- --domain <域ID> \
95
+ --domain <工作空间 ID> \
96
96
  --parent <目录ID>
97
97
 
98
98
  # 更新文档
@@ -103,7 +103,7 @@ source: usage/comments.md
103
103
  |---------|-------------|--------------|------------------|
104
104
  | 公开可读 | ✅ 可以 | ❌ 不可以 | ❌ 不可以 |
105
105
  | 公开可编辑 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
106
- | 受限域成员 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
106
+ | 受限工作空间成员 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
107
107
  | 被邀请只读 | ✅ 可以 | ❌ 不可以 | ❌ 不可以 |
108
108
  | 被邀请可编辑 | ✅ 可以 | ✅ 可以 | ✅ 可以 |
109
109