# Lucky Dog 更新日志

## 2.2.0 — 2026-08-30

2.2.0 是一次设置体验扩展更新，为后续功能验证加入独立的实验性功能入口，并继续优化设置菜单的视觉层级。

### 实验性功能入口

- 设置菜单新增“实验性功能”，排列在“常规”和“关于”之间。
- 使用烧杯图标区分实验项目，并沿用设置中心固定的灰黑配色。
- 实验页面采用标题、空状态卡片和底部说明组成的清晰布局。
- 实验内容可能随后续版本持续调整，不影响现有名单与主题数据。

### 菜单视觉优化

- 为管理名单、常规、实验性功能和关于补充统一线性图标。
- 当前菜单项使用低对比度浅色背景提示选中状态。
- 桌面端与移动端保持一致的菜单顺序和交互逻辑。

## 2.1.1 — 2026-08-16

2.1.1 是一次静态资源缓存修复更新，解决网站发布新版后，浏览器仍可能在缓存有效期内继续加载旧 CSS 和 JavaScript 的问题。

### 缓存与发布修复

- 为 `base.css`、`modal.css`、`1.js` 和 `nameread.js` 增加 `2.1.1` 版本标识。
- 新版本资源使用新的请求地址，浏览器会自动下载更新后的文件，无需用户清空缓存。
- 保留静态资源缓存能力，避免每次访问都重复下载 CSS 和 JavaScript。
- 建议服务器将首页设置为重新验证缓存，使浏览器能及时获得最新资源版本号。
- 本次更新没有修改名单或主题的数据格式，可直接读取 v2.1.0 保存的数据。

## v2.1.0 — 2026-08-16

v2.1.0 是基于 v2.0.0 的界面与移动端体验更新。本次更新加入双主题系统，集中打磨设置中心、操作确认和名单编辑体验，并为手机端加入可自动收纳的顶部菜单；点名主页面原有的“经典粉金”配色与操作方式保持不变。

### 更新亮点

- 新增移动端收纳式设置菜单，减少顶栏占用空间。
- 新增“经典粉金”和“石墨灰”双主题，可在“常规”菜单中切换。
- 设置中心与操作确认窗口改为更克制的纯色灰黑界面。
- 优化名单编辑布局，并增加名字数量和未保存状态提示。
- 创建、保存和删除成功后改用自动消失的页内通知。
- 完善触控、键盘、窄屏和减少动画模式下的使用体验。

### 双主题系统

- 设置中心新增“常规”一级菜单，用于管理界面主题。
- 保留原有“经典粉金”主题，并继续作为默认配色。
- 新增参考“石墨灰”主题。
- 主题只改变点名主页面、按钮、卡片、页脚和背景粒子。
- 设置中心和网页确认弹层始终使用固定灰黑配色，不跟随主题变化。
- 主题选择自动保存到浏览器本地，下次打开时自动恢复。
- 提供两种主题的可视化预览、选中状态及键盘切换操作。

### 移动端设置菜单

- 640px 及以下屏幕使用紧凑顶栏：左侧为三横菜单按钮，中间为“设置”，右侧为关闭按钮。
- 点击三横按钮后，“管理名单 / 常规 / 关于”从顶栏下方以浮层形式展开。
- 选择栏目后自动切换内容并收纳菜单，不会推动或挤压下方页面。
- 点击菜单外区域会自动收纳；第一次按 `Esc` 收纳菜单，第二次按 `Esc` 关闭设置。
- 菜单按钮和栏目均提供至少 44px 的触控区域。
- 桌面端继续使用原有左侧一级菜单，不受移动端布局影响。
- 优化 320px、390px 等窄屏尺寸，避免横向溢出和突兀滚动。

### 视觉与布局打磨

- 保留点名主页面“经典粉金”主题原有的背景、卡片和按钮外观。
- 设置中心与网页确认弹层统一为低饱和度纯色灰黑界面，并保持独立配色。
- 移除装饰性渐变、强光晕、菜单图标和确认弹层中的大型状态图标。
- 桌面菜单改为纯文字样式，当前项使用白色文字和细线标识，不填充彩色背景。
- 缩小设置页和确认弹层的视觉体积，重新整理间距、圆角和内容层级。
- 缩短设置页、确认弹层和菜单切换动画，使操作反馈更直接。

### 名单编辑与操作反馈

- 名单编辑区改为紧凑工具栏布局，减少不必要的页面滚动。
- 实时显示当前名单的名字数量。
- 编辑名单后显示“有未保存的更改”，保存完成后恢复为“更改已保存”。
- 创建、保存和删除成功后使用自动消失的页内通知，减少重复确认。
- 网页确认弹层改为更紧凑的左对齐布局，危险操作仍保留明确确认步骤。

