Commit Graph

228 Commits

Author SHA1 Message Date
jxxghp
30378f2fc8 fix(network): recover shared pools after repeated pool timeouts 2026-10-18 09:01:33 +08:00
DDSRem
2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00
DDSRem
7e1c71a6d2 docs: standardize Chinese comment contracts
Define multiline reStructuredText docstrings and item-level documentation for dataclasses, Pydantic models, and Protocols. Align agent instructions, review guidance, and development documentation.

Validation: document links, Python example syntax, docstring format, and diff checks passed. The unchanged text-only architecture documentation test passed under isolated pytest with temporary CONFIG_DIR and no application bootstrap. Normal bootstrap remains unverified because the local environment lacks moviepilot_rust; installed uv also predates the project configuration format. No product code changed.
2026-10-17 15:45:46 +08:00
jxxghp
00645938d2 fix: isolate durable notification recovery 2026-10-17 13:11:15 +08:00
jxxghp
2757ac33be fix(log): support exception logging in database backup failures 2026-10-17 04:01:52 +08:00
wenking
5ec9516a89 fix(mcp): 支持显式 opt-in 的 tools/list schema 紧凑投影
默认保留 MCP tools/list 的完整 schema;显式携带 X-MCP-Schema-Mode: compact 时,为超限工具提供保留顶层对象和 operation/action 枚举的紧凑投影。REST 合同、tools/call 校验与权限判定沿用完整合同。

合并前修复嵌套定义引用与 patternProperties 投影边界,使用 app.agent.tools.projection 作为纯函数 owner,补充回归和相关 Skill 说明,并同步当前 v3 的架构快照与类型低水位。

验证:113 项相关回归、167 项架构策略测试、45 项架构快照测试通过;Pylint 10/10,类型、复杂度及并发等相关棘轮通过。最终 PR head 6d25e1039d 的全部 10 项必需 GitHub 检查通过;待合并树与 CI 测试树一致。

投影是 best-effort,不承诺压入 5000 字节以内;未进行生产实例或镜像发布验证。

Co-authored-by: clone <clone_fan@foxmail.com>
2026-10-16 19:52:57 +08:00
jxxghp
4955b7b9ea fix: harden backend isolation and execution safety 2026-10-16 09:11:28 +08:00
InfinityPacer
9181ad2b65 feat(community): serve community medals from the Wiki registry behind remote switches
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 22:28:58 +08:00
jxxghp
ea60ed0fd6 feat(community): recognize GitHub contributions and honor levels 2026-10-15 12:11:36 +08:00
jxxghp
72c8bff312 feat(music): preserve local covers and fall back after online scraping fails 2026-10-14 23:15:41 +08:00
jxxghp
b82bbcb420 fix(webhook)!: guard unknown movie paths in transfer history
Recover Jellyfin deletion paths from webhook payloads or bounded server-scoped caches. Avoid querying deleted items and preserve TV season/series lookup behavior.

BREAKING CHANGE: Movie and unspecified-type history queries without a destination now return no records unless match_all_versions=True is explicitly requested.

