Skip to content

Releases: E3N-glotm/DevSpace-Deploy-Portable

DevSpace Portable 1.1.17

Choose a tag to compare

@github-actions github-actions released this 07 Aug 09:48
c4e50fb

DevSpace Portable 1.1.17

1.1.17 修复完整发行包中 codex-runtime-bridge 的预置路径:插件必须位于 PluginManager 实际使用的 data/plugins/installed/codex-runtime-bridge,而不是 Portable 根目录下的 plugins/installed。Portable Protocol 保持 1.5,MCP 顶层工具 Schema 不变。

Release 内直接包含 Codex Runtime Bridge

  • 完整 ZIP 现在固定包含:
    • DevSpacePortable/data/plugins/installed/codex-runtime-bridge/<版本>/manifest.json
    • DevSpacePortable/data/plugins/installed/codex-runtime-bridge/<版本>/runtime.mjs
    • DevSpacePortable/data/plugins/installed/codex-runtime-bridge/<版本>/keep-awake.ps1
    • DevSpacePortable/data/plugins/installed/codex-runtime-bridge/<版本>/skills/codex-runtime-bridge/SKILL.md
  • 维护源仍只有 setup/bundled-plugins/ 一份;setup/build-release.py 在构建时自动生成 plugins/installed/ 发布镜像,避免两套源码发生漂移。
  • 构建器通过虚拟归档映射把 setup/bundled-plugins 中的受控插件文件写入 data/plugins/installed/...,不会读取或复制维护机本地 data/ 中的 OAuth、SQLite、配置和其他运行状态;如果 data/plugins/installed/codex-runtime-bridge/<版本>/manifest.json 不能进入 ZIP,则直接终止发布。
  • 完整 ZIP 明确禁止生成错误的 DevSpacePortable/plugins/installed/... 根目录镜像。

插件持久化边界

  • plugins/installed/ 是 Release 自带的 bundled seed tree,保证解压后、不启动程序也能直接看到内置 Codex Runtime Bridge。
  • 用户实际安装、启用、升级后的插件仍位于 data/plugins/installed/;该目录属于持久化 data/,在线更新不会覆盖。
  • Portable manager 在完整 Release 中优先使用 plugins/installed/ 作为 seed source;源码开发环境没有该镜像时继续回退到 setup/bundled-plugins/

GitHub 在线更新网络兼容性

  • 修复 Windows PowerShell 5.1 经过本地 HTTP/HTTPS 代理访问 GitHub 时可能出现“基础连接已经关闭: 发送时发生错误”的问题。
  • updater 进程显式允许 TLS 1.2,并关闭旧式 Expect100Continue;不会修改系统全局网络配置。
  • Release API 与 update-manifest.json 请求先走 PowerShell,失败时以 0.5 s / 1 s 退避最多尝试 3 次,再自动切换到 curl.exe
  • 增量 ZIP 与完整 ZIP 下载使用相同的有界重试和 curl fallback;如果两条网络路径都失败才向 UI 返回错误。
  • 原有 size、SHA-256、增量基础文件 hash 和路径安全校验保持不变,网络 fallback 不降低更新完整性检查。

验证

  • 新增 setup/test-release-plugin-layout.py,验证发布镜像、版本目录及四个关键文件均存在,并被 release scanner 收录。
  • setup/build-release.py 自身增加 release-time invariant,防止后续版本再次生成不含 Codex Runtime Bridge 的 ZIP。
  • setup/test-online-updater-contract.mjs 同时验证 TLS 1.2、有界 retry、GitHub JSON/download wrapper 与 curl fallback 合约。

DevSpace Portable 1.1.16

Choose a tag to compare

@github-actions github-actions released this 07 Aug 08:05
95756a6

DevSpace Portable 1.1.16

1.1.16 将 GitHub 在线更新从“每次下载完整 Portable ZIP”升级为“增量优先、完整包自动兜底”,同时修复 1.1.15 会话详情中逐文件差异仍可能显示整轮 patch 的问题,并统一原生控制中心的现代字体体系。Portable Protocol 保持 1.5,MCP 顶层工具 Schema 不变。

