Skip to content

🐛 修复脚本设置页更新 URL 回显 meta.js 导致下载地址被改写 - #1795

Open
CodFrm wants to merge 1 commit into
mainfrom
fix/1793-settings-update-url
Open

CodFrm wants to merge 1 commit into
mainfrom
fix/1793-settings-update-url

Conversation

@CodFrm

@CodFrm CodFrm commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Checklist / 检查清单

  • Fixes mentioned issues / 修复已提及的问题
  • Code reviewed by human / 代码通过人工检查
  • Changes tested / 已完成测试

背景

#1793 反馈导入备份 / WebDAV 恢复后更新链接从 xxx.user.js 变成 xxx.meta.js。排查后根因不在导入:导入与网页安装产出的数据一致(downloadUrl=xxx.user.js、checkUpdateUrl=xxx.meta.js),问题出在新 UI 编辑器「设置」页的「更新 URL」输入框。

  • 输入框初值为 checkUpdateUrl ?? downloadUrl,因此回显 meta.js;旧 UI(v1.4.0 ScriptSetting)回显的是 downloadUrl,这是 ♻️ 新 UI 重写:shadcn/ui + Tailwind v4 + React 19 全面重构表现层 #1514 重写时引入的回归。
  • 输入框失焦、或切换「检查更新」开关,都会把该值传给 setCheckUpdateUrl,SW 端会把它同时写入 downloadUrl 与 checkUpdateUrl,下载地址由此被改写为 meta.js;之后的备份 / 同步会把坏值带走。

影响范围是所有「从 URL 安装且未同时声明 @updateURL + @downloadURL」的脚本,不限于导入。

本次改动

  • 「更新 URL」输入框恢复旧行为,回显 downloadUrl。
  • placeholder 由 script.meta.js 改为 script.user.js:该字段会被写成下载地址,原占位符引导用户填入 meta.js,属同一缺陷。
  • 原测试断言回显 a.meta.js(固化了错误行为),改为 a.user.js;新增「未修改直接失焦」「切换检查更新开关」两条回归用例,断言提交的是下载地址。

已知限制

  • 已被改写为 meta.js 的脚本不做数据修复(维护者决定),需用户手动改回。
  • 与旧版一致,保存时 setCheckUpdateUrl 仍把同一地址写入两个字段,保存过一次后检查更新改为拉取完整 user.js,功能正常,仅流量略多。

关联

close #1793

验证

base 58309d5e / head 64179d61,git diff --name-only 仅含 SettingsPane.tsx 与 SettingsPane.test.tsx。

  • 修复前:3 条更新 URL 用例全部失败(回显 / 提交为 a.meta.js);修复后 pnpm vitest run src/pages/options/routes/ScriptEditor/tabs/SettingsPane.test.tsx → 37 passed。
  • prettier --check、eslint(两个改动文件)、pnpm run typecheck 通过。
  • ScriptEditor 目录整体运行时 index.test.tsx / ResourcePreviewDialog.test.tsx 有间歇失败:在未改动的 main 上同样复现(同两文件 3 次运行中 1 次 2 failed),index.test.tsx 整体 mock 掉了 SettingsPane,与本改动无关,未在此 PR 处理。
  • 未在构建产物中做手动验证。

@CodFrm
CodFrm force-pushed the fix/1793-settings-update-url branch from 9b56b77 to 64179d6 Compare October 20, 2026 04:01
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.

[BUG] 外部导入或webdav备份导入后,脚本更新链接xxxx.user.js变为xxxx.meta.js

1 participant