diff --git a/CHANGELOG b/CHANGELOG index 2b973ff..a81719c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,18 @@ +## [200.2.0] - 2025-12-04 + +### Added +- 新增弹幕过滤功能 +- 配置文件现在支持上传json +- 搜索结果现在支持缓存 + +### Changed +- 登录页面现在可以保存和查看密码 +- 优化弹幕自动匹配 +- 优化超分功能 + +### Fixed +- 弹幕自动加载失败现在有提示了 + ## [200.1.0] - 2025-12-03 ### Changed diff --git a/src/app/play/page.tsx b/src/app/play/page.tsx index e43991e..a55c69d 100644 --- a/src/app/play/page.tsx +++ b/src/app/play/page.tsx @@ -187,6 +187,7 @@ function PlayPageClient() { const [danmakuMatches, setDanmakuMatches] = useState([]); const [showDanmakuSourceSelector, setShowDanmakuSourceSelector] = useState(false); const [showDanmakuFilterSettings, setShowDanmakuFilterSettings] = useState(false); + const [currentSearchKeyword, setCurrentSearchKeyword] = useState(''); // 当前搜索使用的关键词 const [toast, setToast] = useState(null); useEffect(() => { @@ -1632,13 +1633,14 @@ function PlayPageClient() { const handleDanmakuSelect = async (selection: DanmakuSelection) => { setCurrentDanmakuSelection(selection); - // 保存选择记忆 + // 保存选择记忆(包含搜索关键词) saveDanmakuMemory( videoTitleRef.current, selection.animeId, selection.episodeId, selection.animeTitle, - selection.episodeTitle + selection.episodeTitle, + selection.searchKeyword // 保存用户使用的搜索关键词 ); // 获取该动漫的所有剧集列表 @@ -1691,13 +1693,14 @@ function PlayPageClient() { setCurrentDanmakuSelection(selection); - // 保存选择记忆 + // 保存选择记忆(使用当前搜索关键词) saveDanmakuMemory( title, selection.animeId, selection.episodeId, selection.animeTitle, - selection.episodeTitle + selection.episodeTitle, + currentSearchKeyword || undefined // 使用保存的搜索关键词 ); // 加载弹幕 @@ -1794,38 +1797,79 @@ function PlayPageClient() { setCurrentDanmakuSelection(selection); - // 更新选择记忆 + // 更新选择记忆(保留原搜索词) saveDanmakuMemory( title, selection.animeId, selection.episodeId, selection.animeTitle, - selection.episodeTitle + selection.episodeTitle, + memory.searchKeyword // 保留原有的搜索关键词 ); await loadDanmaku(episode.episodeId); return; } } - } catch (error) { - console.error('获取弹幕剧集列表失败:', error); + + // 如果使用记忆加载失败,清除该记忆并继续自动搜索 + console.warn('[弹幕] 使用缓存加载失败,清除缓存并从头搜索'); if (artPlayerRef.current) { - artPlayerRef.current.notice.show = '弹幕加载失败:无法获取剧集列表'; + artPlayerRef.current.notice.show = '缓存的弹幕源失效,正在重新搜索...'; + } + // 清除失效的记忆 + if (typeof window !== 'undefined') { + try { + const memoriesJson = localStorage.getItem('danmaku_memories'); + if (memoriesJson) { + const memories = JSON.parse(memoriesJson); + delete memories[title]; + localStorage.setItem('danmaku_memories', JSON.stringify(memories)); + console.log('[弹幕] 已清除失效的缓存记忆'); + } + } catch (e) { + console.error('[弹幕] 清除缓存记忆失败:', e); + } + } + } catch (error) { + console.error('[弹幕] 使用缓存加载失败:', error); + if (artPlayerRef.current) { + artPlayerRef.current.notice.show = '缓存的弹幕源失效,正在重新搜索...'; + } + // 清除失效的记忆 + if (typeof window !== 'undefined') { + try { + const memoriesJson = localStorage.getItem('danmaku_memories'); + if (memoriesJson) { + const memories = JSON.parse(memoriesJson); + delete memories[title]; + localStorage.setItem('danmaku_memories', JSON.stringify(memories)); + console.log('[弹幕] 已清除失效的缓存记忆'); + } + } catch (e) { + console.error('[弹幕] 清除缓存记忆失败:', e); + } } } + // 继续执行后面的自动搜索逻辑,不要 return } // 自动搜索弹幕 setDanmakuLoading(true); + // 优先使用保存的搜索关键词,否则使用视频标题 + const searchKeyword = memory?.searchKeyword || title; + console.log('[弹幕] 搜索关键词:', searchKeyword, memory?.searchKeyword ? '(使用保存的关键词)' : '(使用视频标题)'); + try { - const searchResult = await searchAnime(title); + const searchResult = await searchAnime(searchKeyword); if (searchResult.success && searchResult.animes.length > 0) { // 如果有多个匹配结果,让用户选择 if (searchResult.animes.length > 1) { console.log(`找到 ${searchResult.animes.length} 个弹幕源,等待用户选择`); setDanmakuMatches(searchResult.animes); + setCurrentSearchKeyword(searchKeyword); // 保存当前搜索关键词 setShowDanmakuSourceSelector(true); setDanmakuLoading(false); if (artPlayerRef.current) { @@ -1864,13 +1908,14 @@ function PlayPageClient() { setCurrentDanmakuSelection(selection); - // 保存选择记忆 + // 保存选择记忆(保存搜索关键词) saveDanmakuMemory( title, selection.animeId, selection.episodeId, selection.animeTitle, - selection.episodeTitle + selection.episodeTitle, + searchKeyword // 保存实际使用的搜索关键词 ); // 加载弹幕 diff --git a/src/components/DanmakuPanel.tsx b/src/components/DanmakuPanel.tsx index 5971875..1516471 100644 --- a/src/components/DanmakuPanel.tsx +++ b/src/components/DanmakuPanel.tsx @@ -96,11 +96,12 @@ export default function DanmakuPanel({ episodeId: episode.episodeId, animeTitle: selectedAnime.animeTitle, episodeTitle: episode.episodeTitle, + searchKeyword: searchKeyword.trim() || undefined, // 使用当前搜索框的关键词 }; onDanmakuSelect(selection); }, - [selectedAnime, onDanmakuSelect] + [selectedAnime, searchKeyword, onDanmakuSelect] ); // 回到搜索结果 diff --git a/src/lib/changelog.ts b/src/lib/changelog.ts index 77fe6ad..d8f1115 100644 --- a/src/lib/changelog.ts +++ b/src/lib/changelog.ts @@ -10,66 +10,242 @@ export interface ChangelogEntry { } export const changelog: ChangelogEntry[] = [ - { - version: "200.1.0", - date: "2025-12-03", + { + version: '200.2.0', + date: '2025-12-04', added: [ + '新增弹幕过滤功能', + '配置文件现在支持上传json', + '搜索结果现在支持缓存', ], changed: [ - "评论抓取功能更改为懒加载", - "评论抓取功能增加开关,默认为关闭", + '登录页面现在可以保存和查看密码', + '优化弹幕自动匹配', + '优化超分功能', ], - fixed: [ - "修复播放页500错误" - ] - }, - { - version: "200.0.0", - date: "2025-12-02", - added: [ - "新增外部播放器跳转", - "新增视频超分", - "新增弹幕抓取", - "新增评论抓取" - ], - changed: [ - ], - fixed: [ - "修复首页卡顿" - ] + fixed: ['弹幕自动加载失败现在有提示了'], }, { - version: "100.0.0", - date: "2025-08-26", + version: '200.1.0', + date: '2025-12-03', + added: [], + changed: ['评论抓取功能更改为懒加载', '评论抓取功能增加开关,默认为关闭'], + fixed: ['修复播放页500错误'], + }, + { + version: '200.0.0', + date: '2025-12-02', added: [ - "新增对 SITE_BASE 环境变量的支持,解决 m3u8 重写时 base url 错误的问题" + '新增外部播放器跳转', + '新增视频超分', + '新增弹幕抓取', + '新增评论抓取', + ], + changed: [], + fixed: ['修复首页卡顿'], + }, + { + version: '100.0.0', + date: '2025-08-26', + added: [ + '新增对 SITE_BASE 环境变量的支持,解决 m3u8 重写时 base url 错误的问题', + ], + changed: ['移除授权相关逻辑', '移除代码混淆', '移除 melody-cdn-sharon'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '4.3.0', + date: '2025-08-26', + added: ['支持将 IPTV 频道添加到收藏中'], + changed: ['禁用 flv 直播,仅支持 m3u8 直播', '降低代理 ts 分片的内存占用'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '4.2.1', + date: '2025-08-26', + added: [ + // 无新增内容 ], changed: [ - "移除授权相关逻辑", - "移除代码混淆", - "移除 melody-cdn-sharon" + // 无变更内容 + ], + fixed: ['修复直播源加载失败或离开页面后依然无限加载的问题'], + }, + { + version: '4.2.0', + date: '2025-08-26', + added: [ + '支持 flv 直播和直播地址解析到 mp4 的处理', + '增加直播台标的 proxy 以防止 cors', + '支持播放页选集分组的滚动翻页', + ], + changed: ['管理后台页面的按钮增加加载中的 UI'], + fixed: ['/api/proxy/m3u8 仅对 m3u8 内容反序列化,降低内存和 CPU 消耗'], + }, + { + version: '4.1.1', + date: '2025-08-25', + added: [ + // 无新增内容 + ], + changed: ['增加对 url-tvg 和多 epg url 的支持'], + fixed: ['修复 epg 数据清洗中去重叠逻辑未考虑日期导致的问题'], + }, + { + version: '4.1.0', + date: '2025-08-24', + added: ['解析 m3u 自带的 epg 和自定义 epg,增加今日节目单'], + changed: ['直播源数据刷新改为并发刷新'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '4.0.0', + date: '2025-08-24', + added: ['增加 iptv 订阅和播放功能'], + changed: [ + '搜索页面视频卡片移动端/右键菜单添加豆瓣链接', + '搜索建议遵循色情过滤', ], fixed: [ // 无修复内容 - ] + ], }, { - version: "4.3.0", - date: "2025-08-26", + version: '3.2.1', + date: '2025-08-22', added: [ - "支持将 IPTV 频道添加到收藏中" - ], - changed: [ - "禁用 flv 直播,仅支持 m3u8 直播", - "降低代理 ts 分片的内存占用" + // 无新增内容 ], + changed: ['新增色色过滤分类', '调整搜索建议框层级'], fixed: [ // 无修复内容 - ] + ], }, { - version: "4.2.1", - date: "2025-08-26", + version: '3.2.0', + date: '2025-08-22', + added: [ + '视频源管理支持批量启用、禁用、删除', + '用户管理支持批量设置用户组', + '视频卡片右键/长按菜单新增新标签页播放', + ], + changed: [ + '视频卡片移动端 hover 时仅保留播放按钮', + '微调管理页面 UI 和视频卡片右键/长按菜单中的收藏样式', + ], + fixed: ['修复了搜索栏 enter 键自动选中第一个建议项的问题'], + }, + { + version: '3.1.2', + date: '2025-08-22', + added: [ + // 无新增内容 + ], + changed: [ + // 无变更内容 + ], + fixed: ['修复移动端卡片无法点击的问题'], + }, + { + version: '3.1.1', + date: '2025-08-21', + added: [ + // 无新增内容 + ], + changed: [ + // 无变更内容 + ], + fixed: ['修复了视频卡片 hover 的非播放按钮点击后进入播放页的问题'], + }, + { + version: '3.1.0', + date: '2025-08-21', + added: [ + '增加用户组管理和用户组播放源限制', + '增加管理面板视频源有效性检查', + '搜索栏增加一键删除按钮', + ], + changed: [ + '放宽授权心跳对于网络问题的判断标准', + '统一管理面板弹窗使用 createPortal', + 'VideoCard 允许移动端响应 hover 事件', + '移动端布局 header 常驻,搜索按钮移动到 header 右侧', + '调大搜索接口超时时间', + ], + fixed: ['修复 bangumi 返回的整数评分无小数导致 UI 不对齐的问题'], + }, + { + version: '3.0.2', + date: '2025-08-20', + added: [ + // 无新增内容 + ], + changed: ['优化机器码生成逻辑'], + fixed: ['修复 redis url 不支持 rediss 协议的问题'], + }, + { + version: '3.0.1', + date: '2025-08-20', + added: [ + // 无新增内容 + ], + changed: [ + // 无变更内容 + ], + fixed: ['修复授权初始化错误'], + }, + { + version: '3.0.0', + date: '2025-08-20', + added: ['防盗卖加固', '支持自定义用户可用视频源'], + changed: ['右键视频卡片可弹出操作菜单'], + fixed: ['过滤掉集数为 0 的搜索结果'], + }, + { + version: '2.7.1', + date: '2025-08-17', + added: [ + // 无新增内容 + ], + changed: [ + // 无变更内容 + ], + fixed: ['修复 iOS 下版本面板可穿透滚动背景的问题'], + }, + { + version: '2.7.0', + date: '2025-08-17', + added: ['视频卡片新增移动端操作面板,优化触控屏操作体验'], + changed: ['优化集数标题的匹配和展示逻辑'], + fixed: ['修复设置面板和修改密码面板背景可被拖动的问题'], + }, + { + version: '2.6.0', + date: '2025-08-17', + added: [ + '新增搜索流式输出接口,并设置流式搜索为默认搜索接口,优化搜索体验', + '新增源站搜索结果内存缓存,粒度为源站+关键词+页数,缓存 10 分钟', + '新增豆瓣 CDN provided by @JohnsonRan', + ], + changed: [ + '搜索结果默认为无排序状态,不再默认按照年份排序', + '常规搜索接口无结果时,不再设置响应的缓存头', + '移除豆瓣数据源中的 cors-anywhere 方式', + ], + fixed: [ + '数据导出时导出站长密码,保证迁移到新账户时原站长用户可正常登录', + '聚合卡片优化移动端源信息展示', + ], + }, + { + version: '2.4.1', + date: '2025-08-15', added: [ // 无新增内容 ], @@ -77,441 +253,173 @@ export const changelog: ChangelogEntry[] = [ // 无变更内容 ], fixed: [ - "修复直播源加载失败或离开页面后依然无限加载的问题" - ] + '对导入和 db 读取的配置文件做自检,防止 USERNAME 修改导致用户状态异常', + ], }, { - version: "4.2.0", - date: "2025-08-26", - added: [ - "支持 flv 直播和直播地址解析到 mp4 的处理", - "增加直播台标的 proxy 以防止 cors", - "支持播放页选集分组的滚动翻页" - ], + version: '2.4.0', + date: '2025-08-15', + added: ['支持 kvrocks 存储(持久化 kv 存储)'], changed: [ - "管理后台页面的按钮增加加载中的 UI" + // 无变更内容 ], fixed: [ - "/api/proxy/m3u8 仅对 m3u8 内容反序列化,降低内存和 CPU 消耗" - ] + '修复搜索结果排序不稳定的问题', + '导入数据时同时更新内存缓存的管理员配置', + ], }, { - version: "4.1.1", - date: "2025-08-25", + version: '2.3.0', + date: '2025-08-15', + added: ['支持站长导入导出整站数据'], + changed: ['仅允许站长操作配置文件', '微调搜索结果过滤面板的移动端样式'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '2.2.1', + date: '2025-08-14', added: [ // 无新增内容 ], changed: [ - "增加对 url-tvg 和多 epg url 的支持" + // 无变更内容 ], - fixed: [ - "修复 epg 数据清洗中去重叠逻辑未考虑日期导致的问题" - ] + fixed: ['修复了筛选 panel 打开时滚动页面 panel 不跟随的问题'], }, { - version: "4.1.0", - date: "2025-08-24", + version: '2.2.0', + date: '2025-08-14', added: [ - "解析 m3u 自带的 epg 和自定义 epg,增加今日节目单" + '搜索结果支持按播放源、标题和年份筛选,支持按年份排序', + '搜索界面视频卡片展示年份信息,聚合卡片展示播放源', ], changed: [ - "直播源数据刷新改为并发刷新" + // 无变更内容 + ], + fixed: [ + '修复 /api/search/resources 返回空的问题', + '修复 upstash 实例无法编辑自定义分类的问题', + ], + }, + { + version: '2.1.0', + date: '2025-08-13', + added: ['支持通过订阅获取配置文件'], + changed: ['微调部分文案和 UI', '删除部分无用代码'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '2.0.1', + date: '2025-08-13', + added: [ + // 无新增内容 + ], + changed: ['版本检查和变更日志请求 Github'], + fixed: ['微调管理面板样式'], + }, + { + version: '2.0.0', + date: '2025-08-13', + added: [ + '支持配置文件在线配置和编辑', + '搜索页搜索框实时联想', + '去除对 localstorage 模式的支持', + ], + changed: ['播放记录删除按钮改为垃圾桶图标以消除歧义'], + fixed: ['限制设置面板的最大长度,防止超出视口'], + }, + { + version: '1.1.1', + date: '2025-08-12', + added: [ + // 无新增内容 + ], + changed: ['修正 zwei 提供的 cors proxy 地址', '移除废弃代码'], + fixed: ['[运维] docker workflow release 日期使用东八区日期'], + }, + { + version: '1.1.0', + date: '2025-08-12', + added: ['每日新番放送功能,展示每日新番放送的番剧'], + changed: [ + // 无变更内容 + ], + fixed: ['修复远程 CHANGELOG 无法提取变更内容的问题'], + }, + { + version: '1.0.5', + date: '2025-08-12', + added: [ + // 无新增内容 + ], + changed: ['实现基于 Git 标签的自动 Release 工作流'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '1.0.4', + date: '2025-08-11', + added: ['优化版本管理工作流,实现单点修改'], + changed: ['版本号现在从 CHANGELOG 自动提取,无需手动维护 VERSION.txt'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '1.0.3', + date: '2025-08-11', + added: [ + // 无新增内容 + ], + changed: ['升级播放器 Artplayer 至版本 5.2.5'], + fixed: [ + // 无修复内容 + ], + }, + { + version: '1.0.2', + date: '2025-08-11', + added: [ + // 无新增内容 + ], + changed: [ + '版本号比较机制恢复为数字比较,仅当最新版本大于本地版本时才认为有更新', + '[运维] 自动替换 version.ts 中的版本号为 VERSION.txt 中的版本号', ], fixed: [ // 无修复内容 - ] + ], }, { - version: "4.0.0", - date: "2025-08-24", - added: [ - "增加 iptv 订阅和播放功能" - ], - changed: [ - "搜索页面视频卡片移动端/右键菜单添加豆瓣链接", - "搜索建议遵循色情过滤" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "3.2.1", - date: "2025-08-22", - added: [ - // 无新增内容 - ], - changed: [ - "新增色色过滤分类", - "调整搜索建议框层级" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "3.2.0", - date: "2025-08-22", - added: [ - "视频源管理支持批量启用、禁用、删除", - "用户管理支持批量设置用户组", - "视频卡片右键/长按菜单新增新标签页播放" - ], - changed: [ - "视频卡片移动端 hover 时仅保留播放按钮", - "微调管理页面 UI 和视频卡片右键/长按菜单中的收藏样式" - ], - fixed: [ - "修复了搜索栏 enter 键自动选中第一个建议项的问题" - ] - }, - { - version: "3.1.2", - date: "2025-08-22", + version: '1.0.1', + date: '2025-08-11', added: [ // 无新增内容 ], changed: [ // 无变更内容 ], - fixed: [ - "修复移动端卡片无法点击的问题" - ] + fixed: ['修复版本检查功能,只要与最新版本号不一致即认为有更新'], }, { - version: "3.1.1", - date: "2025-08-21", + version: '1.0.0', + date: '2025-08-10', added: [ - // 无新增内容 - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复了视频卡片 hover 的非播放按钮点击后进入播放页的问题" - ] - }, - { - version: "3.1.0", - date: "2025-08-21", - added: [ - "增加用户组管理和用户组播放源限制", - "增加管理面板视频源有效性检查", - "搜索栏增加一键删除按钮" - ], - changed: [ - "放宽授权心跳对于网络问题的判断标准", - "统一管理面板弹窗使用 createPortal", - "VideoCard 允许移动端响应 hover 事件", - "移动端布局 header 常驻,搜索按钮移动到 header 右侧", - "调大搜索接口超时时间" - ], - fixed: [ - "修复 bangumi 返回的整数评分无小数导致 UI 不对齐的问题" - ] - }, - { - version: "3.0.2", - date: "2025-08-20", - added: [ - // 无新增内容 - ], - changed: [ - "优化机器码生成逻辑" - ], - fixed: [ - "修复 redis url 不支持 rediss 协议的问题" - ] - }, - { - version: "3.0.1", - date: "2025-08-20", - added: [ - // 无新增内容 - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复授权初始化错误" - ] - }, - { - version: "3.0.0", - date: "2025-08-20", - added: [ - "防盗卖加固", - "支持自定义用户可用视频源" - ], - changed: [ - "右键视频卡片可弹出操作菜单" - ], - fixed: [ - "过滤掉集数为 0 的搜索结果" - ] - }, - { - version: "2.7.1", - date: "2025-08-17", - added: [ - // 无新增内容 - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复 iOS 下版本面板可穿透滚动背景的问题" - ] - }, - { - version: "2.7.0", - date: "2025-08-17", - added: [ - "视频卡片新增移动端操作面板,优化触控屏操作体验" - ], - changed: [ - "优化集数标题的匹配和展示逻辑" - ], - fixed: [ - "修复设置面板和修改密码面板背景可被拖动的问题" - ] - }, - { - version: "2.6.0", - date: "2025-08-17", - added: [ - "新增搜索流式输出接口,并设置流式搜索为默认搜索接口,优化搜索体验", - "新增源站搜索结果内存缓存,粒度为源站+关键词+页数,缓存 10 分钟", - "新增豆瓣 CDN provided by @JohnsonRan" - ], - changed: [ - "搜索结果默认为无排序状态,不再默认按照年份排序", - "常规搜索接口无结果时,不再设置响应的缓存头", - "移除豆瓣数据源中的 cors-anywhere 方式" - ], - fixed: [ - "数据导出时导出站长密码,保证迁移到新账户时原站长用户可正常登录", - "聚合卡片优化移动端源信息展示" - ] - }, - { - version: "2.4.1", - date: "2025-08-15", - added: [ - // 无新增内容 - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "对导入和 db 读取的配置文件做自检,防止 USERNAME 修改导致用户状态异常" - ] - }, - { - version: "2.4.0", - date: "2025-08-15", - added: [ - "支持 kvrocks 存储(持久化 kv 存储)" - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复搜索结果排序不稳定的问题", - "导入数据时同时更新内存缓存的管理员配置" - ] - }, - { - version: "2.3.0", - date: "2025-08-15", - added: [ - "支持站长导入导出整站数据" - ], - changed: [ - "仅允许站长操作配置文件", - "微调搜索结果过滤面板的移动端样式" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "2.2.1", - date: "2025-08-14", - added: [ - // 无新增内容 - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复了筛选 panel 打开时滚动页面 panel 不跟随的问题" - ] - }, - { - version: "2.2.0", - date: "2025-08-14", - added: [ - "搜索结果支持按播放源、标题和年份筛选,支持按年份排序", - "搜索界面视频卡片展示年份信息,聚合卡片展示播放源" - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复 /api/search/resources 返回空的问题", - "修复 upstash 实例无法编辑自定义分类的问题" - ] - }, - { - version: "2.1.0", - date: "2025-08-13", - added: [ - "支持通过订阅获取配置文件" - ], - changed: [ - "微调部分文案和 UI", - "删除部分无用代码" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "2.0.1", - date: "2025-08-13", - added: [ - // 无新增内容 - ], - changed: [ - "版本检查和变更日志请求 Github" - ], - fixed: [ - "微调管理面板样式" - ] - }, - { - version: "2.0.0", - date: "2025-08-13", - added: [ - "支持配置文件在线配置和编辑", - "搜索页搜索框实时联想", - "去除对 localstorage 模式的支持" - ], - changed: [ - "播放记录删除按钮改为垃圾桶图标以消除歧义" - ], - fixed: [ - "限制设置面板的最大长度,防止超出视口" - ] - }, - { - version: "1.1.1", - date: "2025-08-12", - added: [ - // 无新增内容 - ], - changed: [ - "修正 zwei 提供的 cors proxy 地址", - "移除废弃代码" - ], - fixed: [ - "[运维] docker workflow release 日期使用东八区日期" - ] - }, - { - version: "1.1.0", - date: "2025-08-12", - added: [ - "每日新番放送功能,展示每日新番放送的番剧" - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复远程 CHANGELOG 无法提取变更内容的问题" - ] - }, - { - version: "1.0.5", - date: "2025-08-12", - added: [ - // 无新增内容 - ], - changed: [ - "实现基于 Git 标签的自动 Release 工作流" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "1.0.4", - date: "2025-08-11", - added: [ - "优化版本管理工作流,实现单点修改" - ], - changed: [ - "版本号现在从 CHANGELOG 自动提取,无需手动维护 VERSION.txt" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "1.0.3", - date: "2025-08-11", - added: [ - // 无新增内容 - ], - changed: [ - "升级播放器 Artplayer 至版本 5.2.5" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "1.0.2", - date: "2025-08-11", - added: [ - // 无新增内容 - ], - changed: [ - "版本号比较机制恢复为数字比较,仅当最新版本大于本地版本时才认为有更新", - "[运维] 自动替换 version.ts 中的版本号为 VERSION.txt 中的版本号" - ], - fixed: [ - // 无修复内容 - ] - }, - { - version: "1.0.1", - date: "2025-08-11", - added: [ - // 无新增内容 - ], - changed: [ - // 无变更内容 - ], - fixed: [ - "修复版本检查功能,只要与最新版本号不一致即认为有更新" - ] - }, - { - version: "1.0.0", - date: "2025-08-10", - added: [ - "基于 Semantic Versioning 的版本号机制", - "版本信息面板,展示本地变更日志和远程更新日志" + '基于 Semantic Versioning 的版本号机制', + '版本信息面板,展示本地变更日志和远程更新日志', ], changed: [ // 无变更内容 ], fixed: [ // 无修复内容 - ] - } + ], + }, ]; export default changelog; diff --git a/src/lib/danmaku/api.ts b/src/lib/danmaku/api.ts index feab539..8333eb0 100644 --- a/src/lib/danmaku/api.ts +++ b/src/lib/danmaku/api.ts @@ -220,6 +220,7 @@ export interface DanmakuMemory { animeTitle: string; episodeTitle: string; timestamp: number; + searchKeyword?: string; // 用户手动搜索时使用的关键词 } // 保存弹幕选择记忆 @@ -228,7 +229,8 @@ export function saveDanmakuMemory( animeId: number, episodeId: number, animeTitle: string, - episodeTitle: string + episodeTitle: string, + searchKeyword?: string // 可选的搜索关键词 ): void { if (typeof window === 'undefined') return; @@ -240,6 +242,7 @@ export function saveDanmakuMemory( animeTitle, episodeTitle, timestamp: Date.now(), + searchKeyword, // 保存搜索关键词 }; // 获取现有的记忆 diff --git a/src/lib/danmaku/types.ts b/src/lib/danmaku/types.ts index d53ca27..143dd94 100644 --- a/src/lib/danmaku/types.ts +++ b/src/lib/danmaku/types.ts @@ -113,4 +113,5 @@ export interface DanmakuSelection { episodeId: number; animeTitle: string; episodeTitle: string; + searchKeyword?: string; // 用户搜索时使用的关键词 } diff --git a/src/lib/version.ts b/src/lib/version.ts index 494140f..d5a2943 100644 --- a/src/lib/version.ts +++ b/src/lib/version.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ -const CURRENT_VERSION = '200.1.0'; +const CURRENT_VERSION = '200.2.0'; // 导出当前版本号供其他地方使用 export { CURRENT_VERSION };