v1.9.6

Wait 5 sec.

What's Changedfix(knowledge): preserve HTTP URLs in knowledge base documents by @Raymond8196 in #14983fix(ai): thread idle timeout handle to stream chunk adapter by @GeorgeDong32 in #15056fix(ci): improve GitCode sync reliability by @zhibisora in #15063fix(image): convert assistant image blocks to base64 for multi-turn editing by @Raymond8196 in #15011fix(agent): invalidate provider cache on settings changes by @404-Page-Found in #14596fix: recognize ctrl by uniKey value by @kovsu in #15002hotfix(aiCore): prevent crash when model.provider not found (#14999) by @DeJeune in #15001fix: align provider model list actions by @kangfenmao in #15078fix(agents): use task name as session name for cron task sessions by @Kingzi49 in #15053fix: resolve ENOENT in OpenMinerU preprocessing caused by MinerU ZIP structure change by @suujonH in #15061fix: clean up OAuth tokens when deleting MCP server by @xr843 in #14083fix: exclude deepseek-r1 models from function_calling capability by @404-Page-Found in #15102fix: auto-expand MCP tool approval card so action buttons are immediately visible by @LWWZH in #15080hotfix: add environment variable for claude code provider management by @kovsu in #15089fix(agents): preserve updatedAt timestamps when creating new agents by @LWWZH in #14675fix(aiCore): Qiniu PDF fallback for GPT-5.4 by @404-Page-Found in #15090fix(code-tools): handle Codex CLI reserved provider IDs by @GeorgeDong32 in #15068chore: release v1.9.6 by @kangfenmao in #15116New Contributors@Kingzi49 made their first contribution in #15053@suujonH made their first contribution in #15061Full Changelog: v1.9.5...v1.9.6