dsh-deepseek-web-login 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,48 @@
2
2
 
3
3
  本项目遵循大致语义化版本;日期为本地时间。
4
4
 
5
+ ## 0.5.3 — 2026-09-27
6
+
7
+ > 修掉一个"重启后前 3 分钟里限流不换号"的窗口 —— 0.5.2 的漏洞。
8
+
9
+ ### 修复
10
+
11
+ - **限流换号的冷却用错了基准**:0.5.2 里冷却要求「距上次换号 ≥ 3 分钟」,而"上次换号"
12
+ 实际上取的是**插件启动时刻**(它同时还要给"按时间轮换"当计时起点)。两件事的语义不同 ——
13
+ 一个是"从启动算起过了多久",一个是"上次真的换过号是什么时候" —— 在"启动后还没换过号"
14
+ 这段区间里,它们给出**相反**的答案。
15
+ 后果:**每次重启之后的 3 分钟内撞上限流,都不会换号**。而那恰好是最容易撞上的窗口
16
+ (重启往往就是为了接着跑任务)。
17
+ 现在冷却改用独立的"上次真的换过号"时刻(只在换号成功与手动切号时推进):
18
+ **本次启动还没换过号 ⇒ 不套冷却**,限流立刻可换。
19
+
20
+ ### 说明
21
+
22
+ - 只影响"限流换号"这条路径的时间判定;按时间轮换、封禁换号、退避分流都不变。
23
+ - ⚠️ **升级后需要重启 DSH 才生效**(`link:` 安装方式不热重载)。
24
+
25
+ ## 0.5.2 — 2026-09-27
26
+
27
+ > 限流时也能自动换号接下去,不用再手动重发。
28
+
29
+ ### 改进
30
+
31
+ - **限流也能自动换号接下去**:以前限流是「20 秒退避 + **同一个账号**重试」——
32
+ 多半还是失败,整轮停下要你手动重发;而封禁早就有「短退避 + 换号」的救急路径,两者不对称。
33
+ 现在限流同样走这条路:**能换号 ⇒ 2 秒**退避,重发时自动换上别的账号继续跑。
34
+ - 面板的「上次自动换号」会说明**原因**(`,原账号刚被限流` / `,原账号不可用`)——
35
+ 按时间轮换与"原账号出问题提前换走"在观感上都是"任务突然变慢",后者还解释了为什么没等满间隔。
36
+
37
+ ### 说明
38
+
39
+ - 换号有两条约束,缺一不可:**窗口 3 分钟**(限流发生在 3 分钟以外就不再为它换号 ——
40
+ 那时多半早恢复了,不值得付全量重发的代价)与**冷却 3 分钟**(距上次换号不足 3 分钟不换)。
41
+ 冷却防的是最坏情况:万一多个账号接力被限流,没有它就会在几分钟内把账号库轮一遍。
42
+ - 换号时会**跳过同样刚被限流的账号**(切过去只会白搭一轮全量重发)。
43
+ - 限流时刻只记在**内存**里、不写进账号记录 —— 写进去会让界面把"刚才发太快了"
44
+ 显示成"账号受限",而且那记录会一直留着。
45
+ - **没开自动换号的用户行为完全不变**(依旧 20 秒退避)。
46
+
5
47
  ## 0.5.1 — 2026-09-27
6
48
 
7
49
  > 面板能看见「上次自动换号」了;另修两处与现状矛盾的说明。
package/lib/client.js CHANGED
@@ -1639,7 +1639,8 @@ background:var(--bg2);white-space:pre-wrap;font-size:12px}
1639
1639
  swValue.textContent = minutes === 0 ? "关闭" : `${minutes} 分钟`;
1640
1640
  const base = minutes === 0 ? "关闭时不会自动换号 —— 当前账号一直用到你手动切换为止。" : `每 ${minutes} 分钟换到账号库里的下一个可用账号(失效或正在受限的会跳过;可用的不足两个就不换)。换号会让投喂链断掉:下一轮要全量重发,历史图也要重新上传 —— 间隔越短,这个代价出现得越频繁。`;
1641
1641
  const last = lastAutoSwitchInfo;
1642
- swHint.textContent = last ? `${base}上次自动换号:${shortTime(last.at)}(${last.from} → ${last.to})。` : base;
1642
+ const why = last?.reason === "recently-throttled" ? ",原账号刚被限流" : last?.reason === "current-unusable" ? ",原账号不可用" : "";
1643
+ swHint.textContent = last ? `${base}上次自动换号:${shortTime(last.at)}(${last.from} → ${last.to}${why})。` : base;
1643
1644
  };
1644
1645
  swRange.addEventListener("input", paintAutoSwitch);
1645
1646
  swRange.addEventListener("change", () => {