diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 03e4ef5f..558f2d1f 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -16,7 +16,7 @@ name: Docker Publish # # 拉取示例: # docker pull ghcr.io/xyaistudio/freeos:latest -# docker pull ghcr.io/xyaistudio/freeos:0.0.3 +# docker pull ghcr.io/xyaistudio/freeos:0.0.4 on: push: tags: diff --git a/.github/workflows/octop-desktop.yml b/.github/workflows/octop-desktop.yml index 3c0e7a04..b9688796 100644 --- a/.github/workflows/octop-desktop.yml +++ b/.github/workflows/octop-desktop.yml @@ -188,7 +188,7 @@ jobs: - name: Assemble green zip env: GREEN_HOST_PLAT: ${{ matrix.plat }} - # Transitional desktop flavor (0.0.3 iframe bridge). Default packaging + # Transitional desktop flavor (0.0.3 iframe bridge, still 0.0.4). Default packaging # is zero-Node; do not treat this flag as the permanent product. SKIP_ORG_SIDECAR: "0" SHIP_OPENXYOS_RUNTIME: "1" diff --git a/CHANGELOG.md b/CHANGELOG.md index f5389196..beb79e7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,19 @@ ## [Unreleased] +## [0.0.4] - 2026-09-20 + +面向桌面用户的版本:自 [0.0.3] 起纳入产品契约与迁移图(P0)、双向资产总线 / 可商业化导出 / 双身份 UX / 本机模型与知识库(P1)、Node 过渡卫生(P2),以及宿主原生组织 Wave 1 / Wave 2。桌面 CI 仍显式 `SHIP_OPENXYOS_RUNTIME=1`(延续 0.0.3 iframe 过渡桥,不是永久产品);`uv run` / Docker / 默认绿色包为零 Node。规范来源是 `pyproject.toml`;发布标签 `v0.0.4`。 + +### 新增 + +- Wave 2(宿主原生组织深度):公告已读名单、任务附件(`{FREEOS_HOME}/org/task-files`)、架构图汇报线/部门类型/JSON 导入、工作台与总览内联批准宿主治理暂停、目录启用展示 `delivery`/`host_path`。不扩展永久 Node,不删除 `ManagedOrganizationRuntime`。双身份工作室 vs 组织房间不变。迁移图计数不变(9 native / 11 slice / 12 iframe)。 +- Wave 1(宿主原生组织):人才市场落到宿主 `org_chart.sqlite`(`talent_pool`)与 `/api/org-module/talent*`;资产总线 apply 无 Node 也写入名册/人才;治理待处理暂停出现在组织首页与工作台总览;`/organization` 即使桌面集成也不再被 iframe 吞掉(原 App 仅作过渡链接);目录叠加 `delivery`/`host_path`。双身份边界与默认零 Node 不变。迁移图:人才市场 `managed_node_iframe` → `org_ui_slice`(13→12 iframe,10→11 slice)。 +- 双身份边界(P1.3):工作室本机登录与组织房间登录分成两扇门。组织管理员不再被抬成宿主 `Role.ADMIN`;工作室访客不能拿宿主通行证写组织房间业务。界面与文档用「工作室 / 另一间房间 / 各自留白」说明两条路径。 +- P1.2:`freeos org export-standalone` 默认 `--mode full` 写出可商业化 openXYOS **源码包**(`openxyos/` Apache-2.0 完整 App.tsx 树 + `slice/` MIT 宿主桥 + `modules.json` 对照清单)。`--mode slice` 保留原先 org-ui SPA + `FREEOS_UPSTREAM` 反代。工作室智能体对话不导出;组织沟通协作在完整树。说明见 `docs/org-export.md`。 +- Organization P1.1(双向资产总线):`freeos org loop run` / `POST /api/org-module/loop/run` / `assets apply` 在托管组织运行时、`OPENXYOS_BASE_URL` 或 `{FREEOS_HOME}/org-os/runtime.json` 可用时,把资产包 ingest 进当前**组织工作区租户**(`remote_applied=true`),不再只写 `openxyos-mirror/`。无运行时地址时仍为镜像-only,且不拉起 Node。回流后同事仍登记为 `org-` 聊天智能体。FreeOS 工作室账号与组织房间身份分开。说明见 `docs/asset-loop.md`。 +- P0.2:openXYOS → FreeOS 能力迁移图(`docs/org-capability-migration-map.md` / `.zh-CN.md` + `docs/org-capability-migration-map.json`)。按域记录原生宿主 / org-ui 切片 / 托管 Node iframe / 可选边车 / 仅导出;波次为资产总线 → 导出 → 双身份 UX → 本地模型/知识库 → 拆除 Node。不改运行时。 + ### 变更 - P1.4:本机模型与本机知识库作为默认路径。设置向导默认先选 Ollama(本机 OpenAI 兼容地址不必填云密钥);模型页默认打开「本地」标签;知识库空状态先引导本机文件夹,向量默认本机 ONNX。云厂商与 ima 仍是可选项。说明见 `docs/user-guide.md`、`docs/configuration.md`。 @@ -22,14 +35,24 @@ - 冻结 FreeOS 产品契约(P0.1):[docs/product-contract.md](docs/product-contract.md) / [docs/product-contract.zh-CN.md](docs/product-contract.zh-CN.md)。核心愿景采用「创立初心」定稿(中文原文;英文 README 为忠实对应;使用方式段为工作室比喻:本机安顿起步,组织像另一间可独立布置的房间)。产品口号:**FreeOS:自由的 AI 工作室,想象空间由你来打开** / *Your FreeOS, free for you.* 托管 Node / 内嵌组织页仅为过渡桥,终态是把 openXYOS 迁入宿主并导出可商业化源码。取代先前「组织身份为唯一权威」与「永久 / 默认捆绑 Node 运行时」表述。冲突文档改为 Historical vs Current,不删工程历史。 - 官网 `website/` 文案对齐产品契约:中文口号作 Hero / 标题,英文 *Your FreeOS, free for you.* 作 EN 标题与 meta;工作室比喻贯穿介绍与 FAQ;下载入口只指向 GitHub Releases 列表(不写死版本号、不直链安装包);不再承诺永久零 Node,托管运行时写成迁向宿主原生界面的过渡。 +## [0.0.3] - 2026-09-20 + +### 新增 + +- 交付完整 Organization 集成:FreeOS 统一身份与权限桥接、宿主入口及 openXYOS 管理运行时随桌面安装包分发,离线环境也可使用组织工作台。 +- 群聊中对专家的明确 `@` 提及由后端确定性路由到实际专家调用;讨论和头脑风暴场景不再让本地小模型自行决定工具调用。 + +### 修复 + +- 统一源代码、CLI 与桌面安装包的 `0.0.3` 版本标识;Windows 打包工作流校验并携带 Organization sidecar。 +- OpenXYOS 的本机登录、注册、测试账号和模型配置不再依赖或复用 FreeOS 账户令牌。首次登录会检查本机模型配置:未配置时进入设置并说明智能体、群聊和行业知识加工需要用户自行配置模型;已配置时进入工作台。 + +### 补记(发版时已在主干、原先写在 Unreleased) + +Phase 2–5 宿主组织切片与边车时代修复已随 0.0.3 桌面包发出,此处补记以免 CHANGELOG 丢失细节。 + ### 新增 -- Wave 2(宿主原生组织深度):公告已读名单、任务附件(`{FREEOS_HOME}/org/task-files`)、架构图汇报线/部门类型/JSON 导入、工作台与总览内联批准宿主治理暂停、目录启用展示 `delivery`/`host_path`。不扩展永久 Node,不删除 `ManagedOrganizationRuntime`。双身份工作室 vs 组织房间不变。迁移图计数不变(9 native / 11 slice / 12 iframe)。 -- Wave 1(宿主原生组织):人才市场落到宿主 `org_chart.sqlite`(`talent_pool`)与 `/api/org-module/talent*`;资产总线 apply 无 Node 也写入名册/人才;治理待处理暂停出现在组织首页与工作台总览;`/organization` 即使桌面集成也不再被 iframe 吞掉(原 App 仅作过渡链接);目录叠加 `delivery`/`host_path`。双身份边界与默认零 Node 不变。迁移图:人才市场 `managed_node_iframe` → `org_ui_slice`(13→12 iframe,10→11 slice)。 -- 双身份边界(P1.3):工作室本机登录与组织房间登录分成两扇门。组织管理员不再被抬成宿主 `Role.ADMIN`;工作室访客不能拿宿主通行证写组织房间业务。界面与文档用「工作室 / 另一间房间 / 各自留白」说明两条路径。 -- P1.2:`freeos org export-standalone` 默认 `--mode full` 写出可商业化 openXYOS **源码包**(`openxyos/` Apache-2.0 完整 App.tsx 树 + `slice/` MIT 宿主桥 + `modules.json` 对照清单)。`--mode slice` 保留原先 org-ui SPA + `FREEOS_UPSTREAM` 反代。工作室智能体对话不导出;组织沟通协作在完整树。说明见 `docs/org-export.md`。 -- Organization P1.1(双向资产总线):`freeos org loop run` / `POST /api/org-module/loop/run` / `assets apply` 在托管组织运行时、`OPENXYOS_BASE_URL` 或 `{FREEOS_HOME}/org-os/runtime.json` 可用时,把资产包 ingest 进当前**组织工作区租户**(`remote_applied=true`),不再只写 `openxyos-mirror/`。无运行时地址时仍为镜像-only,且不拉起 Node。回流后同事仍登记为 `org-` 聊天智能体。FreeOS 工作室账号与组织房间身份分开。说明见 `docs/asset-loop.md`。 -- P0.2:openXYOS → FreeOS 能力迁移图(`docs/org-capability-migration-map.md` / `.zh-CN.md` + `docs/org-capability-migration-map.json`)。按域记录原生宿主 / org-ui 切片 / 托管 Node iframe / 可选边车 / 仅导出;波次为资产总线 → 导出 → 双身份 UX → 本地模型/知识库 → 拆除 Node。不改运行时。 - Organization Phase 5(默认安装器瘦身):Windows/macOS/Linux 默认包装与 Docker Compose 保持 **单进程 FreeOS + 宿主内 Organization**,不捆绑、不解压、不自动拉起 openXYOS Node。`FREEOS_ORG_SIDECAR=1` 与 `SHIP_OPENXYOS_RUNTIME=1` 仍是可选高级路径。文档对齐 #55 / ADR 001 / ADR 003 / `docs/org-export.md`。`modules/openxyos` 保留给导出与开发,不是默认运行时。 - Organization Phase 4(独立站导出起步):`freeos org export-standalone --out ` 从 `dashboard/src/org-ui` 生成可运行的 Vite 包(OpenApp 风格路由、本地 JWT IdentityBridge `openxyos.standalone.jwt`、登录页、Docker / docker-compose、`server/proxy.mjs` 把 `/api` 反代到 FreeOS `FREEOS_UPSTREAM`)。Chat 不导出。默认安装器零 Node(Phase 5)。说明见 `docs/org-export.md`。 - Organization Phase 3(工作台总览切片,Open-12 收口):宿主内薄 Workspace / OpenDashboard。Dashboard `/organization/workspace` 使用共享 `dashboard/src/org-ui` 的 `WorkspacePage`。数据复用已有 `GET /api/org-module/overview`,链到已迁的公告 / 架构 / 员工 / 技能 / 智能体 / 任务 / 知识 / 反思 / 治理 / 设置。**不是**第二套控制面(assemble / pack / loop 仍在 `/organization`)。**Chat 永久不迁。** `freeos org export-standalone` 同时列出 Workspace。Phase 3 Open-12 宿主 UI 完成,下一步 Phase 4 导出。 @@ -45,7 +68,7 @@ ### 修复 -> 下面若干「启动即拉起本机 openXYOS」条目记录的是 0.0.1 边车时代问题。默认路径已被 [0.0.2] 与本文件 Unreleased 的 Phase 5 取代:安装与首屏不再捆绑或自动拉起 Node。 +> 下面若干「启动即拉起本机 openXYOS」条目记录的是 0.0.1 边车时代问题。默认路径已被 [0.0.2] 与 [0.0.3] 的 Phase 5 取代:安装与首屏不再捆绑或自动拉起 Node。 - Windows 安装预配不再把 Node 工作目录选到残留的嵌套 `openxyos\\openxyos`:顶层已有 `backend-dist/server.js` 与 `dist/index.html` 时必须用 live 根。嵌套 cwd 会让 `node backend-dist/server.js` 立刻退出且 stdout/stderr 为空,安装空等 90s 后以退出码 12 失败。`start-sidecar.ps1` / 预配 / 桌面 Go / Python 启动路径统一按此选择 cwd;每次启动截断 `start.log`;Shell.Application 若未刷新日志则改走 explorer / Start-Process,Node fail-fast 不再伪装成 livez 超时。 - Windows 安装详情不再把 openXYOS 预配的 UTF-8 Node/PowerShell 控制台(`[Error] POST /api/auth`、`[seed]`、中文 Server/WebSocket 状态)按系统 ANSI/GBK 打成乱码。NSIS 只用 `nsExec::Exec` 等退出码,详情页只显示本地化步骤结果;完整日志写入 `%LOCALAPPDATA%\\FreeOS\\openxyos\\provision.log` / `start.log`(UTF-8)。解压前停止并等待旧的 FreeOS openXYOS Node 退出;livez 通过即成功,不把启动期 auth 日志当失败。 @@ -136,21 +159,9 @@ - First launch on desktop / loopback opens a local guest session — no login wall. Register or sign in only when saving, exporting, or publishing to an account. - Login, splash, favicons, and desktop icons use the circular XYAI mark. Product version remains 0.0.1. -## [0.0.3] - 2026-09-20 - -### 新增 - -- 交付完整 Organization 集成:FreeOS 统一身份与权限桥接、宿主入口及 openXYOS 管理运行时随桌面安装包分发,离线环境也可使用组织工作台。 -- 群聊中对专家的明确 `@` 提及由后端确定性路由到实际专家调用;讨论和头脑风暴场景不再让本地小模型自行决定工具调用。 - -### 修复 - -- 统一源代码、CLI 与桌面安装包的 `0.0.3` 版本标识;Windows 打包工作流校验并携带 Organization sidecar。 -- OpenXYOS 的本机登录、注册、测试账号和模型配置不再依赖或复用 FreeOS 账户令牌。首次登录会检查本机模型配置:未配置时进入设置并说明智能体、群聊和行业知识加工需要用户自行配置模型;已配置时进入工作台。 - ## [0.0.2] - 2026-09-18 -当前 FreeOS 产品版本,与 0.0.1 边车时代 Windows 安装包区分。`1.0.0` 对本阶段过早;后续按 [semver](https://semver.org/spec/v2.0.0.html) 随产品成熟度递增。规范来源是 `pyproject.toml`(同步 `octop.__version__`、桌面 / NSIS / FnOS 回退值,以及 CI 产物名)。发布工作流需要标签时使用 `v0.0.2`;不重写已推送的历史 tag。 +当时的 FreeOS 产品版本,与 0.0.1 边车时代 Windows 安装包区分。后续版本见 [0.0.4]。`1.0.0` 对本阶段过早;后续按 [semver](https://semver.org/spec/v2.0.0.html) 随产品成熟度递增。规范来源是 `pyproject.toml`(同步 `octop.__version__`、桌面 / NSIS / FnOS 回退值,以及 CI 产物名)。发布工作流需要标签时使用 `v0.0.2`;不重写已推送的历史 tag。 命令核对:`uv run freeos --version` 与 `uv run python -c "import octop; print(octop.__version__)"` 均应输出 `0.0.2`。 diff --git a/README.md b/README.md index e4167149..3c83789a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

Python 3.12+ - Version + Version License: MIT + Apache-2.0 Upstream: Octop Organization module: openXYOS @@ -134,7 +134,7 @@ Operator detail: [docs/asset-loop.md](docs/asset-loop.md). `FreeOS-desktop-windows-arm64-.exe`(ARM 电脑)。 2. 双击安装包。安装程序会放到「程序文件」并创建开始菜单和桌面快捷方式。 3. 打开 **FreeOS**。第一次启动会解压内置运行环境(可能要一两分钟),然后直接进入可用会话,无需先登录。 -4. 保存、导出或发布到账号时再在本机完成注册或登录(更广的服务或授权不挡起步)。侧栏 **Organization** 当前默认走宿主内组织能力;桌面 0.0.3 托管 Node + iframe、以及可选的完整 openXYOS Node 栈(`127.0.0.1:3780`,导出/同步/高级部署)都是 **过渡桥**,终态是把 openXYOS 迁入宿主。组织能力像工作室里另一间可独立布置的房间,与日常对话、助手协作同在一个 FreeOS,两种进入方式不捏成一种。 +4. 保存、导出或发布到账号时再在本机完成注册或登录(更广的服务或授权不挡起步)。侧栏 **Organization** 当前默认走宿主内组织能力;桌面 0.0.4 托管 Node + iframe(延续 0.0.3 过渡桥)、以及可选的完整 openXYOS Node 栈(`127.0.0.1:3780`,导出/同步/高级部署)都是 **过渡桥**,终态是把 openXYOS 迁入宿主。组织能力像工作室里另一间可独立布置的房间,与日常对话、助手协作同在一个 FreeOS,两种进入方式不捏成一种。 数据目录默认是 `%USERPROFILE%\.freeos`(可用环境变量 `FREEOS_HOME` 改)。旧版 Octop 的 `~/.octop` 仍会被识别。卸载安装包会清空安装目录(默认为 `Program Files\FreeOS`)并删除快捷方式,但**不会**删除该用户数据目录;详见 [desktop/README.md](desktop/README.md#windows-uninstall)。 diff --git a/README_CN.md b/README_CN.md index cee2d2d8..6e385867 100644 --- a/README_CN.md +++ b/README_CN.md @@ -11,7 +11,7 @@

Python 3.12+ License: MIT - Version + Version 上游:Octop 组织模块:openXYOS PyPI diff --git a/desktop/README.md b/desktop/README.md index 40781c1f..78a36f21 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -1,6 +1,6 @@ # FreeOS desktop (Wails v3 + green portable) -> Product intent: [docs/product-contract.md](../docs/product-contract.md). Managed Node + iframe (desktop 0.0.3) and Phase-5 default zero-Node are **transition bridges**. End state: native openXYOS-in-host, plus exportable source. Settle in locally first; organization capabilities are another room in the same studio. +> Product intent: [docs/product-contract.md](../docs/product-contract.md). Managed Node + iframe (desktop 0.0.3–0.0.4) and Phase-5 default zero-Node are **transition bridges**. End state: native openXYOS-in-host, plus exportable source. Settle in locally first; organization capabilities are another room in the same studio. Windows end-user product: **download the NSIS `.exe` → install → open FreeOS** (Octop host shell + in-host Organization). The full openXYOS Node stack is @@ -122,7 +122,7 @@ opt into `SHIP_OPENXYOS_RUNTIME=1`): make -f desktop/portable/Makefile green ``` -The managed Node sidecar is included in the 0.0.3 desktop release so the +The managed Node sidecar is included in the 0.0.4 desktop release so the integrated Organization workspace works in an offline installation. Set `SKIP_ORG_SIDECAR=1` only for an explicitly slim, host-only development build. diff --git a/desktop/src/build/config.yml b/desktop/src/build/config.yml index 15e6a986..d8d2cc63 100644 --- a/desktop/src/build/config.yml +++ b/desktop/src/build/config.yml @@ -11,7 +11,7 @@ info: description: "FreeOS desktop — Python host with in-host organization" copyright: "(c) 2026, XYAI Studio" comments: "Wails v3 + green portable. Node sidecar optional via FREEOS_ORG_SIDECAR=1." - version: "0.0.3" + version: "0.0.4" dev_mode: root_path: . diff --git a/desktop/src/build/windows/info.json b/desktop/src/build/windows/info.json index dbb998d9..9446f255 100644 --- a/desktop/src/build/windows/info.json +++ b/desktop/src/build/windows/info.json @@ -1,10 +1,10 @@ { "fixed": { - "file_version": "0.0.3" + "file_version": "0.0.4" }, "info": { "0000": { - "ProductVersion": "0.0.3", + "ProductVersion": "0.0.4", "CompanyName": "XYAI Studio", "FileDescription": "FreeOS desktop", "LegalCopyright": "Copyright © 2026 XYAI Studio", diff --git a/docs/node-runtime.md b/docs/node-runtime.md index 9ffc63b5..78aaa7c2 100644 --- a/docs/node-runtime.md +++ b/docs/node-runtime.md @@ -29,7 +29,7 @@ logs a warning and returns when no bundled/source runtime is present, so The GitHub workflow **FreeOS Desktop Package** (`.github/workflows/octop-desktop.yml`) sets `SHIP_OPENXYOS_RUNTIME=1` and `SKIP_ORG_SIDECAR=0` so existing Windows -users keep the 0.0.3 iframe bridge. That flag is **labeled transitional** in +users keep the 0.0.3 iframe bridge (still packaged by 0.0.4 desktop CI). That flag is **labeled transitional** in the workflow, NSIS strings, and this file. Do not copy it into Docker, `uv run`, or the default installer. diff --git a/docs/node-runtime.zh-CN.md b/docs/node-runtime.zh-CN.md index 83efb3ae..73647c4a 100644 --- a/docs/node-runtime.zh-CN.md +++ b/docs/node-runtime.zh-CN.md @@ -28,7 +28,7 @@ GitHub 工作流 **FreeOS Desktop Package**(`.github/workflows/octop-desktop.yml`) 会设 `SHIP_OPENXYOS_RUNTIME=1` 与 `SKIP_ORG_SIDECAR=0`,让现有 Windows 用户仍能用 -0.0.3 的 iframe 桥。该开关在工作流、NSIS 文案和本文里都标成 **过渡**。不要把它 +0.0.3 的 iframe 桥(0.0.4 桌面 CI 仍打此包)。该开关在工作流、NSIS 文案和本文里都标成 **过渡**。不要把它 复制进 Docker、`uv run` 或默认安装器。 | 开关 | 默认 | 含义 | diff --git a/docs/org-capability-migration-map.md b/docs/org-capability-migration-map.md index bc36f114..7c585b8b 100644 --- a/docs/org-capability-migration-map.md +++ b/docs/org-capability-migration-map.md @@ -99,7 +99,7 @@ These shipping shapes still need a native port. They are bridges. - **Unknowns** are marked per domain. Do not invent API field maps. - Two runtimes on current `main`: - **Source `freeos run`** (no `FREEOS_ORG_INTEGRATED`): native workbench + org-ui slices; Node sidecar opt-in. - - **Desktop 0.0.3**: integrated Node + iframe of App.tsx. That is the bridge, not the destination. + - **Desktop 0.0.3–0.0.4**: integrated Node + iframe of App.tsx. That is the bridge, not the destination. ## Domains diff --git a/docs/org-capability-migration-map.zh-CN.md b/docs/org-capability-migration-map.zh-CN.md index 71330cb5..f7c39ac7 100644 --- a/docs/org-capability-migration-map.zh-CN.md +++ b/docs/org-capability-migration-map.zh-CN.md @@ -99,7 +99,7 @@ - 各域的 **未知项** 单独标出,不编造字段对照。 - 当前 `main` 上实际有两套运行形态: - **源码 `freeos run`**(未设 `FREEOS_ORG_INTEGRATED`):原生工作台 + org-ui 切片;Node 边车可选。 - - **桌面 0.0.3**:集成 Node + iframe 完整 App.tsx。这是桥,不是目的地。 + - **桌面 0.0.3–0.0.4**:集成 Node + iframe 完整 App.tsx。这是桥,不是目的地。 ## 各域 diff --git a/docs/product-contract.md b/docs/product-contract.md index 33ff2882..75981d45 100644 --- a/docs/product-contract.md +++ b/docs/product-contract.md @@ -49,7 +49,7 @@ These shipping shapes are **bridges** while native migration proceeds: | Shipping shape | Role | |---|---| -| Desktop **0.0.3** managed Node + iframe of openXYOS | Transition so operators can still exercise the full original App surface. | +| Desktop **0.0.3–0.0.4** managed Node + iframe of openXYOS | Transition so operators can still exercise the full original App surface. | | **Phase-5 zero-Node** default installer (in-host `/organization` + `/api/org-module/*`; sidecar opt-in) | Lean default while pages move native. Not a claim that unmigrated App surfaces are done. | | **Full-App iframe** / optional `FREEOS_ORG_SIDECAR` on `:3780` | Compatibility hatch for unmigrated pages and export/sync. | diff --git a/docs/product-contract.zh-CN.md b/docs/product-contract.zh-CN.md index 401cd472..864572cc 100644 --- a/docs/product-contract.zh-CN.md +++ b/docs/product-contract.zh-CN.md @@ -47,7 +47,7 @@ FreeOS 更像你自己的工作室:先在本机安顿好。组织相关能力 | 已发布形态 | 角色 | |---|---| -| 桌面 **0.0.3** 托管 Node + iframe 嵌入 openXYOS | 过渡:仍能跑完整原 App 表面。 | +| 桌面 **0.0.3–0.0.4** 托管 Node + iframe 嵌入 openXYOS | 过渡:仍能跑完整原 App 表面。 | | **Phase-5 默认零 Node** 安装器(宿主内 `/organization` + `/api/org-module/*`;边车可选) | 精简默认路径,同时把页面迁原生。不表示未迁的 App 表面已经完成。 | | **全量 App iframe** / 可选 `FREEOS_ORG_SIDECAR`(`:3780`) | 未迁页面、导出 / 同步的兼容阀。 | diff --git a/pyproject.toml b/pyproject.toml index 0d0e7c12..1ed66d90 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "octop" -version = "0.0.3" +version = "0.0.4" description = "FreeOS — self-hosted multi-user multi-agent assistant with an optional organization OS module (Octop-compatible package name)" readme = "README.md" license = { text = "MIT" } diff --git a/src/octop/__init__.py b/src/octop/__init__.py index c1e65d73..cf42c5dd 100644 --- a/src/octop/__init__.py +++ b/src/octop/__init__.py @@ -2,4 +2,4 @@ from __future__ import annotations -__version__ = "0.0.3" +__version__ = "0.0.4" diff --git a/tests/unit/cli/test_version_cmd.py b/tests/unit/cli/test_version_cmd.py index 5e22bdf6..0299f0e8 100644 --- a/tests/unit/cli/test_version_cmd.py +++ b/tests/unit/cli/test_version_cmd.py @@ -16,8 +16,8 @@ def test_product_version_is_002() -> None: with (_REPO_ROOT / "pyproject.toml").open("rb") as fh: declared = tomllib.load(fh)["project"]["version"] - assert declared == "0.0.3" - assert __version__ == "0.0.3" + assert declared == "0.0.4" + assert __version__ == "0.0.4" def test_version_prints_orca_version() -> None: @@ -25,7 +25,7 @@ def test_version_prints_orca_version() -> None: result = runner.invoke(cli, ["version"]) assert result.exit_code == 0 assert "octop" in result.output.lower() - assert "0.0.3" in result.output + assert "0.0.4" in result.output def test_version_in_help() -> None: @@ -39,4 +39,4 @@ def test_root_version_flag() -> None: result = runner.invoke(cli, ["-v"]) assert result.exit_code == 0 assert "octop" in result.output.lower() - assert "0.0.3" in result.output + assert "0.0.4" in result.output