Release notes
PI Desktop v0.15.4
What's Changed
- chore(release): v0.15.2 by @vastsa in https://github.com/vastsa/PI-Desktop/pull/797
- fix(vercel): pin supported pnpm for docs deployment by @vastsa in https://github.com/vastsa/PI-Desktop/pull/800
- fix(docs): deploy Vercel site only after releases by @vastsa in https://github.com/vastsa/PI-Desktop/pull/805
- fix(scheduled): preserve manual task workspace bindings by @yuxino in https://github.com/vastsa/PI-Desktop/pull/803
- fix(scheduled): allow hourly updates without calendar fields by @yuxino in https://github.com/vastsa/PI-Desktop/pull/804
- fix(plugins): preserve declared thinkingLevels on plugin providers by @ZxlDragonDoctor in https://github.com/vastsa/PI-Desktop/pull/796
- fix(host-core): protect degraded model binding updates by @vastsa in https://github.com/vastsa/PI-Desktop/pull/809
- fix(shortcuts): reject conflicting individual resets by @yuxino in https://github.com/vastsa/PI-Desktop/pull/808
- fix(projects): preserve editor drafts during background updates by @yuxino in https://github.com/vastsa/PI-Desktop/pull/807
- fix(chat): preserve editing and search during IME Escape by @yuxino in https://github.com/vastsa/PI-Desktop/pull/801
- fix(browser): update chrome after same-document navigation by @yuxino in https://github.com/vastsa/PI-Desktop/pull/811
- fix(session): keep temporary-task attachments readable after branching by @yuxino in https://github.com/vastsa/PI-Desktop/pull/815
- fix(chat): lock queued prompt actions until admission completes by @yuxino in https://github.com/vastsa/PI-Desktop/pull/806
- fix(scheduled): use project path identity for task bindings by @hui455 in https://github.com/vastsa/PI-Desktop/pull/820
- fix(scheduled): distinguish hourly placeholders from calendar times by @hui455 in https://github.com/vastsa/PI-Desktop/pull/821
- fix(scheduled): allow maintenance of unarmed legacy tasks by @hui455 in https://github.com/vastsa/PI-Desktop/pull/822
- fix(scheduled): pause bound tasks when removing a project by @hui455 in https://github.com/vastsa/PI-Desktop/pull/823
- fix(scheduled): avoid serial waits for task startup by @hui455 in https://github.com/vastsa/PI-Desktop/pull/824
- fix(settings): release explicitly deselected image models by @yuxino in https://github.com/vastsa/PI-Desktop/pull/833
- docs(mcp): add user guide for market catalogs and credentials by @Frank-zhu0404 in https://github.com/vastsa/PI-Desktop/pull/835
- feat(config-sync): add encrypted portable configuration sync by @vastsa in https://github.com/vastsa/PI-Desktop/pull/834
- fix(agent-runtime): repair hosted-search continuation contracts by @zeroy1024 in https://github.com/vastsa/PI-Desktop/pull/825
- fix(agent-runtime): keep unreplayable search history usable by @vastsa in https://github.com/vastsa/PI-Desktop/pull/836
- feat(config-sync): support LAN HTTP and append-only WebDAV by @vastsa in https://github.com/vastsa/PI-Desktop/pull/838
- fix(desktop): refuse a slash submission when the command source fails, and give compaction its own deadline (#795) by @vastsa in https://github.com/vastsa/PI-Desktop/pull/848
- fix(desktop): bound the startup wait and make a stuck boot recoverable (#831) by @vastsa in https://github.com/vastsa/PI-Desktop/pull/850
- fix(agent-runtime): keep the recent context window when a summary fails (#827) by @vastsa in https://github.com/vastsa/PI-Desktop/pull/851
- fix(config-sync): isolate global capabilities in sync tests by @yuxino in https://github.com/vastsa/PI-Desktop/pull/842
- fix(windows): publish portable build as zip by @vastsa in https://github.com/vastsa/PI-Desktop/pull/857
- feat(skills): carry skill package resources above the document cap by @vastsa in https://github.com/vastsa/PI-Desktop/pull/855
- fix(skills): compile the package bound test module by @vastsa in https://github.com/vastsa/PI-Desktop/pull/858
- fix(agent-runtime): feed pi's file-op collector the names it reads by @vastsa in https://github.com/vastsa/PI-Desktop/pull/862
- feat(config-sync): show what a running sync is doing by @vastsa in https://github.com/vastsa/PI-Desktop/pull/861
- fix(settings): give fields and dropdowns one control height by @vastsa in https://github.com/vastsa/PI-Desktop/pull/865
- fix(settings): name Settings model options by their vendor account by @hxj04121-lab in https://github.com/vastsa/PI-Desktop/pull/866
- fix(agent-runtime): bound trusted extension lifecycle waits by @hui455 in https://github.com/vastsa/PI-Desktop/pull/788
- fix(agent-runtime): 修复子代理恢复与跨轮缓存的模型授权绕过 by @hui455 in https://github.com/vastsa/PI-Desktop/pull/847
- fix(oauth): offer xAI chat models returned by GET /v1/models by @feeeeling in https://github.com/vastsa/PI-Desktop/pull/844
- fix(chat): copy rendered formulas as round-trippable TeX by @KtzeAbyss in https://github.com/vastsa/PI-Desktop/pull/852
- fix(agent-runtime): 修复中途插入指令后上游 400 Duplicate tool output by @deqiying in https://github.com/vastsa/PI-Desktop/pull/856
- fix(settings): reconcile image bindings when removing provider models by @hui455 in https://github.com/vastsa/PI-Desktop/pull/873
- fix(settings): confirm provider saves without claiming image selection by @hui455 in https://github.com/vastsa/PI-Desktop/pull/874
- fix(images): support Clash Fake-IP image result downloads by @hui455 in https://github.com/vastsa/PI-Desktop/pull/875
- feat(network): trust the endpoints the user enters themselves by @vastsa in https://github.com/vastsa/PI-Desktop/pull/881
- docs(readme): add Discord community badge by @vastsa in https://github.com/vastsa/PI-Desktop/pull/884
- docs(readme): replace the Discord badge with the Reddit r/AIUO badge by @vastsa in https://github.com/vastsa/PI-Desktop/pull/886
- feat(scheduled): save project, permission, and model per task by @vastsa in https://github.com/vastsa/PI-Desktop/pull/885
…