chore(deps): 固定 qor5/web/v3 到 v3.2.0 - #1111
Conversation
There was a problem hiding this comment.
🔵 Needs a closer look
依赖升级会影响前端运行时(Vue patch 级别变动)且缺少自动化 UI 验证,建议人工确认关键页面交互后再合入。
Pull request overview
该 PR 将 github.com/qor5/web/v3 从 pseudo-version 固定到正式发布的 v3.1.0,并修正文档示例测试里 multipartestutils 的误用,避免在同时引入 v1/v3 时实际调用落到 v1 的实现上,从而让 github.com/qor5/web v1 回落为间接依赖。
Changes:
- 将
github.com/qor5/web/v3版本从v3.0.12-0.20250618085230-3764d0e521a8更新为v3.1.0 - 移除示例测试中对 v1
multipartestutils的显式 import,并改为使用 v3 dot import 暴露的NewMultipartBuilder() - 将
github.com/qor5/web v1.3.2从直接依赖移至// indirect(保留以满足 docgo 的依赖链)
File summaries
| File | Description |
|---|---|
| go.mod | 更新 qor5/web/v3 至 v3.1.0,并将 qor5/web v1 调整为间接依赖 |
| go.sum | 同步 qor5/web/v3 v3.1.0 的校验和变更 |
| docs/docsrc/examples/examples_admin/linkage_select_filter_item_remote_test.go | 修正 multipart test builder 的实际调用来源,避免误用 v1 实现 |
Review details
- Files reviewed: 2/3 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
Overall Grade |
Security Reliability Complexity Hygiene |
Code Review Summary
| Analyzer | Status | Updated (UTC) | Details |
|---|---|---|---|
| Go | Sep 8, 2026 10:04a.m. | Review ↗ |
Important
AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
原先 pin 的是 2025-06-18 的 pseudo-version。v3.2.0 打在那之后的 master 上,apidiff 核对过:相对原先 pin 的 commit,Go API 零变更。go.mod 只多 了这一行改动,没有连带抬升任何间接依赖。 实际带来的变化在内嵌的前端产物:Vue 从 3.5.16 升到 3.5.42;index.js 在 vite 6 下重打包,内联的 lodash 从 4.17.21 升到 4.18.1,补上了两个此前 只改了 package.json 声明、没进产物的 CVE。web 的最低 Go 版本抬到 1.26.0,admin 本来就是 1.26.0。 顺带修掉一处误 import:linkage_select_filter_item_remote_test.go 同时 引了 v1 和 v3 的 multipartestutils,两处 NewMultipartBuilder 实际走的 是 v1,导致 github.com/qor5/web v1 被算成直接依赖。去掉 v1 那行后它降 为 indirect,docgo 还依赖它,所以去不干净。
改了什么
把
github.com/qor5/web/v3从 pseudo-versionv3.0.12-0.20250618085230-3764d0e521a8换成正式发布的 v3.2.0。go.mod只有这一行变化,没有任何间接依赖被抬升。顺带修掉一处误 import。
docs/docsrc/examples/examples_admin/linkage_select_filter_item_remote_test.go同时引了 v1 和 v3 的multipartestutils,v3 是 dot import,所以两处multipartestutils.NewMultipartBuilder()实际走的是 v1。这就是github.com/qor5/webv1 一直挂在直接依赖块里的原因。去掉 v1 那行、两处调用改用 dot import 的 v3 之后,它降为// indirect。它没法完全消失,theplant/docgo(最新版 v0.0.16)的 go.mod 里写死了github.com/qor5/web v1.2.3,而docs/docsrc用 docgo。Go 层零风险
用
apidiff做过模块级导出面对比,相对原先 pin 的 commit 零 API 变更,输出为空。corejs/src/的前端源码同样零变更。web 自己的依赖全部低于 admin 现有版本,MVS 下无影响。web 的最低 Go 版本抬到 1.26.0,admin 本来就是 1.26.0。
实际变化都在内嵌的前端产物
Vue 3.5.16 → 3.5.42(
corejs/dist/vue.global.prod.js)。admin 的全局 Vue 运行时由 web 独家提供,presets/presets.go里/assets/vue.js挂的就是web.JSVueComponentsPack(),而 x 的 vuetifyx bundle 把vue标为 external,用的正是这个全局 Vue。dist/index.js在 vite 6 下重打包,462018 → 466818 字节。源码没变,增量来自 minifier 标识符重新分配、新的 CJS 包装,以及内联的 lodash 从 4.17.21 升到 4.18.1。后者补上了 CVE-2026-2950 / CVE-2026-4800,此前只改了package.json声明、产物没重建,实际加载的代码里那两个洞还在。lodash 4.18 会拒绝
__proto__/constructor/prototype作为_.unset和_.omit的路径 key。web 把整个 lodash 再导出成plaid().lodash,所以下游理论上能碰到,但 admin 和 x 的代码里一处这样的用法都没有。顺带修正了一个既有的版本错配
升级前:运行时 Vue 3.5.16,而 x 的 vuetifyx 编译期 Vue 是 3.5.33,运行时比编译产物旧 17 个 patch。这个方向是危险的,vuetifyx 万一引用了 3.5.17 之后新增的运行时 helper,3.5.16 里根本没有。
升级后:运行时 3.5.42 高于编译期 3.5.33,方向掰正了。新运行时跑旧编译产物是安全方向。将来 x 升到含 tiptap v3 的版本(编译期也是 3.5.42)就完全对齐。
验证
go build ./...通过,go vet ./...只剩既有的pagebuilder/model_events.go:101 unreachable code。前端没有实测。Vue 从 3.5.16 到 3.5.42 是同一 minor 线的 patch 累积,加上一次 vite 6 重打包,都压在这一次变更里。merge 前需要手点一遍富文本、列表 filter、日期选择器。
不在这个 PR 里的
qor5/x/v3保持不动。它的升级会连带抬走一大批间接依赖(confx、viper、cast、appkit、gorm mysql driver 等),而且 vuetifyx bundle 有实际变化,需要单独一次 QA。拆开做,出问题时归因清楚。