### 无障碍与兼容性

- 移动端菜单通过 `aria-expanded`、`aria-controls` 和 `inert` 同步展开状态与焦点范围。
- 支持方向键打开和浏览菜单，并在收纳后将焦点安全返回菜单按钮。
- 支持 `prefers-reduced-motion`，在系统要求减少动画时缩短菜单过渡。
- v2.1.0 没有更改名单存储格式，可直接读取 v2.0.0 已保存的名单与主题设置。

## v2.0.0 — 2026-07-30

v2.0.0 是继 v1.2.0 之后的一次大版本更新。本次更新重新设计了设置与操作确认体验，加入旧版数据迁移，并集中修复了名单安全、存储容错与随机点名稳定性问题。

### 更新亮点

- 全新设置中心，使用紧凑的左侧一级菜单布局。
- 使用网页内确认弹层替代浏览器原生弹窗。
- 自动兼容并迁移旧版本地名单。
- 修复重复姓名、自动暂停计时器等关键逻辑问题。

### 全新设置中心

- 设置中心重构为“管理名单 / 关于”两个一级菜单。
- “管理名单”位于第一项，每次打开设置时默认显示。
- 设置中心采用固定的灰黑配色和白色文字。
- 调整整体尺寸、排版和间距，常见屏幕高度下可尽量完整显示。
- 将明显的系统滚动条替换为细窄、低对比度滚动条。
- 设置中心增加打开和关闭动画。
- 支持点击遮罩、关闭按钮和 `Esc` 键关闭。
- 菜单支持方向键、Home 和 End 键切换。

### 网页内操作确认

- 新增统一的网页确认弹层，替代 `alert()`、`prompt()` 和 `confirm()`。
- 新增名单时可直接在网页弹层中输入并校验名单名称。
- 保存名单前显示确认信息，完成后显示保存结果。
- 删除名单时显示危险操作确认及自动切换目标名单。
- 名单为空、无法删除最后一个名单等提示均改为网页内显示。
- 确认弹层支持确认、取消、关闭按钮、`Esc` 键及点击遮罩关闭。
- 确认弹层增加打开和关闭动画，并采用与设置中心一致的固定灰黑配色。

### 名单管理与数据兼容

- 继续使用 `lists` 和 `currentList` 存储格式，v1.2.0 名单可直接使用。
- 增加对更早版本 `namesList` 格式的一次性自动迁移：
  - 没有新版名单时，旧名单自动成为默认名单。
  - 已有新版名单时，旧数据作为“旧版名单”合并，不覆盖现有内容。
  - 已存在相同名单时不会重复导入。
  - 迁移后保留旧版原始数据，便于需要时降级使用。
- 本地名单数据损坏、格式错误或无法访问时自动回退到安全默认值。
- 当前名单不存在时自动选择一个有效名单。

### 安全性改进

- 名单名称不再通过 `innerHTML` 拼接。
- 使用 DOM API 和 `textContent` 安全创建名单选项，修复持久化 HTML 注入风险。
- 对本地存储中的名单对象、名单数组及姓名类型进行验证和过滤。
- 新增名单名称重复与空值校验。

### 随机点名与稳定性修复

- 修复名单包含重复姓名时可能显示 `undefined` 的问题。
- 抽取记录改为按名单位置追踪，重复姓名可以正常参与随机点名。
- 修复手动暂停后立即重新开始时，上一轮自动暂停计时器可能打断新一轮的问题。
- 暂停时会同时清理滚动计时器和自动暂停计时器。
- 切换、保存或删除名单后会正确重置当前抽取记录。

### 关于页面

- 新增项目简介、当前版本、开源许可、数据存储方式和版权信息。
- 增加开源项目页、木兰宽松许可证第 2 版、官方博客及个人主页入口。
- 新增本更新说明入口。

### 无障碍与体验

- 为设置中心、一级菜单和确认弹层补充 ARIA 语义。
- 增加键盘焦点管理和键盘操作支持。
- 支持 `prefers-reduced-motion`，在系统要求减少动画时缩短动画时间。
- 优化移动端设置布局和操作按钮排列。

### 升级说明

- 从 v1.2.0 在同一网址或同一文件路径直接升级，不需要手动转换名单。
- 更早版本的 `namesList` 会在首次加载 v2.0.0 时自动迁移。
- 浏览器会按网址或本地文件路径隔离存储；若新旧版本从不同地址打开，数据无法跨存储区域自动读取。
- 本次升级没有主动删除名单或旧版存储数据。

## v1.2.0

- v2.0.0 之前的稳定版本。
- 提供基础随机点名、多名单管理、本地保存及自动暂停功能。
