What's Changed
- feat(telemetry): add sensitive span attribute opt-in by @doudouOUC in #3893
- chore(release): v0.15.8 [skip ci] by @qwen-code-ci-bot in #3928
- feat: add commit attribution with per-file AI contribution tracking by @wenshao in #3115
- fix(core): per-agent ContentGenerator view via AsyncLocalStorage by @tanzhenxin in #3707
- refactor(cli): provider-first auth registry with unified install pipeline by @pomelo-nwu in #3864
- fix(core): accept partial reads in prior-read enforcement by @wenshao in #3932
- fix(cli,core): live-phase panel-ownership filter + post-delete statusChange emit by @wenshao in #3919
- fix(core): close bound-tool gap on runForkedAgent's YOLO wrapper by @wenshao in #3892
- feat(sdk-python): replace verbatim release notes inheritance with --generate-notes by @doudouOUC in #3835
- ci(release): keep skip-ci out of release PR titles by @yiliang114 in #3950
- fix(vscode): mark Qwen OAuth coder-model as Discontinued in model picker by @dreamWB in #3948
- chore: Add bilingual requirement to create-issue command by @pomelo-nwu in #3952
- feat(cli): add Idealab as third-party provider by @pomelo-nwu in #3955
- feat(session): add /branch to fork the current conversation by @qqqys in #3539
- feat(core): foreground → background promote integration (#3831 PR-2 of 3) by @wenshao in #3894
- fix(cli): show tool details in subagent approval banner by @tanzhenxin in #3956
- [codex] Persist ACP model selection by @DragonnZhang in #3947
- fix(cli): trim blank streaming tails from live preview by @chiga0 in #3965
- feat(cli): searchable /resume picker with focus-aware modes by @qqqys in #3880
- fix(core): route countSessionMessages through parseLineTolerant by @qqqys in #3692
- feat(skills): reload slash commands when SkillManager fires change event by @yiliang114 in #3923
- ci: reduce PR test matrix runtime by @yiliang114 in #3962
Full Changelog: v0.15.8...v0.15.9