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

    CloudSyncRelated to CloudSyncP1🔥 重要但是不紧急的内容

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions