feat: align local-first workspace direction

Document the VSCode-like local-first product shape, demote Convex to a control-plane role, and retire stale architecture drafts.

Add local workspace migration/export references plus smoke coverage for no-Convex managed workspace startup, local markdown title/body/options persistence, asset upload behavior, and Convex fixture export.

Verification: git diff --cached --check; node scripts/check-local-first-convex-guard.js --staged; node scripts/task444-convex-workspace-export-local-fixture-smoke.js; node scripts/task166-local-first-managed-workspace-no-convex-smoke.js; node scripts/task167-local-markdown-title-body-options-no-convex-smoke.js
This commit is contained in:
lix-2026
2026-05-19 08:11:58 +08:00
parent 68d321e297
commit cdff672aa5
67 changed files with 5242 additions and 932 deletions
+60 -17
View File
@@ -1,6 +1,13 @@
# 01-05 当前主线与优先级总览
> 更新时间:2026-05-09
> 更新时间:2026-05-19
>
> 2026-05-18 口径补充:
> - 产品形态已调整为 `Local-first workspace`:本地文件夹是默认数据真相,Rust kernel 是唯一语义真相,Convex / 服务端降级为账号、分享、同步、协作和 AI 隔离控制面。
> - 产品定义可进一步收口为:`VSCode 简化版工作区内核 + tiptap markdown 编辑器 + Hermes / Reasonix agent + simplemindmap / office 插件 + Wolai 风格 web 壳 + 鉴权控制面`。
> - 上位设计已完成并迁入:`/mnt/Data1T/mnote/design/02-convex-rust-long-term-architecture/done/2-2-local-first-workspace-convex-control-plane-v1.md`。
> - 本地 Markdown 图片与附件上传已新增本地 route 并避免 Convex media asset,见 `bugs/03-rust-web/done/3-16-local-markdown-upload-uses-convex-media-asset-v1.md`;真实浏览器上传 / 刷新 / 文件树可见 smoke 已由 `scripts/task443-local-markdown-asset-upload-smoke.js` 覆盖。
> - 旧的“Convex 作为默认自托管存储 / 实时 / 文件底座”口径只作为当前代码过渡态理解,不再作为新增能力默认方向。
>
> 2026-05-16 口径补充:
> - `5-4` 的默认页面内 `leptos-tiptap` island 主链切流已完成并迁入 `done/`;官方模板视觉和菜单细节继续由 `5-2 / 5-7 / 5-9` 承接。
@@ -16,22 +23,39 @@
下面三份仍然是当前架构判断的上位依据:
- `/mnt/Data1T/mnote/design/01-tree-first-graph-kernel/process/1-tree-first-graph-kernel-v1.md`
- `/mnt/Data1T/mnote/design/02-convex-rust-long-term-architecture/process/2-tree-first-graph-convex-rust-long-term-architecture-v1.md`
- `/mnt/Data1T/mnote/design/02-convex-rust-long-term-architecture/done/2-2-local-first-workspace-convex-control-plane-v1.md`
- `/mnt/Data1T/mnote/design/03-rust-web/process/3-rust-web-long-term-architecture-v1.md`
它们分别固定了三件事:
补充:旧稿 `/mnt/Data1T/mnote/design/old/02-convex-rust-long-term-architecture/process/2-tree-first-graph-convex-rust-long-term-architecture-v1.md` 已降级为 `[recycle][legacy]` 历史过渡判断,只解释“不要无计划硬拆 Convex”,不再作为新增能力默认存储口径。
它们分别固定了四件事:
1. 长期事实源是 `tree-first graph kernel`
2. `Convex` 保留为当前自托管存储 / 实时底座,不先拆
3. `mnote-web` 是 Rust Web 承载层,长期继续承担 transport、projection 分发与切流
2. 本地文件夹是早期产品默认数据真相,Convex / 服务端降级为控制面与可选同步协作层
3. 旧 Convex 主存储链只作为当前代码过渡态,不再作为新增能力默认方向
4. `mnote-web` 是 Rust Web 承载层,长期继续承担 transport、projection 分发与切流
## 2. 当前第一优先级
当前最优先的不是继续扩 UI,也不是继续大规模重写执行面,而是把页面域和树域的真相边界收口。
当前最优先的不是继续扩 UI,也不是继续大规模重写执行面,而是把页面域和树域的真相边界收口到本地优先工作区
### 2.0 Local-First Workspace
当前第一优先级固定为:
- `/mnt/Data1T/mnote/design/02-convex-rust-long-term-architecture/done/2-2-local-first-workspace-convex-control-plane-v1.md`
原因:
- 前期产品是 10 人以内、个人笔记默认独立、可分享、AI 隔离的知识库,不是默认云协作平台
- 本地 markdown 文件更适合作为 AI 编辑、上传下载、备份、git 管理和调试的默认数据形态
- Convex 配置、schema、functions、实时订阅和 storage 不应继续阻塞本地个人工作区主路径
- 迁移重点是让 LocalFS 成为默认 `WorkspaceSource`,Convex 保留为账号、分享、同步和协作控制面
- 本地 Markdown 页面内上传已完成后端、HTTP 和真实浏览器 smoke 基线;下一步重点转为管理员目录授权、冲突合并 UI、agent diff 审计、本地索引和分享 / 同步闭环
### 2.1 Page Aggregate
当前第优先级固定为:
当前第优先级固定为:
- `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-5-page-aggregate-single-truth-alignment-v1.md`
- `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-6-page-aggregate-alignment-checklist-v1.md`
@@ -47,7 +71,7 @@
### 2.2 Tree Command Cutover
当前第优先级固定为:
当前第优先级固定为:
- `/mnt/Data1T/mnote/design/04-tree-domain/done/4-6-tree-command-protocol-cutover-stage2-v1.md`
@@ -59,7 +83,7 @@
### 2.3 Tree Realtime 主链
当前第优先级固定为:
当前第优先级固定为:
- `/mnt/Data1T/mnote/design/03-rust-web/process/3-3-rust-web-tree-realtime-event-stream-v1.md`
@@ -103,18 +127,37 @@
- 文档中的事实基线已经落后于当前默认主编辑器、page aggregate 入口与 island 主链
- 继续保留在活跃 `process` 容易让后续工作按旧阶段推进
## 5. 当前执行顺序
## 5. VSCode-like 产品缺口
`2-2` 已完成 local-first 骨架与迁移 checklist,后续新增能力应优先补齐这些产品闭环:
1. 管理员目录授权 UI / API:管理用户可读写目录、共享目录、只读/可写权限和 AI 目录权限。
2. VSCode-like 冲突处理 UI:接受磁盘版本、保留当前编辑器版本、打开 diff / 合并。
3. agent 写入审计:回收 changed files、diff summary、actor、workspace root、permission level、run id。
4. 本地索引:全文搜索、反链、页面引用、资源引用、标签,不依赖 Convex search 才能搜索本地 workspace。
5. 分享与同步闭环:share grants、shared workspace cache、shared AI session、离线权限收敛和同步冲突报告。
6. 插件资源模型:simplemindmap / office 作为 Resource Tree 对象打开和保存,Markdown 只保留链接或嵌入引用。
7. 旧 Convex 数据迁移产品化:真实导出入口、迁移进度、备份、冲突报告和回滚策略。
## 6. 当前执行顺序
当前推荐顺序固定为:
1. `Page Aggregate`
2. `Tree Command Cutover Stage 2`
3. `Tree Realtime Event Stream`
4. 树域产品交互合同补齐
5. 编辑器官方模板行为对齐
1. 管理员目录授权 UI / API
2. VSCode-like 冲突处理 UI
3. agent changed files / diff 审计
4. 本地搜索、反链和资源引用索引
5. 分享与同步闭环
6. 插件资源模型产品化
7. 旧 Convex 数据迁移产品化
8. Page Aggregate / tree command / realtime 兼容链继续瘦身
## 6. 一句话收口
持续推进 checklist
- `/mnt/Data1T/mnote/design/01-tree-first-graph-kernel/process/1-3-current-priority-execution-checklist-v1.md`
## 7. 一句话收口
当前 `design/01-05` 的真实主线,不是“继续证明 Rust Web 值不值得做”,也不是“继续证明 `leptos-tiptap` 能不能用”,而是:
> **先把页面域树域收口到 Rust 主导的单一真源,再推进 tree realtime 和树域产品执行面。**
> **先把页面域树域、上传下载和 AI 编辑收口到本地优先工作区,由 Rust kernel 持有唯一语义,再把 Convex 降级为账号、分享、同步和协作控制面。**