refactor(web): chat markdown code blocks live in their own module

MarkdownCodeBlock, its frame, the Shiki renderers and the highlight cache
move to chat/MarkdownCodeBlock.tsx. The pure fence parsing helpers move to
MarkdownCodeBlock.logic.ts, and the shared action failure logger to
chat/markdownActionFailure.ts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eadb13d18eJulius Marminge committed on 10/21/2026, 8:14:26 AMparent28a8d2b

Checks

All checks passed
5 files changedLine totals unavailable