Refs #6988
2026-10-13 23:48:10 +08:00
jxxghp
48cffca3a1 feat(transfer): aggregate successful notifications by batch (#6981) 2026-10-13 17:21:17 +08:00
jxxghp
98bd038623 fix(music): reconcile album completion and prevent duplicate downloads
Recover complete release coverage from successful local transfers and audio tags/CUE before subscription searches. Keep release-group and album boundaries, and reject completed torrent hashes before downloader submission.
2026-10-13 17:05:57 +08:00
jxxghp
7a853577d8 fix(subscribe): preserve original execution log content 2026-10-12 06:58:01 +08:00
jxxghp
391f55df40 feat(subscribe): add isolated execution logs with authorized streaming (#6963) 2026-10-11 22:18:37 +08:00
jxxghp
28e1cb3a2f refactor: move site collector releases and sources to independent repository 2026-10-11 14:12:52 +08:00
jxxghp
b663825fe7 fix(plugin): recover dependencies without disabled constraints
Keep enabled host and clone sources in dependency recovery. Fall back to per-plugin requests while retaining ready and recovered manifest constraints, preserving original sources and cancellation ownership.

Refs #6943
2026-10-10 12:20:13 +08:00
jxxghp
63e30e453b ci: preserve manual release summaries and raw changelog 2026-10-10 08:37:30 +08:00
freeman
2165475dd0 fix(security): throttle password login after repeated failures
The access-token endpoint accepted unlimited password attempts; the
only existing rate limiters are single-instance helpers for outbound
site requests. Add app/application/security/throttle.py, an in-memory
LoginThrottle keyed by (client address, normalized username) that locks
for 30s after five consecutive failures and doubles the lockout up to
15 minutes. The endpoint answers 429 with Retry-After while locked,
counts only real credential failures (an MFA challenge after a correct
password does not count), and clears the record on success.

X-Forwarded-For is deliberately not trusted because there is no
trusted-proxy setting; behind the bundled nginx all requests share one
address, so the key degrades to per-username throttling, which is the
dimension brute-force protection needs. Sync the dependency snapshot
and architecture metrics for the new module.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 12:01:04 +08:00
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
jxxghp
6c9ebd01f3 fix(agent): close owned LLM clients with their lifecycle
Refs #6901
2026-10-07 09:18:40 +08:00
jxxghp
fb652c74f4 fix(music): 支持关闭 CUE 识别整理分轨音频 2026-10-05 17:15:14 +08:00
jxxghp
e21d68496f fix(torrents): use incremental cache for M-Team by default
Refs #6878
2026-10-04 10:46:49 +08:00
jxxghp
823423b2c9 fix(download): refresh expired signed torrent links
Refs #6878
2026-10-04 10:27:28 +08:00
jxxghp
754da97d97 fix(music): apply simplified metadata to manual transfers
Normalize album details and final music template fields while preserving local edition evidence, multi-artist credits and source objects. Refs #6870.
2026-10-04 08:47:15 +08:00
jxxghp
bdbc801e83 fix(agent): steer active channel conversations into new replies 2026-10-02 09:12:21 +08:00
jxxghp
d85e8a2470 ci(docker): remove image scans and scan-driven runtime patches 2026-10-01 23:09:46 +08:00
jxxghp
1f79f4b558 Merge pull request #6844 from cwd0204/refactor/download-batch-phases 2026-09-30 22:25:12 +08:00
freeman
9eae3b9b83 refactor(download): split batch matching into explicit phases 2026-09-30 21:50:47 +08:00
freeman
ed0460fc8b fix(smb): keep remote snapshots complete and recoverable 2026-09-30 21:19:41 +08:00
jxxghp
f803e6cc5c feat(agent): add persistent Python read-only orchestration 2026-09-30 20:16:53 +08:00
jxxghp
fcd4cd1725 feat(agent): align execution guardrails with Hermes 2026-09-30 18:51:03 +08:00
jxxghp
864ac1892e feat(agent): align background learning with Hermes 2026-09-30 17:45:39 +08:00
jxxghp
47d51c3630 feat(agent): align history recall with Hermes SQLite FTS5 2026-09-30 16:28:39 +08:00
InfinityPacer
4847813ca7 feat(sdk): expose Feishu event long connection to plugins
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:39:30 +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
72fcd8413a fix(music): verify artist aliases and preserve ambiguous identities 2026-09-30 11:42:23 +08:00
jxxghp
ee9fbf2264 feat(smb): mount multiple shares in one storage service 2026-09-30 11:27:24 +08:00
jxxghp
3a5486ae0d feat(music): add bounded source fallback and verified album matching 2026-09-30 10:50:09 +08:00
jxxghp
61e9ef7d8e fix(transfer): organize remote downloads on the SMB server 2026-09-30 10:36:56 +08:00
jxxghp
7e43ea9676 ci: replace line budgets with structural complexity gates 2026-09-30 07:36:53 +08:00
jxxghp
4a2ef75706 fix(music): retry transient recognition before freezing file operations 2026-09-30 06:36:04 +08:00
jxxghp
54591ac50e feat(music): bound recognition requests and make lookup caches recoverable 2026-09-30 05:15:14 +08:00
jxxghp
ee3fe99d55 feat(music): organize trusted audio tags without online recognition 2026-09-30 01:57:05 +08:00
freeman
542f893123 fix(plugins): 启动时自愈被旧版本实现遮蔽的插件安装包根 (#6718) 2026-09-17 15:57:48 +08:00
jxxghp
0afc5e2349 fix(architecture): 同步模块迁移门禁引用 2026-09-16 07:01:10 +08:00
jxxghp
b99b4fe2c3 chore(architecture): 同步模块路径与质量门禁 2026-09-16 00:12:16 +08:00
Aqr-K
61aa3cd649 refactor(sdk): 插件契约基类迁入 SDK 并由 Compat 承接旧包根符号 (#6701) 2026-09-15 07:01:00 +08:00
Aqr-K
6ea1cc9433 fix(plugin): 插件降级重装时拒绝迁移树不认识的库 revision (#6681) 2026-09-14 07:01:32 +08:00