dsh-deepseek-web-login 0.5.1 → 0.5.2

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,28 @@
2
2
 
3
3
  本项目遵循大致语义化版本;日期为本地时间。
4
4
 
5
+ ## 0.5.2 — 2026-09-27
6
+
7
+ > 限流时也能自动换号接下去,不用再手动重发。
8
+
9
+ ### 改进
10
+
11
+ - **限流也能自动换号接下去**:以前限流是「20 秒退避 + **同一个账号**重试」——
12
+ 多半还是失败,整轮停下要你手动重发;而封禁早就有「短退避 + 换号」的救急路径,两者不对称。
13
+ 现在限流同样走这条路:**能换号 ⇒ 2 秒**退避,重发时自动换上别的账号继续跑。
14
+ - 面板的「上次自动换号」会说明**原因**(`,原账号刚被限流` / `,原账号不可用`)——
15
+ 按时间轮换与"原账号出问题提前换走"在观感上都是"任务突然变慢",后者还解释了为什么没等满间隔。
16
+
17
+ ### 说明
18
+
19
+ - 换号有两条约束,缺一不可:**窗口 3 分钟**(限流发生在 3 分钟以外就不再为它换号 ——
20
+ 那时多半早恢复了,不值得付全量重发的代价)与**冷却 3 分钟**(距上次换号不足 3 分钟不换)。
21
+ 冷却防的是最坏情况:万一多个账号接力被限流,没有它就会在几分钟内把账号库轮一遍。
22
+ - 换号时会**跳过同样刚被限流的账号**(切过去只会白搭一轮全量重发)。
23
+ - 限流时刻只记在**内存**里、不写进账号记录 —— 写进去会让界面把"刚才发太快了"
24
+ 显示成"账号受限",而且那记录会一直留着。
25
+ - **没开自动换号的用户行为完全不变**(依旧 20 秒退避)。
26
+
5
27
  ## 0.5.1 — 2026-09-27
6
28
 
7
29
  > 面板能看见「上次自动换号」了;另修两处与现状矛盾的说明。
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", () => {