Repository navigation
Conversation
…aracter Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Long subagent titles now avoid splitting a Unicode surrogate pair at the truncation boundary. The change is limited to title formatting and preserves existing length thresholds and fallback behavior. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
|
Note Written by Verified in a real dev environmentverified unchanged head created a project pointing at a real git repository through the web app. sent composer messages using real codex
runtime transcript with persisted titles and provider results Not verifiednative desktop, ios, and android clients were not exercised on this linux web setup. native codex spawn variants, other provider adapters, and relay/tunnel connections were not exercised. this verifies the app-owned codex delegation path through the shared title helper. grapheme-cluster preservation and repair of existing malformed titles are outside this change. |


Problem
Subagent child threads are named from the task title or prompt. Anything over 72 characters is cut at 69 UTF-16 code units, then
...is added. If an emoji (or any other astral character) sits across that cut, the title keeps half a surrogate pair. It then shows as…aaaa�...everywhere the subagent thread title appears. This affects subagents from Codex, Claude, ACP providers, and app-owned delegated tasks, since they all call the samesubagentThreadTitlehelper.Change
subagentThreadTitlenow moves the cut back one code unit when it would split a surrogate pair. This is the same guard that #29163 added to its sibling, thecreate_threadsthreadTitleinOrchestratorMcpService.ts. Titles of 72 characters or fewer, and the parent-title fallback, are unchanged.Scope and approval
Very small, focused fix for an obvious bug, so no prior issue: one helper gets the surrogate guard that was already merged for its twin in #29163, plus one regression test. Overlap search: the local PR index plus GitHub searches for
subagentThreadTitleand "subagent title surrogate". The closest matches are #29163 (merged; the MCPcreate_threadssibling) and #29647 (open; restart-note labels inRestartBackgroundNote.ts). Neither touches this helper. #27990 changed subagent title jobs, not this text.Verification
vp test run src/server/subagentProjection.test.ts(packages/provider-core) failed withExpected: "a×68...",Received: "a×68�...".vp run check:changed: format, lint, knip, typecheck (26 packages), and tests (2 files) all passed.Reviewed with sol-loop: 1 round with GPT-6.1 Sol on high. Sol verdict: approved.
Created with Claude Opus 5.5 in Claude Code (T3 Code).
🤖 Generated with Claude Code