Repository navigation
Conversation
|
Reporter of #3586 here — confirming the mechanism against the original environment, and reporting where I tried and failed to break the guard. Real-world confirmation (v0.8.0 docker, Chromium-based browser on UOS): the freezing document was a 9.28 MB xlsx that parsed into 24,283 chunks. Opening the detail drawer rendered the metadata header (file type, chunk count) but the content area stayed blank, and the "Page unresponsive" dialog appeared within seconds; after a reload, the next open killed the renderer outright (Aw, Snap — SIGTRAP). Notably the behavior was identical while the document was still parsing and after it completed — consistent with the preview path fetching the raw source bytes regardless of parse status, which is exactly why the guard belongs in the preview path and before SheetJS loads. The proposed notice-plus-download fallback matches the acceptance criterion from the report (metadata and chunk view must stay reachable). Attempted holes in the guard, for the record:
The From the reporter's side this fully addresses #3586 as scoped; the freeze-then-SIGTRAP chain requires exactly the unbounded |
Summary
Fixes #3586
Why
renderExcel()previously parsed every worksheet and passed every row tosheet_to_html(). A 9.28 MiB workbook reported in #3586 could block the browser main thread and crash the renderer before the document details were usable.Validation
On synchronization commit
1237f1654584821f829c20fcdb9eb9fcb200eaae:npm run check-i18n: 14 passed, including the two notice keys in the newly added Traditional Chinese locale.npm run type-checkandnpm run buildpassed; existing chunk-size warnings remain.2fbfb447passesgit diff --check; the signed merge preserves the original PR head as its first parent.f5cfa0ff. A file-level three-way comparison of all 11 contribution paths found no conflicts; package.json and package-lock.json blobs are unchanged. The Excel cap, focus/fullscreen/diagram functions and Vue template retain the verified behavior. This comparison is not a new full-main test run.CI for the new head is reported separately on this PR.
AI-assisted follow-up implementation, validation and summary (GPT-6).