jxxghp
32d37fa8b4
feat(music): preserve per-task CUE recognition policy
2026-10-08 08:51:01 +08:00
ChantXu64
e5e2558585
feat(search): 订阅补全逐页搜索、断点续搜与资源页手动分页 ( #6907 )
2026-10-07 14:40:55 +08:00
Freeman
4c994c993f
docs(download): document directory aliases for save_path
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-06 15:30:29 +08:00
jxxghp
ad4c92da9e
Merge branch 'v3' into fix/media-scrape-manage-permission
2026-10-05 16:38:08 +08:00
jxxghp
49235b7dd6
Merge pull request #6891 from MiCat-S/fix/webpush-send-superuser
2026-10-05 16:33:21 +08:00
LIN student
873c4c7087
fix(media): 刮削接口要求管理权限,与手动整理和文件管理保持一致
...
POST /api/v1/media/scrape/{storage} 只依赖 verify_token,任何登录用户都可
调用。该接口以 overwrite=True 调用刮削链,会覆盖目标目录已有的海报、背景图
和 NFO,音频文件还会改写标签;存储与路径完全由请求提供。
同类写操作 /transfer/manual、/transfer/manual/target-path、/storage/* 以及
整理记录的写操作都要求 manage 权限;前端只在文件管理页(需 manage 权限)
调用该接口,Agent 策略也已把 media.scrape 定为管理员操作。
现改为依赖 get_current_active_manage_user。_scrape_impl 内部没有使用令牌
载荷,去掉其中未使用的 Depends 参数。API_TOKEN/apikey 调用解析为 SUPERUSER
对应的超级管理员,行为不变。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:42:29 +08:00
LIN student
dc974b6699
fix(message): WebPush 主动推送接口仅限超级管理员
...
POST /message/webpush/send 只依赖 verify_token,会把调用方提供的
title、body、url 推送给 webpush_registry 中的全部浏览器订阅,包括其他
用户和管理员的浏览器。前端只调用 /message/webpush/subscribe,不调用该
接口。
改为与同模块 /message/web 一致的 get_current_active_superuser。
API_TOKEN / apikey 由 verify_token 映射为 SUPERUSER 对应的超级管理员
账号,经过该依赖后仍可调用,已有外部集成不受影响。
/message/webpush/subscribe 保持登录用户可用,每个用户的前端都会调用它
登记自己的浏览器。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:42:29 +08:00
LIN student
75d8b2e441
fix(system): 公开设置不再返回存储的连接配置
...
/system/setting/public/{key} 只要求登录用户,白名单中的 Storages 原样返回
整个存储列表,每项的 config 保存着各存储的连接配置和凭据(SMB 用户名密码、
alist 账号、115 token 等)。设置合同已将 Storages 标记为 sensitive,
/system/settings 默认会脱敏,只有这个公开接口直接返回原值。
前端 v3 已改用 /storage/options 读取存储名称和类型,公开接口的 Storages
目前只剩 Agent 的 config.public.get 和旧版前端页面会用到,它们只需要
name、type。因此保留该 key,改为与 /storage/options 相同的投影:只返回
name(缺省时取 type)和 type,跳过没有 type 的项。所有调用者返回相同
结果,超级管理员仍可通过 /system/setting/Storages 读取完整配置。
白名单内其他配置(目录、站点范围、集数定位规则、默认订阅规则、Follow
订阅者)不含连接凭据,保持原值返回。同步更新 docs/mcp-api.md 的接口说明。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:42:28 +08:00
jxxghp
22704e9224
fix(api): allow dedicated identifier writes
2026-10-05 13:01:42 +08:00
jxxghp
8c101b0096
Merge pull request #6883 from MiCat-S/fix/message-verify-log-token
2026-10-04 19:22:09 +08:00
LIN student
4416e278aa
fix(message): 回调验证日志不再输出 token
...
消息回调验证入口 GET /api/v1/message/ 以 INFO 级别记录请求参数,其中的
token 就是 verify_apitoken 校验用的 API_TOKEN。日志经常被直接贴出来排查
问题,因此去掉这个字段,其余排查用参数保持不变。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 19:01:22 +08:00
LIN student
3bdf09dc6f
fix(site): 非超级管理员读取订阅站点和域名详情时不返回认证字段
...
/site/rss 与 /site/domain/{site_url} 只依赖 verify_token,直接返回完整的
Site 模型,其中包含 cookie、apikey、token、rss。同模块的 /site/agent 已经
对非超级管理员剔除这些字段,/site/ 列表也要求 manage 权限,两个接口与之
不一致。
前端订阅编辑和工作流「获取种子」动作只用到站点的 id、name、is_active,
因此非超级管理员改为复用 _project_agent_site(include_secrets=False) 投影,
超级管理员保持原有完整字段。
read_rss_sites 的返回标注由 List[dict] 改为实际的 Site 或投影字典,site.py
的 mypy 债务减少 2(return-value、type-arg 各 1),已固化低水位并同步文档
指标。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 19:01:22 +08:00
jxxghp
03a285a2a6
fix(wechat): proxy douban notification images
2026-10-04 16:19:58 +08:00
jxxghp
1eacd10cd6
refactor(transfer): keep queue projections in transfer endpoint module
2026-10-02 22:10:16 +08:00
jxxghp
1ba2f28c94
chore(transfer): remove unrelated fork sync changes
2026-10-02 22:08:10 +08:00
jxxghp
b33053e10f
Merge remote-tracking branch 'origin/v3' into codex/optimize-pr-6849
...
# Conflicts:
# docs/architecture-overview.md
# docs/refactor/optimization-checklist.md
# tests/fixtures/architecture/dependency-baseline.json
2026-10-02 22:06:27 +08:00
Cat
eb76fcafd6
fix(notification): 限制实时消息队列积压并在 SSE 重连后一次推送 ( #6862 )
2026-10-02 21:32:18 +08:00
jxxghp
5f596484b4
fix(classification): prepare policy-specific facts and refine defaults
2026-10-02 14:14:09 +08:00
jxxghp
cc114337de
fix(agent): forward tool messages to OpenAI stream
2026-10-01 14:52:26 +08:00
ranzhigg
0c9d8c9208
Merge upstream v3 into transfer queue PR
2026-10-01 12:51:06 +08:00
ranzhigg
56cf6fefe0
perf(transfer): bound queue snapshots for batch imports
2026-10-01 12:45:31 +08:00
jxxghp
8e9c9b41e1
fix(api): allow slashes in rule group names
2026-09-30 23:31:55 +08:00
InfinityPacer
08123fa5cf
perf(api): share default error-response fields across routes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 17:47:51 +08:00
jxxghp
47d51c3630
feat(agent): align history recall with Hermes SQLite FTS5
2026-09-30 16:28:39 +08:00
jxxghp
8fbf1cbe54
feat(music): honor explicitly selected release editions
2026-09-30 14:46:48 +08:00
jxxghp
104d8028e8
feat(music): expose recognition evidence and release groups in transfer previews
2026-09-30 14:11:07 +08:00
InfinityPacer
4bd7e3dc04
perf(webpush): send Web Push with http-ece and py-vapid instead of pywebpush
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 13:20:00 +08:00
jxxghp
54591ac50e
feat(music): bound recognition requests and make lookup caches recoverable
2026-09-30 05:15:14 +08:00
jxxghp
b4175a4f88
fix(image): cache site allowlist and include custom image hosts
2026-09-30 01:09:32 +08:00
jxxghp
8c46c9bee8
fix(image): allow configured site domains in image proxy
2026-09-30 00:53:37 +08:00
jxxghp
6cdd4dbc66
fix(subscribe): resolve cross-source video status without premiere year
2026-09-28 16:59:30 +08:00
jxxghp
3428aed490
fix(transfer): keep automatic music selection per file
2026-09-24 14:48:41 +08:00
jxxghp
1d84d17dc4
feat(system): add protocol-aware network checks
2026-09-24 12:25:45 +08:00
jxxghp
5d620b0cbe
feat(media): support episode groups in manual scraping
2026-09-24 08:23:35 +08:00
LS
c68288e897
feat(security): 图片代理自动信任已启用的媒体服务器主机 ( #6769 )
...
在局域网部署 Emby/Jellyfin/Plex 的用户,此前需要手动维护
SECURITY_IMAGE_DOMAINS(整表覆盖,会随版本默认值漂移)和
IMAGE_PROXY_ALLOWED_PRIVATE_RANGES,未签名的媒体服务器图片 URL
才能通过图片代理。
- is_safe_image_url_async 新增可选参数 trusted_hosts:URL 的 netloc
(含端口)或 hostname 精确命中时直接放行,不受私网拦截限制;
默认 None,现有调用方行为不变。
- fetch_image(覆盖 /img 与 /cache/image)从已启用媒体服务器的
host / play_host 计算受信主机;读取配置失败时返回空集合,不影响代理。
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-23 16:34:25 +08:00
InfinityPacer
19e062c178
feat(plugin): attribute free-threaded GIL fallback to plugins ( #6767 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-23 13:12:02 +08:00
InfinityPacer
0238351071
fix(plugin): v3t 下不再隐藏不兼容插件,改为提示不支持 ( #6760 )
...
* feat(plugin): surface v3t incompatibility instead of hiding plugins
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
* chore(architecture): refresh dependency baseline after plugin gate split
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
* fix(plugin): keep runtime-incompatible plugins out of startup sync
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
* fix(plugin): annotate runtime compatibility ports without bare dict
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com >
2026-09-23 00:35:20 +08:00
moviepilot-codex[bot]
d96f00113c
feat: add GitHub Token device authorization
2026-09-21 18:30:15 +08:00
moviepilot-codex[bot]
c0f7141e26
fix(plugin): invalidate federation static resource cache ( #6748 )
2026-09-21 16:24:38 +08:00
jxxghp
67ae166a54
fix(servarr): restore subscription repository async contract
2026-09-18 22:13:33 +08:00
jxxghp
2e2a037eb8
fix(subscribe): align fork response model with returned id
2026-09-18 12:24:58 +08:00
jxxghp
4e9a64c0f0
refactor(application): 按模块子目录统一文件命名
2026-09-15 23:57:06 +08:00
jxxghp
71fffde878
feat(agent): 完善系统设置机器可读合同
2026-09-15 13:11:29 +08:00
jxxghp
37ea8ba14d
fix(subscribe): support cross-source video status lookup
2026-09-15 11:31:04 +08:00
jxxghp
ee6393974a
feat: 内置 Bangumi 数据与图片代理
2026-09-15 07:42:18 +08:00
jxxghp
ebddeee23b
feat(subscribe): accumulate music album track progress
2026-09-14 19:35:04 +08:00
jxxghp
1cb1f02f19
fix(auth): normalize site authentication parameters
2026-09-14 13:24:14 +08:00
jxxghp
f17b331a78
fix(auth): satisfy mypy initialization settings typing
2026-09-14 08:27:15 +08:00
jxxghp
1e416882c0
fix(auth): lock configured superuser during initialization
2026-09-14 07:58:36 +08:00
Aqr-K
5e232ca14d
fix(plugin): 安装记录大小写不敏感查询、游标物化,site 端点改从 Application 取 ( #6682 )
...
* fix(plugin): 安装 journal 按大小写不敏感列出事务记录
create 用 func.lower 判定同一物理插件并据此拒绝重复占位,list 却还是等值过滤。
判据分叉后,恢复流程查不到那条被 create 认定为未收尾的 journal,会认为没有待恢复
事务,而新事务又永远被同一行挡住。list 改用与 create 相同的 func.lower 判据。
* fix(plugin): 批量读插件身份时在事务内物化游标
list_by_plugin_ids 无会话调用时由组合根另开短事务,会话在 lambda 返回后立即关闭,
外层再 list() 消费惰性游标会撞上 "identity map is no longer valid",一行都读不到。
补上 .all(),让行在事务内取完。
* refactor(api): site 端点从 Application 取插件路由刷新
register_plugin_api 的唯一拥有者是 app.application.plugin.routes,
dependencies/plugin.py、scheduler/reconcile.py 与 initializers/plugins.py 都已从那里
取用,只剩 site 端点还在向 plugin 端点横向借。改为同一来源,并加门禁锁住这条判据。
依赖基线相应下降一条边(8650 -> 8649:site 不再到达 app.api.endpoints 与
app.api.endpoints.plugin,改为到达 app.application.plugin.routes),mypy 低水位同步
下降一条 attr-defined,两处文档数字随之更新。
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-09-14 07:18:50 +08:00