freeman
0cfb292cef
fix(api): disable CORS credentials for wildcard origins
...
ALLOWED_HOSTS defaults to ["*"] and the CORS middleware always set
allow_credentials=True. Starlette echoes any request Origin with
Access-Control-Allow-Credentials in that combination, which lets every
site make credentialed cross-origin calls. resolve_cors_policy now
returns credentials=False for wildcard origins and keeps credentials
only when explicit origins are configured.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-09 11:39:12 +08:00
jxxghp
5db2eea5b4
Merge pull request #6918 from YuHoYe/fix/subscribe-convert-identity-to-tmdb
...
fix(subscribe): convert douban/bangumi identity to TMDB on subscribe
2026-10-08 21:28:31 +08:00
jxxghp
35d5cac84f
fix(subscribe): validate TMDB conversion and sync architecture facts
2026-10-08 21:22:17 +08:00
YuHoYe
d42c217286
fix(subscribe): convert douban/bangumi identity to TMDB on subscribe
...
识别源为 TMDB 时,手动订阅电视剧或电影若传入豆瓣、Bangumi 等非 TMDB 身份,
订阅链现在会先通过 convert_media_identity 换成 TMDB 整剧身份,再按 TMDB 识别,
与豆瓣想看、豆瓣榜单插件的订阅口径保持一致。
非 TMDB 来源把每一季当作独立条目,标题和年份都是季级的。此前手动订阅只拆出季号、
仍以季条目作为主身份,下载记录与整理随之按季标题生成独立剧集目录,媒体库里出现
多部同名剧。转换失败时沿用原身份,识别源不是 TMDB 时不做转换。
2026-10-08 20:22:02 +08:00
jxxghp
70811b551e
feat(music): optionally simplify written lyrics
2026-10-08 18:40:16 +08:00
jxxghp
c8c54f29bb
Merge pull request #6915 from Guoyin-Wen/feat/milkie-site-adapter
...
feat(indexer): 适配 Milkie 站点搜索与连通测试
2026-10-08 18:01:27 +08:00
jxxghp
6758633e01
docs(architecture): sync metrics for Milkie adapter
2026-10-08 17:56:07 +08:00
WenGuoyin
e19076f482
feat(indexer): 适配 Milkie 站点搜索与连通测试
...
- 新增 MilkieSpider:基于 milkie.cc JSON API(x-milkie-auth 认证)的
种子搜索与浏览,支持关键字分类收敛、服务端翻页、免费因子与
媒体类型映射,下载链接按 API Key URL 编码拼接
- 注册 SPIDER_PARSER_CLASSES 与专用搜索参数投影
- SiteChain 新增 milkie.cc 连通性测试,401/403 判定 API Key 失效
- 补充 MilkieSpider 单元测试与同步异步参数一致性用例,同步依赖基线
2026-10-08 17:18:10 +08:00
jxxghp
656e2852f7
fix(indexer): paginate keyword results without server page support
...
Refs #6911
2026-10-08 13:46:57 +08:00
jxxghp
0cd6b3660f
fix(agent): inject host dependencies into protocol factories
...
Pass the session owner's data context and memory to Web and compatible protocol agent factories. Cover task creation, listing, session reuse and subagent tool injection across the shared entrypoints.
Refs #6910
2026-10-08 13:43:59 +08:00
jxxghp
11303a8e88
fix(transfer): suppress completion events without target items
2026-10-08 13:42:08 +08:00
jxxghp
cf889ba7a0
fix(telegram): report persistent polling failures
2026-10-08 13:23:58 +08:00
jxxghp
97a6dc3fa1
chore(release): bump backend version to v3.1.2-1
2026-10-08 12:05:33 +08:00
jxxghp
f0b34cf9f5
fix(search): restore concurrent progressive manual paging
2026-10-08 11:57:10 +08:00
jxxghp
ed85f763ef
Synchronize FRONTEND_VERSION with APP_VERSION
2026-10-08 09:29:02 +08:00
jxxghp
32d37fa8b4
feat(music): preserve per-task CUE recognition policy
2026-10-08 08:51:01 +08:00
jxxghp
6ba8bc027d
fix(deps): update audited runtime dependencies
2026-10-08 07:27:25 +08:00
jxxghp
bf6ad15bea
更新 version.py 到 v3.1.2
2026-10-08 07:22:40 +08:00
ChantXu64
e5e2558585
feat(search): 订阅补全逐页搜索、断点续搜与资源页手动分页 ( #6907 )
2026-10-07 14:40:55 +08:00
jxxghp
230b128b8e
fix(agent): exclude history storage from runtime signatures
2026-10-07 13:27:15 +08:00
jxxghp
6c9ebd01f3
fix(agent): close owned LLM clients with their lifecycle
...
Refs #6901
2026-10-07 09:18:40 +08:00
jxxghp
d22e4785a6
fix(agent): preserve nullable tool schemas outside Gemini
2026-10-07 09:17:33 +08:00
jxxghp
e51fd44964
fix(agent): resolve alternative QQ and Feishu user bindings
...
Keep strict binding lookup as the default and explicitly match alternative channel identifiers for the Agent API gateway. Reject ambiguous active-user matches and cover single-field bindings with database-backed tests.
Refs #6905
2026-10-07 09:16:33 +08:00
jxxghp
bfe81699bc
Merge pull request #6900 from cwd0204/feat/download-save-path-alias
2026-10-06 16:00:12 +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
Freeman
4e9e868862
feat(download): accept configured directory names as save_path
...
validate_download_save_path keeps path-first semantics and falls back to an
exact match on the configured download directory name, returning that
directory's root URI so every download entry point can save by alias.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-06 15:07:24 +08:00
jxxghp
43edef140f
fix(indexer): fetch TNode current user before requiring an id ( #6895 )
2026-10-06 07:40:06 +08:00
jxxghp
a8f71f32a8
fix(jellyfin): include collection members in library queries
2026-10-06 07:32:06 +08:00
InfinityPacer
7e76239c86
fix(agent): reap macOS kernels before retrying group termination
2026-10-06 03:05:16 +08:00
InfinityPacer
8b4b5eb4fe
chore(deps): upgrade chardet to 7.6.0
2026-10-06 02:44:02 +08:00
jxxghp
df45df8fba
Merge pull request #6896 from JontyLee/fix/stale-cue-fallback
2026-10-05 21:09:20 +08:00
JontyLee
5cc0375ec1
fix(audio): ignore stale CUE sheets whose referenced files are gone
...
Adopt a CUE only when at least one FILE reference resolves to a real
file in the audio directory. Legacy WAV-era cue sheets shipped inside
FLAC split-track releases previously blocked every track transfer with
"CUE 引用的文件名与当前音频不一致" (and broken-index cues did the same);
they are now ignored with an info log and organization falls back to
the files' own tags. Cross-directory references and cues that still
point at existing files keep the current strict behavior.
Refs: https://github.com/jxxghp/MoviePilot/issues/6888
2026-10-05 20:20:34 +08:00
jxxghp
5f4eb47712
test(skills): align subscription API skill version contract
...
Keep the built-in skill version assertion in sync with the documented subscription clearing behavior. Refs #6894
2026-10-05 17:59:38 +08:00
jxxghp
791bcc00c0
fix(subscribe): persist cleared optional settings
...
Preserve explicit empty values for recognition words, keywords, paths, episode groups, downloaders, and audio thresholds. Add endpoint and persisted transaction regression coverage and document the update contract.
Refs #6894
2026-10-05 17:54:29 +08:00
jxxghp
84e3787b57
Merge pull request #6893 from MiCat-S/fix/nettest-tmdb-web-user-agent
2026-10-05 17:47:15 +08:00
jxxghp
fb652c74f4
fix(music): 支持关闭 CUE 识别整理分轨音频
2026-10-05 17:15:14 +08:00
LIN student
36e68b133c
fix(nettest): TMDB 网站连通性测试使用程序自身 UA
...
网速连通性测试对所有目标统一发送浏览器 UA(NORMAL_USER_AGENT)。
www.themoviedb.org 对自称 Chrome、但 TLS 握手特征来自 Python 客户端的
请求返回 403 人机校验页(Just a moment...),因此网络正常时该项也固定
显示「错误码:403」。同一请求换成程序自身 UA(USER_AGENT)即返回 200;
TMDB API 两个目标不受影响。
tmdb_web 规则改为携带 USER_AGENT 请求头;未配置时沿用原有浏览器 UA。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 16:52:41 +08:00
jxxghp
3fe6ed74c3
Merge pull request #6892 from MiCat-S/fix/media-scrape-manage-permission
...
fix(media): 刮削接口要求管理权限,与手动整理和文件管理保持一致
2026-10-05 16:43:11 +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
jxxghp
af5e8fef9b
Merge pull request #6890 from MiCat-S/fix/agent-browser-private-network
2026-10-05 16:32:46 +08:00
jxxghp
19b3e49840
Merge pull request #6889 from MiCat-S/fix/public-setting-storage-options
2026-10-05 16:32:04 +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
aa78bc9d8e
fix(agent): 浏览器与验证码工具的私网访问参数仅限管理员
...
browse_webpage、recognize_captcha 的 allow_private_network 是模型可以直接
填写的工具参数,此前对任何调用方都生效。现与同工具的 evaluate、
get_cookies 保持一致:仅管理员可设置为 true,其他调用方返回
admin_required,并提示去掉该参数后只访问公网地址。
browse_webpage 的三项管理员检查合并到 _admin_required_error,run() 的
圈复杂度维持在门禁阈值以内。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:42:28 +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
4ca70b478b
chore(release): bump backend and frontend to v3.1.1
2026-10-05 15:21:10 +08:00
jxxghp
fa5fa33db1
fix(lyrics): normalize LRCLIB music metadata
2026-10-05 13:10:10 +08:00
jxxghp
22704e9224
fix(api): allow dedicated identifier writes
2026-10-05 13:01:42 +08:00
jxxghp
6f0f528e2f
feat(agent): add configurable output language
2026-10-05 07:35:05 +08:00