Skip to content

Commit ae129e7

Browse files
EstrellaXDclaudehappy-otter
committed
docs: update 3.2 changelog with beta.11-13 features and add Chinese version
- Added offset detection suggested values display - Added season offset folder path fix - Added search panel redesign details (filters, tags, expand/collapse) - Added mobile UI bugfixes (settings overflow, top bar, search modal, etc.) - Created Chinese translation of 3.2 changelog 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>
1 parent 506d1d3 commit ae129e7

2 files changed

Lines changed: 258 additions & 0 deletions

File tree

docs/changelog/3.2-zh.md

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
# [3.2] - 2025-01
2+
3+
## 后端
4+
5+
### 新功能
6+
7+
- 新增 WebAuthn Passkey 无密码登录支持
8+
- 支持注册、验证和管理 Passkey 凭证
9+
- 多设备凭证备份检测(iCloud 钥匙串等)
10+
- 克隆攻击防护(sign_count 验证)
11+
- 认证策略模式统一密码和 Passkey 登录接口
12+
- 支持无用户名登录(可发现凭证/resident keys)
13+
- 新增季度/集数偏移自动检测
14+
- 通过分析 TMDB 剧集播出日期检测「虚拟季度」(如芙莉莲第一季分两部分播出)
15+
- 当播出间隔超过 6 个月时自动识别为不同部分
16+
- 自动计算集数偏移量(如 RSS 显示 S2E1 → TMDB S1E29)
17+
- 后台扫描线程自动检测已有订阅的偏移问题
18+
- 新增 API 端点:`POST /bangumi/detect-offset``PATCH /bangumi/dismiss-review/{id}`
19+
- 新增番剧归档功能
20+
- 支持手动归档/取消归档
21+
- 已完结番剧自动归档
22+
- 新增 API 端点:`PATCH /bangumi/archive/{id}``PATCH /bangumi/unarchive/{id}``GET /bangumi/refresh/metadata`
23+
- 新增搜索源配置 API
24+
- `GET /search/provider/config` - 获取搜索源配置
25+
- `PUT /search/provider/config` - 更新搜索源配置
26+
- 偏移检查面板新增建议值显示(解析的季度/集数和建议的偏移量)
27+
- 修复季度偏移未应用到下载文件夹路径的问题
28+
- 设置季度偏移后,qBittorrent 保存路径会自动更新(如 `Season 2``Season 1`
29+
- RSS 规则的保存路径也会同步更新
30+
- 优化集数偏移建议逻辑
31+
- 简单季度不匹配时不再建议集数偏移(仅虚拟季度需要)
32+
- 改进提示信息,明确说明是否需要调整集数
33+
- 新增 RSS 连接状态追踪
34+
- 每次刷新后记录 `connection_status`(healthy/error)、`last_checked_at``last_error`
35+
- 新增首次运行设置向导
36+
- 7 步引导配置:账户、下载器、RSS 源、媒体路径、通知
37+
- 下载器连接测试、RSS 源验证
38+
- 可选步骤可跳过,稍后在设置中配置
39+
- 哨兵文件机制(`config/.setup_complete`)防止重复触发
40+
- 未认证的设置 API(仅首次运行可用,完成后返回 403)
41+
- 新增日历视图,集成 Bangumi.tv 放送时间表
42+
- 新增下载器 API 和管理界面
43+
- 全面异步迁移
44+
- 数据库层异步支持(aiosqlite),Passkey 操作非阻塞 I/O
45+
- `UserDatabase` 支持同步/异步双模式,向后兼容
46+
- `Database` 上下文管理器支持 `with`(同步)和 `async with`(异步)
47+
- RSS 引擎、下载器、检查器、解析器全面转换为异步
48+
- 网络请求从 `requests` 迁移到 `httpx`(AsyncClient)
49+
- 后端迁移到 `uv` 包管理器(pyproject.toml + uv.lock)
50+
- 服务器启动使用后台任务避免阻塞(修复 #891#929
51+
- 数据库迁移自动填充 NULL 值为模型默认值
52+
- 数据库新增 `needs_review``needs_review_reason` 字段用于偏移检测
53+
54+
### 性能优化
55+
56+
- 共享 HTTP 客户端连接池,复用 TCP/SSL 连接
57+
- RSS 刷新改为并发拉取(`asyncio.gather`),多源场景下速度提升约 10 倍
58+
- 种子文件下载改为并发获取,下载多个种子时速度提升约 5 倍
59+
- 重命名模块并发获取文件列表,速度提升约 20 倍
60+
- 通知发送改为并发执行,移除 2 秒硬编码延迟
61+
- 新增 TMDB 和 Mikan 解析结果缓存,避免重复 API 调用
62+
-`Torrent.url``Torrent.rss_id``Bangumi.title_raw``Bangumi.deleted``RSSItem.url` 添加数据库索引
63+
- RSS 批量启用/禁用改为单次事务操作,替代逐条提交
64+
- 预编译正则表达式(种子名解析规则、过滤器匹配)
65+
- `SeasonCollector` 在循环外创建,复用单次认证
66+
- RSS 解析去重从 O(n²) 列表查找改为 O(1) 集合查找
67+
- `Episode`/`SeasonInfo` 数据类添加 `__slots__`,减少内存占用
68+
69+
### 变更
70+
71+
- 升级 WebAuthn 依赖到 py_webauthn 2.7.0
72+
- `_get_webauthn_from_request` 优先使用浏览器 Origin 头,修复跨端口开发环境验证问题
73+
- `auth_user``update_user_info` 转换为异步函数
74+
- `TitleParser.tmdb_parser` 转换为异步函数
75+
- `RSSEngine` 方法全面异步化(`pull_rss``refresh_rss``download_bangumi``add_rss`
76+
- `Checker.check_downloader` 转换为异步函数
77+
- `ProgramStatus` 从 threading 迁移到 asyncio(Event、Lock)
78+
79+
### 问题修复
80+
81+
- 修复下载器连接检查添加最大重试次数
82+
- 修复添加种子时的网络瞬态错误,添加重试逻辑
83+
- 修复搜索和订阅流程中的多个问题
84+
- 改进种子获取可靠性和错误处理
85+
- 修复 `aaguid` 类型错误(py_webauthn 2.7.0 中现为 `str`,不再是 `bytes`
86+
- 修复缺失的 `credential_backup_eligible` 字段(替换为 `credential_device_type`
87+
- 修复 `verify_authentication_response` 接收无效 `credential_id` 参数导致 TypeError
88+
- 修复程序启动阻塞服务器(修复 #891#929#886#917#946
89+
- 修复搜索接口导出与组件期望不匹配
90+
- 修复海报端点路径检查错误拦截所有请求(修复 #933#934
91+
- 修复 OpenAI 解析器安全问题
92+
- 修复数据库测试使用异步会话与同步代码不匹配
93+
- 修复从 3.1.x 升级到 3.2 时配置字段冲突导致设置丢失(修复 #956
94+
- `program.sleep_time` / `program.times` 自动迁移到 `rss_time` / `rename_time`
95+
- 移除废弃的 `rss_parser` 字段(`type``custom_url``token``enable_tmdb`
96+
- 修复 `ENV_TO_ATTR` 环境变量映射指向不存在的模型字段
97+
- 修复 `DEFAULT_SETTINGS` 与当前配置模型不一致
98+
- 修复版本升级迁移逻辑错误(所有升级都调用 3.0→3.1 迁移)
99+
- 新增基于源版本的版本感知迁移分发
100+
- 新增 `from_31_to_32()` 迁移函数处理数据库架构变更
101+
102+
## 前端
103+
104+
### 新功能
105+
106+
- 全新 UI 设计系统重构
107+
- 统一设计令牌(颜色、字体、间距、阴影、动画)
108+
- 支持深色/浅色主题切换
109+
- 全面的无障碍支持(ARIA、键盘导航、焦点管理)
110+
- 移动端响应式布局
111+
- 新增首次运行设置向导页面
112+
- 多步骤向导组件(进度条 + 步骤导航)
113+
- 路由守卫自动检测并重定向到设置页面
114+
- 下载器/RSS/通知连接测试反馈
115+
- 中英文 i18n 支持
116+
- 新增 Passkey 管理面板(设置页面)
117+
- WebAuthn 浏览器支持检测
118+
- 自动识别设备名称
119+
- Passkey 列表显示和删除
120+
- 登录页面新增 Passkey 指纹登录按钮(支持无用户名登录)
121+
- 新增日历视图页面
122+
- 新增下载器管理页面
123+
- 番剧卡片新增悬停遮罩层(显示标题和标签)
124+
- 新增 `resolvePosterUrl` 工具函数,统一处理外部 URL 和本地路径(修复 #934
125+
- 重新设计搜索面板,新增模态框和过滤系统
126+
- 新增筛选区域,支持按字幕组、分辨率、字幕类型、季度分类筛选
127+
- 多选筛选器,智能禁用不兼容的选项(灰色显示)
128+
- 结果项标签改为非点击式彩色药丸样式
129+
- 统一标签样式(药丸形状、12px 字体)
130+
- 标签值标准化(分辨率:FHD/HD/4K,字幕:简/繁/双语)
131+
- 筛选分类和结果变体支持展开/收起
132+
- 海报高度自动匹配 4 行变体项(168px)
133+
- 点击弹窗外部自动关闭
134+
- 重新设计登录面板,采用现代毛玻璃风格
135+
- 日志页面新增日志级别过滤功能
136+
- 重新设计 LLM 设置面板(修复 #938
137+
- 重新设计设置、下载器、播放器、日志页面样式
138+
- 新增搜索源设置面板
139+
- 支持查看、添加、编辑、删除搜索源
140+
- 默认搜索源(mikan、nyaa、dmhy)不可删除
141+
- URL 模板验证,确保包含 `%s` 占位符
142+
- 新增 iOS 风格通知角标系统
143+
- 黄色角标 + 紫色边框显示需要检查的订阅
144+
- 支持组合显示(如 `! | 2` 表示有警告且有多个规则)
145+
- 卡片黄色发光动画提示需要注意
146+
- 编辑弹窗新增警告横幅,支持一键自动检测和忽略
147+
- 规则选择弹窗高亮显示有警告的规则
148+
- 日历页面番剧分组:相同番剧的多个规则合并显示,点击可选择具体规则
149+
- 番剧列表页新增可折叠的「已归档」分区
150+
- 番剧列表页新增骨架屏加载动画
151+
- 规则编辑器新增剧集偏移字段和「自动检测」按钮
152+
- 首页空状态新增「添加 RSS 订阅」按钮,引导新用户快速上手
153+
- 日历页面海报图片添加懒加载,提升性能
154+
- 日历页面「未知播出日」独立为单独区块,优化视觉节奏
155+
- RSS 管理页面新增连接状态标签:健康时显示绿色「已连接」,错误时显示红色「错误」并通过 tooltip 显示错误详情
156+
- 全新移动端优先响应式设计
157+
- 三层断点系统:移动端(<640px)、平板(640-1023px)、桌面端(≥1024px)
158+
- 移动端底部导航栏(带图标和文字标签)
159+
- 平板迷你侧边栏(56px 图标导航)
160+
- 移动端弹窗自动切换为底部抽屉
161+
- 支持下拉刷新
162+
- 支持水平滑动容器
163+
- 移动端卡片列表替代数据表格(RSS 页面)
164+
- CSS Grid 响应式布局(番剧卡片网格)
165+
- 移动端表单标签垂直堆叠,输入框全宽
166+
- 触摸目标最小 44px,符合无障碍标准
167+
- 安全区域支持(刘海屏设备)
168+
- `100dvh` 动态视口高度(修复移动端浏览器地址栏问题)
169+
- `viewport-fit=cover` 全屏设备支持
170+
171+
### 新组件
172+
173+
- `ab-bottom-sheet` — 触摸驱动的底部抽屉组件(拖动关闭、最大高度限制)
174+
- `ab-adaptive-modal` — 自适应弹窗(移动端底部抽屉 / 桌面端居中对话框)
175+
- `ab-pull-refresh` — 下拉刷新包装组件
176+
- `ab-swipe-container` — 水平滑动容器(CSS scroll-snap)
177+
- `ab-data-list` — 移动端友好的卡片列表(替代 NDataTable)
178+
- `ab-mobile-nav` — 增强版底部导航栏(图标 + 标签 + 激活指示器)
179+
- `useSafeArea` — 安全区域组合式函数
180+
181+
### 性能优化
182+
183+
- 下载器 store 使用 `shallowRef` 替代 `ref`,避免大数组的深层响应式代理
184+
- 表格列定义改为 `computed`,避免每次渲染重建
185+
- RSS 表格列与数据分离,数据变化时不重建列配置
186+
- 日历页移除重复的 `getAll()` 调用
187+
- `ab-select``watchEffect` 改为 `watch`,消除挂载时的无效 emit
188+
- `useClipboard` 提升到 store 顶层,避免每次 `copy()` 创建新实例
189+
- `setInterval` 替换为 `useIntervalFn`,自动生命周期管理
190+
191+
### 变更
192+
193+
- 重构搜索逻辑,移除 rxjs 依赖
194+
- 搜索 store 导出重构以匹配组件期望
195+
- 升级前端依赖
196+
- 断点系统从单一 1024px 扩展为 640px + 1024px 双层
197+
- `useBreakpointQuery` 新增 `isTablet``isMobileOrTablet``isTabletOrPC`
198+
- `media-query.vue` 新增 `#tablet` 插槽(回退到 `#mobile`
199+
- UnoCSS 新增 `sm: 640px` 断点
200+
- `ab-input` 移动端全宽 + 增大触摸目标样式
201+
- 布局使用 `dvh` 单位替代 `vh`,支持 safe-area-inset
202+
- 修复日历页面未知列宽度问题
203+
- 统一下载器页面操作栏按钮尺寸
204+
- 修复移动端设置页面水平溢出问题
205+
- 输入框添加 `max-width: 100%` 防止超出容器
206+
- 折叠面板添加宽度约束和溢出隐藏
207+
- 设置栅格添加 `min-width: 0` 允许收缩
208+
- 修复移动端顶栏布局
209+
- 搜索按钮改为弹性布局,填充 Logo 和图标之间的空间
210+
- 减小图标按钮尺寸和间距,优化紧凑型布局
211+
- 添加「点击搜索」文字提示
212+
- 修复移动端搜索弹窗关闭按钮被截断问题
213+
- 减小弹窗头部内边距和元素尺寸
214+
- 搜索源选择按钮缩小至适配移动端
215+
- 修复设置页面保存/取消按钮缺少加载状态
216+
- 修复侧边栏展开动画抖动(rotateY → rotate)
217+
- 移动端底部导航标签字号从 10px 增至 11px,提升可读性
218+
- 登录页背景动画添加 `will-change: transform` 优化 GPU 性能
219+
220+
## CI/基础设施
221+
222+
- CI 新增 PR 打开时的构建测试(dev 分支 PR 到 main 自动触发构建)
223+
- CI 升级 `actions/upload-artifact``actions/download-artifact` 到 v4
224+
- Docker 构建移除 `linux/arm/v7` 平台(uv 镜像不支持)
225+
- 新增 CLAUDE.md 开发指南

docs/changelog/3.2.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@
2323
- Added search provider configuration API
2424
- `GET /search/provider/config` - Get search provider config
2525
- `PUT /search/provider/config` - Update search provider config
26+
- Offset detection panel now shows suggested values (parsed season/episode and recommended offset)
27+
- Fixed season offset not being applied to download folder path
28+
- Setting season offset now auto-updates qBittorrent save path (e.g., `Season 2``Season 1`)
29+
- RSS rule save paths also sync the update
30+
- Optimized episode offset suggestion logic
31+
- Simple season mismatch no longer suggests episode offset (only virtual seasons need it)
32+
- Improved prompt messages to clarify whether episode adjustment is needed
2633
- Added RSS connection status tracking
2734
- Records `connection_status` (healthy/error), `last_checked_at`, and `last_error` after each refresh
2835
- Added first-run setup wizard
@@ -116,6 +123,14 @@
116123
- Added Bangumi card hover overlay (showing title and tags)
117124
- Added `resolvePosterUrl` utility function for unified external URL and local path handling (fixes #934)
118125
- Redesigned search panel with modal and filter system
126+
- Added filter section supporting fansub group, resolution, subtitle type, and season filtering
127+
- Multi-select filters with smart disable for incompatible options (grayed out)
128+
- Result item tags changed to non-clickable colored pill style
129+
- Unified tag styling (pill shape, 12px font)
130+
- Standardized tag values (resolution: FHD/HD/4K, subtitles: CHS/CHT/Dual)
131+
- Filter categories and result variants support expand/collapse
132+
- Poster height auto-matches 4 rows of variant items (168px)
133+
- Click outside modal to auto-close
119134
- Redesigned login panel with modern glassmorphism style
120135
- Added log level filter in log view
121136
- Redesigned LLM settings panel (fixes #938)
@@ -134,6 +149,9 @@
134149
- Bangumi list page collapsible "Archived" section
135150
- Bangumi list page skeleton loading animation
136151
- Rule editor episode offset field with "Auto Detect" button
152+
- Empty state on home page now includes "Add RSS Subscription" button to guide new users
153+
- Calendar page poster images now use lazy loading for better performance
154+
- Calendar page "Unknown Air Date" section separated into its own block for better visual rhythm
137155
- RSS management page connection status labels: green "Connected" when healthy, red "Error" with tooltip for details
138156
- New mobile-first responsive design
139157
- Three-tier breakpoint system: mobile (<640px), tablet (640-1023px), desktop (≥1024px)
@@ -183,6 +201,21 @@
183201
- Layout uses `dvh` units instead of `vh`, supports safe-area-inset
184202
- Fixed calendar page unknown column width
185203
- Unified action bar button sizes in downloader page
204+
- Fixed mobile settings page horizontal overflow
205+
- Added `max-width: 100%` to inputs to prevent container overflow
206+
- Added width constraint and overflow hidden to fold panels
207+
- Added `min-width: 0` to settings grid to allow shrinking
208+
- Fixed mobile top bar layout
209+
- Search button changed to flex layout, filling space between logo and icons
210+
- Reduced icon button size and spacing for compact layout
211+
- Added "Click to search" text hint
212+
- Fixed mobile search modal close button being cut off
213+
- Reduced modal header padding and element sizes
214+
- Search source selection buttons scaled down for mobile
215+
- Fixed settings page save/cancel buttons missing loading state
216+
- Fixed sidebar expand animation jitter (rotateY → rotate)
217+
- Mobile bottom navigation label font size increased from 10px to 11px for better readability
218+
- Login page background animation added `will-change: transform` for GPU performance
186219

187220
## CI/Infrastructure
188221

0 commit comments

Comments
 (0)