增量优先、完整包兜底

  • Release 继续发布 DevSpacePortable-Windows-x64-1.1.16.zip 作为完整安装与最终兜底包。
  • 构建流程同时比较上一稳定 Release 与 1.1.16 完整包,生成 DevSpacePortable-Update-1.1.15-to-1.1.16.zip 文件级增量包。
  • 增量格式为 file-delta-v1:ZIP 只保存新增或发生变化的文件;删除项写入 delta-manifest.json,不需要重复携带未变化的 Node、Git、runtime 或 npm 文件。
  • update-manifest.json 升级到 schema 2,保留完整 asset,并增加按 fromVersion 精确匹配的 incrementalAssets
  • 更新器只有在已安装版本与增量包 fromVersion 完全一致时才尝试增量;跨多个版本、找不到增量时直接使用完整 ZIP,不要求逐版升级。
  • 已安装的 1.1.15 更新器本身尚不认识 incrementalAssets,所以普通用户从 1.1.15 升到 1.1.16 时仍会完整下载一次 1.1.16 ZIP。 1.1.16 安装完成以后,后续版本才正式进入“增量优先、完整包兜底”的选择流程;本次仍发布 1.1.15→1.1.16 delta,用于验证新协议、镜像场景和新更新器回归。
  • 增量下载后校验 Release 资产大小、SHA-256、压缩路径、delta manifest、所有目标文件 SHA-256,并在真正关闭 UI 前校验将被替换或删除的本地基础文件 SHA-256。
  • 增量包缺失、损坏、格式不合法、路径不安全、目标文件校验失败或本地基础文件发生漂移时,同一次更新流程自动切换到完整 ZIP。
  • 增量安装只备份、替换和删除明确列出的路径;完整包安装继续采用顶层应用 payload 替换。两种模式都保留 data/logs/reports/,并共享同盘备份与失败回滚。

修复逐文件差异串页

  • 1.1.15 的提取器优先查找 diff --git,但当前 sparse-journal-v4 使用 diff 包的 createTwoFilesPatch,实际输出以 ===================================================================--- a/<path>+++ b/<path> 分隔,不包含 diff --git
  • 因此旧逻辑在找到 +++ b/<path> 后会把 block 起点错误回退到整个 patch 的第 0 字符,造成截图所示“标题已经切换到 README/YAML,但下面仍显示 DEVELOPMENT_STATUS 及其他文件”的问题。
  • 1.1.16 直接识别 createTwoFilesPatch 的真实分隔格式,以连续 --- a/path / +++ b/path 精确定位文件,并在下一个分隔线或 diff --git block 前截断。
  • 二进制、大文件和 unsupported path 使用独立路径标记匹配;无法可靠找到当前文件时返回空状态,绝不回退展示整轮 patch。
  • 新增真实原生 EXE 回归:构造三个连续 jsdiff 文件块,分别选择中间文件并验证输出不包含前后文件内容。

差异视图与字体

  • 深色 diff 视图从“patch 内部顺序号”改为接近 PyCharm/Codex 的旧行号 + 新行号双 gutter;新增、删除、上下文和 hunk 会分别推进正确的行号计数。
  • 代码和差异区域优先使用 Cascadia Code,回退到 Cascadia Mono / Consolas
  • 原生 UI 正文、按钮、导航、表格、提示和对话框优先使用 Segoe UI Variable Text,大标题使用 Segoe UI Variable Display;未安装时自动回退到 Windows 系统字体,不随程序分发字体文件。
  • 保留原有浅色控制中心与深色 diff 的视觉层级,不改变现有 Computer Use、Memories、插件与部署布局。

发布与测试

  • Release workflow 会保留上一稳定版完整 ZIP 作为 delta 构建基线,构建 1.1.16 完整 ZIP 后自动生成增量 ZIP,并将两者连同 update-manifest.jsonSHA256SUMS-release.txt 一起发布。
  • 新增 setup/test-incremental-update.py:使用微型 1.1.15/1.1.16 ZIP 验证 changed-only、delete manifest、persistent root 排除和 base SHA-256。
  • 新增 setup/test-selected-file-diff.mjs:执行原生 DevSpace-Portable.exe --diff-extract-test,验证 jsdiff 分隔符、单文件隔离、双行号 gutter 和字体配置。
  • 继续执行原生 UI、Memory CRUD、稀疏会话、插件、Computer Use、在线更新安全边界和生产依赖审计回归。

DevSpace Portable 1.1.15

Choose a tag to compare

@github-actions github-actions released this 07 Aug 04:10
2b839bb

DevSpace Portable 1.1.15

1.1.15 增加基于公开 GitHub Releases 的在线更新,并重做原生控制中心的会话分组、逐文件差异和关闭窗口行为。Portable Protocol 保持 1.5,现有 MCP 顶层工具定义不变。

GitHub Release 在线更新

  • “状态与部署”新增“检查更新”,直接读取公开仓库的最新稳定 Release 和 update-manifest.json,不要求用户配置 GitHub Token。
  • 下载前核对 Release 标签、仓库、文件名和清单;下载后同时校验字节数与 SHA-256,并拒绝逃逸 DevSpacePortable/ 根目录的压缩包条目。
  • 更新包先解压到 .update-staging/;用户确认安装后,独立 PowerShell 更新器等待原生 UI 退出,再停止当前 Portable 服务并替换应用文件。
  • data/logs/reports/ 始终保留。替换过程使用同目录备份;任何验证、替换或启动错误都会恢复旧文件并重新启动旧版本。
  • Git 源码检出目录明确拒绝应用级覆盖,只允许正式 Release 解压目录执行在线更新。

