feat: 接入 mnote web tree shell 与主页链路整理

- 增加 mnote-web tree/command 支持与前端 MnoteWebTreeShell 集成
- 调整 sidebar、documents、runtime config 与 dev/prod server 配套逻辑
- 补充 homepage/tree shell smoke 脚本并更新 harness 进度文件
This commit is contained in:
lix-2026
2026-04-17 23:36:24 +08:00
parent cfc3af8984
commit d8de820d93
40 changed files with 4668 additions and 4143 deletions
+19 -3
View File
@@ -51,7 +51,8 @@ export type SidebarDatasetListQueryResult = {
active_workspace_id: string;
workspaces: WorkspaceSummary[];
documents: DocumentRecord[];
kernel_sidebar_projection: KernelSidebarProjection;
kernel_sidebar_projection?: KernelSidebarProjection;
kernelSidebarProjection?: KernelSidebarProjection;
trashed_documents: SidebarInitialData["trashedDocuments"];
media_assets: MediaAsset[];
trashed_media_assets: MediaAsset[];
@@ -241,14 +242,29 @@ export function buildSidebarDatasetListQueryResult(
export function mapSidebarDatasetListQueryResultToInitialData(
result: SidebarDatasetListQueryResult,
): SidebarInitialData {
// 说明:兼容旧的 Convex `sidebar.dataset.list` 返回体。
// 若上游暂未附带 `kernel_sidebar_projection`,这里按 documents 现算一份,
// 避免 SSR 因契约未完全切齐而直接崩掉。
const candidateProjection =
result.kernel_sidebar_projection ??
result.kernelSidebarProjection ??
null;
const kernelSidebarProjection =
candidateProjection &&
typeof candidateProjection === "object" &&
Array.isArray(candidateProjection.items) &&
Array.isArray(candidateProjection.edges)
? candidateProjection
: buildKernelSidebarProjection(result.documents ?? []);
return {
activeWorkspaceId: result.active_workspace_id,
workspaces: [...result.workspaces],
documents: [...result.documents],
kernelSidebarProjection: result.kernel_sidebar_projection,
kernelSidebarProjection,
kernelSidebarTree: buildSidebarTreeFromKernelProjection({
records: result.documents,
projection: result.kernel_sidebar_projection,
projection: kernelSidebarProjection,
}),
trashedDocuments: [...result.trashed_documents],
trashedMediaAssets: [...result.trashed_media_assets],