104 Commits

Author SHA1 Message Date
InfinityPacer
5de950fb7c fix(subscribe): stop failing sites from stalling subscription downloads
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 02:59:35 +08:00
jxxghp
9aab7c0f4c fix(agent): pin scheduled tasks to real execution accounts (#7241) 2026-10-29 22:39:08 +08:00
jxxghp
16cd9f75ed fix(apppush): deliver business notifications to all active users (#7235) 2026-10-29 21:43:18 +08:00
paysen
b55d9bd167 fix(transfer): recover legacy results and retain pending sources (#7232) 2026-10-29 17:06:36 +08:00
jxxghp
721c03734a feat(widget): 提供受限凭据和只读快照接口 (#7175)
* feat(widget): add restricted read-only snapshot foundation

* test(widget): 补齐运行时与文档迁移契约
2026-10-25 06:02:47 +08:00
jxxghp
3ac7526930 feat(notification): relay AppPush through private MoviePilot Server 2026-10-24 07:32:00 +08:00
ranzhigg
e0ff8141f8 fix(transfer): allow safely discarding manual-review tasks (#7154) 2026-10-23 15:18:33 +08:00
Aqr-K
951cdc5b27 fix: arbitrate subscription identity and restore workflow state (#7147)
* fix: arbitrate subscription identity and restore workflow state

* test: preserve legacy empty-owner subscription transactions

* fix: align shared atomic configuration method with lifecycle prerequisite

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 08:14:15 +08:00
Aqr-K
6610a8c008 fix: retain plugin lifecycle ownership and recover installation state (#7146)
* fix: retain plugin lifecycle ownership and recover installation state

* test: cover plugin rollback and uninstall lifecycle boundaries

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 07:44:07 +08:00
Aqr-K
bcbf79f030 fix(media): preserve recognition and rule mutation identities (#7144)
* fix(media): preserve recognition and rule mutation identities

* test: cover typed classification facts with alias policies

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 07:33:27 +08:00
Aqr-K
5aebc7ac59 fix(auth): preserve administrator and credential consistency (#7141) 2026-10-23 06:50:30 +08:00
jxxghp
17a866f47b fix(transfer): restore AI takeover for failed transfers 2026-10-22 09:43:03 +08:00
jxxghp
6d4ce83837 fix(types): clear host mypy debt and prevent typing regressions
严格检查全部宿主源码,清零类型错误预算并移除按模块类型豁免。
按原因、所属方法、错误码及语法指纹锁定必要兼容例外和站点类型桩,
CI 阻断新增忽略、检查范围退化、本地桩替代真实接口及新的类型错误。

修复空值、异步和供应方类型边界,保持插件与 API 兼容合同,
并补充存储、订阅、通知、Agent 和工作流边界的回归覆盖。
2026-10-21 22:03:18 +08:00
jxxghp
379c26a300 feat(subscribe): record initial and upgrade download provenance (#7061) 2026-10-19 16:03:21 +08:00
DDSRem
e0642eafa7 chore(types): reduce v3 host mypy debt (#7057)
* chore(types): clear AniList endpoint mypy debt

* chore(types): clear Douban endpoint mypy debt

* chore(types): clear recommendation endpoint mypy debt

* chore(types): clear subscription notification mypy debt

* chore(types): clear SDK string compatibility mypy debt

* chore(types): ratchet v3 host mypy across remaining files

* chore(types): reduce v3 host mypy debt and retire ledger

* chore(types): reconcile host snapshot with upstream HTTP pool

* test(types): cover host paths exposed by mypy cleanup
2026-10-18 09:37:49 +08:00
DDSRem
2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00
jxxghp
00645938d2 fix: isolate durable notification recovery 2026-10-17 13:11:15 +08:00
jxxghp
c3e18208c2 refactor(types): bind plugin installation transaction results 2026-10-16 20:29:51 +08:00
jxxghp
4955b7b9ea fix: harden backend isolation and execution safety 2026-10-16 09:11:28 +08:00
jxxghp
435703573e fix(transfer): persist provider checkpoint planning time
Write planned_at atomically for provider_pending checkpoints and refresh it when host planning takes over. Cover real admission-to-execution persistence and distinguish incomplete plan fields from inconsistent execution checkpoint fields.

Refs #6973
2026-10-13 07:13:42 +08:00
jxxghp
86c7fccfd5 feat(subscribe): persist business activity with scoped details 2026-10-12 23:43:01 +08:00
jxxghp
bd1e6eb899 fix(agent): separate public API queries from bound user operations 2026-10-12 07:30:35 +08:00
jxxghp
bb29451222 fix: isolate unhandled durable transfer failures 2026-10-10 12:17:07 +08:00
freeman
f3ad81b39e style: apply safe ruff auto-fixes and exempt startup late imports
Run `ruff check app tests scripts --fix` with the configured rule set
(E4/E7/E9/F/I): import sorting (I001), f-strings without placeholders
(F541), lambda/variable/unused-import cleanups that ruff marks safe.
Nine files whose only ruff debt sits next to pre-existing pylint
import-resolution errors (lazy exports, sys.path script imports) or
whose "unused" imports are reached through attribute access by tests are
left untouched so the changed-file pylint gate and the benchmark tests
stay green; their diagnostics remain in the baseline.

app/startup/lifecycle/__init__.py and app/main.py import business
modules after cache composition, import-path and stdio setup on purpose
(the source comments document the contract), so declare E402
per-file-ignores for them instead of adding per-line noqa.

Ruff ratchet watermark drops from 498 to 100; sync the baseline fixture
and the optimization checklist figure.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 13:29:09 +08:00
ChantXu64
e5e2558585 feat(search): 订阅补全逐页搜索、断点续搜与资源页手动分页 (#6907) 2026-10-07 14:40:55 +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
3726ca078a fix(mediaserver): isolate cached item ids by server (#6850) 2026-10-01 17:07:23 +08:00
jxxghp
47d51c3630 feat(agent): align history recall with Hermes SQLite FTS5 2026-09-30 16:28:39 +08:00
jxxghp
4a2ef75706 fix(music): retry transient recognition before freezing file operations 2026-09-30 06:36:04 +08:00
jxxghp
b4175a4f88 fix(image): cache site allowlist and include custom image hosts 2026-09-30 01:09:32 +08:00
jxxghp
67ae166a54 fix(servarr): restore subscription repository async contract 2026-09-18 22:13:33 +08:00
jxxghp
4e9a64c0f0 refactor(application): 按模块子目录统一文件命名 2026-09-15 23:57:06 +08:00
jxxghp
ebddeee23b feat(subscribe): accumulate music album track progress 2026-09-14 19:35:04 +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
jxxghp
8072b7d78f Refactor application architecture and compatibility boundaries 2026-09-13 12:53:00 +08:00
jxxghp
1ba4d087c5 fix: scope subscription maintenance by media type 2026-09-12 20:56:05 +08:00
jxxghp
889bdfe501 fix(classification): align migration defaults and source semantics 2026-09-12 17:43:36 +08:00
jxxghp
acfa5eee72 fix(history): suppress failure feedback on successful records 2026-09-10 11:51:08 +08:00
jxxghp
fcc83e6bbe fix(servarr): restore sync subscription lookup (#6635) 2026-09-10 09:29:17 +08:00
jxxghp
5fa5b414aa feat(agent): harden tool outcomes, recovery and discovery 2026-09-09 19:55:21 +08:00
jxxghp
022dd006a5 fix(transfer): allow manual reorganization after stale task failures
Refs #6625
2026-09-09 17:53:24 +08:00
jxxghp
5a214afc19 fix(subscribe): keep scheduled searches progressing across site retries 2026-09-09 16:45:42 +08:00
jxxghp
9e1c25124b fix(transfer): restore regression and architecture gates 2026-09-09 13:40:35 +08:00
jxxghp
ce690b1140 feat(transfer): add failure stage, recovery action, retry count, and cleanup status to transfer history 2026-09-09 13:17:36 +08:00
jxxghp
d0c894f5eb fix(transfer): close durable error recovery loop 2026-09-08 22:38:59 +08:00
jxxghp
d97906f0a9 fix(transfer): clarify execution conflict errors 2026-09-08 22:01:55 +08:00
jxxghp
8255df4df4 fix(subscribe): remove cumulative search delays and resume pending sites 2026-09-08 08:58:35 +08:00
jxxghp
b85aa5e31b feat(subscription): add search_interval and last_search fields for subscription management 2026-09-08 07:12:21 +08:00
jxxghp
b9120a5b6a fix(classification): preserve non-TMDB legacy categories 2026-09-06 23:36:43 +08:00
jxxghp
82652add91 fix(auth): fix passkey deletion password verification 2026-09-06 10:05:40 +08:00