Commit Graph
31 Commits
Author SHA1 Message Date
yml2213 ab755b8d04 feat(ui): 增加作战表与日志面板中间可拖拽调节分割条,紧凑化表格列宽
- 布局增加左右可拖动分割条:支持按住拖拽自由调节左侧作战表与右侧面板宽度比例(30%~85%),双击恢复默认 62%,支持 localStorage 本地记忆
- 紧凑优化作战表列宽:各列宽度微调,scroll 改为 max-content,彻底解决小分辨率下最右侧'兑换记录'按钮被横向滚动条遮挡问题
- 升级版本号至 0.5.3
2026-10-17 19:52:32 +08:00
yml2213 96ecd4d1e2 chore: 更新构建生成的 package-lock 与 md5 2026-10-17 19:30:13 +08:00
yml2213 9d4401b9f3 chore(release): 升级版本号至 0.5.2
- 升级版本号至 0.5.2(包含双时间日志分列高亮展示、账号专属兑换记录明细弹窗与查询联动)
- 同步更新 internal/version/version.go、wails.json 与 frontend/package.json
2026-10-17 19:28:55 +08:00
yml2213 f89b54dc49 feat(gui): 优化双时间日志呈现与账号兑换记录弹窗明细查看
- 参考斗鱼重构日志双时间展示:本地时间与虎牙估算时间拆分,青色高亮 Tag 醒目显示 H:xx:xx:xx.xxx,排版自适应不折行;新增一键复制带双时间格式日志与清空功能
- 增强账号兑换记录交互:账号列表新增专属「记录」按钮,点击弹出专属兑换记录明细 Modal(支持查看全部历史订单、缩略图、积分、格式化时间,单号一键复制)
- 优化顶部批量「兑换记录」流程:查询完成后自动切至「兑换记录」Tab(由原'复盘'重命名),并显示总记录条数与友好空状态提示
- 验证:Vite 前端打包与 Go 全套单测均干净通过
2026-10-17 19:23:19 +08:00
yml2213 4e8fb03705 chore(release): 升级版本号至 0.5.1
- 同步更新 internal/version/version.go 中的单一版本号来源 Version 为 0.5.1
- 同步更新 wails.json productVersion 为 0.5.1
- 同步更新 frontend/package.json version 为 0.5.1
2026-10-17 19:00:28 +08:00
yml2213 23f964e768 feat(config): 将默认活动 SID 更新为最新活动 2277
- 后端默认值与测试:DefaultConfig 默认 SID 改为 2277(旧活动 2203 已停止返回商品),更新单元测试断言
- 前端默认值与平滑迁移:pickConfig 默认 SID 设为 2277,localStorage 自动将旧版 2203 迁移至 2277
- 验证:Go 单测与 Vite 前端打包干净通过
2026-10-17 18:58:38 +08:00
yml2213 d53306076e feat(config): 默认并发调优至 30 并将全套抢购设置置为开箱即用
- 默认并发调优至 30:匹配单实例 30 账号最佳配置,配合 300ms 首发错峰使 30 账号全员在 0~300ms 免排队出击,5 实例多开整机在途约 150
- 前后端默认值与平滑迁移:对齐 Concurrency 30、DelayMS 120、WindowSeconds 30、SID 2203 等,旧配置自动升级
- 测试验证:全套 Go 单元测试通过,前端 Vite 构建成功
2026-10-17 18:56:18 +08:00
yml2213 a135effd7a feat(sniper): 将预热提前量调优至 10 秒并设为异步安全默认
- 预热时序重构:WarmupLead 从 2s 延长至 10s,ResyncLead 从 3s 延长至 15s;开抢前 10s 开始异步建连,开抢前 5s 全部就绪待命
- 兼顾零建连延迟与发令安全:既彻底杜绝了 2s 极限时间被慢网络超时拖垮发车的问题,又保留了首发 0 建连耗时的长连接极速优势
- 默认配置:Prewarm 恢复为默认开启,并在界面增加明确的调度行为提示
- 验证方式:go test ./... -count=1 全通,npm run build 构建通过
2026-10-17 18:36:39 +08:00
yml2213 6e5beac151 refactor(sniper): 对齐 dygou_go 调度架构,增加双时间日志并解耦预热
- 抢购调度重构:参考 dygou_go 将 sniper 拆分为独立子模块(runner/run_control/retry/exchange/classify/config/summary/category/helpers);移除全局自适应降速与轮次上限,采用账号独立循环、统一账号级退避、单请求并发闸门与首发错峰
- 预热与建连优化:默认关闭预热(避免单账号超时连坐整机开抢),开启时转为后台非阻塞协程;WebSocket 握手超时从 10s 降至 1500ms
- 双时间日志:logger 增加 SetServerOffset,校准后日志前缀自动渲染「本地时间(H虎牙估算时间)」,实现跨机器绝对毫秒对齐
- 默认配置调优:版本提升至 v0.5.0,默认线程调为 2(缓解多实例并发限流),前端自动平滑迁移
- 验证方式:go test ./... -count=1 全通,npm run build 构建正常,单测覆盖双时间与预热配置
2026-10-17 18:29:17 +08:00
yml2213 2451466bed v0.4.1:新增 CK 有效性检查并修复抢购调度 2026-10-17 14:24:32 +08:00
yml2213 8b3b14654f v0.4.0:窗口调度/限流分类/可观测性,抢购改每账号独立循环,移除 CLI 只保留 GUI 2026-10-16 18:14:30 +08:00
yml2213 29aed15e4e 版本号 0.3.0 并补齐 timeSync 生成绑定
- internal/version/version.go:0.2.1 -> 0.3.0。版本号单一来源,exe 文件名、编译注入(-ldflags)与界面左下角标签共用这一处
- wails.json:info.productVersion 同步为 0.3.0(只影响 exe 文件属性)
- frontend/wailsjs/go/models.ts:补上 gui.Config.timeSync 字段。这个绑定只有 wails build 会生成(npm run build 不会),所以上一版加 TimeSync 时漏提交了
- 已执行 ./scripts/build-windows.sh 产出 build/bin/huya-gui-v0.3.0.exe(PE32+ GUI x86-64,内嵌版本号 0.3.0)
2026-10-16 16:15:17 +08:00
yml2213 828236eb1d 新增服务端时间校准,定时抢购按服务端时钟对齐触发
- 协议事实确认:launch.pingSignal 的 signal_ap_start/signal_ap_end 是 Unix 毫秒墙钟时间戳。真实夹具 signal_ap_start=1791891743288 对应北京时间 2026-10-13 19:42:23,与同批抓包订单号里的秒级时间戳 1791891953 同日;start 是服务端收到请求的时刻、end 是写出响应的时刻,实测相差 13ms
- 新增 internal/huya/timecal.go:TimeSample/TimeCalibration/OffsetHistory/RunTimeCalibration/AlignedTriggerTime/TryCalibrateServerTime。偏移 = signal_ap_start − (SentAt + RTT/2),误差上界取 RTT/2;默认 3 轮采样取「误差上界最小、其次 RTT 最低」的样本,再对最近 3 次偏移取中位数平滑;ServerTimestamp 丢弃解析后不在 2020-2100 的时间戳,避免字段单位变化时按错误偏移挪走抢购窗口
- HTTPClient 与 WSSClient 各自实现 TimeCalibrator(PingSignalSample 共用 pingSignalSampleWith 采样逻辑),各自持有 OffsetHistory
- launch.go:ServerElapsed 改用 PingSignalStartKey/PingSignalEndKey 常量
- CLI:新增 -time-sync(默认开),-at 按服务端时间理解,触发时刻 = 目标 − lead − 偏移;校准日志输出服务端时间、本机偏移、误差上界、RTT 与样本数
- GUI:Config.TimeSync(默认 true)+ 对齐触发与校准日志;前端设置面板新增「时间校准」开关并纳入配置读写
- 测试:新增 internal/huya/timecal_test.go,覆盖真实夹具时间戳换算、秒级/异常值拒绝、RTT/2 中点公式、多轮取优、中位数滤跳变、全失败降级与部分失败容错、跨钟差的触发时刻换算;README 补「时间校准」一节
- 验证:gofmt 干净、go build ./...、go test ./...、go test -race(huya/sniper/gui)、前端 npm run typecheck/build 全部通过
2026-10-16 16:13:29 +08:00
yml2213 0294606807 参考 dygou_go 优化抢购调度:请求级并发闸门、售罄继续探测与任务汇总
- 并发额度下沉到单次请求:runState.sem 只覆盖一次在途请求(列表/兑换/刷新),账号在退避等待期间释放额度;旧实现把额度给整个账号循环,退避中的账号一直霸占额度,账号多时互相饿死
- 售罄不再默认终止:normalizeConfig 去掉 StopOnSoldOut 默认 true,售罄按退避继续探测到轮次结束(别人取消或锁单过期会让库存回流);CategoryOffShelf 拆成独立分支,下架/不存在仍终止该奖品;删除已无意义的 ContinueOnSoldOut
- 退避统一加 0-25% 抖动(jitterDuration,只往上抖,配置值仍是下限),避免多账号在同一时刻整批重试形成周期尖峰
- 新增 Runner.OnSummary/RunSummary:轮次、账号、目标、耗时、列表/兑换/积分/记录请求次数、成功账号数与结局分布(按次数排序),在 refresh.Wait() 之后回调;CLI 与 GUI 各输出一行汇总加逐类结局
- 取消清理:等待额度的账号返回 action=exchange_canceled 且调用方直接返回,停止监控时不再为每个排队账号刷错误结果
- http 传输补连接池参数(MaxConnsPerHost=64、MaxIdleConns=128、MaxIdleConnsPerHost=64、IdleConnTimeout=30s),多账号不再反复重建连接
- CLI/GUI 的 waitUntil 从 200ms 轮询改为一次性定时器,消除 0-200ms 随机延迟(正好错过开抢窗口)
- GUI 抽出 runnerConfig(),用 ListBeforeExchange=!DirectExchange 表达界面语义,修复「直接兑换」开关失效(旧实现被引擎强制回落直兑,价格/库存过滤不生效)
- 测试:sniper 新增售罄继续探测、StopOnSoldOut 即停、下架终止、在途请求数等于并发数、汇总含刷新请求、抖动区间等用例;GUI 新增 runnerConfig 用例;README 补「抢购调度与退避(2026-10-16 调整)」
2026-10-16 16:06:49 +08:00
yml2213 d21b06a311 新增商品类目(限量返场/精英专享)支持与版本号 0.2.1
10.15 抓包确认:积分中心商城 PlayMallUI.queryAllocation 的商品与 webActUI.getActPrizeList(sid=2277) pid 完全一致,属于同一批商品,因此列表无需接商城链路;真号实测 sid=2277 返回 30 项(限量返场 99 共 12 项 + 精英专享 101 共 18 项),sid=2203 已返回空。\n\n- huya:解析商品 tag23/25/26/27/28(发布时间、上架/下架时间、每日时段),新增 PrizeInfo.CategoryIDs/InCategory/StartsAt/NotYetOnSale 与响应级 CategoryStats/CategorySummary/FilterByCategory,列表日志带类目统计\n- sniper:Config.Category 限定自动选品范围,未命中提示带类目\n- CLI:新增 -category / -category-only\n- GUI:Config.Category、ListPrizes 回传类目字典与统计;界面商品列表按类目分页签、每行标注类目、未上架显示上架时间与倒计时,所选类目随配置提交给监控\n- 测试:新增 internal/huya/category_test.go 与 sniper 类目用例;README/WSS_NOTES 补记结论
2026-10-15 18:23:38 +08:00
yml2213 4208f1d82f 版本号单一来源,新增带版本号的 Windows exe 构建脚本 2026-10-14 21:34:08 +08:00
yml2213 cff831ae47 默认传输通道改为 WSS,http 作为可回退通道 2026-10-14 21:33:23 +08:00
yml2213 8c4b15066f 新增实例槽位隔离与结构化日志,多开不再共用日志与账号 2026-10-14 21:32:49 +08:00
yml2213 f96fa7d858 账号作战表新增「兑换结果」列,移除已废弃的分析文档
- 账号作战表新增「兑换结果」列:明确展示 已抢到(含奖品名与订单号)/ 未成功(含原因与尝试次数)/ 已兑换(来自服务端兑换记录兜底)/ 抢购中 / 待抢购 / 已跳过重复兑换
- 抢到奖品的账号整行标绿并加左侧色条,一眼可见
- 复盘表时间列改为可读时间(秒级时间戳格式化)
- 按用户确认删除已废弃的 purchase_logic_analysis.md
2026-10-13 20:46:42 +08:00
yml2213 41565566c5 GUI 日志落盘,修复同一奖品重复兑换与监控结束竞态
- 日志落盘:新增 internal/gui/logfile.go,写到 <用户配置目录>/huya-go/logs/huya-go.log,单文件 5MB 后滚动保留 5 个备份;「日志」页签顶部显示路径并支持打开目录/复制路径;写盘失败自动降级为仅界面输出
- 修复重复兑换:界面选品会同时提交 pid、名称与 targetText 里的同一 pid,normalizeTargets 现按 pid/名称去重;runState 再按「账号+奖品」记账,多个 target 命中同一奖品时只兑换一次(新增 skip_duplicate 结果)
- 修复 use of closed network connection:成功后的异步刷新改为 runState.refresh 等待,RunTargets 返回前不再提前关闭连接
- queryHttpDns 增加 single-flight 与失败冷却,多账号并发建连只解析一次
- 新增 internal/gui/logfile_test.go 与 sniper/huya 回归测试;README 补日志说明
2026-10-13 20:34:43 +08:00
yml2213 36aadae90a 按 10.13 抓包对齐 WSS:host 自动解析、exp 回传、pingSignal 与兑换记录字段
- 新增 launch.queryHttpDns:类型定义 + HTTPClient.QueryHttpDns + WSSClient.resolveHost(TTL 缓存、多 host 轮询、失败回退默认 host);Host 留空或等于历史默认值即视为自动解析
- WSS 握手 baseinfo 补 tag5=exp 与 tag10 空 customHeaders;UpdateUserExpsReq(cmd23) 改为回传 getConfig 的版本 map(缓存供重连复用)
- 新增 launch.pingSignal:HTTP 预热改走 pingSignal,WSS 预热在建连后探测业务通道(失败仅记日志)
- UserPrizeInfo 补 tag12 orderId/tag14 图标/tag16 prizeId/tag17 shopItemId/tag19 itemId/tag20 ext/tag21 exchangeDate,前端复盘表加订单号列
- taf 补 WriteListString/ReadListString/ReadMapStringInt64/ReadMapStringStruct
- 新增 internal/huya/launch_test.go:用抓包真实报文做字节级夹具(baseinfo 122B、queryHttpDns 请求 93B、记录 308B 等)
- CLI -wss-host 默认改为留空;GUI 设置支持留空并给出占位提示;README/WSS_NOTES 同步协议细节
2026-10-13 20:19:14 +08:00
yml2213 e8bb4eb571 补全过滤入口与直接兑换,优化兑换分类和 WSS 建连
- GUI 接线 Exchange 绑定:新增「直接兑换」按钮,结果带 category/message 并进入结果面板
- 补 -max-price/-min-left(CLI 与 GUI 设置),Target 的价格与库存过滤不再悬空
- 删除死代码 sendUpdateUserInfo 及其请求结构体(浏览器流程不含该帧)
- ClassifyExchange 改为多路判定:合并 msg/actPreCondition/exchangeInfo 文案,status=200 且有 orderId 视为成功,新增 condition 分类(precondition 门禁)
- WSS 建连改为锁外 dial、锁内注册,同 uid 并发调用共享一次握手
- 默认传输层统一为 http(CLI/GUI/README),.gitignore 忽略 .DS_Store
- 同步 Wails 依赖升级(2.12.0 -> 2.15.0)并重新生成前端绑定
2026-10-13 19:57:08 +08:00
yml2213 72d59670d4 增加异步日志和库存展示 2026-07-07 08:04:54 +08:00
yml2213 327b996079 优化定时抢购界面 2026-07-06 22:30:48 +08:00
yml2213 ce6fdcc371 优化 CK 管理和商品缓存 2026-07-06 21:33:52 +08:00
yml2213 6e20ce425b 移除已忽略构建产物 2026-07-06 20:30:43 +08:00
yml2213 6d8be28225 优化 CK 导入和监控配置 2026-07-06 20:30:09 +08:00
yml2213 f78c731f32 对齐 WSS 流程并更新配置 2026-07-06 19:15:14 +08:00
yml2213 52015da857 继续补全 wss 2026-07-06 18:47:10 +08:00
yml2213 1d15fadfd9 修复 wss 部分错误 2026-07-06 18:30:34 +08:00
yml2213 4235cce4f5 init 2026-07-06 18:08:23 +08:00