mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-29 12:57:09 -06:00
Finding 40: field_names restarted every repeated header at "Name 2" and compared each candidate with every name so far (cubic). It now keeps the names in an ASCII-lowercased set and remembers each base name's next number; existing headers like "Name 2" stay collision-free and the output is unchanged. Finding 47: an ODS office:string-value bypassed MAX_CELL_CHARS and was copied for each repeated column before the text budget was checked. The attribute is now capped like <text:p> text, a row stops being built (and is refused) once its text can't fit the remaining budget, and Grid::push measures what fits before cloning. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>