Skip to content

.vpx 版本跟随 Release 标签:把 plugin.json 的 version 也纳入版本落点 - #4

Merged
joesdu merged 2 commits into
mainfrom
dev
Aug 21, 2026
Merged

joesdu merged 2 commits into
mainfrom
dev

Conversation

@joesdu

@joesdu joesdu commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

发 1.4.0,打出来的却是 velashell.redis-0.1.0.vpx。

原因是我把版本模型设计错了。打包器出的文件名是 -<plugin.json 的 version>.vpx, 宿主里显示的插件版本读的也是它 —— 与 MSBuild 那边的 VelaPluginsVersion 毫无关系。 而 Set-Version.ps1 只写了 Directory.Build.props 与 README 横幅,plugin.json 从来没动过, 四个插件就一直停在初始的 0.1.0。

我原来的设计是"各插件版本各自演进,Redis 发 0.2.0 与 Telnet 无关",按那个模型 plugin.json 本就不该被流水线碰。现在按你的要求改成统一发布列车:
一次 Release,所有插件同上一个版本号。

Set-Version.ps1 新增第三类落点:动态枚举 plugins/*/plugin.json,把标签里的版本 写进每个 "version"。动态枚举而不是写死四条 —— 新增插件时没人会记得回来改脚本,
而漏掉的后果是那个插件的 .vpx 永远停在初始版本号上,且不会有任何报错。

正则只认顶层的 "version" 键:带引号前缀天然排除了 minSdkVersion 这类以 Version 结尾的键名(它们里面没有 "version 这个子串)。plugin.json 是 JSONC,所以走正则 而不是 JSON 反序列化 —— 后者会把满文件的注释全部吃掉。实测 diff 只有 version 那一行。

代价说清楚:没改过的插件也会跟着涨版本,用户那边会看到一次"更新"。
换来的是"这台机器上装的是哪一批插件"只有一个答案,排查时不必逐个去问版本。
README、plugins/README.md、release.yml 头注释、脚本 docstring 里描述旧模型的段落一并改了, 并加了一句"别手改 plugin.json 的 version" —— 手改也会在下次发版被标签盖回去。

版本线定到 1.4.0(上一版我按你当时发的 1.0.0 设的),主仓库的
VelaPluginsBundleVersion 同步改回 1.4.0。

验证:六个落点全部写到 1.4.0;实际打包产出 velashell.{redis,s3,telnet,hello-world}-1.4.0.vpx, vela-plugin info 读回来是 plugin velashell.redis v1.4.0 且 flags 含 Signed; 脚本四条路径退出码 0/0/1/0,无"未设置";构建 0 警告 0 错误,dotnet test 退出码 0, 两个工作流 YamlDotNet 解析通过。

Claude-Session: https://claude.ai/code/session_01TJqvmBbGKDA6UCpVeGqYpG

joesdu and others added 2 commits August 22, 2026 04:01
发 1.4.0,打出来的却是 velashell.redis-0.1.0.vpx。

原因是我把版本模型设计错了。打包器出的文件名是 <id>-<plugin.json 的 version>.vpx,
宿主里显示的插件版本读的也是它 —— 与 MSBuild 那边的 VelaPluginsVersion 毫无关系。
而 Set-Version.ps1 只写了 Directory.Build.props 与 README 横幅,plugin.json 从来没动过,
四个插件就一直停在初始的 0.1.0。

我原来的设计是"各插件版本各自演进,Redis 发 0.2.0 与 Telnet 无关",按那个模型
plugin.json 本就不该被流水线碰。现在按你的要求改成**统一发布列车**:
一次 Release,所有插件同上一个版本号。

Set-Version.ps1 新增第三类落点:动态枚举 plugins/*/plugin.json,把标签里的版本
写进每个 "version"。动态枚举而不是写死四条 —— 新增插件时没人会记得回来改脚本,
而漏掉的后果是那个插件的 .vpx 永远停在初始版本号上,且不会有任何报错。

正则只认顶层的 "version" 键:带引号前缀天然排除了 minSdkVersion 这类以 Version
结尾的键名(它们里面没有 `"version` 这个子串)。plugin.json 是 JSONC,所以走正则
而不是 JSON 反序列化 —— 后者会把满文件的注释全部吃掉。实测 diff 只有 version 那一行。

代价说清楚:没改过的插件也会跟着涨版本,用户那边会看到一次"更新"。
换来的是"这台机器上装的是哪一批插件"只有一个答案,排查时不必逐个去问版本。
README、plugins/README.md、release.yml 头注释、脚本 docstring 里描述旧模型的段落一并改了,
并加了一句"别手改 plugin.json 的 version" —— 手改也会在下次发版被标签盖回去。

版本线定到 1.4.0(上一版我按你当时发的 1.0.0 设的),主仓库的
VelaPluginsBundleVersion 同步改回 1.4.0。

验证:六个落点全部写到 1.4.0;实际打包产出 velashell.{redis,s3,telnet,hello-world}-1.4.0.vpx,
vela-plugin info 读回来是 `plugin velashell.redis v1.4.0` 且 flags 含 Signed;
脚本四条路径退出码 0/0/1/0,无"未设置";构建 0 警告 0 错误,dotnet test 退出码 0,
两个工作流 YamlDotNet 解析通过。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TJqvmBbGKDA6UCpVeGqYpG
本次提交彻底删除了 VelaShell.Plugin.HelloWorld 示例插件及其所有相关资源,包括解决方案引用、AXAML 面板视图及后置代码、插件主实现、项目文件、插件声明、说明文档,以及测试工程和全部测试代码。该插件及其测试将不再随项目构建和分发。
@joesdu
joesdu merged commit 6a70173 into main Aug 21, 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