v1.2.38
🃏 手牌层级与标准排序修复
- 🃏 选牌层级修复:已选牌现在压在相邻手牌下方,不再挡住继续选择其他牌
- 🔢 标准手牌顺序:玩家手牌固定按
3 4 5 6 7 8 9 10 J Q K A 2 小王 大王整理 - 🎨 UI 降噪:收轻选牌高亮阴影和抬起反馈,减少大手牌下的视觉遮挡感
- ⚙️ 隐藏设置纠偏:智能分组排序默认关闭,避免不可见设置继续影响实战手牌
- 🧪 回归补强:新增手牌顺序与相邻牌可点击性的浏览器自查
v1.2.37
🔧 静默牌局收尾与少牌提醒自查
- 🧹 死路径清理:移除渲染器内残留的评论引擎引用、聊天消息渲染函数和语音滑块绑定
- 🌐 LAN 兼容修复:旧客户端发来的聊天消息现在会被安全忽略,不再调用已移除的聊天 UI
- ⚠️ 少牌提醒自查:新增 UI 回归验证“我就剩 2 张牌了”提醒确实显示
- 🔇 静默体验加固:继续确保牌局不出现闲聊、快捷短语、语音或解说气泡干扰
- 🧪 全链路验证:重新覆盖 UI、移动横屏、SFX/BGM、LAN、挑战、回放和 console error 检查
v1.2.36
🃏 屏内手牌与静默牌局优化
- 🃏 手牌不再超屏:玩家 17 张与地主 20 张手牌都收拢在屏幕内,不再依赖横向滚动浏览
- ✅ 选牌安全区修复:选中牌抬起后仍保持在视口内,避免顶部或左右被裁掉
- 🔇 静默牌局:移除聊天、快捷短语、语音播报、战斗解说入口和气泡,只保留必要 SFX/BGM
- ⚠️ 少牌提醒:玩家少于 3 张牌时显示“我就剩 X 张牌了”式提醒,替代无关对话
- 🎞️ 动画降噪:减少持续呼吸、头像脉冲、选牌和过牌动画强度,整体 UI 更稳
- 🧪 测试补强:UI 回归新增屏内手牌、20 张地主手牌、选牌不出屏、聊天语音入口移除和移动横屏不溢出断言
v1.2.35
🖱️ 手牌滚轮冲突修复
- 🖱️ 滚轮行为拆分:普通滚轮现在只横向浏览大牌手牌,不再同时触发牌面缩放
- ⌨️ 缩放手势明确:牌面缩放改为
Ctrl/⌘ + 滚轮,避免和浏览手牌抢同一个操作 - ⚙️ 设置文案同步:交互设置里的“滚轮缩放”改为“Ctrl/⌘滚轮缩放”,和真实操作一致
- 🧪 测试补强:UI 回归新增普通滚轮不缩放、Ctrl 滚轮才缩放的冲突断言
v1.2.34
↔️ 大牌手牌浏览优化
- 🖱️ 滚轮横向浏览:桌面端鼠标滚轮现在可直接推动大牌手牌横向移动,不用精准拖动滚动条
- ↔️ 滚动边界反馈:手牌溢出时加入首尾渐隐,帮助判断左右还有没有牌
- 📊 浏览进度反馈:手牌底部加入细进度条,快速感知当前浏览位置
- 🧪 测试补强:UI 回归新增滚动状态初始化、滚轮横向滚动和进度变化断言
v1.2.33
🃏 大牌手牌滚动修复
- 🃏 真正大牌模式:桌面玩家手牌提升到 184×256,宽屏提升到 220×306,牌面面积约为旧版 5 倍以上
- ↔️ 横向滚动承载:17 张手牌不再被强行压进一屏,改为大牌横向浏览,首张牌保持完整可见
- 📐 底部牌区加高:玩家区域为大牌重新分配高度,减少牌面、提示和控制按钮之间的拥挤
- 🧪 测试补强:UI 回归改为检查大牌尺寸、横向滚动启用、首张不裁切和控制层透明
v1.2.32
🃏 手牌放大与遮挡修复
- 🃏 玩家手牌放大:桌面端玩家牌从 82×114 提升到 122×170,宽屏进一步提升到 150×210,可见牌面显著变大
- 🧱 黑色横条修复:移除控制层整条半透明背景,只保留按钮组自身背景,不再挡住手牌
- 📐 布局防裁切:手牌区加宽加高,减少重叠并提高层级,首尾牌不会被桌面边界裁掉
- 📱 移动横屏修复:低高度横屏单独调整控制区位置并隐藏冗余提示,避免按钮或快捷键提示压住手牌
- 🧪 测试补强:UI 回归新增手牌尺寸、裁切、控制层透明和移动横屏不重叠断言
v1.2.31
🎧 音频开关与状态恢复深度修复
- 🔊 总音效开关修复:游戏内按钮或快捷键关闭后再次开启,会恢复菜单/牌局循环 BGM,不再只恢复静态开关状态
- ♿ 按钮状态同步:音效按钮现在同步
aria-pressed、标题和读屏文案,关闭/开启状态更清楚 - 🎵 一次性音乐保护:胜利/失败结算音乐仍不会因恢复音效而重复播放
- 🛡️ 音频底层防护:Web Audio 节点连接增加空 compressor 回退,降低边界状态下静音或异常风险
- 🧪 测试补强:新增总音效开关恢复 BGM 的回归测试
v1.2.30
🎧 UI/UX/SFX/BGM 体验修复
- 🎵 BGM 修复:页面切到后台再返回时,菜单/牌局背景音乐现在能按原场景恢复,不会静默丢失
- 🔊 SFX 设置补全:恢复“叫分音效”独立开关,和已有音频代码、历史公告保持一致
- ♿ 音量控件改进:BGM / SFX / 语音滑块补全 label 关联,键盘和读屏操作更清楚
- 🧪 自查补强:默认设置测试覆盖叫分音效开关,防止设置面板再次缺项
v1.2.29
🔧 总体 Bug / UIUX / SFX / BGM 深度修复
- 🚨 结算致命修复:修复赛季任务上报引用不存在的
isWin,避免胜负结算后统计、回放、复盘链路被异常中断 - 📊 牌风数据修复:修复反春天字段拼写不一致,牌风分析现在能正确累计反春天表现
- ⚔️ 极限挑战修复:星级统计不再依赖不存在的
history.type字段,炸弹、纯顺子、总出牌数评级恢复准确 - 🎯 交互修复:极限挑战规则拦截返回
false时,出牌按钮不再误判成功、清空选牌或隐藏控制区 - 🧪 测试补强:新增挑战星级 history 兼容测试与 Renderer 失败反馈测试;赛季任务和牌谱导入的预期失败路径不再污染控制台
v1.2.25
🔧 UI/UX/SFX/BGM 全面深度修复(第六轮)
- 🎞️ 牌谱工坊修复:菜单隐藏、toast 方法不存在、clipboard 崩溃、分享码有效性校验、删除确认、空输入提示、导入防抖、反春天自动保存、过渡动画
- 🎵 音频修复:audio.js
nodeRef未定义;极限挑战/残局模式 forceLandlord 分支 BGM 未触发 - 🖥️ 屏幕切换修复:
_transitionToScreen()隐藏所有非目标屏幕;牌谱工坊回放正确清理旧ReplayManager - 🛡️ 模态框修复:
showMenu()关闭赛季任务/锦标赛配置;ESC 键覆盖所有模态框;重复打开保护;z-index 层级补全 - 🧠 渲染器防护:15 个核心方法添加
_destroyed检查;成就/任务 toast 数量限制为 3 个 - 🧪 测试:全站 202/202 通过,新增 challenge-mode + replay-workshop 到 test:all
v1.2.24
🆕 新增:牌谱工坊
- 🎞️ 牌谱工坊:保存、管理、回放与分享精彩对局牌谱
- 💾 自动保存:每局结束后自动存入,最多保留 50 条记录
- 📤 分享码:Base64 分享码,跨设备导入
- ▶️ 回放支持:工坊内直接回放
- 📊 分类统计:按模式统计牌谱数量
v1.2.23
🔧 极限挑战模式深度修复
- 🚨 game-state.js _isPatternAllowed 未处理 bombRule='disabled'
- 🎯 bombBeatRocket 检测修复;calculateChallengeStars 外部标记
- 🙈 盲牌斗地主 disableTracker / 斗帝之路 mustSpring 实现
- 🛡️ forceLandlord 补全 initialHands / bottomCards / lastPlay
- 🖥️ UI 修复:信息栏显示、challenge-screen 布局、_destroyed 检查
- 🎵 音频:返回关卡列表停止 BGM;返回菜单关闭模态框
- 🧪 新增 bombBeatRocket 星级判定测试
v1.2.22
🔧 极限挑战模式 Bug 修复
- 🚨 game-state.js _isPatternAllowed 未处理 bombRule='disabled'
- 🎯 bombBeatRocket 检测修复;calculateChallengeStars 外部标记
- 🙈 盲牌斗地主 disableTracker / 斗帝之路 mustSpring 实现
- 🛡️ forceLandlord 补全 initialHands / bottomCards / lastPlay
- 🖥️ UI 修复:信息栏显示、challenge-screen 布局、_destroyed 检查
- 🎵 音频:返回关卡列表停止 BGM;返回菜单关闭模态框
v1.2.21
🆕 新增:极限挑战模式
- ⚔️ 全新模式「极限挑战」:10个特殊规则限制的挑战关卡
- 🚫 禁炸令、⚡ 速战速决、🛡️ 保守派、📜 严格执法、🔒 不能Pass
- 🙈 盲牌斗地主、💰 底分翻倍、💣 炸弹之王、⚔️ 孤军奋战、👑 斗帝之路
- ⭐ 1~3星评级,解锁制递进,数据持久化到 localStorage
v1.2.20
全面深度 Bug 检查与修复(第五轮)
- 🚨 核心逻辑修复:修复
game-state.js抢地主阶段currentCallPlayer不更新;_finishCallinglandlord 为 null 时死锁 - 🃏 规则引擎修复:
_tryStraightWithLaizi显式拒绝重复真实牌 - 🎵 音频系统修复:移除 BGM 双重调度;
stopBGM()清理 loop timer;InvalidStateError防护 - 🖥️ 渲染器修复:
_initLayout重复绑定清理;setTimeout 统一替换为_setTimer - 🧠 AI 教练修复:
sameCard王牌比较;passRate字段错误 - 📊 数据修复:season-quest bombCount NaN;endgame bestSteps falsy;残局关卡5索引矛盾
- 🌐 LAN 联机修复:
_syncGameStart校验startRound返回值 - ⚙️ 自定义模式修复:无预设牌分支缺失
_applyGameRules()
v1.2.19
全面深度 Bug 检查与修复(第四轮)
- 🛡️ 动画系统修复:
Animations.cancelAll()现在真正取消全部 30+ 处定时器;庆祝状态锁在销毁时正确复位 - 🃏 规则引擎修复:癞子顺子误判 bug——含额外牌时不再错误识别为顺子
- 🎵 音频系统修复:SFX
setTimeout纳入统一管理;destroy()时全部清理;音效细粒度设置支持热更新 - 📊 游戏状态修复:
pass存入 history 的 pattern 改为HandPattern实例;startRound增加牌组长度校验 - 🌐 LAN 联机修复:非 Host 客户端正确维护
playerMapping;_destroyRoom只关闭仍属于该房间的连接 - ⚙️ 主程序修复:
_bindUXSettings()添加防重复绑定保护;设置变更时自动热重载 SFX 设置 - 🌍 时区修复:
getTodayString/getWeekStartString改用 UTC 方法计算 - 📹 回放修复:回放列表过滤脏数据后再渲染
v1.2.18
全面深度 Bug 检查与修复(第三轮)
- 🚨 致命修复:修复
startDailyMode()每日挑战完全无法启动(错误传入 DOM 对象、调用不存在方法、缺失关键初始化) - 🚨 致命修复:修复 "再来一局" 时旧挑战结果面板覆盖新游戏的定时器泄漏;修复
_roundEndBound未重置导致统计/成就/回放全部丢失 - 🚨 严重修复:修复
BaseMode.destroy()不 resolve Promise 定时器导致异步流程永久挂起、内存泄漏 - 🎵 音频修复:
stopBGM()清理_bgmGain/_masterCompressor;_ensureContext()resume 后验证 state;监听visibilitychange防止后台 BGM 叠音;核心音效增加节流 - 🎯 交互修复:一键出牌取消选中时清除 timeout 防止错误触发;分数滚动动画保存 RAF id 避免幽灵动画;拖拽选牌时节流
_updateHandHint调用 - 🛡️ 动画修复:
cancelAll()恢复 body transform 并重置_shakeCount;screenShake修复_activeRafs帧级泄漏 - 📐 主程序修复:
showMenu()现在关闭所有面板(设置/公告/牌风/成就);_calcStreak统一使用 UTC+8
v1.2.17
UI/UX/SFX/BGM 全面检查与改进
- 🚨 致命修复:修复
startDailyMode()每日挑战完全无法启动——错误传入 DOM 对象、调用不存在方法、缺失关键初始化 - 🎵 音频修复:
stopBGM()未清理_bgmGain/_masterCompressor导致重建 Context 后无声;toggleBGM 不再重播一次性 win/lose BGM;核心音效增加节流防止音爆重叠 - 🎯 交互改进:出牌按钮根据选牌状态动态启用/禁用;涟漪效果仅在无拖拽意图时触发,避免滚动误反馈
- ♿ 无障碍:
screenShake与flashScreen尊重prefers-reduced-motion: reduce系统偏好 - ✨ 面板 UX:挑战结果→历史记录切换等待关闭动画完成;历史面板淡入淡出;分享失败 fallback 从 alert() 改为 toast
- 🏷️ 徽章改进:每日挑战徽章使用 CSS
.daily-badge类,已完成/三星有独立视觉样式
v1.2.16
全面深度 Bug 检查与修复
- 🚨 严重修复:修复每日挑战结果面板永远弹不出的 bug
- 🚨 严重修复:修复连胜计算逻辑错误——今天输了仍算连胜
- 🔧 数据修复:getRecords 缺失 timestamp 导致记录静默丢弃
- 🔧 时区修复:getTodayString 固定使用 UTC+8
- 🛡️ 内存泄漏修复:renderHands _controlListeners 累积等
- 🛡️ 安全修复:showAchievementUnlock 使用 esc 转义
- 🎵 音频修复:BGM 切换定时器被 ENDED 阶段清除
- 🎯 UX 修复:closeChallengeResult timeout 未追踪
v1.2.15
UI/UX/SFX/BGM 全面检查与改进
- 🔧 渲染修复:修复结算弹窗 XSS 转义函数块级作用域 bug(非比赛模式报错)
- 🔊 音频修复:renderer.destroy() 现在正确关闭 AudioContext
- 🎵 音效设置:补全缺失的 "call" 音效开关
- 🎯 面板清理:返回菜单/启动新游戏时自动关闭残留面板
- ✨ 每日挑战 UX:结算弹窗 1.8s 后自动关闭避免重叠
- 📐 层级优化:挑战结果 z-index 提升至 250
v1.2.14
全面深度修复 & 规则引擎完善
- 🔧 牌风分析修复:修复50局后数据失真、成长建议崩溃、数据迁移与空数据防护
- 🎙️ 评论系统修复:修复destroy状态泄漏、队列冷却抖动、禁用后仍显示的问题
- 🛡️ 渲染器修复:修复timer泄漏、事件监听器泄漏、多次initLayout累积问题
- ⚙️ 主程序修复:修复公告版本号不匹配、面板关闭竞态、roundEnd重复监听、LAN renderer未清理
- 📐 结构与样式修复:修复modal-overlay嵌套、toast z-index被遮挡等DOM/CSS问题
v1.2.13
牌风分析系统
- 📊 6维雷达图深度解析出牌风格(攻击性/稳健性/技巧性/速度型/运气质/爆发性)
- 🏷️ 个性化标签:核弹级、闪电侠、斗地主之神等专属称号
- 📈 胜率、场均炸弹、春天率、平均思考时间等多维度统计
- 💡 AI智能分析短板并给出针对性提升建议
- 🎨 SVG纯代码绘制高颜值六维能力图
v1.2.12
牌局神评论系统
- 🎙️ 牌局神评论:炸弹、火箭、春天、连击等关键时刻自动弹出热血解说评论
- 💬 120+ 条评论库:根据牌型语境智能匹配幽默/热血解说词
- 🎨 情绪色系统:炸弹红、火箭金、春天粉、胜利彩虹等视觉风格
- 🎯 6 插槽防重叠:多条评论分散显示,不会互相遮挡
- ⚙️ 可开关:设置面板中可自由开启/关闭评论功能
v1.2.11
第三轮深度修复
- 修复暂停时 AI Promise 死锁(
_pendingTimers手动 resolve) - 修复 AI 回合中央倒计时闪烁(仅人类回合显示)
- 修复游戏结束倒计时未清理(
onPhaseChangeENDED 分支) - Renderer
destroy()多次调用防护、BGM/SFX 即时同步
v1.2.10
第二轮补充修复
- 清理 CSS 死代码,优化 560px 下手牌裁剪与 overflow
- 修复 center-countdown z-index、控制区小屏定位
v1.2.9
布局重构 & Bug 修复
- 对角布局、中央倒计时、手牌放大、控制区上移
- 修复 timerEnabled 字符串判断、超时面板不隐藏等
v1.2.8
全站 UI 深度美化
- LAN/自定义/暂停/成就/回放界面全面毛玻璃化
- 通用组件化重构,统一视觉语言