收口本地工作区清理与资源投影

清理历史 Electron、Graphify、沙箱和截图等仓库跟踪残留,补充 CodeGraph 与 Convex active deploy source 协作说明。

新增 tree-first 下一阶段设计稿和 2026-05-20 清理总结,记录本地工作区、路径身份和 Zed/Lapce/VSCode 参考收口方向。

扩展 Rust Web 本地文件夹、DocumentBuffer、mindmap 资源、tree runtime 和页面聚合链路,并补充 task455 local-folder mindmap clean smoke。

验证:git diff --check 通过;pnpm store status --store-dir .pnpm-store 通过;npm ls --depth=0 --json 通过;find -L node_modules 未发现断链。cargo test -p mnote-web 当前 418 passed / 35 failed。
This commit is contained in:
lix-2026
2026-05-20 10:43:38 +08:00
parent 90818cdf75
commit b4c8bcb647
73 changed files with 8073 additions and 8240 deletions
@@ -207,15 +207,15 @@ async function main() {
});
const restoredAggregate = await fetchAggregate(page, root, documentId);
const restoredBody = JSON.stringify(restoredAggregate.body && restoredAggregate.body.content || []);
assert(restoredBody.includes("README.assets/task443-image.png"), restoredBody);
assert(restoredBody.includes("README.assets/task443-spec.pdf"), restoredBody);
assert(restoredBody.includes("README/task443-image.png"), restoredBody);
assert(restoredBody.includes("README/task443-spec.pdf"), restoredBody);
const markdown = fs.readFileSync(path.join(root, relativePath), "utf8");
assert(markdown.includes("![task443 图片](README.assets/task443-image.png)"), markdown);
assert(markdown.includes("[task443-spec.pdf](README.assets/task443-spec.pdf)"), markdown);
assert(markdown.includes("![task443 图片](README/task443-image.png)"), markdown);
assert(markdown.includes("[task443-spec.pdf](README/task443-spec.pdf)"), markdown);
assert(!markdown.includes("/api/media/"), markdown);
assert(!markdown.includes("assetId="), markdown);
assert(fs.existsSync(path.join(root, "README.assets", "task443-image.png")));
assert(fs.existsSync(path.join(root, "README.assets", "task443-spec.pdf")));
assert(fs.existsSync(path.join(root, "README", "task443-image.png")));
assert(fs.existsSync(path.join(root, "README", "task443-spec.pdf")));
await page.waitForFunction(() => {
const tree = document.getElementById("sidebar-file-tree-root");
const text = tree ? tree.textContent || "" : "";