Repository navigation
fix(deps): update dependency streamdown to v2 - #34
Closed
renovate[bot] wants to merge 1 commit into
Closed
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/streamdown-2.x
branch
from
November 13, 2026 18:02
1087fdb to
841a1ea
Compare
Contributor
|
Superseded by #39, which batches the frontend major updates (resolved with pnpm 12, validated locally and in CI). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^1.6.9→^2.0.0Release Notes
vercel/streamdown (streamdown)
v2.7.1Compare Source
Patch Changes
4c55fad: fix(animate): split CJK text per character insep: "word"mode so every character of a CJK paragraph animates as it streams in, instead of only the first batch32050fc: fix: exportHighlightResultandHighlightTokentypes from the package entry976cf12: fix(translations): add Mermaid chart accessibility translations70f6d07: docs(security): call out that remote images are allowed by default and document restricting image origins for AI chat apps2206c22: fix: resolve reference links whose definition is in another blockDocuments with link reference definitions (
[label]: url) are now kept in a single block, the same way documents with footnotes are, so[text][label]resolves instead of rendering as raw text.fea4ef5: fix: setdata-*andaria-*props on the root element. They were only forwarded to the Markdown renderer and the blocks, so with the default renderer attributes such asdata-testidoraria-busyreached no element.f25e0ae: Avoid rendering and parsingmode="static"documents twice on mountv2.7.0Compare Source
Minor Changes
6b14de4: Add adisableAutolinkProtocolsprop to<Streamdown>for disabling GFM autolinking of specific URL protocols (e.g.mailto).Bare emails and bare URLs whose protocol matches the list (case-insensitive,
"mailto"and"mailto:"are equivalent) are unwrapped back to plain text. Explicit markdown links ([text](url)) are left as links, including when the label reconstructs the URL (e.g.[foo@x.com](mailto:foo@x.com)). When the prop is omitted, autolinking behavior is completely unchanged.Closes #607.
b1965bb: feat: addfallbackComponentprop for missing map entries /allowedTagsAdds a new
fallbackComponentprop to<Streamdown>. When provided, it isused as a fallback renderer for any HTML tag or allowed custom tag that does
not have an explicit entry in the
componentsmap:fallbackComponentapplies to custom tags declared viaallowedTags(with noexplicit component entry) and to standard HTML tags absent from the built-in
component set (e.g.
<span>,<em>,<div>,<br>). Built-in and explicitcomponentsentries always win — this is not a full unstyled mode.Refs #543
Patch Changes
b651249: Give animated word spans a style object instead of a CSS string, so rendering skips parsing a style declaration for every word on every update.createAnimatePluginstill writes CSS strings.b651249: Check whether a stream only appended text by comparing a slice of the new input with the previous one instead of callingstartsWith, which compared the whole document character by character on every update.b651249: Hide the caret after a table or an unfinished code fence by marking the last element instead of changing the container's class and style. Each toggle used to restyle the whole document, which cost tens of milliseconds per flip on long streams.c971f42: WireonCopyandonErrorthrough default code and Mermaid copy controls viacontrols.code.copyandcontrols.mermaid.copy.4ec5639: Bound the code highlight cache. Results of streaming code blocks are no longer cached (each is superseded by the next update), and finished code blocks are kept in a least-recently-used cache bounded by their size (tokens, lines and characters) and by a limit of 5,000 results. Lookups compare the full code, so blocks that differ only in the middle no longer share tokens. A code block also ignores highlight results for code it has already moved past.16e7e65: ExportdefaultComponentsso customcomponentsoverrides can compose Streamdown's built-in renderers (styles,data-streamdown, link safety, code/mermaid/table behavior) instead of reimplementing them.163c63b: fix(code-block): use absolute positioning for action buttons to fix click events in nested scroll containersSwitches the code block action button wrapper from
position: stickytoposition: absolute(withposition: relativeon the container) so thathit-testing works correctly in layouts with multiple nested
overflow: autoscroll containers. Previously, the
sticky+pointer-events-none/autopattern caused browsers to mis-route click events to the code block wrapper
rather than the buttons when the component was embedded in 2+ nested scroll
containers.
e0ce123: Incomplete images during streaming now render a loading placeholder instead of being removed entirely. Incomplete images (e.g. are replaced withby remend, and the streamdownImageComponentrenders an animated skeleton for this special URL. This mirrors the existing behavior for incomplete links (streamdown:incomplete-link). Thestreamdownprotocol is allowlisted forimg[src]in the default sanitize schema so the sentinel survives rehype-sanitize + rehype-harden.e7a23ef: Render Mermaid diagrams one at a time while their code fence streams, pausing after each render for as long as it took, so a growing diagram no longer holds up the stream. Once the fence closes or the stream stops, the final diagram renders without a pause.b651249: Pin streaming code blocks and tables to the bottom once per frame instead of on every update, avoiding a forced layout per streamed chunk.5504e50: Preserve literal HTML tags and character entities when copying or downloading tables as Markdown.5b26c28: Speed up block parsing by lexing only block tokens and reusing already parsed blocks while a document streams.18dcb20: Add a top-levelportalprop for configuring the container used by Mermaid fullscreen, table fullscreen, and the built-in link safety modal.fdf4e33: Fix Mermaid diagrams so text is readable and diagrams auto-fit container.53812cf: fix: unwrap a single paragraph child inside list itemsLoose list items from the markdown pipeline are often wrapped in a
<p>.MemoLinow detects that sole paragraph child (including the memoized paragraph component) and renders its contents directly, so list items stay visually tight. Also updates the list animation retrigger test to match the unwrapped markup.Fixes #475
a155a9e: Updatemarkedfrom^17.0.1to^18.0.11.marked v18 no longer folds a block token's trailing blank line(s) into its own
raw; that whitespace now surfaces as a separatespacetoken immediately following the block (e.g. afterhtml,heading, andtabletokens). This changed the token stream shape thatparseMarkdownIntoBlocksconsumes, causing a danglingspacetoken after a closed custom-tag HTML block to be emitted as its own standalone block.parseMarkdownIntoBlocksnow folds aspacetoken into the preceding block instead of pushing it as a new one, restoring v17-identical block boundaries and counts. The losslesstoken.rawconcatenation invariant is preserved.Updated dependencies [
cf0ac1c]Updated dependencies [
e0ce123]Updated dependencies [
fdd1351]v2.6.0Compare Source
Minor Changes
49bd143: fix(animate): serialize streaming animation across blocksWord stagger now runs on a shared wall-clock timeline so sibling sections no longer fade in on top of each other during streaming. Related cleanup: trailing spaces stay inside animated spans (no early link underlines), animate wrappers drop when streaming ends, already-seen text stays steady under StrictMode, and un-animated streaming is no longer deferred behind a starvable transition.
Inspired by #493, #531, and #536.
Fixes #482
Fixes #535
Fixes #550
Fixes #570
b734cbf: - Add custom download filenames for code, table, and mermaid via thecontrolspropdownload: { filename: "customName" }while keeping booleantrue/falseto show or hidecodeDownloadprop in favor of the unifiedcontrolsAPI5faa6fa: AddcodeBlockMaxHeightandtableMaxHeightprops with streaming auto-scroll4436b56: - Addcontrols.table.csvSeparator("," | ";" | "\t" | "auto") for table copy and download CSVtableDataToCSVseparator handling, including locale-aware"auto"modePatch Changes
6ec3c48: fix(animate): animate inline code during streamingSkip the animate visitor on
pre(and svg/math/annotation) only — not barecode. Fenced/highlighted blocks stay un-split via theirpreancestor; inline backtick spans now get the same per-word fade-in as surrounding prose.Fixes #594
725e390: Forward rest props through block code. Thecodecomponent spread its rest props on the inline branch and dropped them on the block branch, so an attribute a consumer put on a fenced code element never reached the DOM.CodeBlockBodynow takes part in that comparison, so a forwarded attribute updates instead of keeping the value it first rendered with.7e82400: Fixdir="auto"in static mode to detect text direction per semantic block (instead of once for the whole document), keep code LTR, and use content-majority direction for mixed-script prose.fb5d7b9: Serialize Mermaid SVGs before download so HTML-style tags render as valid SVG markup.fe38e75: Added accessibility improvements for code block controls by adding aria labels to copy/download buttons and announcing copy success state for screen readers.b25dbdb: fix(custom-tags): render Markdown inside custom tags with multiline contentAdds a preprocessing step (
preprocessCustomTags) that normalizes multilinecustom tags into a blank-line-sandwiched HTML block so CommonMark interrupts
the raw-HTML block and parses the nested content as Markdown, with
parseMarkdownIntoBlocksre-merging the interrupted open/content/close tokensso streaming still treats the whole custom tag as one block. Previously, when a
custom tag contained multiline content (e.g.
<ai-thinking> **bold**</ai-thinking>), CommonMark treated the block as raw HTML, strippingMarkdown formatting. Tags listed in
literalTagContentare excluded fromre-parsing.
Closes #478
26a8440: Fix doubleduser-content-prefix on footnote idsFootnote list items were rendered with
id="user-content-user-content-fn-1"because bothremark-rehypeandrehype-sanitizedefault theirclobberPrefixtouser-content-, so the prefix was applied twice. DisabledclobberPrefixonrehype-sanitizesoremark-rehyperemains the single, consistent prefixer of both footnote ids and backref hrefs — restoring working footnote navigation.f7d1fb5: fix(table): adddata-streamdown="table-wrapper"to fullscreen portal so copy/download dropdowns can find the tablef0a726b: Addaria-hidden="true"to decorative SVG icon components so screen readers rely on parent button labels instead of unlabeled icons.2ed2faa: Allow remend'sstreamdown:incomplete-link sentinel through the default sanitize schema so streamed incomplete links render as pending instead of harden[blocked].8fffa9d: Render the link safety modal through a portal todocument.bodyso it is no longer nested inside the paragraph's<p>element. This fixes the React hydration error "In HTML,<div>cannot be a descendant of<p>" that occurred when a link with link safety enabled appeared inside a paragraph.2733922: fix(mermaid): add aria-hidden to decorative SVG icons in mermaid toolbar buttonsMermaid toolbar buttons (download, fullscreen, pan/zoom controls) already have
accessible titles/labels, but the inline SVG icons were exposed to the accessibility
tree causing "Content with images must be labeled" warnings. Added aria-hidden={true}
to all decorative icon elements in download-button, fullscreen-button, and pan-zoom
components.
Fixes #485
8d36719: fix(deps): removemermaidas a hard runtime dependencyThis patch replaces the type import with a local structural type for
MermaidConfigso no type-level coupling to themermaidpackage remains in the distributed typings. Users who want fully-typed mermaid config can stillimport type { MermaidConfig } from 'mermaid'themselves; the structural type is compatible.Fixes #501
ea02609: Fix:shikiThemeprop priority chain is now fully reachable.Previously,
shikiThemehad a default value in the props destructuring (= defaultShikiTheme), making theplugins?.code?.getThemes()fallback unreachable in both orderings. The fix removes the destructuring default and moves it to the end of the nullish coalescing chain, so all three levels are reachable:shikiThemeprop (highest priority)getThemes()(second priority)defaultShikiTheme(final fallback)9813dd6: Fix type declarations requiring ashikiinstall.BundledLanguage,BundledTheme, andThemeRegistrationAnyare now defined locally and re-exported fromstreamdown, so consumers can type-check without installingshiki. Runtime highlighting remains in@streamdown/code, which still depends onshiki.d893759: Fix mermaid fullscreen overlay accessibility and add stable selectordata-streamdown="mermaid-fullscreen"to fullscreen overlay for stable CSS targetingrolefrombuttontodialogaria-modal="true"for correct screen reader modal behavior79c8575: fix issue with list markers, task-list checkboxes, images, and hr animationsa1a7142: feat: add image control options (controls.image) to disable hover overlay and download button on imagesAdd
imageto thecontrolsprop, matching existingcode,table, andmermaidpatterns:controls={{ image: false }}hides the hover overlay and download buttoncontrols={{ image: { download: false } }}keeps the hover overlay but hides the download buttonb250038: Fix accessibility warnings for Mermaid toolbar icon buttons:aria-hidden="true"to all decorative SVG icons to hide them from screen readersaria-labelattributes to all icon-only buttons for proper screen reader announcementszoomIn,zoomOut,resetView) for zoom controls89c6877: Re-render memoized markdown components when their rendered output changes. The comparators compared source position, so a replacement of the same length — occupying the same lines and columns — was treated as unchanged and the component kept rendering the previous text.e7bdf57: fix(mermaid): render the download and copy controls inside the Mermaid fullscreen portal so they're reachable when the diagram is expanded8f02c09: Fix table copy and download actions not working in fullscreen mode.f46cd3c: - Fixed table copy losing line breaks inside cells containing<br>elements.<br>handling in table extraction.dc3f1d2: - Fix code block line wrapping when line numbers are disabled.lineNumberssetting.lineNumbers={false}.Updated dependencies [
a99d675]Updated dependencies [
9f96409]Updated dependencies [
8093f2a]Updated dependencies [
57c3089]v2.5.0Compare Source
Minor Changes
d6666b6: AddlineNumbersprop to disable line numbers in code blocksd4ec6c0: Addmetaprop toCustomRendererProps. Custom renderers now receive the raw metastring from the code fence (everything after the language identifier, e.g.```rust {1} title="foo"→meta = '{1} title="foo"'). The prop is optional (meta?: string) and isundefinedwhen no metastring is present. Existing custom renderers are unaffected.Patch Changes
ac8d839: Add staggeredanimation-delayto streaming word/character animations so new content cascades in sequentially instead of all animating simultaneously. Configurable via the newstaggeroption (default 40ms). Setstagger: 0to restore the previous behavior.add5374: Enable horizontal scrolling on code blocks so long lines are accessible instead of being clipped byoverflow-hidden.75845c0: Fix unnecessary re-renders of code blocks during streaming updates.Problem: In streaming mode, when new content arrives (e.g. a paragraph is appended), completed code blocks that haven't changed were still re-rendering. This happened because the
Streamdowncomponent used inline object literals as default parameter values forlinkSafety({ enabled: true }). Every timechildrenchanged andStreamdownre-rendered, these inline defaults created new references, which caused thecontextValueuseMemo to recompute a newStreamdownContextobject. Since React propagates context changes throughmemoboundaries, any context consumer inside a memoizedBlock(such asCodeBlock) would re-render even though the block's own props were unchanged.Fix: Extract the inline default values for
linkSafetyinto module-level constants (defaultLinkSafetyConfig). This ensures referential stability across renders, socontextValueonly recomputes when the actual values change — not just becausechildrenupdated.8b1c262: fix: prepend UTF-8 BOM to CSV downloads for Excel compatibilitysave()now prepends\uFEFFfortext/csvstring content so Excel onWindows detects UTF-8 encoding instead of falling back to ANSI.
TableDownloadButtonrefactored to usesave()instead of inline Blobcreation, ensuring the public API also gets the BOM fix.
b105c64: Fix custom tag content being prematurely split when content follows the opening tag on the same line and contains double newlines (\n\n). The preprocessor now ensures proper HTML block structure so the parser treats the entire tag as a single unit.9e6f991: Increase dropdown z-index for table copy and download menus to prevent clipping by surrounding elements.9c18748: docs: document required CSS custom properties (shadcn/ui design tokens) in README7b62e9a: Replace Tailwind v4-only*:last:and*:first:variant syntax with[&>*:last-child]:and[&>*:first-child]:arbitrary variants for compatibility with both Tailwind CSS v3 and v4. Fixes caret rendering on every line instead of only the last child in v3.Updated dependencies [
e50b0c4]Updated dependencies [
716a5f0]v2.4.0Compare Source
Minor Changes
5edff75: Clarified Tailwind@sourceconfiguration for Streamdown and optional plugins.Updated documentation to keep the global
@sourcefor corestreamdownonly, move plugin@sourceguidance to plugin docs with examples, and add a caveat to include plugin entries only if installed.57cd3b5: Add support for custom starting line numbers in code blocks via thestartLinemeta option.Code blocks can now specify a starting line number in the meta string:
This renders line numbers beginning at 10 instead of the default 1. The feature works by parsing the
startLine=Nvalue from the fenced-code meta string and applyingcounter-reset: line N-1to the<code>element.57cd3b5: Add support for customizing icons via theiconsprop on<Streamdown>.Users can override any subset of the built-in icons (copy, download, zoom, etc.) by passing a
Partial<IconMap>:Unspecified icons fall back to defaults.
01d27e9: Add support for custom Shiki themes via athemesoption oncreateCodePlugin, accepting a[light, dark]pair of bundled theme names or full theme registration objects.2cf559d: Add a virtualinlineCodekey to thecomponentsprop, allowing inline code spans to be styled independently from fenced code blocks without manually detecting block vs. inline context.27c7b03: Export table action components (TableCopyDropdown,TableDownloadButton,TableDownloadDropdown) and utilities (extractTableDataFromElement,tableDataToCSV,tableDataToTSV,tableDataToMarkdown,escapeMarkdownTableCell,TableData), enabling custom table overrides to preserve copy/download interactivity.fb76275: Add a fullscreen overlay for tables with Escape/backdrop-click to close and scroll locking, controlled viacontrols.table.fullscreen. Copy and download controls remain available in the fullscreen view.b392fbe: AddliteralTagContentprop that accepts an array of custom HTML tag names (e.g.['mention']) whose children should be treated as plain text, escaping markdown metacharacters so user-supplied labels aren't interpreted as formatting.c4c86fa: Add adirprop that accepts"ltr","rtl", or"auto". When set to"auto", each block's text direction is detected by scanning for the first strong Unicode character (Arabic, Hebrew, Thaana, etc.).00872f0: Add aprefixprop that prepends a namespace to all generated Tailwind utility classes (e.g.flexbecomestw:flex), enabling Tailwind v4'sprefix()feature for projects that need to avoid class name collisions.401b901: Add support for custom renderers viaplugins.renderers, allowing fenced code blocks with specific languages to be rendered by a custom component instead of the defaultCodeBlock.Patch Changes
f398611: AddonAnimationStartandonAnimationEndcallback props that fire when streaming animation begins and completes, useful for coordinating UI state with the animation lifecycle.f2a7e51: Fix empty lines in syntax-highlighted code blocks collapsing into nothing by rendering a newline character for empty token rows, preserving whitespace when copying.9ba8511: fix: prevent ordered list animation retrigger during streamingWhen streaming content contains multiple ordered (or unordered) lists,
the Marked lexer merges them into a single block. As each new item appears
the block is re-processed through the rehype pipeline, re-creating all
data-sd-animatespans. This caused already-visible characters to re-runtheir CSS entry animation.
Two changes address the root cause:
Per-block
prevContentLengthtracking – eachBlockcomponentnow keeps a
useRefwith the content length from its previous render.Before each render the
animatePlugin.setPrevContentLength(n)method iscalled so the rehype plugin can detect which text-node positions were
already rendered. Characters whose cumulative hast-text offset falls below
the previous raw-content length receive
--sd-duration:0ms, making themappear in their final state instantly rather than re-animating.
Stable
animatePluginreference – theanimatePluginuseMemonow uses value-based dependency comparison instead of reference equality
for the
animatedoption object. This prevents the plugin from beingrecreated on every parent re-render when the user passes an inline object
literal (e.g.
animated={{ animation: 'fadeIn' }}). A stable referenceis required because the rehype processor cache uses the function name as
its key and always returns the first cached closure; only the original
configobject is ever read by the processor.781178b: Add a granularcontrolsprop that accepts a boolean to toggle all controls or an object with per-feature flags (code,table,mermaid) for fine-grained control over copy, download, fullscreen, and pan/zoom buttons.e129f09: Add atranslationsprop for overriding all user-facing UI strings (copy/download button labels, modal text, image alt text, etc.), enabling full i18n support.Updated dependencies [
a725579]v2.3.0Compare Source
Minor Changes
3657e42: AdduseIsCodeFenceIncompletehook for detecting incomplete code fences during streamingCustom components can now detect when the code fence in their block is still being streamed. This is useful for deferring expensive renders (syntax highlighting, Mermaid diagrams) until the code block is complete.
The hook returns
truewhen:isAnimating={true})The default code block component now uses this hook to set a
data-incompleteattribute when incomplete, enabling CSS-based loading states.32fb079: fix: hide download button on broken images and display a custom "Image not available" message insteadd73d7bb: Make the action buttons in code block header sticky.Ensures copy buttons remain accessible for long code blocks.
Improves usability when viewing large snippets.
15645da: Move code block lazy loading to the highlighting layer so block shells render immediately with plain text content before syntax colors resolve. This improves visual stability and removes the spinner fallback for standard code blocks.Patch Changes
0987479: fix: codeblock highlight flicker while streaming5d438ca: Add support for copying table data as Markdown in TableCopyDropdown.Introduces a Markdown copy option alongside existing formats.
Allows users to quickly copy tables in valid Markdown format.
ce9b4c2: Fix syntax highlightingba03332: Redesign Mermaid diagram6e91867: fix nested same-tag HTML block parsing in parseMarkdownIntoBlocks7f9127b: AddnormalizeHtmlIndentationprop to prevent indented HTML tags from being treated as code blocksfdef60d: Bump rehype-harden to fix "can't access property "type", node is undefined"1abbf1e: Redesign tablefb9f97c: handle custom tags with blank lines in content6374fbf]v2.2.0Compare Source
Minor Changes
c1e1e66: Bake animate into streamdown as built-inanimatedpropPatch Changes
d5fe6d6: fix: properly handle HTML void elements in parse-blocks6bb03ca: fix: escape HTML when rehype-raw is omitted (#330)a12de57: Custom tags in components83f043c: Fix: certain LaTeX syntaxes e.g. (...) are not renderingaabb9ab: Fix $$ inside code blocks being treated as math delimitersCode blocks can contain
$$as shell syntax (e.g.,pstree -p $$for current process ID). The math block merging logic was incorrectly counting$$inside code blocks, causing subsequent content to be merged as if it were part of a math block.Added tracking of previous token type to skip math merging when the previous block was a code block.
9f72224: Fix footnote detection incorrectly matching regex character classesThe footnote reference and definition patterns were too permissive, using
[^\]\s]which matches any character except]and whitespace. This caused regex negated character classes like[^\s...]in code blocks to be incorrectly detected as footnotes, resulting in the entire document being returned as a single block.Updated the patterns to only match valid footnote identifiers (alphanumeric characters, underscores, and hyphens) using
[\w-]instead.6b42a85: Remove CJS buildsaeadcd6: Fix single-line indented code blocks82bc4a6: Fix tel links being blocked by defaultfd5533c: fix: Tables cause vertical scroll trape633ff7: Strip trailing newlines in code blocks6be5da8: Fix carets and dark code blocks on Tailwind v3573ece6: Add documentation for monorepos48756b5: Extend ReactMarkdown propsUpdated dependencies [
c347b53]Updated dependencies [
6b42a85]Updated dependencies [
4fffb9f]Updated dependencies [
3e6a77d]v2.1.0Compare Source
Minor Changes
0b80aed: Plugins5a06a01: Add built-in link safetyPatch Changes
32bcb5d: Fix: className styles not applied during active streaminge45f2a2: fix: table element receives incorrect data-streamdown attribute (table-wrapper instead of table)8e24a9e: Add fallback for downloading images CORS issuee7e5390: Improve caret rendering900d726: Code blocks render insidetags causing hydration errors
f0641f4: fix: initialize displayBlocks with blocks value3376255]add8eda]19dae64]1d4a3c7]v2.0.1Compare Source
Patch Changes
61b3685: Fix Streamdown URLv2.0.0Major Changes
75faa2e: Reduce bundle size by 98%, create Streamdown CDNMinor Changes
13b91d8: Add support for caretsPatch Changes
104798e: Make remend configurable23f2a40: Attempt to fallback to raw to prevent cdn-loader blocking133c6c8: Load KaTeX CSS from CDN0c830f5: Fix Mermaid pan/zoom controls layout issues in fullscreen and non-fullscreen modes68109f2: Fix setext heading issues2c32b2e: Fix shouldParseIncompleteMarkdown leaking to DOMee12ec8: Add support for self-hosted CDN5653400: Fix loading langs dynamically1b898b0: Fix dynamic module imports6a7dc7c: Optimize Mermaid rendering performance with viewport-based lazy loading8d8d67f: Add rehype sanitize271265c: Fix list indentation8157e80: Fix fullscreen mermaid91b425f: Refactor click outside handler for Shadow DOM compatibility16df4a4: Fix KaTeX parsing6bd211d: Update rehype-harden to fix relative URLs48c9c51: Fix autolink parsing to stop at CJK punctuation boundaries.d1635f0: Fix bug: Code block line numbers over 100 wrap and start new lineUpdated dependencies [
104798e]Updated dependencies [
6769e7a]Updated dependencies [
217b128]Updated dependencies [
68109f2]Updated dependencies [
e0ee74e]Updated dependencies [
45f0f4d]Updated dependencies [
b8c8c79]Updated dependencies [
68f29c0]Updated dependencies [
e7eca51]Updated dependencies [
d708864]Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.