Route pet asset downloads through the shared HTTP client (#36008)

## Why

Built-in pet downloads used a standalone blocking client, so CDN redirects did
not use Codex's configured route handling.

## What changed

- Download pet spritesheets asynchronously with a reusable
  `RouteAwareClientPool`.
- Keep cache validation, asset installation, and pet decoding off the async
  runtime while sharing one asset-and-load path across startup, previews, and
  selection.
- Preserve the download size limit while consuming streamed response chunks,
  and remove the TUI's direct `reqwest` dependency.

## Testing

Add coverage for oversized response chunks, cached built-in assets, pet loads
without an existing Tokio runtime, and stale preview and selection completions.

GitOrigin-RevId: 725e76f3ddb7e84b7212769892f28dc0add15741
This commit is contained in:
Celia Chen
2026-07-29 18:34:20 +00:00
committed by copyberry
parent ad6fc66b6d
commit 09cf609218
11 changed files with 293 additions and 95 deletions

2
codex-rs/Cargo.lock generated
View File

@@ -4268,6 +4268,7 @@ dependencies = [
"dirs",
"dunce",
"futures",
"http 1.4.0",
"image",
"insta",
"itertools 0.14.0",
@@ -4280,7 +4281,6 @@ dependencies = [
"ratatui",
"ratatui-macros",
"regex-lite",
"reqwest 0.12.28",
"rmcp",
"serde",
"serde_json",