Commit Graph

270 Commits

Author SHA1 Message Date
jxxghp
86ededa739 feat(widget): 增加当前主登录的只读账号上下文 (#7176) 2026-10-25 06:28:57 +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
Aqr-K
7584d4b9fc fix: isolate agent sessions and retain runtime resource ownership (#7149)
* fix: arbitrate subscription identity and restore workflow state

* fix: isolate agent sessions and retain runtime resource ownership

* test: preserve legacy empty-owner subscription transactions

* test: handle reaped terminal descendants during shutdown polling

* fix: align shared atomic configuration method with lifecycle prerequisite

* test: cover subagent cancellation and completion lifecycle boundaries

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 08:20:59 +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
jxxghp
ec5ff575f0 fix(agent): restore API bodies before direct request dispatch 2026-10-23 07:55:16 +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
d51320103c fix: make local setup and bundled skill operations recoverable (#7150)
* fix: make local setup and bundled skill operations recoverable

* test: verify user updates with real transaction runners
2026-10-23 06:49:13 +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
6c68225a07 ci(startup): 固定冷导入耗时上限为三秒 2026-10-20 20:44:01 +08:00
alexcastgonz
14b9ea6d3e fix(setup): 更新 Google 默认模型并兼容 Gemini 3.8 思考级别 (#7109)
* fix(setup): 更新 Google 默认模型为 gemini-3.8-flash

安装向导中 Google 的预设模型 gemini-2.5-flash 对新建的 Gemini API 密钥
已返回 404,在模型选择处直接回车会写入无法使用的 LLM_MODEL。改为
Google 文档中推荐给新项目的稳定模型 gemini-3.8-flash。

新增用例校验预设值不再是 Gemini 2.5 系列。

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(llm): honor Gemini 3.8 minimum thinking level

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-20 18:41:57 +08:00
jxxghp
cdb6560b5f ci: round startup median budgets up to whole seconds 2026-10-20 13:47:44 +08:00
jxxghp
a0df4f5fdc Merge pull request #7097 from pcbeingused333/fix/anthropic-setup-default-model 2026-10-20 13:34:22 +08:00
秋澪Akimio
e3d32e491b feat(storage): 本地复制支持仅限关键字参数 try_reflink 并新增实验室配置项 (#7089) 2026-10-19 22:54:43 +08:00
秋澪Akimio
114c2cebe5 feat(storage): 本地存储增加引用链接(reflink)整理方式 (#7077) 2026-10-19 16:48:41 +08:00
jxxghp
379c26a300 feat(subscribe): record initial and upgrade download provenance (#7061) 2026-10-19 16:03:21 +08:00
Alex Castillo
a8f260b01d fix(setup): 更新 Anthropic 默认模型为 claude-sonnet-4-6
安装向导中 Anthropic 的预设模型 claude-sonnet-4-0 已于 2026-06-15 被
Anthropic 下线,在模型选择处直接回车会写入失效的 LLM_MODEL。改为
claude-sonnet-4-6;当前锁定的 langchain-anthropic 1.4.x 已有该模型的
档案(max_tokens 64000),且该模型默认不开启思考。

回退选择用例改为接受向导给出的默认模型,以覆盖预设值本身。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:04:22 -04:00
DDSRem
e1b703aacc refactor(agent): centralize graph resource ownership (#7062) 2026-10-18 21:49:57 +08:00
jxxghp
2d73cbc43e docs: drop process records and internal implementation docs
Keep only install, usage, development-workflow and architecture-boundary
documents; remove the one-off refactor plans, audits and ledgers that had
already served their purpose.

- delete docs/refactor plus the agent API surface audit generator and its
  drift-only tests; the fixed route registry remains the source of truth
- delete internal implementation notes (agent, music, notification, transfer,
  subscription activity, docker startup, V3t runtime governance)
- delete site adapter capture/release shims and the ADR records; external
  links point at MoviePilot-Site-Collector instead
- keep docs/architecture-overview.md and gate its dependency and event
  figures against the generated fixtures
- drop doc-only assertions from the architecture baseline test and retarget
  remaining references at code and rule documents
2026-10-18 14:24:49 +08:00
jxxghp
b12c112fe1 chore(types): gate mypy debt as exceptions and require zero new files
mypy 门禁此前只表达“只降不增”,没有把存量债务和新增文件分开:拆包迁移按目录前缀
继承额度,同包后来新增的文件可以吸收旧文件剩余额度;本地缺 types-* 桩包时,
import-untyped 与派生的 no-any-return 会被计成债务增长。

调整后口径分三层:mypy.ini 严格清单必须零错误;基线登记文件是存量例外,按文件 +
错误码设上限;基线未登记的新文件必须零诊断。

- 迁移登记改为 Migration(sources, targets),额度只转给逐一登记的接收文件。
- classify_counts 返回 RatchetDiff,新增文件、存量增长、待固化低水位分组输出。
- 缺少 types-* 时直接报环境错误并要求 uv sync --locked,不写入基线。
- 删除 7 个已消耗的迁移组,其旧路径已不在基线中。

验证:tests/test_mypy_gate.py 与 tests/test_architecture_ci.py 26 passed;
changed-file Pylint 10.00/10;Ruff ratchet、结构复杂度、mypy 严格清单与
mypy ratchet(2881 项存量)通过。
2026-10-18 13:46:37 +08:00
DDSRem
2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00
cosini
e36884766c feat(douban): 新增豆瓣短评与影评接口
* feat(douban): 新增豆瓣短评与影评接口

* fix(douban): satisfy comment endpoint CI gates

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-17 12:31:41 +08:00
jxxghp
a92c4b597f ci: expand app coverage and async blocking gates 2026-10-17 06:52:51 +08:00
jxxghp
68101746ae fix(plugin): recover invalid historical instance rows (#7039)
* fix(plugin): recover invalid historical instance rows

* fix(plugin): keep maintenance on existing startup path

* style(plugin): order maintenance test imports

* chore(architecture): record plugin instance validator edges
2026-10-17 06:34:25 +08:00
jxxghp
2149eb2a60 fix(download): provide fallback category for music torrents
Use the music media type as the downloader category only when music has no library classification. Preserve configured categories and qBittorrent automatic-management settings, with SDK-boundary regression coverage.

Refs #7028
2026-10-16 15:13:03 +08:00
jxxghp
7e24ce62c3 fix(plugin): restrict update badges to bound repositories 2026-10-16 12:29:20 +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
613eb5313b feat(media): return parsed meta info when recognition fails
The recognize endpoint returned an empty context when no media matched,
so the recognition shortcut could not show the applied custom words or
the processed title, which made failures hard to diagnose. Always
return the parsed meta_info (including apply_words) and leave media_info
empty when the lookup fails.

Update the REST API docs and the generated agent skill note accordingly.

Refs #6997
2026-10-15 09:07:00 +08:00
pyss56
b18833f912 fix(agent): preserve generated skill contracts and API guidance (#6991)
* feat(agent): scripted generation of agent skill docs with operation/field notes

Generate skills/moviepilot-api API docs from scripts/generate_agent_skill_docs.py
instead of hand-editing:
- surface canonical MediaType agent keys in the API contract
- add subscribeactivity table note and global operation notes
- preserve upstream search.torrents execution semantics via field notes

Co-Authored-By: pavel2 <pavelyuan468@gmail.com>

* fix(agent): preserve generated skill contracts and English guidance

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-14 11:39:24 +08:00
jxxghp
edc719596d feat(update): prepare latest updates for a single restart 2026-10-13 12:50:01 +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
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
3fc4a5cb5c docs: 用有效标签筛选统一采集器下载入口 2026-10-11 12:29:53 +08:00
jxxghp
54b6368340 feat: 独立发布站点采集器并按输入变化递增版本 2026-10-11 12:18:45 +08:00
InfinityPacer
25aaf3a32b feat(plugin): add agent pet extension contract
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 04:08:15 +08:00
jxxghp
63e30e453b ci: preserve manual release summaries and raw changelog 2026-10-10 08:37:30 +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
c8869d4b89 fix(api): classify notification image transport route 2026-10-04 16:33:11 +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
jxxghp
a8b0870ef9 fix(cli): force sync remote tags during updates 2026-10-02 11:21:54 +08:00
jxxghp
27a9ca4d66 feat(agent): install CJK history tokenizer for Docker and CLI 2026-10-01 23:26:10 +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
19e62f891f fix(cli): confirm local changes before upgrade 2026-10-01 09:57:27 +08:00
jxxghp
00f396601f fix(cli): prefer project runtime Python 2026-09-30 22:36:33 +08:00