会话历史按名称分组

  • 同名会话合并到一个视觉分组,分组按最近一次修改时间从新到旧排列,置顶分组仍优先显示。
  • 每个分组内部的具体会话轮次同样按最近更新时间从新到旧排列,并保留文件数、增删行数、状态和项目目录。
  • 分组标题只负责汇总,回退、重命名、隐藏、归档和打开目录必须选择分组内的一轮具体会话,避免误操作。

现代逐文件差异

  • 文件差异区改为接近 PyCharm/Codex 的深色统一差异视图,增加文件标题、行号栏、差异元信息和新增、删除、区块、文件头背景色。
  • 未选择文件时只显示引导提示,不再退回展示整轮会话的全部 patch。
  • 选择上方任意改动文件后,只提取并渲染该文件对应的 unified diff;无法可靠匹配文件区块时显示空状态,而不是泄露其他文件差异。

关闭窗口与系统托盘

  • 点击窗口右上角关闭按钮时,弹出“最小化到系统托盘”“退出控制中心”“取消”三种选择。
  • 最小化到托盘会隐藏窗口、保留 UI 进程、本地桌面租约、Computer Use 和后台服务;双击托盘图标或使用菜单可恢复窗口。
  • 退出控制中心只关闭原生 UI 和本地 UI 租约,不停止 DevSpace、隧道或计划任务。
  • 可勾选“记住我的选择”;托盘菜单提供“下次关闭时询问”以清除偏好。

验证

  • 原生 WinForms x64 编译通过。
  • Portable manager、在线更新器 PowerShell 语法和更新契约测试通过。
  • 会话分组、仅选中文件差异、关闭选择、Memory CRUD、Computer Use、插件与稀疏审阅回归继续通过。
  • 最终 ZIP、更新清单和 GitHub Release 附件按大小与 SHA-256 交叉验证。

DevSpace Portable 1.1.14

Choose a tag to compare

@E3N-glotm E3N-glotm released this 06 Aug 10:33

DevSpace Portable 1.1.14

1.1.14 重构原生控制中心的操作反馈、会话审阅和显式 Memories 管理,Portable Protocol 保持 1.5,现有 MCP 顶层工具定义不变。

操作期间不再整窗变白

  • 原生 UI 不再通过禁用整个 MainForm 表示操作进行中,避免 WinForms 把所有卡片、表格和控制框绘制成白色或失焦状态。
  • 只有当前点击的按钮进入忙碌状态,并在按钮内部显示“执行中…”。
  • 页面内容、日志和其他导航保持可见;重复点击同一忙碌按钮会被忽略,操作结束后恢复原文字和光标。
  • 初始化阶段同样不再禁用整窗,而是在状态框中显示加载进度。

Codex 风格会话子页面

  • “会话与回退”首先显示独立会话列表,而不是把列表、文件和差异压缩在同一个三栏页面中。
  • 双击会话或点击“查看本轮修改”进入会话详情子页面,可通过“返回会话”回到列表。
  • 详情页集中显示本轮项目路径、稀疏审阅后端、文件数、增删行数和完整回退状态。
  • 改动文件以独立列表呈现;选择文件后只显示该文件对应的 patch,并使用不同文字颜色区分新增、删除、区块和文件头。
  • 回退、恢复回退前快照和打开项目目录均保留在详情页,不改变 sparse-journal-v4 的有界存储和安全回退规则。

显式 Memories 独立页面

  • 左侧导航新增“显式 Memories”页面,可搜索和查看本地 SQLite 中的全局与工作区记录。
  • 支持新建、编辑、保存和删除;工作区作用域只能选择当前配置中的 allowedRoots,不能通过 UI 写入任意外部路径。
  • 支持标题、内容和逗号分隔标签;全局作用域不绑定项目,工作区作用域明确显示对应根目录。
  • 删除前要求确认,疑似密码、Token、API Key 或 Client Secret 的内容继续由 MemoryStore 拒绝。
  • Memories 仍然只由用户或模型显式写入,不会从聊天、命令输出、文件内容或浏览历史自动推断。

自动回归

  • 原生 WinForms 编译通过。
  • 新增 setup/test-portable-ui-workflows.mjs,验证整窗不再被禁用、会话子页面存在,以及 Memory 的创建、读取、更新和删除均通过真实 SQLite 完成。
  • 原生 UI 韧性测试与 sparse-journal-v4 会话能力回归继续通过。