# Changelog

## 4.9.13 - 2026-07-13

- 修复慢视频源超过 3 秒未返回时，前端提前结束搜索并错误显示“未找到结果”的问题；搜索现在等待服务端明确完成或响应流真正关闭。
- 实时延迟探测现在使用视频源的真实 `baseUrl`，不再把源 ID 当成 URL；`HEAD` 失败后的 `GET` 探测独立计时，避免把前一次失败耗时叠加为虚高延迟。
- 延迟探测改为最多 4 路并发并在上一轮结束后再调度下一轮，避免 Docker 自托管实例因慢源产生重叠探测请求。
- 搜索请求取消或超时后不再继续重试，并清理级联 AbortSignal 监听器；新增慢源、探测回退、并发上限和取消重试回归测试。

## 4.9.12 - 2026-07-12

- 修复窄屏导航栏隐藏整个用户区域、导致登录用户无法退出的问题；退出按钮现在在所有视口宽度下保持可见，用户身份详情仍在桌面端显示。
- 高级模式设置页复用统一的账户管理组件，恢复当前账户信息、退出登录以及超级管理员的账户新增、编辑和删除入口。
- 新增账户入口回归测试，防止响应式样式或高级模式设置页再次移除关键认证操作。

## 4.9.11 - 2026-07-09

- 修复登录成功后仍停留在登录页、刷新后又要求登录的循环问题。
- `PasswordGate` 登录成功后会直接解除客户端锁定，不再依赖整页刷新；服务端 session 存在但本地镜像缺失时也会直接补齐会话并进入应用。
- 服务端 session cookie 的 `Secure` 属性改为按实际请求协议和 `x-forwarded-proto` 判断，避免 Docker / HTTP 自托管生产模式下浏览器拒收登录 cookie。
- 新增登录 gate 状态决策和 session cookie 协议判断回归测试。

## 4.9.10 - 2026-07-09

- 从首页移除硬编码的快捷搜索区，不再显示“内容分类”“电影类型”“年份”三组按钮。
- 标签管理入口和首页推荐区现在直接从内容类型切换与后端标签列表开始，避免顶部快捷搜索继续占用空间。
- 更新标签管理视图回归测试，锁定首页不再引用 `CategoryQuickSearch`。

## 4.9.9 - 2026-07-09

- 修复首页管理标签入口混入快捷搜索流程的问题，打开管理模式后不再显示“内容分类”“电影类型”“年份”等搜索快捷项。
- 管理标签时隐藏电影/电视剧切换和推荐内容网格，让“完成 / 恢复默认 / 添加标签 / 标签列表”成为当前视图主体。
- 标签管理列表改为可换行 chip 布局，并在管理模式下使用矩形拖拽排序策略，避免标签区域被横向滚动行挤压。
- 新增标签管理视图回归测试，防止管理入口再次退化为搜索筛选界面。

## 4.9.8 - 2026-07-09

- 修复登录完成跳转后 Network 面板出现 `/api/user/config` 和 `/api/user/sync` 两个 400 请求的问题。
- `AutoSync` 改为在 `PasswordGate` 确认服务端 session 并放行页面内容后再挂载，避免本地旧 session 早于服务端 cookie 校验触发云同步。
- 用户配置和云同步 API 在未认证时返回 `401 Authentication required`，不再使用 `400 Missing profileId` 表达会话缺失。
- 新增未认证响应回归测试，锁定受保护同步接口的状态码语义。

## 4.9.7 - 2026-07-09

- 修复 Android TV / 小米电视旧 WebView 83 打开站点后白屏的问题。
- Next.js 构建后的浏览器静态 JS 会额外转译到 `chrome83`，避免 `??=`、`||=`、`&&=` 等逻辑赋值语法让旧 WebView 在解析阶段直接失败。
- Cloudflare Pages 输出目录同样会执行兼容性转译，确保 Docker/Node 自托管和 Cloudflare Pages 部署的浏览器资产一致。
- 新增 WebView 83 静态资源回归测试，防止不兼容语法重新进入构建产物。

## 4.9.6 - 2026-07-09

- 修复移动端 Safari 网页横屏时弹幕字体被异常拉伸或压缩的问题。
- 弹幕画布改为优先读取未受 CSS transform 影响的布局尺寸，避免强制横屏旋转时使用横竖互换的 bounding box。
- 横竖屏、窗口尺寸和 `visualViewport` 变化后会重新同步画布 backing store，并按新尺寸重排活跃弹幕。
- 新增弹幕画布尺寸工具测试，覆盖 CSS transform 造成视觉尺寸与布局尺寸不一致的场景。

## 4.9.5 - 2026-07-09

- Vercel Analytics 现在只会在真实 Vercel 部署中注入，Docker、自托管和 Cloudflare Pages 不再请求 `/_vercel/insights/script.js`。
- Cloudflare 部署环境判定优先于 Vercel 风格环境变量，避免适配器环境被误判为 Vercel。
- 新增部署环境单元测试，覆盖自托管、Vercel、Cloudflare 和混合环境变量场景。

## 4.9.4 - 2026-07-08

- 设置页的代理播放区域显示内置 `/api/proxy` 端点和部署限制，明确该功能不是第三方 HTTP/SOCKS 代理服务器配置。
- 新增 `ALLOW_LAN_ACCESS` 环境变量：开启后 `npm run dev` / `npm run start` 会绑定 `0.0.0.0`，开发模式会放行常见内网 IPv4 来源。
- 新增 `LAN_ALLOWED_DEV_ORIGINS`，允许自定义 Next.js 开发模式的额外来源主机。
- README 补充局域网访问和内置媒体代理说明，并同步修正 Docker hostname 注释。

## 4.9.3 - 2026-04-15

- 新增 Redis 托管账户模式：支持用户名密码登录、超级管理员账户 CRUD、权限编辑和密码重置。
- 认证改为服务端签名 HTTP-only 会话 Cookie，`/api/user/config` 与 `/api/user/sync` 不再信任客户端自报 `profileId`。
- 播放页线路列表补齐剩余问题：分辨率探测会按当前集数探测并缓存，打开线路列表时会自动定位当前线路，必要时自动展开隐藏项。
- 仓库补充了与新认证和线路列表逻辑对应的单元测试，并修正了本地 `eslint` 版本与 Next.js 规则链不兼容的问题。

## 4.9.2 - 2026-04-12

- 设置页首次自动检查更新时不再让“检查更新”按钮自己持续转圈。
- 移除会反复闪烁的“正在整理结果”提示，避免用户误以为页面异常。
- 手动点击“检查更新”时才显示按钮转圈，状态反馈与用户操作保持一致。

## 4.9.1 - 2026-04-12

- 移除仅支持 Node.js 的 `/api/site-icon` 路由，避免 `next-on-pages` 因非 Edge 路由中止构建。
- 站点图标改为由服务端布局直接解析，导航栏和播放器页继续显示运行时配置的图标。
- PWA manifest 回退为静态图标，确保 Cloudflare Pages、Docker 和本地构建链路一致可用。

## 4.9.0 - 2026-04-12

- 设置页新增“版本与更新”卡片，直接显示当前版本、最近更新内容和检查结果。
- 新增手动“检查更新”按钮，会对比 GitHub `main` 分支上的最新版本元数据。
- 仓库新增更新日志文件，方便在项目内查看当前版本和更新说明。

## 4.8.3 - 2026-04-12

- 站点图标改为支持运行时配置，Docker 镜像无需重新构建即可替换。
- 扩展播放器默认视口，减少桌面端播放器黑边。
- 修复 Android WebView 中 Cast SDK 判定以及全屏和画中画相关兼容性问题。
