✨ 新功能
- install CJK history tokenizer for Docker and CLI by @jxxghp
- expose model thinking progress by @jxxghp
- complete integrated evaluation by @jxxghp
- add persistent Python read-only orchestration by @jxxghp
- 内置媒体服务 MediaVault 更名为 Vyo by @thsrite
- align execution guardrails with Hermes by @jxxghp
- serve API docs behind a runtime toggle, closed by default by @InfinityPacer
- align background learning with Hermes by @jxxghp
- align history recall with Hermes SQLite FTS5 by @jxxghp
- expose Feishu event long connection to plugins by @InfinityPacer
- honor explicitly selected release editions by @jxxghp
- expose recognition evidence and release groups in transfer previews by @jxxghp
- preserve classical credits and verify performance evidence by @jxxghp
- mount multiple shares in one storage service by @jxxghp
- add bounded source fallback and verified album matching by @jxxghp
- validate bounded fingerprint candidates and recover failed lookups by @jxxghp
- bound recognition requests and make lookup caches recoverable by @jxxghp
- verify release candidates with identities and complete track evidence by @jxxghp
- recognize and archive whole-album CUE resources by @jxxghp
- group physical releases and preserve tagged release types by @jxxghp
- preserve release identities and metadata evidence by @jxxghp
- use original torrent evidence in album recognition by @jxxghp
- organize trusted audio tags without online recognition by @jxxghp
- add plugin one-shot job API to host scheduler by @InfinityPacer
- expose instance hostname in templates (#6815) by @jxxghp
- route channel notifications to configured topic by @jxxghp
🐛 修复
- allow managed runtime pip removal by @jxxghp
- clean managed pip and isolate update test versions by @jxxghp
- remove pip package metadata from runtime by @jxxghp
- remove vulnerable system pip from runtime image by @jxxghp
- upgrade vulnerable runtime packages by @jxxghp
- make project runtime the default Python command by @jxxghp
- align thinking status with model lifecycle by @jxxghp
- isolate cached item ids by server (#6850) by @jxxghp
- honor project runtime Python entry by @jxxghp
- explain empty memory targets by @jxxghp
- mark realtime notification type and severity by @InfinityPacer
- forward tool messages to OpenAI stream by @jxxghp
- preserve historical tool styles by @jxxghp
- keep message channel thinking status during tools by @jxxghp
- satisfy subtitle API type gates by @jxxghp
- bind CLI commands to project virtualenv by @jxxghp
- use M-Team subtitle search API by @jxxghp
- keep thinking status separate by @jxxghp
- satisfy test import lint by @jxxghp
- confirm local changes before upgrade by @jxxghp
- keep mypy ratchet green by @jxxghp
- satisfy complexity ratchet by @jxxghp
- resolve copied skill runtime roots by @jxxghp
- allow slashes in rule group names by @jxxghp
- prefer project runtime Python by @jxxghp
- keep remote snapshots complete and recoverable by @freeman
- improve PT title parsing and benchmark recognition by @jxxghp
- keep API docs routes across plugin route updates by @InfinityPacer
- key cached images by complete URL (#6840) by @freeman
- make API input errors actionable by @jxxghp
- scope transfer deduplication to storage (#6838) by @freeman
- preserve bound subscription owner for channel users by @jxxghp
- reject conflicting recording and album identities by @jxxghp
- only report config migration after copying files by @jxxghp
- clear stale update records after external upgrade by @InfinityPacer
- read and write native ASF metadata safely by @jxxghp
- restore multi-share capacity and diagnose unmapped paths by @jxxghp
- upgrade pyjwt to 2.14.0 for security advisories by @InfinityPacer
- show module execution error details by @jxxghp
- reinstall same-version frontend releases in dev mode by @jxxghp
- verify artist aliases and preserve ambiguous identities by @jxxghp
- organize remote downloads on the SMB server by @jxxghp
- move dev updates out of ordinary startup by @jxxghp
- preserve native APE identities and precise tag dates by @jxxghp
- protect linked seeds during native metadata writes by @jxxghp
- retry transient recognition before freezing file operations by @jxxghp
- align album tracks by unique evidence instead of file order by @jxxghp
- isolate storage evidence and reject unopened release packages by @jxxghp
- preserve album directory year and version evidence by @jxxghp
- retain untagged audio evidence and read native ID3 tags by @jxxghp
- cache site allowlist and include custom image hosts by @jxxghp
- allow configured site domains in image proxy by @jxxghp
- clear stale state before reconnecting storage by @jxxghp
- close shared redis pool once and keep redis caches across restarts by @InfinityPacer
- use media aliases for English-only sites by @jxxghp
- preserve global words for empty overrides by @jxxghp
- make manual review notes optional by @jxxghp
- preserve virtualenv python for autostart by @jxxghp
- 修复安装向导资源读取与目录处理 by @jxxghp
- sync music items with optional metadata (#6814) by @jxxghp
- 站点搜索兜底失败信息附带状态码与页面标题 (#6819) by @Aqr-K
- 请求上线前规整工具参数 schema,修复经 OpenAI 兼容网关调用 Gemini 时 400 (#6818) by @Aqr-K
🔧 其他
- remove image scans and scan-driven runtime patches by @jxxghp
- bump backend to v3.1.0 by @jxxghp
- sync dependency metrics by @jxxghp
- refresh dependency metrics by @jxxghp
- refresh dependency baseline by @jxxghp
- sync egress policy metrics by @jxxghp
- sync Ruff baseline for mediaserver by @jxxghp
- keep runtime guidance in English by @jxxghp
- sync mypy debt metric by @jxxghp
- bound dateparser languages for free-text dates by @InfinityPacer
- load only the pinyin syllable table for music titles by @InfinityPacer
- split batch matching into explicit phases by @freeman
- refresh architecture baseline for vyo module by @jxxghp
- merge: resolve v3 conflicts for vyo rename by @jxxghp
- lower mypy baseline for plugin routes by @InfinityPacer
- share default error-response fields across routes by @InfinityPacer
- refresh official plugin baseline after AgentResourceOfficer removal by @InfinityPacer
- mark lazy plugin SDK imports for pylint by @InfinityPacer
- import Message from its defining module by @InfinityPacer
- load FeishuModule for channel admin resolver registration by @InfinityPacer
- replace lark-oapi with lightweight OpenAPI and long-connection clients by @InfinityPacer
- send Web Push with http-ece and py-vapid instead of pywebpush by @InfinityPacer
- replace pyTelegramBotAPI with a lightweight Bot API client by @InfinityPacer
- replace line budgets with structural complexity gates by @jxxghp
- resolve storage types after module reload by @jxxghp
- sync search dependency metrics by @jxxghp
- compose redis cache and agent memory only when used by @InfinityPacer
- document plugin one-shot jobs in plugin authoring skill by @InfinityPacer
- split architecture gate into parallel jobs and drop duplicate event policy run by @InfinityPacer
- share architecture scans and stop rerunning gate tests in coverage shards by @InfinityPacer
完整更新记录: v3.0.10-1...v3.1.0