Skip to content

chore: unify default opencode version into single source of truth#30

Merged
Svtter merged 4 commits into
mainfrom
feat/unify-default-version
Apr 23, 2026
Merged

chore: unify default opencode version into single source of truth#30
Svtter merged 4 commits into
mainfrom
feat/unify-default-version

Conversation

@Svtter
Copy link
Copy Markdown
Collaborator

@Svtter Svtter commented Apr 23, 2026

Summary

  • Add setup-opencode/default-version file as single source of truth for minimum version (1.14.20)
  • Each action reads the shared file when version input is empty, eliminating hardcoded duplicates
  • Update FAKE_OPENCODE_VERSION in CI to match new minimum

Before

setup-opencode/action.yml: 1.4.5, review/action.yml: 1.4.5, github-run-opencode/action.yml: 1.14.19

After

All three actions resolve from setup-opencode/default-version (1.14.20)

Svtter added 2 commits April 23, 2026 10:12
- Add setup-opencode/default-version as single source of truth for min version
- Each action resolves version from the shared file when input is empty
- Update FAKE_OPENCODE_VERSION in CI to match new minimum (1.14.20)
@github-actions
Copy link
Copy Markdown

有条件合并

该 PR 将三个 action 中硬编码的默认版本号统一到 setup-opencode/default-version 单一来源,消除了版本不一致(之前是 1.4.51.4.51.14.19 三个不同值),CI 已通过,整体思路正确。

阻塞项

  1. "空字符串禁用版本检查"的语义被破坏version 输入的描述明确写着 "Empty string disables version checking",且 install-opencode.sh:112version_meets_minimum 函数确实支持 OPENCODE_MIN_VERSION 为空时跳过版本检查。但新增的 version 步骤在有值为空时会回退到文件读取,导致用户无法再通过 version: "" 禁用版本检查。这违反了已有的 API 契约,属于破坏性变更。建议在文档描述中更新以反映新行为,或增加一个显式的"禁用"哨兵值(如 "none"),使禁用版本检查的能力不被移除。

建议项

  1. 版本解析逻辑重复:三个 action 中各有一段几乎相同的 version 步骤脚本,唯一区别是 default-version 文件路径。考虑到这是 composite action 的限制可以理解,但如果未来需要修改该逻辑,需要同时改三处,建议在 setup-opencode/ 下新增一个共享脚本(如 resolve-version.sh),各方调用该脚本以减少重复。
  2. 跨目录路径耦合review/action.yml:132github-run-opencode/action.yml:102 使用 ${{ github.action_path }}/../setup-opencode/default-version 读取文件,依赖于 setup-opencode 始终为同级目录。虽然在本仓库结构下可行,但如果有人单独拷贝某个 action 目录到其他仓库使用时会静默失败。建议在脚本中加一个文件存在性检查,或至少在 README 中说明此依赖关系。

New%20session%20-%202026-04-23T02%3A51%3A02.067Z
opencode session  |  github run

- 'none' input converts to empty string, preserving ability to disable
  version checking (matches updated description)
- Add explicit file-not-found error for default-version cross-directory
  dependency instead of silent cat failure
@github-actions
Copy link
Copy Markdown

有条件合并

PR 将三个 action 中硬编码的默认版本号统一到 setup-opencode/default-version 单一来源,消除了之前版本不一致(1.4.5 / 1.4.5 / 1.14.19)的问题,并通过 "none" 哨兵值保留了禁用版本检查的能力,整体思路正确。

阻塞项

  1. default-version 文件读取缺少空白处理effective="$(cat "$default_file")" 使用命令替换会去掉尾部换行,但不会去掉前导空白或尾部空格。如果文件因编辑器配置意外引入尾部空格或 BOM,版本比较将静默失败。建议读取后做一次 effective="$(cat "$default_file" | tr -d '[:space:]')" 或至少在读取后验证格式(如正则 ^[0-9]+\.[0-9]+\.[0-9]+$),在版本解析阶段快速失败而非在后续 install-opencode.shparse_semver 中产生难以理解的错误。

建议项

  1. 版本解析逻辑三处重复setup-opencode/action.yml:67-80review/action.yml:128-141github-run-opencode/action.yml:98-111version 步骤逻辑几乎完全相同,仅 default_file 路径不同。建议抽成共享脚本(如 setup-opencode/resolve-version.sh),各 action 调用该脚本并传入路径参数,减少未来维护成本。
  2. 跨目录路径耦合已有先例review/action.yml:190github-run-opencode/action.yml:160 已通过 ${{ github.action_path }}/../setup-opencode/install-opencode.sh 引用 setup-opencode 目录,所以 ../setup-opencode/default-version 的耦合关系是已有的,非新增风险。但建议在仓库 README 中说明此目录依赖关系。

New%20session%20-%202026-04-23T03%3A05%3A19.632Z
opencode session  |  github run

Use tr -d to remove all whitespace (including BOM, trailing spaces)
and validate against semver pattern before passing to installer.
@github-actions
Copy link
Copy Markdown

可合并

该 PR 将三个 action 中硬编码的默认版本号统一到 setup-opencode/default-version 单一来源,消除了之前版本不一致(1.4.5 / 1.4.5 / 1.14.19)的问题。前轮 review 提出的阻塞项均已修复:"none" 哨兵值恢复了禁用版本检查的能力,文件读取增加了 tr -d '[:space:]' 空白处理和 ^[0-9]+\.[0-9]+\.[0-9]+$ 格式校验,以及文件存在性检查。CI 已通过,代码逻辑正确。

阻塞项:无

建议项:

  1. 版本解析逻辑三处重复setup-opencode/action.yml:67-84review/action.yml:128-145github-run-opencode/action.yml:98-115 的 version 步骤逻辑几乎完全相同,仅 default_file 路径不同。建议抽成共享脚本(如 setup-opencode/resolve-version.sh),各 action 传入路径参数调用,减少未来维护成本。
  2. 跨目录路径耦合已有先例review/action.yml:194github-run-opencode/action.yml:164 已通过 ${{ github.action_path }}/../setup-opencode/install-opencode.sh 引用 setup-opencode 目录,../setup-opencode/default-version 的耦合关系非新增风险。但建议在仓库 README 中说明此目录依赖关系。

New%20session%20-%202026-04-23T03%3A35%3A07.686Z
opencode session  |  github run

@Svtter Svtter merged commit 5036add into main Apr 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant