fix: harden and de-slop the merged contribution batch
Follow-ups promised on merge, plus review findings on the batch itself: - chat: task-tool output now respects the 512KiB render cap; quick-open icon is visible at rest on coarse pointers and reachable by keyboard (row keydown no longer swallows inner-button Enter/Space); composer inline-code decoration drops the metric-shifting padding; a btw fork send carries only the boundary instruction, never the promotion notice - sync: cascade revert/unrevert aborts busy descendants, busy state is read from every child store at the moment of use; rule 9 documents redo clearing all descendant revert markers - electron: renderer recovery keeps memory-eviction (a valid render-process-gone reason) and both windows share one attachRendererRecovery helper - vscode: process registry is a thin re-export of the web module (provider-env-aliases precedent) with ordered register/unregister writes and an awaited close - server/cli: managed-process registry takes injectable deps (fixes the unreaped-orphans ReferenceError), corrupt settings errors name the file, getWorktrees test restores console.warn - tests: module-mock harnesses removed (AgentsSidebar, SettingsView mobile focus — behaviors stay live but uncovered, accepted trade), QuestionMarkdown asserts rendered DOM - i18n: German gains the debug-panel request keys, Japanese/German drop removed worktree keys, Ukrainian unit spacing fixed - changelog: Copilot AI Credits entries (main + VS Code)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import type { MessageRecord } from '@/lib/messageCompletion';
|
||||
|
||||
import { capToolOutputText } from '../toolRenderers';
|
||||
import { readTaskTagSessionIdFromOutput } from './taskSessionIdParser';
|
||||
|
||||
export type TaskToolSummaryEntry = {
|
||||
@@ -131,3 +132,12 @@ export const buildTaskSummaryEntriesFromSession = (messages: MessageRecord[]): T
|
||||
export const stripTaskMetadataFromOutput = (output: string): string => {
|
||||
return output.replace(/\n*<task_metadata>[\s\S]*?<\/task_metadata>\s*$/i, '').trimEnd();
|
||||
};
|
||||
|
||||
// The task tool renders its output through the markdown parser instead of the
|
||||
// shared tool-output path, so it needs the same size guard as
|
||||
// `getToolOutputText` (issue #2265): an unbounded single string reaching the
|
||||
// parser can exhaust V8's Zone allocator and crash the renderer.
|
||||
export const prepareTaskToolOutput = (output: string | undefined): string => {
|
||||
if (!output) return '';
|
||||
return capToolOutputText(stripTaskMetadataFromOutput(output));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user