Repository navigation
Releases: IGNGserver/Lagoon
Releases · IGNGserver/Lagoon
Release list
Lagoon v0.3.0-rc.2
Lagoon v0.3.0-rc.2
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- DeepSeek Harness 适配补全:按
@deepseek-ai/dsh@0.2.x的真机契约重写协议层(完整契约见新增的docs/dsh-protocol.md)。修复了此前与0.2.0-rc.2不兼容的调用信封(payload 必须只含一个args对象、字段是方法形参名),并改用浏览器式根路径交换换取长寿命 Cookie。 - 鉴权:
GET /?token=…换签名 Cookie 为主(默认 30 天、跨 dsh 重启仍有效,解决「重启要重填令牌」),GET /connect?token=…&interactions=answer的 API Peer 为备选;401 时自动重新交换。 - 实时流式:消费
session/follow的assistant-stream帧(text-delta/reasoning-delta),assistant 文本与 Reasoning 现在实时上屏;耐久消息到达时自动收口,重试会清掉上一次尝试的片段。 - 状态与去重:
api-session/status折算成运行状态(未关注的会话也能实时收尾);消息页与实时流按事件seq去重,避免重连/刷新后内容重复;修正api-session/removed的纯字符串参数。 - 审批与问答:瀑布事件折算成与其它 harness 相同的权限/表单提示;其他客户端结算时按
cancel帧撤回本地待办并回到运行态;问答表单改为控制器认识的结构,回答按 DSH 的问题 id 结算。 - 新能力:工作区文件浏览(
workspaceFiles,列表/预览/二进制提示)、会话改动列表与逐文件对比(workspace/changes摘要 +/api/changes.summary|diff)、后台任务状态(job/list)、斜杠命令面板与/compact(commands/list|execute,不再把命令当普通文本发送)、归档/取消归档、分叉、模型目录与选择。 - 语义差异显式化:DSH 没有删除会话与消息级回退,分别折算为「归档」与「分叉」提示;引用的服务器文件折算成路径文本随消息发送;已知错误码折算成中文文案。
- 文档:新增
docs/dsh-protocol.md(认证、传输、命名空间、事件与帧、限制),更新 README 与docs/ARCHITECTURE.md。
验证
- 本地:
ANDROID_HOME=<sdk> ./gradlew :app:testDebugUnitTest :app:assembleDebug全部通过(331 个单元测试,其中 DSH 协议测试 21 条:鉴权两条路线、{args}信封、工作区清单、inbox 投影、文件读写与二进制降级、改动摘要合并与补丁渲染、命令列表/执行//compact、后台作业、实时流式增量、运行状态折算、turn/end 原因、瀑布撤回、问答结算、能力矩阵、工厂路由)。 - 真机:在
@deepseek-ai/dsh@0.2.0-rc.2(dsh web --port 3099)上逐条核对:根路径交换返回 303 +dsh-auth-…Cookie、session/list|create|rename|selectModel|cancel|page|projections、workspace/follow|create|archiveSession、workspaceFiles/list|read、commands/list|execute、job/list、session/follow(含assistantStream)、$eventsready 帧;请求/响应形状与实现一致(见docs/dsh-protocol.md)。 - CI:
构建与测试job 通过(https://github.com/IGNGserver/Lagoon/actions/runs/39115988768 ,4m17s)。 - 发布工作流会重新执行 Android 单元测试并构建稳定签名的 Release APK。
已知限制
- DSH 处于 developer preview,跨版本可能破坏性变更;适配按 0.2.x 形状实现,未知错误码/形状以明确失败呈现(
gateway/arguments-invalid会提示更新 Lagoon 或 dsh)。 - DSH 没有删除会话、消息级回退与文件搜索;改动摘要只在 dsh 进程内、会话存活期间提供(重启后旧轮次没有对比)。
- 工作区文件访问需要会话身份;没有会话的目录无法浏览。引用的服务器文件以路径文本发送,文件附件(receipt)暂不支持。
- 真机验收仍需在目标设备与真实 DSH 实例上完成:发送、停止、审批与问答回应、多客户端结算撤回、Android 16 实时更新计数。
下载
- Android 安装包 — Lagoon-0.3.0-rc.2.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.3.0-rc.1
Lagoon v0.3.0-rc.1
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 新增 DeepSeek Harness(
dsh web)适配:Lagoon 从 OpenCode 专用客户端升级为真正的多 harness 控制端。添加服务器时选择「服务类型」即可在 OpenCode 与 DeepSeek Harness 之间切换,DSH 服务器填写实例地址与启动令牌(dsh web启动链接里的?token=)。 - 新增
HarnessClient抽象层:ServerKind(opencode/dsh)随服务器资料持久化,控制器、全服务器总览与通知层只依赖统一接口,不再直接依赖 OpenCode 实现;后续接入新 harness 只需新增一个实现。 - 新增
DshApi协议适配:用启动令牌换取dsh-auth-…签名 Cookie;一元调用走POST /api/<endpoint>(client-request信封),流式数据走/api/remote.mux多路复用 WebSocket,全局事件走$events端点。 - DSH 能力对齐:会话列表、创建、重命名、归档、分叉、子会话、模型目录与选择、发送(
steer打断当前轮次 /queue排队)、停止、审批与问答。审批与问答在 DSH 侧是$events的 waterfall,回应通过$events/result结算,界面与通知和其它 harness 完全一致。 - DSH 时间线翻译:把 DSH 的
turn/step/tool事件日志折算成控制器认识的事件契约与消息模型(用户消息、assistant 文本 / Reasoning、工具调用与结果),任务状态、未读结果与系统实时更新沿用同一套归约。 - 通用化界面文案:服务器状态、审批弹窗、归档页与新建会话提示不再硬编码「OpenCode」,改按当前服务器的 harness 名称显示。
验证
- 本地:
ANDROID_HOME=<sdk> ./gradlew :app:testDebugUnitTest :app:assembleDebug全部通过(316 个单元测试,含新增的 6 个 DSH 协议测试:令牌换 Cookie、一元 RPC 信封、$events就绪与事件、审批 waterfall 与结算、快照折算时间线、发送参数形状)。 - 协议来源:DSH 的 RPC 信封、mux 帧格式、Cookie 名称、审批 outcome 词汇与会话事件结构均逐条对照
dsh实现源码确认,并由 MockWebServer(含 WebSocket 升级)回归覆盖。 - 发布工作流会重新执行 Android 单元测试并构建稳定签名的 Release APK。
已知限制
- DSH 没有删除会话、compact、回退(revert)、改动列表与工作区文件浏览的 RPC,相关入口在这些服务器上返回「不支持」或退化为归档;时间线由会话事件驱动并按需重拉整页,暂不做 token 级流式渲染。
- DSH 的访问令牌每个进程随机生成、只在
dsh web启动时打开的链接里出现,实例重启后旧令牌失效需要重填;令牌错误不会保存服务器资料。 - 真机验收仍需在目标设备与真实 DSH 实例上完成:连接、发送、停止、审批与问答回应,以及 Android 16 实时更新计数。
下载
- Android 安装包 — Lagoon-0.3.0-rc.1.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.5-rc.5
Lagoon v0.2.5-rc.5
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 修复问答与表单(Question/Form)提交或取消后会话仍卡在“等待你的回答”的问题:收到回答或取消后立即恢复为运行态并更新任务总览,同时记录已处理请求墓碑,避免迟到的对账响应把已回答的问题重新拉回列表。
- 修复后台多服务器概览(
AllServersOverview)中表单已在电脑端处理后、持久化的“等待回答”状态无法自动清除的问题。 - 修复从系统通知栏直接点击非当前服务器的“允许一次 / 拒绝 / 停止”操作后,后台多服务器概览未能立即结算并刷新状态的问题。
- 修复待处理通知去抖复核权限时若遇到瞬时网络失败,会一并吞掉同会话待回答提问通知的问题。
- 修复本地注册项目未持久化
sandboxes(git worktree 目录列表)以及新添加项目缺少serverId标记的问题:重启应用或离线回退后,worktree 会话仍能正确归属到所属项目,项目选择器中的会话计数保持准确。 - 修复单服务器跨连接返回首页时,
homeProjection未同步携带该服务器任务概览(summary)的问题。 - 修复服务端返回空
{}或{"error":{}}时,界面直接弹出{}的问题,现统一回退为可读的 HTTP 状态说明;增强动态表单对default: null、混合类型默认值、非法正则pattern与整型integer字段的兼容与校验。 - 改进会话内「文件」面板与目录浏览器:点开文件预览后提供「← 返回列表」入口,搜索时优先展示搜索结果而不再被已打开的文件预览遮挡;目录浏览器搜索增加请求序号防乱序与搜索状态提示。
- 改进输入框 Agent 与模型选择器:Agent 选择器新增「默认 Agent」选项以支持恢复会话默认配置;模型选择器在顶部展示「最近使用」分组。
验证
- 本地:在
BUILD_SCRATCH_ROOT(~/.build)下执行:app:testDebugUnitTest :app:assembleDebug全部通过(含新增的表单状态恢复、后台概览表单清理、空错误信封、表单默认值/正则/整型校验、worktree 持久化及跨服计数单测)。 - CI:PR #104 的
构建与测试通过(:app:testDebugUnitTest+:app:assembleDebug)。 - 发布工作流会重新执行 Android 单元测试并构建稳定签名的 Release APK。
已知限制
- 尚未在真实 Android 设备上逐项复测多服务器通知栏快捷操作与 Android 16 / HyperOS 实时更新胶囊动效。
- 关闭「自动连接」的服务器在“全部服务器”模式中显示为未连接,点开该服务器时建立连接。
- 全部服务器模式仍只聚合每台服务器首页的会话,更早的会话切换到对应单服务器后加载。
下载
- Android 安装包 — Lagoon-0.2.5-rc.5.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.5-rc.4
Lagoon v0.2.5-rc.4
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 修复刷新时偶现
StandaloneCoroutine was cancelled报错:被取代的刷新不再把协程取消当成失败提示。 - 修复首页长期显示“部分数据待同步 · 下拉重试”:已删除的 worktree 目录会让服务端返回 500,现在按目录退避重试,只有影响当前可见状态的读取失败才标记待同步;离线的服务器不再被显示为“待同步”。
- 恢复服务器资料里「自动连接此服务器」开关的作用:关闭后不再常驻后台连接,点开该服务器时才建立连接。
- 修复多服务器模式:服务端已删除的会话不再残留;“全部服务器”列表中的状态与通知按服务器归因;离线服务器上失联的运行任务不再永久占用灵动岛与前台服务。
- 通知修复:同一轮中的第二次提问也会提醒;删除服务器或关闭通知会撤销该服务器的旧通知;关闭通知的服务器不再进入全局汇总;权限被电脑端处理后手机上的“需要授权”通知会撤下。
- 自动授权失败改为退避重试,不再每轮对账重复请求;实时事件触发的控制面读取合并窗口放宽到 3 秒,降低多服务器同时输出时的请求量。
- 离线缓存更可靠:超限时保留最新消息并标记“不完整”(不再让旧缓存冒充完整会话),补充保留排队/重试/上下文整理状态与撤销边界;缓存完整性检查不再卡在主线程。
- Agent 选择器改用服务器实际提供的 agent 列表;目录浏览器与搜索结果去重;问答表单的异常字段不再导致页面崩溃。
- 服务器返回的失败原因(字符串或嵌套对象)统一解析;工具报错为字符串时也能显示。
- 其他:跨服务器切换保留尚未发送的手机附件;通知深链不会在屏幕旋转后重复跳转;选择新会话目标失败时有明确提示;后台定时同步超时/失败会退避重试;发送目标已切换时明确提示而不是静默丢弃。
验证
- 本地:
:app:compileDebugKotlin、:app:compileDebugUnitTestKotlin通过;:app:testDebugUnitTest307 项全部通过(含新增的取消安全、目录退避、缓存截断、错误信封、多服务器投影与自动连接回归)。 - CI:PR #102 的
构建与测试通过(:app:testDebugUnitTest+:app:assembleDebug,job 用时 4 分 12 秒)。 - 发布工作流会重新执行 Android 单元测试并构建签名 Release APK。
已知限制
- 尚未完成 Android 真机验收:多服务器并发、已删除目录、离线服务器、连续下拉刷新、通知与前台服务表现需要在目标设备上确认。
- 关闭「自动连接」的服务器在“全部服务器”模式中显示为未连接,需要点开时才建立连接。
- 服务端对不存在的目录返回 500 空响应是 OpenCode 的可改进点,客户端已做容错。
- 全部服务器模式仍只聚合每台服务器首页的会话,更早的会话切换到对应单服务器后加载。
下载
- Android 安装包 — Lagoon-0.2.5-rc.4.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.5-rc.3
Lagoon v0.2.5-rc.3
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 修复从“全部服务器”列表打开对话时错误切换单服务器视图的问题。
- 保持已配置服务器的持续连接、实时汇总和断线重连,通知不再受页面筛选影响。
- 修复授权请求已被其他客户端处理后手机仍显示“需要授权”的状态残留。
- 新增“不显示授权窗口”和“自动授权”两个手机本地开关;自动授权仅允许一次,不修改服务器永久权限规则。
- 隐藏授权造成的真实阻塞会显示为中性的“等待服务器处理”,不会伪装成正在执行或已完成。
验证
- PR CI
构建与测试:ANDROID_HOME="$ANDROID_SDK_ROOT" ./gradlew :app:testDebugUnitTest :app:assembleDebug,通过。 - CI run:https://github.com/IGNGserver/opencode-lagoon/actions/runs/38422127306
- job 用时 3 分 34 秒;单元测试与 Debug 构建成功。
已知限制
- 尚未完成 Android 真机及真实 OpenCode Server 的完整验收。
- Android 强行停止应用、系统终止进程或前台服务受系统限制时,无法保证无限后台保活。
- 开启自动授权会信任全部已连接服务器提出的权限请求,请仅对可信服务器启用。
下载
- Android 安装包 — Lagoon-0.2.5-rc.3.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.5-rc.2
Lagoon v0.2.5-rc.2
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 修复从“全部服务器”视图打开会话后,返回仍停留在单服务器视图的问题。
- 从全部服务器进入会话后,返回最外层会话会恢复原来的全部服务器视图。
- 子会话返回父会话时保持当前服务器上下文,不会提前切换。
- 深链和全部服务器模式下的新建会话也会保留来源视图。
验证
GRADLE_USER_HOME=/home/lvziw/.gradle ANDROID_HOME=/home/lvziw/Android/Sdk ./gradlew --no-daemon --offline --console=plain :app:testDebugUnitTest :app:assembleDebug:通过。- 单元测试和 Debug APK 构建成功。
已知限制
- 尚未在真实 Android 设备上进行手势返回和多服务器联调;导航回退逻辑已有单元测试覆盖。
下载
- Android 安装包 — Lagoon-0.2.5-rc.2.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.5-rc.1
Lagoon v0.2.5-rc.1
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 新增“全部服务器”模式,并行连接所有已配置的 OpenCode 服务器。
- 聚合所有服务器的会话、运行中任务、待处理事项和未读结果;首页会显示每条会话的来源服务器。
- 灵动岛与系统任务通知改为支持全部服务器汇总,并携带服务器与会话深链,点击后可定位到正确服务器。
- 全部模式下新建会话可选择目标服务器和项目;原有单服务器模式保持不变。
- 增加跨服务器同名会话、项目和任务摘要的隔离测试。
验证
ANDROID_HOME=/home/lvziw/Android/Sdk ./gradlew :app:testDebugUnitTest :app:assembleDebug:通过。- 单元测试 269 项通过,Debug APK 构建成功。
已知限制
- 全部模式当前聚合每台服务器首页分页的首批会话;更早会话仍可切换到对应单服务器后加载。
- 尚未在真实多服务器设备环境和真实 OpenCode Server 集群上联调。
下载
- Android 安装包 — Lagoon-0.2.5-rc.1.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.4
Lagoon v0.2.4
这是 Lagoon 正式版本。
本次更新
- 移除 Android 16 实时通知进度横条中央的应用图标,保留分段进度状态展示。
- 保留普通通知中的应用图标,不影响通知识别。
验证
- Android 单元测试与 Debug APK 构建通过。
- GitHub Actions CI 构建与测试通过。
已知限制
- 尚未在真实 Android 设备及各厂商系统上逐一验证实时通知横条的最终视觉效果。
下载
- Android 安装包 — Lagoon-0.2.4.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.4-rc.4
Lagoon v0.2.4-rc.4
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 修复多个并行后台子任务只识别到一个、或被误判为普通根任务的问题。
- 兼容
session.created直接会话信息与嵌套properties.info两种事件格式,补全子会话到根会话的父链映射。 - 断线重连和权威对账时补拉缺失的子会话、shell 所属会话及其祖先,避免后台工作漏报。
- 保持同一根会话在任务总览中只计为一个运行任务,同时正确维持多个并行后台子任务直到全部结束。
- 补充后台 shell、多个并行子任务、嵌套会话事件和离线恢复的回归测试。
验证
ANDROID_HOME=/home/lvziw/Android/Sdk ./gradlew :app:testDebugUnitTest :app:assembleDebug:通过。git diff --check:通过。
已知限制
- 尚未在真实 Android 设备连接真实 OpenCode 服务上完成多后台任务端到端验收。
- 发布工作流会在 GitHub Actions 中重新执行单元测试并构建、校验稳定签名的 Release APK。
下载
- Android 安装包 — Lagoon-0.2.4-rc.4.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。
Lagoon v0.2.4-rc.3
Lagoon v0.2.4-rc.3
这是 Lagoon 预发布版本,用于验证本次更新。
本次更新
- 修复多客户端同时在线时工具调用权限在手机端被误判为“等待授权”且无法清除的问题。
- 容错处理已在电脑端或其他端被自动批准(autoaccept)并注销的权限请求,手机端收到或回复已消费的权限(HTTP 404)时宽容放行并自动从待审批列表中移除,不再阻塞后续任务状态。
- 通知栏快捷操作对已失效/已完成的授权请求做平滑收敛,避免异常报错。
- 对齐事件流中
permission.replied与form.replied的 ID 匹配逻辑。
验证
ANDROID_HOME=/home/lvziw/Android/Sdk ./gradlew :app:testDebugUnitTest :app:assembleDebug:通过,单元测试和 Debug APK 构建成功。- 新增单元回归测试
replyPermissionTolerates404WhenAlreadySettledElsewhere验证 404 容错通过。
已知限制
- 目前首发支持 OpenCode 2.x 协议实例,其他 harness 驱动将在后续版本逐步接入。
- 真实设备上的实时更新(Live Updates)与超级岛展示效果依赖 Android 16 系统环境。
下载
- Android 安装包 — Lagoon-0.2.4-rc.3.apk
自动验证
- Android 单元测试和 APK 构建已由 GitHub Actions 执行。