diff --git a/CHANGELOG.md b/CHANGELOG.md index 84e81e7e..cf300220 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ ### Added +- #560:新增文档与结构双视图的协作区预览;结构写回保留空行与文件末尾换行,缺少结构章节时插入新章节。持久化验收仍待接入,不作为正式验收入口发布。 + - #559:新增协作区人工验收契约,验收通过必须完整覆盖计划中的全部验收项;限制标识符、时间戳和产物路径,拒绝遗漏或越界的裁决。 - #469:可选 Laya 接力停止建议。仅在 `ROLEWEAVE_LAYA_ENABLED` 开启、已完成步骤得到正向建议且仍有未执行步骤时暂停;桌面端由 owner 显式选择“停止剩余步骤”或“继续接力”。30 秒超时、SSE 断连、无效或失败建议均继续原 mention order;Laya 只接收 `status`、`errorCode`、`hasOutput`,不接收输入、输出或 handoff 文本。已接受的消息与 spawn 清单保持不可变。Refs #422。 diff --git a/apps/desktop/packaging/runtime-layout.cjs b/apps/desktop/packaging/runtime-layout.cjs index 2c4f9e82..a9fa04a2 100644 --- a/apps/desktop/packaging/runtime-layout.cjs +++ b/apps/desktop/packaging/runtime-layout.cjs @@ -191,6 +191,7 @@ const SHARED_RUNTIME_FILES = [ "dist/semantic-runtime.js", "dist/services.js", "dist/sessions.js", + "dist/space-doc.js", "dist/task-board.js", "dist/turn-progress.js", "dist/turns.js", diff --git a/apps/desktop/renderer/src/App.tsx b/apps/desktop/renderer/src/App.tsx index 230dadca..74eee761 100644 --- a/apps/desktop/renderer/src/App.tsx +++ b/apps/desktop/renderer/src/App.tsx @@ -34,7 +34,7 @@ import type { WorkspaceCreateResponse, WorkspaceInfoResponse, } from "@roleweave/shared"; -import { ChevronsRight, FolderKanban, FolderOpen, Inbox, MessagesSquare, MoreHorizontal, Network, PanelLeft, PencilLine, Plus, Settings, Undo2, X } from "lucide-react"; +import { Boxes, ChevronsRight, FolderKanban, FolderOpen, Inbox, MessagesSquare, MoreHorizontal, Network, PanelLeft, PencilLine, Plus, Settings, Undo2, X } from "lucide-react"; import { useThemeMode, useThemeProfile } from "./theme-toggle"; import { useTheme, ThemeProvider } from "./theme-context"; import { themeToAntdSeed } from "./theme-resolution"; @@ -84,6 +84,7 @@ import { decodeEscapedUnicode } from "./display-text"; import { SettingsModule, type ConfigurationCategory } from "./settings/SettingsModule"; import { GoalsModule } from "./goals/GoalsModule"; import { ProjectManagementModule } from "./projects/ProjectManagementModule"; +import { SpaceHost } from "./space/SpaceHost.js"; import { ProjectSwitcher } from "./project/ProjectSwitcher"; import { ProjectWorkspaceDialog } from "./project/ProjectWorkspaceDialog"; import { assignDefaultAvatars, avatarSrcFor, readAvatarPreferences, type AvatarValue } from "./PositionAvatar"; @@ -135,7 +136,7 @@ function AppInner({ }) { const themeContext = useTheme(); const [activeModule, setActiveModuleRaw] = useState< - "conversation" | "profile" | "org" | "groups" | "reports" | "approvals" | "docs" | "goals" | "projects" | "settings" | "progress" + "conversation" | "profile" | "org" | "groups" | "reports" | "approvals" | "docs" | "goals" | "projects" | "settings" | "progress" | "space" >("conversation"); const [settingsInitialCategory, setSettingsInitialCategory] = useState(); const [contactsOpen, setContactsOpen] = useState(false); @@ -1971,6 +1972,7 @@ function AppInner({ { id: "collaboration", label: t("rail.collaboration"), icon: