Files
Auto_Bangumi/docs/changelog/3.2.md
Estrella Pan 03bf265651 docs: add i18n support with Chinese as default language
- Configure VitePress locales with zh-CN as root and en-US as /en/
- Translate all documentation to Chinese (31 files)
- Create English documentation under /en/ directory
- Add Chinese UI labels for navigation and pagination
- Language switcher now available in site header

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-01-27 07:57:13 +01:00

9.7 KiB
Raw Blame History

[3.2] - 2025-01

后端

功能

  • 添加 WebAuthn Passkey 无密码登录支持
    • 注册、认证和管理 Passkey 凭据
    • 多设备凭据备份检测iCloud 钥匙串等)
    • 克隆攻击保护sign_count 验证)
    • 认证策略模式统一密码和 Passkey 登录接口
    • 通过可发现凭据resident keys支持无用户名登录
  • 添加季度/集数偏移自动检测
    • 分析 TMDB 剧集播出日期以检测"虚拟季度"如《葬送的芙莉莲》S1 分成两部分)
    • 当播出间隔超过 6 个月时自动识别不同部分
    • 计算集数偏移(如 RSS 显示 S2E1 → TMDB S1E29
    • 后台扫描线程自动检测现有订阅中的偏移问题
    • 新增 API 端点:POST /bangumi/detect-offsetPATCH /bangumi/dismiss-review/{id}
  • 添加番剧归档功能
    • 支持手动归档/取消归档
    • 自动归档已完结系列
    • 新增 API 端点:PATCH /bangumi/archive/{id}PATCH /bangumi/unarchive/{id}GET /bangumi/refresh/metadata
  • 添加搜索提供者配置 API
    • GET /search/provider/config - 获取搜索提供者配置
    • PUT /search/provider/config - 更新搜索提供者配置
  • 添加 RSS 连接状态跟踪
    • 每次刷新后记录 connection_statushealthy/errorlast_checked_atlast_error
  • 添加首次运行设置向导
    • 7 步引导配置账户、下载器、RSS 源、媒体路径、通知
    • 下载器连接测试、RSS 源验证
    • 可选步骤可跳过,稍后在设置中配置
    • 标记文件机制(config/.setup_complete)防止重复触发
    • 未认证的设置 API仅在首次运行时可用完成后返回 403
  • 添加日历视图,集成 Bangumi.tv 放送时间表
  • 添加下载器 API 和管理界面
  • 全面异步迁移
    • 数据库层异步支持aiosqlite用于 Passkey 操作的非阻塞 I/O
    • UserDatabase 支持同步/异步两种模式以保持向后兼容
    • Database 上下文管理器支持 with(同步)和 async with(异步)
    • RSS 引擎、下载器、检查器和解析器全面转换为异步
    • 网络请求从 requests 迁移到 httpxAsyncClient
  • 后端迁移到 uv 包管理器pyproject.toml + uv.lock
  • 服务器启动使用后台任务避免阻塞(修复 #891、#929
  • 数据库迁移自动用模型默认值填充 NULL 值
  • 数据库添加 needs_reviewneeds_review_reason 字段用于偏移检测

性能

  • 共享 HTTP 客户端连接池,复用 TCP/SSL 连接
  • RSS 刷新现在并发执行(asyncio.gather),多源时快约 10 倍
  • 种子文件下载现在并发执行,多种子时快约 5 倍
  • 重命名模块并发获取文件列表,快约 20 倍
  • 通知发送现在并发执行,移除 2 秒硬编码延迟
  • 添加 TMDB 和 Mikan 解析器结果缓存,避免重复 API 调用
  • Torrent.urlTorrent.rss_idBangumi.title_rawBangumi.deletedRSSItem.url 添加数据库索引
  • RSS 批量启用/禁用使用单个事务而不是逐项提交
  • 预编译种子名称解析和过滤匹配的正则表达式模式
  • SeasonCollector 在循环外创建,复用单次认证
  • RSS 解析去重从 O(n²) 列表查找改为 O(1) 集合查找
  • Episode/SeasonInfo 数据类使用 __slots__ 减少内存占用

变更

  • 升级 WebAuthn 依赖到 py_webauthn 2.7.0
  • _get_webauthn_from_request 优先使用浏览器 Origin 头,修复跨端口开发环境中的验证问题
  • auth_userupdate_user_info 转换为异步函数
  • TitleParser.tmdb_parser 转换为异步函数
  • RSSEngine 方法全面异步化(pull_rssrefresh_rssdownload_bangumiadd_rss
  • Checker.check_downloader 转换为异步函数
  • ProgramStatus 从 threading 迁移到 asyncioEvent、Lock

Bug 修复

  • 修复下载器连接检查添加最大重试限制
  • 修复添加种子时的瞬时网络错误添加重试逻辑
  • 修复搜索和订阅流程中的多个问题
  • 改进种子获取可靠性和错误处理
  • 修复 aaguid 类型错误py_webauthn 2.7.0 中现在是 str,不再是 bytes
  • 修复缺失的 credential_backup_eligible 字段(替换为 credential_device_type
  • 修复 verify_authentication_response 接收无效 credential_id 参数导致 TypeError
  • 修复程序启动阻塞服务器(修复 #891、#929、#886、#917、#946
  • 修复搜索界面导出与组件预期不匹配
  • 修复海报端点路径检查错误拦截所有请求(修复 #933、#934
  • 修复 OpenAI 解析器安全问题
  • 修复数据库测试使用异步会话与同步代码不匹配
  • 修复从 3.1.x 升级到 3.2 时配置字段冲突导致设置丢失(修复 #956
    • program.sleep_time / program.times 自动迁移到 rss_time / rename_time
    • 移除已弃用的 rss_parser 字段(typecustom_urltokenenable_tmdb
    • 修复 ENV_TO_ATTR 环境变量映射指向不存在的模型字段
    • 修复 DEFAULT_SETTINGS 与当前配置模型不一致
  • 修复版本升级迁移逻辑错误(所有升级都调用 3.0→3.1 迁移)
    • 添加基于源版本的版本感知迁移调度
    • 添加 from_31_to_32() 迁移函数用于数据库 schema 变更

前端

功能

  • 完整的 UI 设计系统重新设计
    • 统一设计令牌(颜色、字体、间距、阴影、动画)
    • 明/暗主题切换支持
    • 全面的无障碍支持ARIA、键盘导航、焦点管理
    • 移动设备响应式布局
  • 添加首次运行设置向导页面
    • 多步骤向导组件(进度条 + 步骤导航)
    • 路由守卫自动检测并重定向到设置页面
    • 下载器/RSS/通知连接测试反馈
    • 中英文 i18n 支持
  • 添加 Passkey 管理面板(设置页面)
    • WebAuthn 浏览器支持检测
    • 自动设备名称识别
    • Passkey 列表显示和删除
  • 在登录页面添加 Passkey 指纹登录按钮(支持无用户名登录)
  • 添加日历视图页面
  • 添加下载器管理页面
  • 添加番剧卡片悬停覆盖层(显示标题和标签)
  • 添加 resolvePosterUrl 工具函数统一处理外部 URL 和本地路径(修复 #934
  • 重新设计搜索面板,使用模态框和过滤系统
  • 重新设计登录面板,使用现代毛玻璃风格
  • 在日志视图中添加日志级别过滤
  • 重新设计 LLM 设置面板(修复 #938
  • 重新设计设置、下载器、播放器和日志页面样式
  • 添加搜索提供者设置面板
    • 在 UI 中查看、添加、编辑、删除搜索源
    • 默认源mikan、nyaa、dmhy不可删除
    • URL 模板验证确保有 %s 占位符
  • 添加 iOS 风格通知徽章系统
    • 黄色徽章 + 紫色边框表示需要审核的订阅
    • 组合显示支持(如 ! | 2 表示警告 + 多个规则)
    • 需要关注的卡片有黄色发光动画
  • 编辑模态框警告横幅,支持一键自动检测和忽略
  • 规则选择模态框高亮显示有警告的规则
  • 日历页面番剧分组:同一动画多个规则合并,点击选择特定规则
  • 番剧列表页面可折叠"已归档"部分
  • 番剧列表页面骨架加载动画
  • 规则编辑器集数偏移字段添加"自动检测"按钮
  • RSS 管理页面连接状态标签:健康时显示绿色"已连接",错误时显示红色"错误"并带工具提示显示详情
  • 全新移动优先响应式设计
    • 三层断点系统:移动端(<640px、平板640-1023px、桌面端≥1024px
    • 移动端底部导航栏(带图标和文字标签)
    • 平板迷你侧边栏56px 图标导航)
    • 移动端弹窗自动切换为底部抽屉
    • 支持下拉刷新
    • 支持水平滑动容器
    • 移动端卡片列表替代数据表格RSS 页面)
    • CSS Grid 响应式布局(番剧卡片网格)
    • 移动端表单标签垂直堆叠,输入框全宽
    • 触摸目标最小 44px符合无障碍标准
    • Safe Area 支持(刘海设备)
    • 100dvh 动态视口高度(修复移动浏览器地址栏问题)
    • viewport-fit=cover 支持全屏设备

新增组件

  • ab-bottom-sheet — 触摸驱动底部抽屉组件(拖拽关闭、最大高度限制)
  • ab-adaptive-modal — 自适应模态框(移动端底部抽屉/桌面端居中对话框)
  • ab-pull-refresh — 下拉刷新包装组件
  • ab-swipe-container — 水平滑动容器CSS scroll-snap
  • ab-data-list — 移动端友好卡片列表(替代 NDataTable
  • ab-mobile-nav — 增强底部导航栏(图标 + 标签 + 激活指示器)
  • useSafeArea — Safe Area 组合式函数

性能

  • 下载器 store 使用 shallowRef 代替 ref,避免大数组的深度响应式代理
  • 表格列定义移到 computed,避免每次渲染时重建
  • RSS 表格列与数据分离,数据变化时不重建列配置
  • 日历页面移除重复的 getAll() 调用
  • ab-select watchEffect 改为 watch,消除挂载时的无效 emit
  • useClipboard 提升到 store 顶层,避免每次 copy() 创建新实例
  • setInterval 替换为 useIntervalFn,自动生命周期管理

变更

  • 重构搜索逻辑,移除 rxjs 依赖
  • 搜索 store 导出重构以匹配组件预期
  • 升级前端依赖
  • 断点系统从单一 1024px 扩展到 640px + 1024px 两层
  • useBreakpointQuery 添加 isTabletisMobileOrTabletisTabletOrPC
  • media-query.vue 添加 #tablet 插槽(回退到 #mobile
  • UnoCSS 添加 sm: 640px 断点
  • ab-input 移动端全宽 + 增大触摸目标样式
  • 布局使用 dvh 单位代替 vh,支持 safe-area-inset
  • 修复日历页面未知列宽
  • 统一下载器页面操作栏按钮尺寸

CI/基础设施

  • CI 添加 PR 打开时的构建测试dev 分支 PR 到 main 自动触发构建)
  • CI 升级 actions/upload-artifactactions/download-artifact 到 v4
  • Docker 构建移除 linux/arm/v7 平台uv 镜像不支持)
  • 添加 CLAUDE.md 开发指南