Skip to content

Releases: HNGM-HP/opencode-bridge

v3.0.7

24 Apr 13:33

Choose a tag to compare

版本变更摘要(v3.0.7)

1. 全平台非多模态模型识图能力(核心新功能)

  • 新增 src/services/vision-ocr.ts:当主模型不支持 image 输入时,借用 opencode 已配置的多模态模型做 OCR / 图片描述,把结果注入- - 为文本 part 后转发给主模型
  • 新增 preprocessVisionParts() 共享入口,飞书、QQ、Telegram、企业微信、微信、WhatsApp、Chat API 统一接入
  • OCR 流程:创建临时 session → 发送图片+提示词 → 提取文本 → 删除临时 session;任何失败自动降级为"直发原图"
  • 新增 opencodeClient.getModelCapabilities() 能力嗅探:查询主模型是否支持 image 输入
  • 新增 opencodeClient.listVisionModels() 枚举所有支持 image 的模型,供 Web UI 下拉选择
  • 新增配置项:IMAGE_VISION_PREPROCESS(开关)、VISION_OCR_MODEL(OCR 模型)、VISION_OCR_PROMPT(引导提示词)
  • Web UI 配置页新增"非多模态模型图片预处理"卡片,支持开关、模型选择、提示词编辑

2. Windows 黑窗彻底修复

  • process-manager.mjs 和 opencode-restart.ts 均改用 PowerShell Start-Process -WindowStyle Hidden 启动 opencode
  • 解决 Node windowsHide:true(CREATE_NO_WINDOW)导致孙进程弹黑窗的问题
  • 通过 -PassThru 获取真实 PID,确保进程管理可靠

3. Windows 前台 attach 窗口优化

  • OPENCODE_AUTO_START_FOREGROUND Windows 下默认开启
  • 弹出前轮询 TCP 端口就绪(最多 15s),避免空窗口

4. 飞书私聊绑定修复

  • 飞书 session 绑定 API 现在额外返回已有绑定的私聊/群聊(即使飞书 API 无法枚举)
  • Sessions 页面会话类型改为下拉选择(支持手动指定私聊/群聊)
  • 提示文案更新,说明飞书私聊需手动输入 ID

5. AI 工作区 UI 优化

  • uiRunning 状态计算优化:综合判断 sending、aborting、activePermission、streamingMessage、runningTool、runningTask,避免状态不同步
  • 新增 finalizeStreamingMessages():session idle 时收口残留的 streaming 消息
  • Session 侧边栏排序调整:session 节点优先于 folder 节点

6. Electron 打包与稳定性

  • config-store.ts 对 better-sqlite3 原生模块加载失败增加详细诊断提示(macOS 架构不匹配、安全隔离等)
  • Electron 主进程增加后端入口文件存在性检查
  • 启动失败对话框增加平台/架构信息和 native module 诊断提示
  • package.json:将 @hapi/boom、axios、ws 从 devDependencies 移至 dependencies;electron-builder 打包排除更多开发依赖减小体积

7. 其他

  • OpenCode client 新增 knownSessionDirectories 记忆:跨 project API 聚合时补充已知目录,避免会话丢失
  • README 更新:新增 Star History 图表,调整许可证段落顺序
  • 新增测试用例:finalizeStreamingMessages 单元测试

v3.0.6

23 Apr 13:15

Choose a tag to compare

版本变更摘要

1. Windows 黑窗修复

  • 核心问题:Node 的 windowsHide: true(CREATE_NO_WINDOW)导致 opencode 的孙进程 opencode-windows-- x64\bin\opencode.exe 弹出可见黑色 CMD 窗口
  • 修复方案:Windows 下改用 PowerShell Start-Process -WindowStyle Hidden 启动,分配隐藏 console,孙进程继承不弹窗
  • 新增 startHiddenOnWindows() 和 invokeHiddenPowershell() 工具函数(scripts/process-manager.mjs + src/reliability/opencode-restart.ts)
  • 通过 -PassThru 获取真实 PID,写入 PID 文件供进程管理使用

2. Windows 前台 attach 窗口优化

  • OPENCODE_AUTO_START_FOREGROUND 配置 Windows 下默认开启(之前默认关闭)
  • 弹出 attach 窗口前增加 TCP 端口就绪探测(最多轮询 15s),避免连不上时弹空窗口
  • 非 Windows 平台始终关闭该选项

3. 首条消息自动重命名会话

  • 新增 autoRenameSessionFromFirstPrompt():首次发消息时,若会话标题为默认值("新对话"),自动取消息前 24 字符作为标题

4. 新增 uiRunning 计算属性

  • ChatWorkspace 中合并 sending 和 running 状态为 uiRunning,统一 Escape 快捷键判断

Full Changelog: v3.0.5...v3.0.6

v3.0.5

23 Apr 08:23

Choose a tag to compare

版本变更摘要(v3.0.5)

1. 新增 AI 工作区附件/图片能力

  • 新增 chat-upload.ts 文件上传 API(POST /api/chat/upload),基于 multer,支持所有 MIME 类型,默认 50MB 限制
  • 上传文件自动内联为 base64 data URL 发送给 OpenCode(inlineLocalUploadParts / inlineUploadParts)
  • 前端 MessageInput 支持粘贴图片、拖拽文件、点击添加附件,含上传进度和预览
  • MessageItem / TurnItem 支持展示图片和文件附件,图片支持点击预览
  • 新增 opencode.json 配置文件

2. 新增任务计划预览面板(TaskPlanPreview)

  • 新增 TaskPlanPreview.vue 组件,在聊天区域展示 AI 执行计划(任务步骤列表)
  • 自动展开/收起,显示执行进度(正在执行/已完成/已规划)

3. 优化回退机制

  • 回退操作从"丢弃单条消息"升级为"丢弃整轮对话"(discardConversationFromMessage)
  • 新增 retainMessages 方法,精确保留指定消息
  • 新增 waitForRevertSettled 轮询等待后端回退完成,确保消息一致性
  • 回退时恢复附件草稿(draftAttachments)
  • 消息列表隐藏计数改为基于"轮次"而非"条数"

4. UI 界面优化

  • 发送/终止按钮合并为单一主操作按钮,running 状态下显示脉冲动效
  • Session ID 和会话 ID 不再截断显示
  • running 状态独立管理,流式光标仅在活跃时显示
  • 头部状态徽章区分"响应中"和"已连接"状态
  • 依赖更新:新增 multer + @types/multer

5. 修复

  • 进程管理器(process-manager.mjs)修复 Unix 下 spawn 参数传递方式,使用 shell: true 解决 PATH 解析问题
  • 修复打包问题

v3.0.3

21 Apr 12:39

Choose a tag to compare

v3.0.3 更新日志

🐛 Bug 修复

平台兼容性

  • Windows 路径修复 - 修复 Windows 系统下文件路径处理问题
  • macOS 兼容性修复 - 修复 macOS 系统下的相关问题

聊天工作区

  • UI 修复 - 修复聊天 AI 工作区界面问题

📝 其他

  • 新增平台兼容性文档
  • 增加相关测试用例
  • 优化事件处理逻辑

Full Changelog: v3.0.2...v3.0.3

v3.0.2

20 Apr 11:46

Choose a tag to compare

主要变更内容

1. 🔄 权限模型架构调整

核心变更:统一目录访问控制

影响文件: src/utils/directory-policy.ts, src/admin/routes/workspace-utils.ts, web/src/views/CoreRouting.vue

  • 移除 AI 工作区权限分离机制:撤销了之前将 AI 工作区与平台接入权限解耦的设计
  • 恢复统一白名单验证:所有路径访问(包括 AI 工作区)都需要通过 ALLOWED_DIRECTORIES 白名单验证
  • 删除作用域概念:移除 DirectoryPolicyScope 类型及 scope 参数

技术细节

// 之前的设计(已撤销)
DirectoryPolicy.resolve({
  explicitDirectory: path,
  scope: 'workspace'  // AI 工作区脱钩白名单
})

// 现在的设计
DirectoryPolicy.resolve({
  explicitDirectory: path  // 统一验证
})

2. 🧹 日志系统简化

影响文件: electron/main.ts

变更前:复杂的三级轮转机制

  • 单文件上限 1MB,保留 .1.2 两个备份(总 3 份)
  • 运行时实时监控写入量,动态轮转
  • 代码量约 30+ 行

变更后:简化的双文件轮转

// 滚动:文件超过 2MB 时重命名为 .1,保留一份历史
if (st.size > 2 * 1024 * 1024) {
  fs.renameSync(logFilePath, logFilePath + '.1');
}

