Commit Graph
1959 Commits
Author SHA1 Message Date
jxxghp df2ce103e1 fix(architecture): move media auxiliary mixin into _base package
media_auxiliary 作为模块共享 Mixin 放在 app/modules 顶层会被视为
业务模块,导致 anilist/bangumi/douban/imdb/themoviedb 跨模块直接
依赖,违反模块间禁止导入的架构约束。移入模块共享样板包
app/modules/_base(模块发现跳过)并同步依赖基线。
2026-08-26 14:07:08 +08:00
jxxghp e02418bace feat(media): aggregate aliases from enabled metadata sources 2026-08-26 13:45:03 +08:00
jxxghp 3272f72823 fix(ci): sort GPW parser imports 2026-08-26 07:10:33 +08:00
jxxghp a706474310 fix(site): adapt GPW Gazelle seeding 2026-08-26 07:05:53 +08:00
jxxghp 574c50586e feat(music): 完善歌词与专辑目录整理 2026-08-25 21:02:26 +08:00
jxxghp b914e8b6e4 refactor: strengthen architecture CI gates and runtime contracts 2026-08-25 17:02:29 +08:00
InfinityPacerandjxxghp be7dfd77a3 fix(runtime): 收敛模块关闭线程所有权 (#6443)
* fix(runtime): bound module shutdown owners

* fix(runtime): declare blocking shutdown owners

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-08-25 06:58:31 +08:00
jxxghp 415335b215 refactor: unify message channel shutdown convergence 2026-08-24 14:08:06 +08:00
jxxghp 009631b8ee refactor: unify capability shutdown convergence 2026-08-24 13:48:11 +08:00
jxxghp af9a141f34 fix: isolate feishu websocket event loops 2026-08-24 12:54:06 +08:00
jxxghp 2274a354dc fix: retain discord typing task owners 2026-08-24 09:43:17 +08:00
jxxghp ecbd39a0bb fix: isolate telegram typing lifecycle 2026-08-24 08:51:49 +08:00
Aqr-K 4a5958c3c2 fix(modules): 默认服务配置改为尊重显式标记,不再按读取顺序取第一个 (#6431) 2026-08-24 08:03:28 +08:00
jxxghp 1047bfa821 refactor: unify emby family item formatting 2026-08-24 06:08:04 +08:00
jxxghp 8555d0da3e refactor: use explicit system config getter 2026-08-24 04:04:35 +08:00
jxxghp 371383f0a8 refactor: unify host threadpool boundary 2026-08-24 03:28:10 +08:00
jxxghp e1230c0277 refactor: unify message ingress forwarding 2026-08-24 03:01:17 +08:00
jxxghp 52fd495d38 refactor: normalize downloader file contracts 2026-08-24 02:10:04 +08:00
jxxghp 9ce4533761 refactor: own fanart cache cleanup 2026-08-24 00:37:09 +08:00
jxxghp 6b65dc5d12 refactor: unify module runtime settings 2026-08-24 00:19:57 +08:00
InfinityPacer f64030a074 fix(imports): use concrete modules for internal symbols (#6427) 2026-08-23 21:28:37 +08:00
InfinityPacer 7d10483961 fix(discord): preserve cleanup during startup stop (#6426) 2026-08-23 21:28:12 +08:00
InfinityPacer c72b4fe88e fix(discord): close bot event loop on shutdown (#6421) 2026-08-23 20:11:13 +08:00
jxxghp ba193cce08 fix(imdb): register async cache cleanup 2026-08-23 15:29:42 +08:00
InfinityPacer e8cfe272c4 fix(async): offload file metadata checks 2026-08-23 12:06:52 +08:00
SayItDitto b1a55b76e5 feat: 用户数据解析器自动探测 + Gazelle/NexusProject 变种兼容 (#6403) 2026-08-23 09:13:55 +08:00
jxxghp baf4e883b2 refactor: route storage adapter settings through runtime 2026-08-23 03:25:08 +08:00
jxxghp c89066d96f refactor: route media source settings through runtime 2026-08-23 03:20:03 +08:00
jxxghp 061a92eab0 refactor: route chat and subtitle settings through runtime 2026-08-23 03:17:40 +08:00
jxxghp 55c80c87da refactor: route indexer module settings through runtime 2026-08-23 03:15:21 +08:00
jxxghp dd6405389c refactor: route storage module settings through runtime 2026-08-23 03:12:51 +08:00
jxxghp ac32adc7b6 refactor: route media and chat module settings through runtime 2026-08-23 03:09:59 +08:00
jxxghp 4098cc1eec refactor: route music module settings through runtime 2026-08-23 03:03:26 +08:00
jxxghp 4641db7f5b refactor: route metadata module settings through runtime 2026-08-23 03:01:29 +08:00
InfinityPacer d131f8d571 feat(network): migrate async HTTP client to HTTPX2 (#6394) 2026-08-22 16:48:23 +08:00
jxxghp c765604b36 feat(notification): add DingTalk robot channel 2026-08-22 12:02:24 +08:00
jxxghp 1a7c3cfff8 feat(media): add native IMDb source module 2026-08-22 11:22:59 +08:00
jxxghp 9273d68aa7 feat(telegram): support rich Agent messages 2026-08-22 10:11:18 +08:00
jxxghp 97d2dcd7fb fix(ci): align architecture and pylint gates 2026-08-22 08:50:25 +08:00
jxxghp ff0ce8d1c1 refactor: add configuration dependency ratchet 2026-08-21 21:20:56 +08:00
InfinityPacer 307d54bf68 fix(acoustid): accept non-fatal fpcalc output (#6362) 2026-08-19 22:44:35 +08:00
InfinityPacer f700db5ac8 feat(database): add managed backup and offline restore (#6359) 2026-08-19 17:34:32 +08:00
jxxghp 8472bcff43 refactor: 收口 V3 分层架构与插件兼容边界 2026-08-18 13:22:02 +08:00
jxxghp 5128ae9e1e refactor: 推进后端分层架构治理 2026-08-18 00:29:14 +08:00
jxxghp 23ca70fa37 fix(acoustid): 测试函数独立检测本地 fpcalc 依赖而非仅校验网络
原先 test() 依赖 init_module() 一次性缓存的 self._fpcalc_path,初始化之后再安装或移除 fpcalc 都不会反映在测试结果中,导致 UI 测试可能错误显示为通过。

- 抽出静态方法 _resolve_fpcalc() 基于 shutil.which 定位可执行 fpcalc,init_module() 复用
- test() 每次自行重新定位 fpcalc,缺失则直接失败且不发起网络请求,并写回 self._fpcalc_path
- 新增 3 个回归用例覆盖本地依赖检测与独立于 init 缓存的行为
2026-08-17 11:07:13 +08:00
jxxghp 1402626a4a refactor(tmdb): 空结果缓存过期时间收敛为设置项 EMPTY_RESULT_CACHE_TTL
- ConfigModel TMDB 配置区新增 EMPTY_RESULT_CACHE_TTL(默认 30 分钟),支持环境变量覆盖
- request/async_request/discover/TmdbCache 统一改读 settings,移除模块级常量与跨模块导入
2026-08-16 21:20:32 +08:00
jxxghp fa06a4ac03 fix(tmdb): 空结果缓存使用独立短 TTL,故障恢复后快速自愈,关闭 #6332
- cached 装饰器新增 empty_ttl/empty_if,空结果按独立短 TTL 写入
- TMDB request/async_request/discover 空结果快照 30 分钟过期
- TmdbCache 未识别负缓存(id=0)同步改用 30 分钟短 TTL,正缓存不变
2026-08-16 20:50:55 +08:00
jxxghp 54f093a099 Merge remote-tracking branch 'origin/v3' into v3
# Conflicts:
#	app/api/endpoints/agent.py
#	app/api/endpoints/anthropic.py
#	app/api/endpoints/openai.py
#	app/chain/__init__.py
#	app/chain/message.py
#	app/chain/site.py
#	app/chain/subscribe.py
#	app/chain/transfer.py
#	app/modules/discord/__init__.py
#	app/modules/qqbot/__init__.py
#	app/modules/slack/__init__.py
#	app/modules/telegram/__init__.py
#	app/modules/wechat/__init__.py
#	app/runtime/extensions/module_manager.py
#	app/runtime/extensions/service_registry.py
#	tests/test_agent_interaction.py
#	tests/test_slash_command_interactions.py
#	tests/test_web_agent_stream.py
2026-08-16 19:44:43 +08:00
jxxghp 240a4dffe6 refactor(schemas): 统一 message/notification 命名边界,旧名收敛至兼容映射表
- notification 域:渠道能力(MessageChannel→NotificationChannel、ChannelCapability* 迁入 notification.py)
- message 域:消息收发(Notification→Message、NotificationType→MessageType、CommingMessage→IncomingMessage、NotificationHistoryItem→MessageHistoryItem、NotificationClear*→MessageClear*)
- Agent 工具契约:send_notification_message→send_message、notification_callback→message_callback
- 源码不保留旧名物理别名,旧导入经 app/runtime/compat/manifest.py SYMBOL_ALIASES 惰性解析
- API 路径与持久化键冻结不变,前端零改动
- 新增兼容守护测试与 docs/rules/07 命名边界规范
2026-08-16 19:32:20 +08:00
jxxghp 5810f6bc2b refactor(application): filter_rules.py 更名 rules.py 并合并 RuleHelper
规则域收敛为单一事实来源 app/application/rules.py:
- filter_rules.py 更名为 rules.py(内置规则集 + RuleParser)
- filter.py 仅含 66 行 RuleHelper(用户规则组配置访问),并入 rules.py
- 同步更新 5 处引用方导入、nettest stub 目标与架构文档
- 兼容映射 app.helper.rule 指向新路径,legacy 导入仍可用
2026-08-16 17:13:51 +08:00