Commit Graph

15 Commits

Author SHA1 Message Date
Claude
544628f6aa Merge refactor/4.0-p5-events-api (P3 + P5) into refactor/4.0-p4-organize
- 扩展点列表、Provider 列表(rename_strategy + metadata_provider)、前端
  PluginProviders 类型按 P3 → P5 → P4 合并
- host.py 只保留一套 get_bus / set_bus / publish;publish 区分「没有事件
  循环」(只记 debug)与总线真实故障(记录异常),永不抛给调用方
- EventBus.offer 先确认有运行中的事件循环,避免同步上下文里创建了
  worker 协程却从未 await
- 设计文档第 0 节、第 10 节与插件开发文档合并;http.request 小节补充
  URL 可能含其他服务密钥的提示

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EoBUPFw7Ty1epuPESdELs1
2026-10-08 07:13:44 +00:00
Claude
12e7e2f5ba feat(4.0-P4): rename_strategy 扩展点、模板重命名与整理事件
- 新增 rename_strategy Provider 扩展点(ab_sdk.rename:RenameInput /
  RenameStrategy),内置 pn / advance / none 以 core 登记,输出与 3.3 的
  gen_path 逐字一致(参数化对照测试);字幕改用 RenameInput.kind,不再有
  subtitle_* 方法名;未知方式 / 策略出错 / 非法结果均保持原路径并记录错误
- 内置插件 rename-template:template 方式,Jinja2 沙箱模板(剧集 + 剧场版),
  默认与 pn 相同;结果为空或含路径分隔符时保持原名,语法错误保存时拒绝
- 整理事件 ab_sdk.organize:file.renamed / torrent.organized,经
  module.plugin.host.publish 发布到 PluginManager 登记的进程级总线
- 内置插件 media-server-refresh:订阅 file.renamed,合并后请求
  Jellyfin / Emby / Plex 刷新媒体库;未配置时为空操作
- 清理:删除仅测试使用的 rename_file / _lookup_offsets(测试改为驱动
  rename() 与 _batch_lookup_offsets)、冗余的 release_replacement_lease、
  失去调用方的 match_by_save_path / search_by_qb_hash,以及重命名链路中
  未使用的 season_offset 参数
- 修复插件配置接口:field_validator 抛出的错误返回 422 而不是 500
- WebUI 重命名方式下拉框加入 template 与插件提供的方式;ab_sdk 0.3.0;
  插件开发文档与番剧管理文档(中 / 英 / 日)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EoBUPFw7Ty1epuPESdELs1
2026-10-08 06:52:26 +00:00
Claude
0b6de31593 Merge refactor/4.0-p3-ingest into refactor/4.0-p5-events-api
- 合并 P3 与 P5 共同追加的扩展点列表(ab_sdk/points.py、plugin/host.py POINTS)
- host.py 中两边各自实现的 set_runner / get_runner 去重,保留 P5 的
  get_bus / set_bus / publish;AppContext 统一设置 bus 与 runner
- CHANGELOG、设计文档第 0 节、插件开发文档按 P3 → P5 顺序合并
- 修复 MCP /sse 端点在 SSE 结束后重复发送响应头导致的 AssertionError

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EoBUPFw7Ty1epuPESdELs1
2026-10-08 06:44:43 +00:00
Claude
93f6d794c5 feat(4.0-P5): 系统事件上总线、通知中心 SSE 改为事件推送、插件路由 / MCP / 通知模板
- 系统事件类移入 ab_sdk.events(SystemEvent 基类,新增 i18n()),
  NotificationManager.send_event 写入通知中心后发布到插件事件总线
- module.plugin.host 新增 get_bus/set_bus、get_runner/set_runner、publish,
  由 AppContext 构造时设置
- SSE notification 帧改为订阅 inbox.changed 即时推送,线格式不变
- 新扩展点 api_router(/api/v1/plugins/<id>/ 分发路由,强制鉴权)、
  mcp_tool / mcp_resource(<plugin-id>__<id> 命名)、message_template
- ExtensionPoint.scoped:Provider id 只需在插件内唯一
- ab_sdk 0.3.0;插件开发文档、设计文档、CHANGELOG 更新

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EoBUPFw7Ty1epuPESdELs1
2026-10-08 06:34:43 +00:00
Claude
9b7ef00c2e feat(4.0-P3): ingest 流水线扩展点与内置种子过滤插件
- 钩子:torrent.filter(排除过滤之后,fail-open)、title.parsed(准入判定前)、
  torrent.adding(save_path / category / tags,ab:<id> 标签强制保留)、
  http.request(GET 请求头)