优势

  • 代码更简洁,减少约 25 行
  • 降低运行时开销(无需实时监控写入量)
  • 单文件容量翻倍,减少轮转频率

3. 📝 文档与测试清理

删除文件

  • assets/docs/Windows-ALLOWED_DIRECTORIES.md (64 行)

测试用例清理tests/directory-policy.test.ts

  • 删除 resolve - AI 工作区脱钩白名单 整个测试组(85 行)
  • 包括 6 个测试用例:
    • scope=workspace 时 explicit 路径不再要求白名单
    • scope=workspace 时 explicit 路径可在白名单之外
    • scope=workspace 仍应拦截危险路径
    • scope=workspace 仍应拒绝相对路径
    • scope=workspace 仍应拒绝不存在的目录
    • 默认 scope=platform 保持原有强制行为(回归)

4. 🎨 前端路径处理优化

影响文件: web/src/views/chat/ChatWorkspace.vue

路径规范化简化

// 变更前:复杂的 Windows 盘符处理
if (/^[A-Za-z]:$/.test(normalized)) {
  return `${normalized}/`
}

// 变更后:统一处理
return normalized.replace(/\/+$/, '')

绝对路径判断简化

// 变更前
function isAbsolutePath(value: string): boolean {
  if (value.startsWith('/')) return true
  return /^[A-Za-z]:(?:\/|$)/.test(value)  // 支持 "C:" 形式
}

// 变更后
function isAbsolutePath(value: string): boolean {
  return value.startsWith('/') || /^[A-Za-z]:\//.test(value)  // 仅支持 "C:/" 形式
}

5. 🔧 构建与部署优化

影响文件: .github/workflows/build-release.yml

  • Python 检测优化
    # 变更前
    PYTHON_BIN=$(command -v python3 || command -v python)
    echo "Python: $PYTHON_BIN"
    "$PYTHON_BIN" --version
    
    # 变更后
    PYTHON_BIN=$(which python3 || which python)
    echo "Python: $PYTHON_BIN — $($PYTHON_BIN --version)"
  • 移除不必要的 shell: bash 声明
  • 合并输出语句,减少一次命令调用

6. 🧩 代码清理

影响文件: src/index.ts

  • 移除内嵌模式特殊处理:删除了 EMBEDDED_STOP 信号处理逻辑(约 15 行)
  • 简化信号处理器:从具名函数改为内联箭头函数
  • 代码对比
    // 变更前
    const sigintHandler = () => { void gracefulShutdown('SIGINT'); };
    process.on('SIGINT', sigintHandler);
    
    // 变更后
    process.on('SIGINT', () => { void gracefulShutdown('SIGINT'); });

v3.0.1-beta1

20 Apr 08:13

Choose a tag to compare

📊 总览

本次更新主要聚焦于稳定性用户体验两个方面:

  1. 修复了关键的跨平台兼容性问题,确保应用在 Windows 和 macOS 上都能正常运行
  2. 完善了文档体系,让用户能够自行解决常见问题
  3. 添加了国际化支持,为项目的国际化推广打下基础

🎯 主要改进点

1. 稳定性提升

  • ✅ 修复了部分 Windows 电脑上的崩溃问题
  • ✅ 修复了 macOS 上的"已损坏"提示问题
  • ✅ 改善了应用在各种环境下的兼容性

2. 用户体验

  • ✅ 提供了详细的问题解决方案文档
  • ✅ 用户可以自行解决常见安装问题
  • ✅ 减少了因配置问题导致的使用障碍

3. 国际化

  • ✅ 完整的英文界面支持
  • ✅ 中英文无缝切换
  • ✅ 为国际化推广打下基础

4. 开发体验

  • ✅ 代码结构更清晰
  • ✅ 文档更完善
  • ✅ 问题排查更便捷

Full Changelog: v2.9.59...v3.0.1

v3.0.1-beta

20 Apr 08:08

Choose a tag to compare

📊 总览

本次更新主要聚焦于稳定性用户体验两个方面:

  1. 修复了关键的跨平台兼容性问题,确保应用在 Windows 和 macOS 上都能正常运行
  2. 完善了文档体系,让用户能够自行解决常见问题
  3. 添加了国际化支持,为项目的国际化推广打下基础

🎯 主要改进点

1. 稳定性提升

  • ✅ 修复了部分 Windows 电脑上的崩溃问题
  • ✅ 修复了 macOS 上的"已损坏"提示问题
  • ✅ 改善了应用在各种环境下的兼容性

