{"content":"[release-review 7/9] fix: stream IM media downloads under a hard byte cap; close two SSRF edges.\n\nReview P1+P2 on the QQ/Weixin media pipelines:\n- fetchBytes buffered the ENTIRE response body (response.arrayBuffer) before enforcing maxBytes; a server that omits content-length (the pre-check only fires when the header exists) could stream an arbitrarily large body into memory on both channels. Both now read chunk-wise with a running counter, cancel and refuse past maxBytes - memory bounded at maxBytes + one chunk.\n- qqMedia's literal-host check missed IPv4-mapped IPv6 (https://[::ffff:127.0.0.1]/ passed the ::1/fc/fd/fe80 rules and connected to loopback); mapped addresses are now stripped and re-checked as v4.\n- weixinMedia accepted http: for the two allowlisted CDN hosts, letting the encrypted_query_param download credential ride cleartext; https-only now (QQ already required it).\n\ntest:qq + test:weixin green; tsc green.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}