mirror of
https://github.com/storytold/gridcraft.git
synced 2026-11-07 13:23:06 +00:00
* xlsx: stop memory amplification from declared sizes (#2173) Hyperlinks: drop targets over 8,192 bytes before copying them into each cell, cut ScreenTips to 255 characters, and count the 10,000-cell cap across all <hyperlinks> blocks of a sheet. Conditional formats: cap the sqref copies made by extra rules at 1M ranges per sheet. Styles: build each custom number format once and share its Arc; cut font names to 255 characters. Shared formulas: keep cached values for dependents of over-long masters, and charge each expansion against a 2 GiB per-workbook budget. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Import the hyperlink caps in sheet_read/parts after the merge Upstream switched parts.rs to an explicit super:: import list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * xlsx: charge conditional-format ranges per sheet; cap number format codes (#2173) - read_cf keeps a cumulative per-sheet count of the range cells retained rules hold, instead of multiplying the current block by the rule count, and charges only rules that are kept. - Custom and inline number format codes longer than 255 characters (Excel's limit) are dropped with a warning; their cells show General. - The shared NumFmt map is built only for ids a cell or differential format refers to. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * xlsx: keep over-long number format codes as stored (#2173) an_overlong_number_format_code_does_not_stop_the_open requires a code past 255 characters to round-trip; sharing one NumFmt per referenced id already removes the amplification. Keep the referenced-id sharing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * xlsx: bound only what a shared formula costs beyond an ordinary cell; count characters for the length warning Review follow-up for #2197 (@skylartaylor): - Each dependent of a shared formula now pays only its cost beyond an ordinary formula cell (SHARED_FORMULA_FREE_COST, 4 KiB by shared_cost), and the per-workbook budget for that excess drops from 2 GiB to 256 MiB. Many ordinary shared formulas still all expand; a long master copied into thousands of cells stops at the budget and keeps the cached values. - The over-long-master warning now uses the parser's own test (bytes, then characters), so an unparseable multibyte master no longer gets a false length warning. Refs #2173 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: FredApps <FredApps@users.noreply.github.com>