2. 用户体验

  • ✅ 提供了详细的问题解决方案文档
  • ✅ 用户可以自行解决常见安装问题
  • ✅ 减少了因配置问题导致的使用障碍

3. 国际化

  • ✅ 完整的英文界面支持
  • ✅ 中英文无缝切换
  • ✅ 为国际化推广打下基础

4. 开发体验

  • ✅ 代码结构更清晰
  • ✅ 文档更完善
  • ✅ 问题排查更便捷

Full Changelog: v2.9.59...v3.0.1

v3.0.0-beta0

18 Apr 12:17

Choose a tag to compare

v3.0.0 更新日志

🎉 重大更新

全新 Web 聊天界面

  • 聊天工作区 - 全新的现代化聊天界面设计
  • 消息系统 - 支持流式消息、消息列表、消息输入
  • 会话管理 - 完整的会话创建、切换、树状图展示
  • 侧边面板 - 集成文件浏览器、Git 面板、终端面板

AI 元素组件系统

新增多种 AI 响应元素组件:

  • Markdown 渲染 - 支持 Markdown 格式化显示
  • 代码块 - 带语法高亮的代码展示
  • 文件树 - 可视化文件结构展示
  • 推理过程 - 显示 AI 推理过程
  • 任务列表 - 任务进度和状态展示
  • 工具调用 - 显示工具使用详情
  • 终端输出 - 终端命令和结果展示
  • 对话视图 - 多轮对话展示

后端 API 增强

新增完整的聊天 API 路由系统:

  • 聊天事件流 (/api/admin/chat/events)
  • 会话管理 (/api/admin/chat/sessions)
  • 工作区文件 (/api/admin/workspace/files)
  • Git 操作 (/api/admin/workspace/git)
  • 终端操作 (/api/admin/workspace/terminal)
  • 权限控制 (/api/admin/chat/permission)
  • 元数据管理 (/api/admin/chat/meta)

事件总线系统

  • 新增聊天事件总线架构
  • 事件标准化处理器
  • 完整的 TypeScript 类型定义

✨ 新功能

会话管理

  • ✅ 会话树状图展示,支持层级结构
  • ✅ 会话时间智能显示(小时/分钟格式)
  • ✅ 会话自动展开优化
  • ✅ 会话复制功能

文件浏览器

  • ✅ 完整的文件夹浏览流程
  • ✅ 自定义路径输入支持
  • ✅ 键盘快捷操作(回车键)
  • ✅ 路径同步更新

Git 集成

  • ✅ Git 状态查看
  • ✅ 提交历史浏览
  • ✅ 文件差异对比

终端集成

  • ✅ Web 终端面板
  • ✅ 命令执行
  • ✅ 输出查看

🐛 Bug 修复

  • 修复 Git 部分 BUG - 修复 Git 操作相关问题
  • 修复 UNDO 部分 BUG - 修复撤销功能相关问题
  • 修复滚动 BUG - 面板内容可正常滚动
  • 修复点击复制出错 - 添加安全检查
  • 修复对话框引号问题 - 统一使用标准英文引号
  • 修复发送消息时树状图自动展开 - 优化展开逻辑

💡 优化改进

UI/UX 优化

  • 重新设计面板切换按钮样式,采用现代化设计
  • 优化激活状态样式,使用浅灰色背景
  • 会话时间显示位置优化,移至右侧
  • 删除重复的"+新建"按钮

性能优化

  • 消息加载条数从 10 条提升至 30 条
  • 优化组件渲染性能

代码质量

  • 新增完整的 TypeScript 类型定义
  • 新增单元测试覆盖
  • 优化代码组织结构

📦 技术栈更新

前端依赖

  • 更新 web/package.json 依赖
  • 新增多个 Vue 组合式函数
  • 新增 AI 元素组件库

后端增强

  • 新增聊天事件处理系统
  • 新增工作区管理路由
  • 优化平台配置处理

📝 变更统计

  • 87 个文件变更
  • 新增 17,921 行代码
  • 删除 155 行代码
  • 6 个 commits

Full Changelog: v2.9.59...v3.0.0-beta0

v2.9.59

06 Apr 04:26
7888e14

Choose a tag to compare

What's Changed

Full Changelog: v2.9.58...v2.9.59

v2.9.58-beta2

31 Mar 06:15

Choose a tag to compare