Repository navigation
Conversation
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.
Summary
Clears the open Dependabot advisories that have a fix available. Also upgrades Streamdown to 2.7 and gives Mermaid diagrams one consistent loading state.
Backend: excelize (Remote DoS via crafted
.xlsx)github.com/xuri/excelize/v2fromv2.11.0tov2.11.1-0.20261009041834-958cda5363be. No tagged release includes the fixes yet. This master commit is newer than every fix commit in the 18 published advisories, which cover Zip64 overflow inOpenReader, decrypt panics, unbounded allocation inextractPart/Rows.Columns,ColumnNameToNumberoverflow andspinCountCPU burn.extraction.extractLocalFile. Upload processing runs extraction in a bare goroutine with no recover. Before this change, a parser panic on a malformed file crashed the whole process. Now it becomesextract_failed(ErrParserPanicked) for that file only. The guard covers every built-in parser (XLSX/XLS/PDF/Word). It is defense in depth: it cannot stop infinite loops or OOM, which is why the version bump is still needed.golang.org/x/{crypto,net,sync,text,sys,mod},xuri/efp,richardlehane/mscfb.go mod tidyalso fixed existing drift:mattn/go-sqlite3is now listed as a direct dependency (it is imported bydberror/gorm.go).Backend: OpenTelemetry
go.opentelemetry.io/otel,sdk,trace,otlptracegrpc,otlptracehttpfromv1.44.0tov1.45.0, the lowest version that fixes all three advisories (attribute truncation, endpoint URL leaking into logs, BSDkenvPATH hijack). We did not go to 1.47, because it pulls in unrelated upgrades (quic-go, mongo-driver).otelgin/otelhttpstay atv0.69.0.Frontend: KaTeX
katexfrom^0.16.45to^0.18.11, and add a rootpnpm.overridesentry forkatex.rehype-katex,@streamdown/math,mermaidandmicromark-extension-mathall depend onkatex ^0.16. Without the override, a second vulnerable copy (0.16.47) would stay in the lockfile, and the CSS version would not match the rendered HTML. The lockfile now resolves to a singlekatex@0.18.11.base→katex-base,strut→katex-strut,sizing→katex-sizing).KATEX_SPAN_CLASS_NAMESinstreamdown-html.tsxnow uses the new names, so the style sanitizer still recognises KaTeX output.Frontend: Streamdown 2.7
streamdown^2.6.0 → ^2.7.0,@streamdown/code^1.1.1 → ^2.0.0 (Shiki 4, requires Node >= 20; CI and Docker use Node 24),@streamdown/math/mermaid/cjk→ latest patch.<inside math no longer cuts off a streaming message; bare URLs after CJK full-width punctuation are now auto-linked; better repair of half-streamed markdown (remend 1.4); incremental highlighting and block reuse while streaming.streamdown:incomplete-imageinstead of dropping it.MarkdownImageshows the existing pulse skeleton for that src, so the browser does not try to load an invalid URL.<svg>size overrides and moved the 280px cap onto the viewport, so diagrams are no longer shrunk twice or clipped.Frontend: Mermaid loading UI
MarkdownMermaidLoading, in the newstreamdown-mermaid.tsx): a soft dotted canvas with a shimmering, localised "Rendering diagram…" label.:has(). They must stay laid out because its deferred render waits for anIntersectionObserversignal. Browsers without:has()fall back to Streamdown's default placeholders.code/mermaidplugins are now kept while the new set loads.Not addressed
VariantStrIterAPI. Recommend dismissing the alert as "vulnerable code is not used".Change type
Affected areas
Verification
go build ./...,make lint,go test ./.... New test:TestExtractionRecoversParserPanicAsExtractFailure.pnpm typecheck,pnpm check:arch,biome lint shared/components/markdown.<inside math;rehype-katexwith KaTeX 0.18.11 emitskatex-base/katex-strut.Manual checks:
Screenshots, API examples, or logs
Configuration, migration, and compatibility notes
@streamdown/code@2requires Node >= 20 (already met by CI and Docker).pnpm.overridesnow pinskatexto^0.18.11for the whole workspace. Remove the override once upstream packages accept KaTeX 0.18.chat.markdown.diagram.{rendering,renderFailed,viewSource}(zh-CN and en-US).Documentation
Security and privacy
Checklist
.pycfiles,.envfiles, and local storage data are not committed.