- Provider:metadata_provider,mikan / tmdb 以 core 登记,按 RSSItem.parser 选择,
  行为与 3.x 一致;插件元数据源走超时与熔断
- SDK 0.3.0:新增 ab_sdk.ingest(冻结快照 TorrentInfo / BangumiInfo / AddRequest /
  HttpRequest / Metadata)
- host.get_runner()/hook_runner():AppContext 构建时设置 runner,无钩子时零开销
- 内置插件 ingest-filters:全局包含过滤,默认启用、留空不生效
- WebUI:添加订阅的解析器下拉框并入插件元数据源
- 文档:插件开发指南新增各扩展点;设计文档 P3 调整

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EoBUPFw7Ty1epuPESdELs1
2026-10-08 06:31:23 +00:00
Claude
332fb451c4 feat(4.0-P2): 下载器/通知/LLM/搜索/定时任务扩展点与插件管理界面
- ab_sdk 0.2:新增 points、downloader(自 module/downloader/base.py 迁入)、
  llm(自 providers/base.py 迁入)、notify、search、tasks 契约与
  secret_field();原路径保留重新导出
- module/plugin/host:进程级扩展注册表,内置 qB/aria2/mock 与各通知渠道以
  core 身份登记;DownloadClient、NotificationManager、LLM 注册表、搜索站点
  均改为按 id 从注册表解析
- 插件定时任务随插件加载/重载/停用同步进调度器,失败计入熔断
- 插件变更后重建通知渠道、清理 LLM 解析器缓存;下载器客户端缓存键包含
  Provider 登记项,插件重载后自动换新
- /api/v1/plugins:总览(schema + 掩码配置)、启停、配置(按模型校验)、
  allow_unsigned、Provider 列表;/config 读写同样掩码/还原插件秘密字段
- WebUI:设置页「插件」卡片与 JSON Schema 表单;下载器与通知下拉框并入插件
  Provider;插件保存后刷新 config store 的 plugins 段,避免全局保存覆盖
- 修复:/search/provider 读取导入时的站点快照,新站点需重启才出现
- 文档:开发者指南 → 插件开发

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EoBUPFw7Ty1epuPESdELs1
2026-10-08 05:59:07 +00:00
Estrella Pan
339166508b test(e2e): add comprehensive E2E integration test suite
67 tests across 11 phases exercising the full AutoBangumi workflow
against Docker infrastructure (qBittorrent + mock RSS server).
Covers setup wizard, auth, config, RSS CRUD, bangumi, downloader,
program lifecycle, log, search, notification, and credential updates
with both happy paths and error conditions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:44:03 +01:00
Estrella Pan
789c02f7f4 fix(docs): convert all relative image paths to absolute paths
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 21:05:05 +01:00
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
EstrellaXD
1f5d92f50b docs(dev): add database developer guide
Comprehensive documentation covering:
- Database architecture and components
- Model schemas (Bangumi, RSSItem, Torrent, User)
- Common CRUD operations for each sub-database
- Caching strategy and invalidation
- Migration system and how to add new migrations
- Performance patterns (batch queries, regex matching, indexes)
- Testing setup with factories
- Common issues and solutions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 14:51:50 +01:00
Estrella Pan
f42a5296e7 docs: translate to English, upgrade VitePress 1.6.4, add API reference
- Upgrade VitePress from 1.0.0-rc.4 to 1.6.4 (stable)
- Update all dependencies (vue 3.5, typescript 5.6, @vue/tsconfig 0.5)
- Remove defunct Documate AI integration and google-analytics plugin
- Add Google Analytics via head config instead
- Translate all 25+ documentation pages from Chinese to English
- Add comprehensive REST API reference (docs/api/index.md)
- Add v3.2 changelog to sidebar navigation (fixes dead link)
- Update version string from v3.1 to v3.2
- Fix homepage changelog link to point to v3.2
- Update all WebUI screenshots with current v3.2 UI
- Add new screenshots: calendar view, bangumi poster wall
- Remove obsolete files: documate.json, deploy/windows.md, deploy/unix.md
- Update CSS variables for VitePress 1.6.x compatibility

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-24 09:04:10 +01:00
EstrellaXD
8ebc0a7cd6 docs: change dev branch img from mermaid to png 2023-07-20 13:39:37 +08:00
EstrellaXD
d86541dc73 docs: add CONTRIBUTING in docs fix windows local deploy 2023-07-18 17:50:12 +08:00
EstrellaXD
d768d572ef docs: add CONTRIBUTING in docs fix windows local deploy 2023-07-18 17:49:51 +08:00
EstrellaXD
8436963b9f docs: add CONTRIBUTING in docs 2023-07-18 17:46:26 +08:00