Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
1b80a84
Refactor: 建立 v6.5 架构迁移基线
Teamper Aug 24, 2026
89747c7
Refactor: 推进 v6.5 服务与集成边界
Teamper Aug 24, 2026
59b242c
Refactor: 收敛详情面板与 FC2 编排边界
Teamper Aug 24, 2026
88950e6
Refactor: 统一磁力质量与监听生命周期
Teamper Aug 24, 2026
0eb08ac
Refactor: 建立列表读取与生命周期边界
Teamper Aug 24, 2026
131bddd
Refactor: 拆分 History 数据访问边界
Teamper Aug 24, 2026
8df62cb
Refactor: 收敛 Stats 数据与对话框依赖
Teamper Aug 24, 2026
eaebaec
Refactor: 收敛 Library 对话框平台依赖
Teamper Aug 24, 2026
354f918
Refactor: 注入 Top250 对话框服务
Teamper Aug 24, 2026
6eb5f87
Refactor: 统一资源操作对话框边界
Teamper Aug 24, 2026
3bd840b
Refactor: 统一新作品对话框边界
Teamper Aug 24, 2026
80d7e5d
Refactor: 统一设置与备份对话框边界
Teamper Aug 24, 2026
8cf2395
Refactor: 收敛 Top250 凭据与对话框边界
Teamper Aug 24, 2026
08c58f1
Refactor: 统一宿主页网络请求边界
Teamper Aug 24, 2026
41a6e83
Refactor: 扩展存储兼容通道
Teamper Aug 24, 2026
458dc9b
Refactor: 统一设置网络诊断边界
Teamper Aug 24, 2026
c0cee01
Refactor: 统一黑名单分页请求边界
Teamper Aug 24, 2026
6fcbe8e
Refactor: 托管自动翻页全局监听
Teamper Aug 24, 2026
47dfe47
Refactor: 托管后台任务调度生命周期
Teamper Aug 24, 2026
961108f
Refactor: 托管 123 云盘授权同步
Teamper Aug 24, 2026
8fe8412
Refactor: 托管 JavTrailers 播放生命周期
Teamper Aug 24, 2026
95de22f
Refactor: 建立 123 云盘 Integration 边界
Teamper Aug 24, 2026
a32e13a
Refactor: 托管 DMM 预览持久化
Teamper Aug 24, 2026
049d3af
Refactor: 移除 NewVideo 导入期存储副作用
Teamper Aug 24, 2026
2806a47
Refactor: 托管外部站点兼容缓存
Teamper Aug 24, 2026
a3714fc
Refactor: 托管资源来源测试请求
Teamper Aug 24, 2026
f7cbd98
Refactor: 收拢 DMM 预览 Integration
Teamper Aug 24, 2026
3bab0b6
Refactor: 托管磁力来源网络请求
Teamper Aug 24, 2026
444aa24
Refactor: 建立迅雷字幕 Integration
Teamper Aug 24, 2026
f1d52c2
Refactor: 托管 JavDB 账户登录
Teamper Aug 24, 2026
d78bf00
Refactor: 统一宿主任务网络边界
Teamper Aug 24, 2026
c971416
Refactor: 建立 115 Integration
Teamper Aug 24, 2026
6346f23
Refactor: 收拢宿主资源生命周期
Teamper Aug 24, 2026
1801c62
Refactor: 建立以图搜图 Integration
Teamper Aug 24, 2026
2445588
Refactor: 统一全局观察器所有权
Teamper Aug 24, 2026
19bb880
Refactor: 收拢列表宿主边界
Teamper Aug 24, 2026
f61d007
Refactor: 建立磁力来源 Integration
Teamper Aug 24, 2026
f8dcaae
Refactor: 收拢演员头像数据边界
Teamper Aug 24, 2026
8ef2e99
Refactor: 统一外部站点 Integration
Teamper Aug 24, 2026
ab38993
Chore: 扩大严格 checkJs 覆盖
Teamper Aug 24, 2026
e1fb9c6
Test: 增加启动性能复核预算
Teamper Aug 24, 2026
ecadd09
Chore: 严格检查 Plugin 兼容外壳
Teamper Aug 24, 2026
40507f4
Fix: 恢复核心样式并提升类型门禁
Teamper Aug 24, 2026
bcc9bfb
Refactor: 建立 Bootstrap 纯净门禁
Teamper Aug 24, 2026
6615470
Chore: 扩大严格类型覆盖
Teamper Aug 24, 2026
99bd975
Chore: 类型化详情资源依赖簇
Teamper Aug 24, 2026
d404412
Chore: 类型化 FC2 详情入口
Teamper Aug 24, 2026
7b9ea3b
Chore: 类型化磁力与封面入口
Teamper Aug 24, 2026
ff7fe38
Chore: 类型化预览与备份面板
Teamper Aug 24, 2026
4a243ee
Chore: 类型化插件运行时
Teamper Aug 24, 2026
072ff92
Chore: 类型化 UI 组件基座
Teamper Aug 24, 2026
e996b2f
Chore: 增加人工发布 Smoke 门禁
Teamper Aug 24, 2026
6cbba14
Refactor: 收敛 legacy 运行时实例创建
Teamper Aug 24, 2026
e0f9b3b
Chore: 类型化 legacy GM HTTP
Teamper Aug 24, 2026
660632c
Chore: 类型化 StateService 事务实现
Teamper Aug 24, 2026
a901c43
Chore: 类型化 History 运行时
Teamper Aug 24, 2026
b2a9984
Refactor: 收敛 List 筛选边界
Teamper Aug 24, 2026
e65a39b
Chore: 类型化 Blacklist 运行时
Teamper Aug 24, 2026
9c9ebfa
Chore: 达成 RC 类型覆盖门禁
Teamper Aug 24, 2026
a846152
Fix: 保持 Contribution 独立禁用语义
Teamper Aug 24, 2026
beee67a
Chore: 强化 Manifest 机器验收
Teamper Aug 24, 2026
dd956ba
Test: 扩展真实站点 Browser Smoke
Teamper Aug 24, 2026
9e0c6e1
Chore: 固化 checkJs 胶水豁免
Teamper Aug 24, 2026
8e2a887
Fix: 统一 Contribution 代码职责
Teamper Aug 24, 2026
5e6c5ad
Chore: 冻结 v6.5.0 候选版本
Teamper Aug 24, 2026
49c1bb3
Fix: 收紧声明式依赖契约
Teamper Aug 25, 2026
5719a75
Fix: 修复 v6.5 RC 交界回归
Teamper Aug 25, 2026
78813b1
Fix: 修复 v6.5 列表与设置运行时回归
Teamper Aug 25, 2026
a507bc4
Fix: 修复可选插件禁用后的设置与 FC2 回归
Teamper Aug 25, 2026
0461419
Fix: 收口 RC 可选依赖与设置回归
Teamper Aug 25, 2026
f358037
Fix: 收口截图来源、123AV 分页竞态与剩余可选依赖回归
Teamper Aug 25, 2026
b1bb387
Fix: JHS 6.5.0 收口截图/FC2/History/ActressInfo 与 UI 回归
Teamper Aug 25, 2026
907bb41
Fix: 6.5 发布前收口 P1 回归、设置单写与发布门禁
Teamper Aug 25, 2026
be17724
PR1: Setting Contract — 设置单一真相源
Teamper Aug 25, 2026
dc073ae
PR2: Screenshot + Preview 单实现与总开关
Teamper Aug 25, 2026
21324e4
PR3: List Semantics — "全部"真全集 + 唯一 ListEvaluator
Teamper Aug 25, 2026
f7d38ba
PR4: Batch Actions — 跨全部分页 + 尊重筛选 + 批量 patch
Teamper Aug 25, 2026
54652f5
PR5: Live Feature Lifecycle — mount/unmount/reconfigure
Teamper Aug 25, 2026
6010b40
PR6: UI / FC2 / Capability 收口
Teamper Aug 25, 2026
ef03be6
PR7: Architecture + Performance + Gate 收口
Teamper Aug 25, 2026
7193427
PR8: Live lifecycle 收口 — FC2/Preview/AutoPage/Translate/Magnet/Stats …
Teamper Aug 25, 2026
cfaed2c
RC 收口:批量首页扫描 / 异步回流 gate / mobileMode Surface / 视觉回归门禁\n\n- 批量扫描始终从当前…
Teamper Aug 25, 2026
fc6496c
RC 收口:搜索批量 scope / HostAdapter 分页 / CommandBar 恢复 / FC2 稳定槽 / Preview…
Teamper Aug 26, 2026
a763009
JHS 6.5 Settings Transaction & Binding 深度整改
Teamper Aug 26, 2026
3d354c0
P0 Bootstrap/Compatibility 修复 + BindingHub 静态控件与 race 收口
Teamper Aug 26, 2026
e2ca6f2
审计并修复其余 UI 触发的 settings 写入失败回滚
Teamper Aug 26, 2026
ad9528a
P1 收口:资源设置回滚、单一 UI ownership、BFCache、FC2/Batch/CommandBar
Teamper Aug 26, 2026
e80b4a6
补充 pageshow 与 manual dirty-key 的回归测试
Teamper Aug 26, 2026
b6ea065
修复 4 个 P1 边界:FC2 初始翻译、初始 compact parking、Save flush、关键词 dirty-only
Teamper Aug 26, 2026
3d1b037
P0: LoggerRuntime 同步化,彻底修复 Compatibility facade missing clog
Teamper Aug 26, 2026
15a9a4b
P0: 修复桌面 Quick root 选择与翻译 Element/jQuery 契约
Teamper Aug 26, 2026
476a3df
P1/P2 收口:live flush 失败语义、布局快照应用、AutoPage 排序联动、disabledPlugins 迁移、关键词/…
Teamper Aug 26, 2026
97a5485
修复二轮静态审计:历史失败不污染后续 flush、Bootstrap 原子迁移、Keyword 真实 dirty、排序 capabilit…
Teamper Aug 26, 2026
020055a
修复全新用户默认值漂移:translateTitle/autoPage 缺失时按 Catalog 默认 yes 处理
Teamper Aug 26, 2026
97cabb6
Fix: 修复设置同步与详情页交互回滚
Teamper Aug 27, 2026
5fee1b3
Fix: 修复 6.5.0 UI 与运行时回归
Teamper Aug 29, 2026
45b24e9
Fix: 修复热播与榜单页路由判定及首屏加载回归
Teamper Aug 29, 2026
51bbcf8
Fix: 悬停预览图层级让位于详情弹窗
Teamper Aug 29, 2026
473f494
Chore: 热播周期切换回归门禁
Teamper Aug 29, 2026
0b49b4d
Feat: 热播/Top250 排序改为页内状态,初始固定默认
Teamper Aug 29, 2026
fa3e773
Fix: 修复全量审计发现的运行时回归
Teamper Aug 30, 2026
f559751
Fix: 收口列表筛选时序与启动性能门禁
Teamper Aug 30, 2026
1258c3e
Fix: 完成 6.5.0 RC 收口修复
Teamper Sep 1, 2026
4ea5536
Fix: 收口 6.5 冻结阶段回归边界
Teamper Sep 1, 2026
2f6b92f
Fix: 6.5.0 深审全量收口
Teamper Sep 2, 2026
0c2179b
Fix: 收口 6.5 RC 阻断项并补齐回归覆盖
Teamper Sep 2, 2026
526b168
Fix: 收口 6.5 RC 跨 Surface 阻断项
Teamper Sep 2, 2026
aa7826f
Chore: 忽略浏览器调试临时文件
Teamper Sep 9, 2026
618fa5e
Fix: 防止凭证迁移覆盖与清空后旧源恢复
Teamper Sep 9, 2026
f70eb3e
Fix: 恢复请求熔断重试与缓存生命周期隔离
Teamper Sep 9, 2026
fa4061a
Fix: 撤销持久化失败时恢复完整事务快照
Teamper Sep 9, 2026
9809855
Fix: 防止 WebDAV 陈旧表单重写未修改凭证
Teamper Sep 9, 2026
93a0be2
Fix: 合并评论关键词并实时清理评论生命周期
Teamper Sep 9, 2026
22c0fc7
Fix: 批处理初始化异常后释放任务与按钮
Teamper Sep 9, 2026
ebcebdb
Fix: 恢复 JavBus 原标题及数字搜索前页扫描
Teamper Sep 9, 2026
365da89
Fix: 隔离预览会话并在 DMM 就绪后交接播放器
Teamper Sep 9, 2026
7ca1f2c
Fix: 离线提交防重并区分云端与本地记录结果
Teamper Sep 9, 2026
c7cb860
Fix: 修复详情磁力布局及弹窗视口变化适配
Teamper Sep 9, 2026
248b096
Fix: 避免启动资源请求同步处理整包调试位置
Teamper Sep 9, 2026
dc09ec6
Test: 整理跨模块回归用例顺序
Teamper Sep 9, 2026
e6eacef
Doc: 记录修复回归与 Chrome 验收边界
Teamper Sep 9, 2026
9d0ca1c
Fix: 修复云盘开关授权与异步提交边界
Teamper Sep 9, 2026
7c50f4a
Fix: 转义确认框中的外部标题与关键词
Teamper Sep 9, 2026
e715944
Fix: 同步相关清单展开状态并清理迟到请求
Teamper Sep 9, 2026
0a76028
Fix: 统一增强界面并修复弹窗分页与键盘交互
Teamper Sep 9, 2026
7daa397
Doc: 记录界面整改与发布回归验收边界
Teamper Sep 9, 2026
5805f4d
Fix: 修复 6.5.0 FC2 图片预览与缩放
Teamper Sep 15, 2026
29b5d17
Fix: 收口 6.5.0 发布候选
Teamper Sep 19, 2026
9cadaef
Fix: 修复 6.5.0 远端发布门禁
Teamper Sep 19, 2026
44d52ea
Test: 校准 6.5.0 跨平台发布门禁
Teamper Sep 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
53 changes: 38 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CI

on:
push:
branches: [main]
branches: [main, refactor/6.5]
pull_request:
branches: [main]
branches: [main, refactor/6.5]
workflow_dispatch:

permissions:
Expand All @@ -30,9 +30,9 @@ jobs:
name: Node 22 full check
runs-on: ubuntu-latest
outputs:
should_release: ${{ steps.push_release.outputs.should_release || steps.manual_release.outputs.should_release }}
version: ${{ steps.push_release.outputs.version || steps.manual_release.outputs.version }}
tag: ${{ steps.push_release.outputs.tag || steps.manual_release.outputs.tag }}
should_release: ${{ steps.push_release.outputs.should_release }}
version: ${{ steps.push_release.outputs.version }}
tag: ${{ steps.push_release.outputs.tag }}
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -42,6 +42,9 @@ jobs:
node-version: 22
cache: npm
- run: npm ci
- name: Verify 6.5 integration branch contains current main
if: github.ref == 'refs/heads/refactor/6.5' || github.base_ref == 'refactor/6.5'
run: node scripts/check-refactor-sync.mjs
- run: npm run check
- name: Verify tracked userscript is current
run: git diff --exit-code -- JHS.user.js
Expand All @@ -52,15 +55,39 @@ jobs:
id: push_release
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
run: node scripts/release-contract.mjs --base-ref "${{ github.event.before }}" --github-output "$GITHUB_OUTPUT"
- name: Select recovery release
id: manual_release
if: github.event_name == 'workflow_dispatch'
run: node scripts/release-contract.mjs --force-release --github-output "$GITHUB_OUTPUT"

browser-smoke:
name: Browser smoke
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run build
- name: Install browser test dependencies
working-directory: tests/browser
run: npm ci
- name: Install ephemeral Chromium
working-directory: tests/browser
run: npx playwright install chromium --with-deps
- name: Run deterministic browser smoke
run: npm run check:browser
- name: Run visual regression gate
run: npm run check:visual
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: output/playwright/
retention-days: 14

release:
name: Publish immutable release
needs: [node20, check]
if: needs.check.outputs.should_release == 'true'
needs: [node20, check, browser-smoke]
if: github.event_name == 'push' && github.ref == 'refs/heads/main' && needs.check.outputs.should_release == 'true'
runs-on: ubuntu-latest
permissions:
contents: write
Expand All @@ -76,11 +103,7 @@ jobs:
with:
node-version: 22
- name: Revalidate release identity and extract notes
if: github.event_name == 'push'
run: node scripts/release-contract.mjs --base-ref "${{ github.event.before }}" --notes-file /tmp/release-body.md
- name: Revalidate recovery identity and extract notes
if: github.event_name == 'workflow_dispatch'
run: node scripts/release-contract.mjs --force-release --notes-file /tmp/release-body.md
- name: Validate immutable tag and release state
id: release_state
env:
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
node_modules/
dist/
output/playwright/
outputs/
.learnings/
CLAUDE.md
.zcode/
*.bundle
.playwright-cli/
tests/browser/debug.log
37 changes: 30 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/lang/zh-CN/

## [Unreleased]

### Fixed
## [6.5.0](../../compare/v6.4.1...v6.5.0) - 2026-09-19

### 新增

- JavDB 和 JavBus 的搜索、列表页支持跨全部分页批量收藏、批量标记已下载。即使从第 2 页开始,也会回到第 1 页完整扫描当前搜索结果。

### 主要调整

- 重做 FC2 和 123AV-FC2 详情页。影片信息、剧照、资源、评论和相关清单分区显示,手机端也能正常使用;关闭详情后,未完成的请求不会再修改已经关闭的窗口。
- 调整列表筛选。“全部”现在会显示收藏、已下载和已看作品,只排除真正被屏蔽的内容;原来四个容易造成重复过滤的显示开关已经移除。
- 重做热播和 Top250 页面。筛选、排序、状态操作、批量操作和 FC2 详情都能正常使用;榜单排序只影响当前页面,不再改动普通列表的排序设置。
- 调整新作品中心。手动移除只表示“不再显示这条新作”,不会再产生一条空的影片状态记录;同时修复待处理数量、分页位置和窄屏布局。
- 设置页、快捷开关和移动端入口现在读取和保存同一份设置。支持实时生效的开关会同步到已打开的界面,保存失败时会恢复原来的状态。
- 统一详情、磁力、历史记录、新作品和设置弹窗的按钮与布局,补齐手机端触摸尺寸、键盘操作、焦点返回和深色模式样式。
- WebDAV 备份可以跨安装恢复,但不会把当前安装中的 WebDAV、123 或 115 凭证带到另一台设备;导入时保留目标设备原有凭证。

### 问题修复

- 修复 FC2 来源和番号识别错误,避免磁力、离线任务或状态操作落到另一部影片;修复 JavBus、搜索结果和榜单中的 FC2 链接偶尔打不开。
- 修复图片查看器、悬停预览、详情窗口和遮罩的层级问题。重复打开详情时只保留一个查看器,方向键、窗口缩放和分层 Escape 关闭可以正常工作。
- 修复 123/115 在服务已关闭、授权已变化或窗口已关闭后仍继续提交的问题;阻止连点重复提交,并区分“云端提交失败”和“本地记录保存失败”。
- 修复设置、列表筛选、自动翻页、翻译、DMM 预览、评论和相关清单中的旧请求回写问题。关闭功能或切换页面后,迟到结果不会把旧内容重新显示出来。
- 修复热播空白、Top250 封面加载失败、榜单原生搜索结果与真实榜单同时出现,以及周期、类型和年份切换异常的问题。
- 修复鉴定记录跨页全选只处理当前页、详情窗口被鉴定记录遮挡,以及历史记录和新作品窗口分页被内容挤出可视区域的问题。
- 修复外部标题、评论关键词和确认提示可被当作 HTML 渲染的问题;修复旧凭证迁移、清空凭证和损坏密文可能覆盖有效数据的问题。

### 开发与发布

- 重新整理 FC2 与 123AV-FC2 详情页:影片信息、剧照、资源、评论和相关清单现在各有固定位置,关闭页面后旧请求不会再改动界面;同时补回来源链接、高清/字幕/日期标记与磁力筛选,123AV 详情也能加载对应的 JavDB 磁力。
- 修复 FC2 详情来源识别、局部重试、标题右键关闭和移动端资源显示问题;更多磁力来源现在可以收起并复用已加载结果,空截图或空外部资源也不会留下多余区域。
- FC2 详情重新提供 JavDB 账号的“想看”操作,并与 JHS 本地收藏分开;剧照放大后支持左右切换并默认居中显示。
- 修复鉴定记录表头全选只处理当前分页的问题;现在会选择当前搜索和筛选条件下的全部记录,支持跨页保留、逐项排除,并让批量提示与实际处理数量一致。
- 修复列表页“全部”仍被旧状态显示设置二次过滤的问题;收藏、已下载和已看作品会正常出现在“全部”中,硬屏蔽内容仍统一收在“屏蔽项”。
- 6.5 重做了内部启动、模块依赖、网络请求和功能生命周期,目标是减少插件互相影响、重复监听和关闭后继续运行的问题。
- 发布检查新增浏览器回归、视觉回归和启动性能门禁,自动检查失败时会阻止发布。

## [6.4.1](../../compare/v6.4.0...v6.4.1) - 2026-08-23

Expand Down Expand Up @@ -626,7 +649,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/lang/zh-CN/
- 增加 `escapeHtml()` 修复多处 XSS 风险。
- 加密存储敏感凭据。

[Unreleased]: ../../compare/v6.4.0...HEAD
[Unreleased]: ../../compare/v6.5.0...HEAD
[6.2.1]: ../../compare/v6.2.0...v6.2.1
[6.2.0]: ../../compare/v6.1.1...v6.2.0
[6.1.1]: ../../compare/v6.1.0...v6.1.1
Expand Down
Loading
Loading