Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@

### 新增

- Windows 安装包写入预构建 openXYOS 运行包(`$INSTDIR\openxyos` + `openxyos-runtime.zip`),首次启动再落到 `%LOCALAPPDATA%\FreeOS\openxyos` / `~/.freeos/openxyos`,自动拉起 `http://127.0.0.1:3780`,组织页不必再点「启动边车」。
- 项目创建用系统文件夹选择器(Wails 原生对话框,任意盘符);项目/任务/对话区默认展示实时对话列表,并提供建群/群聊入口。
- Organization OS 首页双循环:FreeOS 数据面与 openXYOS 控制面的实时状态、一键装配员工 / 打包回流 / 运行 org loop,以及边车离线时的启动恢复。
- FreeOS 官网源码:`website/`(Vite + React 静态站,正式域名 https://freeos.cnxy.tech)。视觉与章节节奏对齐 XYAI Labs(天蓝→亮光、毛玻璃、01/02/…、底座 / 系统 / 生态),文案仍是 FreeOS 产品自己的话;圆形标志 + XYAI 机器人六姿态,无 Octop 红或章鱼形象。构建产物可整包上传到 `/www/wwwroot/freeos.cnxy.tech`。

### 变更

- 侧栏「组织 OS」更名为「组织」(英文 Organization)。


- 桌面端(`OCTOP_DESKTOP` / `FREEOS_DESKTOP`)首次打开不再经过验证启动密码、选择数据库、创建管理员三步:自动绑定本地 SQLite 并使用已有 guest / local-session。首屏只保留配置 LLM API Key,可「跳过,进入工作台」,之后仍可在设置里配模型。自托管服务端向导不变。
- 侧栏「设置」分组改名为「能力」/ Capabilities。原「控制」与「管理」子模块并入顶层「系统设置」/ System Settings(页内分节;工作台 / 远程桌面仍走全屏路由)。旧 `/admin/*`、`/acp`、`/agent-config` 地址会重定向。
- 用户可见吉祥物从章鱼换成 XYAI 白色机器人姿势包(欢迎 / 空态 / 探头 / 思考 / 打字 / 任务);桌面启动页与 openXYOS 首页使用同一角色,不再加载章鱼 WebM。
Expand Down
10 changes: 10 additions & 0 deletions dashboard/src/layouts/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
MessageSquarePlus,
FolderPlus,
ListPlus,
Users,
} from "lucide-react";
import { useLayoutMode } from "../context/LayoutModeContext";
import { useUserRole } from "../hooks/useUserRole";
Expand Down Expand Up @@ -586,6 +587,15 @@ export default function Sidebar({
<FolderPlus size={14} strokeWidth={1.8} />
{!isRailCollapsed && <span>{t("nav.newProject")}</span>}
</button>
<button
type="button"
className={styles.composeBtn}
onClick={() => handleNavigate("/projects?group=1")}
title={t("nav.newGroup")}
>
<Users size={14} strokeWidth={1.8} />
{!isRailCollapsed && <span>{t("nav.newGroup")}</span>}
</button>
</div>
);

Expand Down
7 changes: 7 additions & 0 deletions dashboard/src/layouts/sidebarNav.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import {
isGroupedNavKey,
} from "./sidebarNav";
import type { OctopUser } from "../api/modules/auth";
import en from "../locales/en.json";
import zh from "../locales/zh.json";

const adminUser = {
id: 1,
Expand Down Expand Up @@ -55,4 +57,9 @@ describe("sidebarNav", () => {
expect(keys).toContain("chat");
expect(keys).toContain("experts");
});

it("labels organization without the OS suffix", () => {
expect(zh.nav.organization).toBe("组织");
expect(en.nav.organization).toBe("Organization");
});
});
26 changes: 20 additions & 6 deletions dashboard/src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
"expandPanel": "Expand panel"
},
"organization": {
"title": "Organization OS",
"title": "Organization",
"subtitle": "A dual loop: FreeOS does the work, openXYOS governs the org — they grow each other.",
"heroTitle": "Organization OS",
"heroTitle": "Organization",
"heroStory": "FreeOS does the work. openXYOS owns organization and governance. They grow each other.",
"toggleLabel": "Enable organization module",
"on": "Enabled",
Expand Down Expand Up @@ -52,7 +52,7 @@
"timelineSkills": "Skills",
"timelineRemote": "Pushed to control plane",
"timelineGovernance": "High-risk tool blocked by governance",
"emptyTitle": "First look at Organization OS",
"emptyTitle": "First look at Organization",
"emptyBody": "FreeOS on the left owns employees, skills, MCP, and tasks. openXYOS on the right owns blueprints, modules, and approvals. Start the sidecar, or run the loop once to see a real cycle.",
"startSidecarTitle": "openXYOS sidecar is offline",
"startSidecarBody": "Live approvals and remote apply need the sidecar. Start it here; if no launcher is bundled, use the command beside the button.",
Expand Down Expand Up @@ -101,13 +101,25 @@
"tabProjects": "Projects",
"tabTasks": "Tasks",
"tabConversations": "Conversations",
"conversationsEmpty": "No project conversations yet. Start one from a project or chat.",
"conversationsEmpty": "No conversations yet. Start one or create a group above.",
"empty": "No projects yet. Create one to group conversations and tasks.",
"name": "Project name",
"nameRequired": "Enter a project name",
"workDir": "Work folder",
"workDirHint": "Optional local folder for this project",
"workDirHint": "Pick any folder on any drive with the system dialog",
"browseWorkDir": "Browse…",
"pickFolderFailed": "Could not open the folder picker",
"noWorkDir": "No work folder",
"createGroup": "New group",
"groupTitle": "Group name",
"groupTitlePlaceholder": "Optional, e.g. Weekly sync",
"groupMembers": "Choose experts",
"groupMembersRequired": "Select at least two experts",
"groupCreated": "Group chat created",
"groupCreateFailed": "Could not create the group chat",
"kindDirect": "Direct",
"kindGroup": "Group",
"liveEmpty": "No conversations yet. New chats and groups show up here.",
"counts": "{{conversations}} conversations · {{tasks}} tasks",
"created": "Project created",
"createFailed": "Could not create the project",
Expand Down Expand Up @@ -283,10 +295,12 @@
"newConversation": "New conversation",
"newTask": "New task",
"newProject": "New project",
"newGroup": "New group",
"groupChat": "Group chat",
"common": "Common",
"control": "Control",
"experts": "Experts",
"organization": "Organization OS",
"organization": "Organization",
"tasks": "Tasks",
"connectors": "Connectors",
"acp": "ACP",
Expand Down
26 changes: 20 additions & 6 deletions dashboard/src/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
"expandPanel": "展开面板"
},
"organization": {
"title": "组织 OS",
"title": "组织",
"subtitle": "FreeOS 数据面与 openXYOS 控制面的双循环:干活与治理互相生长。",
"heroTitle": "组织 OS",
"heroTitle": "组织",
"heroStory": "FreeOS 负责干活,openXYOS 负责组织与治理,两者互相生长。",
"toggleLabel": "启用组织模块",
"on": "已启用",
Expand Down Expand Up @@ -52,7 +52,7 @@
"timelineSkills": "技能数",
"timelineRemote": "已推送到控制面",
"timelineGovernance": "高风险工具被治理拦截",
"emptyTitle": "第一次打开组织 OS",
"emptyTitle": "第一次打开组织",
"emptyBody": "左侧 FreeOS 负责员工、技能、MCP 与任务;右侧 openXYOS 负责蓝图、模块与审批。先启动边车,或直接运行组织循环看一次真实闭环。",
"startSidecarTitle": "openXYOS 边车未运行",
"startSidecarBody": "控制面离线时无法做 live 审批与远程回流。可一键启动本机边车;若启动器不在当前环境,请按旁边的命令手动启动。",
Expand Down Expand Up @@ -101,13 +101,25 @@
"tabProjects": "项目",
"tabTasks": "任务",
"tabConversations": "对话",
"conversationsEmpty": "还没有项目对话。可以从项目或对话页新建。",
"conversationsEmpty": "还没有对话。在上方新建对话或建群。",
"empty": "还没有项目。新建一个来组织对话和任务。",
"name": "项目名称",
"nameRequired": "请输入项目名称",
"workDir": "工作目录",
"workDirHint": "可选,为本项目指定本地文件夹",
"workDirHint": "通过系统文件夹选择器指定任意盘符下的目录",
"browseWorkDir": "浏览…",
"pickFolderFailed": "无法打开文件夹选择器",
"noWorkDir": "未指定工作目录",
"createGroup": "建群",
"groupTitle": "群聊名称",
"groupTitlePlaceholder": "可选,例如「产品周会」",
"groupMembers": "选择专家",
"groupMembersRequired": "请至少选择两位专家",
"groupCreated": "群聊已创建",
"groupCreateFailed": "无法创建群聊",
"kindDirect": "单聊",
"kindGroup": "群聊",
"liveEmpty": "还没有对话。新建对话或建群后会出现在这里。",
"counts": "{{conversations}} 个对话 · {{tasks}} 个任务",
"created": "已创建项目",
"createFailed": "无法创建项目",
Expand Down Expand Up @@ -283,10 +295,12 @@
"newConversation": "新建对话",
"newTask": "新建任务",
"newProject": "新建项目",
"newGroup": "建群",
"groupChat": "群聊",
"common": "常用",
"control": "控制",
"experts": "专家",
"organization": "组织 OS",
"organization": "组织",
"tasks": "任务",
"connectors": "连接器",
"acp": "ACP",
Expand Down
Loading
Loading