Skip to content

[BUG] 脚本同步存在问题 #1077

@DreamNya

Description

@DreamNya

问题描述

Image

通过日志发现,有多个脚本提示更新失败。

  • 1、4、5脚本是通过 ScriptCat VSCode 同步插件安装的(即本地新建,无源)
  • 2、3脚本是通过脚本猫脚本站安装的(即正常的更新链接)

上述脚本更新时均显示 Failed to fetch,检查脚本列表后,发现以下现象及问题:

1. 脚本安装链接异常
大约有一半的脚本,安装链接被变为chrome-extension://liilgpjgabokdklappibcjfablkpcekh
(提示更新失败的脚本安装链接均为这个扩展链接)

Image

这应该就是导致脚本更新Failed to fetch的原因
这些脚本原本应该有的脚本安装链接是脚本猫脚本站,有的是脚本猫VSCode同步即本地新建
至于变成chrome-extension://liilgpjgabokdklappibcjfablkpcekh的原因,我猜测是我前几天开启脚本同步导致的


2. 脚本更新时间异常
所有脚本的最后更新时间都变成了相同的时间,也许是脚本检查更新时间,而不是脚本实际更新时间

Image

3. 脚本重复安装
出现了两个重复 GitHub Commit 定时监控 脚本(其余脚本暂未发现重复)。
这两个脚本的代码内容及 Headers 完全一致,但 UUID、安装链接及存储数据不同。

  • 脚本 A(禁用状态):

    • UUID: dd866e3c-121c-443a-981b-ae0eed1e6c99
    • 安装链接: https://scriptcat.org/scripts/code/933/GitHub Commit 定时监控.user.js
    • 脚本存储: 为yaml默认设置
Image Image
  • 脚本 B(开启状态):

    • UUID: 5442c82d-b353-4336-a30c-f5b8b0a4648d
    • 安装链接: chrome-extension://liilgpjgabokdklappibcjfablkpcekh
    • 脚本存储: 为我一直在使用的实际设置
Image Image

开启状态的脚本 B 显然是我本地原本使用的版本,但其安装链接被同步功能改为了 chrome-extension://liilgpjgabokdklappibcjfablkpcekh
禁用状态的脚本 A 应该是开启同步后,从云端重新安装的版本
这2个脚本实际上是同一个脚本,脚本代码以及 Headers 均完全相同(因为我是通过 UserConfig yaml 控制脚本设置的),只有脚本存储不相同

基于上述现象,说明脚本同步功能存在以下问题:

1. 脚本同步会修改安装链接/最后更新时间
修改安装链接直接导致自动更新失败、修改最后更新时间导致用户无法知道脚本实际更新时间

暂未观察到其他脚本元数据被修改的情况,但是建议同样排查一下
2. 脚本同步会重复安装脚本,可能造成潜在脚本冲突
具体原因未知,但是我能确定同步之前不存在安装了相同脚本的情况
也许是云端存在旧版本,本地存在新版本,脚本猫同步后认为这新旧脚本是2个不同的脚本,从而一起安装了

#1033 这个ISSUE可能需要重提
也许脚本猫可以优化脚本安装逻辑,安装时不再强依赖UUID,而是通过Headers(例如 @name + @namespace)检测一遍是否存在可能相同的脚本,然后向用户提示可能存在潜在脚本重复安装冲突,提示让用户去抉择合并/覆盖/保留

重现步骤

Image

脚本猫版本

1.2.1

操作系统以及浏览器信息

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0

补充信息 (选填)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions