Skip to content

Changelog

  • Cell notes CRUD via NotesManager (workbook.notes): add, get, getByCell, update, delete
  • AND/OR/XOR/NOT evaluation with strings and other edge-case arguments, matching Excel and Google Sheets behavior
  • TEXTJOIN and JOIN now apply cell display formats (e.g. date formats) in Google mode

These are technically breaking, but very minor and in very recent features, so did not demand a major-version bump.

  • CommentsManager now throws SheetNotFoundError (instead of plain Error) for missing sheets, with a differently worded message.
  • WorkSheet.notes type changed to Note[] (no longer possibly undefined)
  • Update @grid-is/jsf2xlsx to ^1.3.2, updating default column width and fixing extraneous activeTab="0" attributes in workbookView elements.
  • Respect ‘autoNoTables’ from XLSX file, plus deferDataTables option for manual control
    • And more generally, mark any formula cells to be deferred in recalculation
  • Threaded comments CRUD via CommentsManager (workbook.comments)
  • MATCH returned #N/A instead of #REF! in Excel missing-sheet edge case
  • toJsf export expanded external workbooks to nonexistent cells if referenced in ranges
  • Error-like strings (e.g. #REF!) not treated as error values when loading styled cells from CSF
  • Default (named) styles were not preserved in toJsf export
  • Much faster worst-case describeWorkbook (label-detection) performance
  • Update quickstart to use Model.fromXlsxFile instead of manual xlsx-convert
  • Preserve formula type (array or not) when result is 1x1, and classify correctly on edit
  • Serialization did not preserve views, annotations, rows, and externals
  • Remove Node.js util imports so consumers need not polyfill for browser compatibility
  • Add changelog to public docs
  • Excel data tables
  • Function SORTN
  • getViews method in WorkSheet and Workbook
  • Google Sheets FLATTEN function
  • Merge/unmerge cells
  • Make HYPERLINK()-derived hyperlinks ephemeral
  • Preserve external workbooks in JSF roundtrip
  • Update comment and note cell refs on move, insert, and delete
  • Wrap fs/promises imports in try-catch to avoid bundler errors
  • Speed up describeWorkbook by pre-filtering parseDate calls
  • Pare down public API, marking stuff @deprecated and/or @internal
  • Use code blocks in Typedoc-generated docs
  • Support JSF cell notes and threaded comments
  • describeWorkbook crash on cross-workbook ref to formula cell
  • Support QUERY with COUNT(DISTINCT value)
  • Missed dynamic dependencies in lambda-calling functions at init time
  • Preserve cells with explicit empty styles through round-trip
  • Strip numberFormatFromFormula from exported styles in toJSF
  • toJsf
  • toXlsx
  • Add fromXlsx methods for direct XLSX loading
  • Native QUERY without pg-mem (calling it “feat” because it supports a lot that the old one did not)
  • Output style indexes on rows and columns
  • Real workbooks override external workbooks with same name
  • Fix invariant error on insert after row is deleted
  • Export ft property in toCSF for array formulas
  • Init recalc was skipped if !recalcVolatiles && !recalcErrors
  • Load XLSX files in Excel mode by default
  • Respect recalcVolatiles option during initial recalculation
  • Preserve text strings that look like errors in JSF loading
  • ERROR.TYPE did not support modern error codes
  • describeWorkbook throws on JSF workbook with externals
  • Upgrade xlsx-convert to 3.6.4 for bugfixes
  • Fix handlerRels to work with absolute paths
  • Fix external refs order
  • The r property on cells is optional
  • Remove Flags module and flags export
  • Public Model.attachWorkbook, and document addWorkbook as just a wrapper
  • Export StyleManager
  • Export CellData type
  • Add support for JSF workbook/worksheet view props
  • Specific Error subclass for invalid reference strings
  • Add missing detail messages on #CALC! errors
  • Google-mode early-date date function discrepancies
  • Matrix.expand makes fully-populated matrices, causing performance disasters
  • Nonresolving name in LOOKUP vector arg borks reference analysis
  • Propagate markDirty to all dependents of spill ranges
  • Blank spill anchor missing in Cells.getCells
  • Don’t propagate recalc from unchanged spill matrix
  • numberFormatFromFormula propagation
  • SUMIFS etc. wrong for Matrix with defaulted regions
  • Incorrect swap in Brent root-finding setup
  • QUERY with now() not treated as volatile if no dependencies
  • GSDV blocker in extended range should not block other columns
  • Evaluate array expressions with mismatched row widths as #VALUE!
  • Fix default column-width units discrepancy
  • Fix Table serialization property name mismatch
  • Fix serialization invariant violation
  • Fix errors in toCSF export structures
  • Fix GSDV spill range inference: use offset not absolute row
  • Fix regression in evaluateExpression
  • Preserve CSF style array when loading workbooks
  • Add vertexId to Cell and DefinedName
  • Non-volatile OFFSET and INDIRECT and ANCHORARRAY with dynamic dependencies
  • CSF type should have filename, not name
  • Change NameReference.width and .height to be undefined, not throw
  • Update fx to 5.0
  • Upgrade Waspiary to 1.10.0 to permit R and C names
  • Add missing detail messages on #CALC! errors
  • Export CellData type
  • Specific Error subclass for invalid reference strings
  • Add support for JSF workbook/worksheet view props
  • Preserve CSF style array when loading workbooks
  • GSDV blocker in extended range should not block other columns
  • numberFormatFromFormula propagation
  • SUMIFS etc. wrong for Matrix with defaulted regions
  • Incorrect swap in Brent root-finding setup
  • QUERY with now() not treated as volatile if no dependencies
  • Evaluate array expressions with mismatched row widths as #VALUE!
  • Fix GSDV spill range inference: use offset not absolute row
  • Fix Table serialization property name mismatch
  • Fix serialization invariant violation
  • Fix errors in toCSF export structures
  • Blank spill anchor missing in Cells.getCells
  • Don’t propagate recalc from unchanged spill matrix
  • Fix regression in evaluateExpression
  • CSF type should have filename, not name
  • Non-volatile OFFSET and INDIRECT and ANCHORARRAY with dynamic dependencies
  • Public Model.attachWorkbook, and document addWorkbook as just a wrapper
  • Export StyleManager
  • Google-mode early-date date function discrepancies
  • Matrix.expand makes fully-populated matrices, causing performance disasters
  • Non-resolving name in LOOKUP vector arg borks reference analysis
  • Propagate markDirty to all dependents of spill ranges
  • Fix default column-width units discrepancy
  • Add vertexId to Cell and DefinedName
  • Change NameReference.width and .height to be undefined, not throw
  • Update fx to 5.0
  • Read JSF directly
  • Bugs in row and column deletion and moves
  • Support R1C1 syntax in INDIRECT
  • Handle changed serialization
  • Replace ERROR_SPILL 'foo' placeholder with proper detail message
  • Serialize model with lambdas in arrays
  • VLOOKUP/HLOOKUP can return non-up-to-date value
  • Direct call to UPLUS fails with internal error
  • Recalculate affected formulas if clearGsdv clears cells
  • Remove reset value from DefinedName and CellInterface
  • Switch to @jsfkit/types for JSF type definitions
  • Install from, and publish to, npmjs.com registry
  • Make FormulaError and Reference fully immutable
  • Store origin cell in FormulaError
  • Add and improve error-value detail messages
  • Add detail messages to #SPILL! errors
  • Make Cell.isBlank() closer to what its name implies
  • Minor bugs in reference intersection and add a test
  • Rename and deprecate Cell methods
  • Deploy public API docs to GitHub Pages site
  • Remove internal stuff from docs
  • Mention case-insensitivity in name parameters
  • Recalculate error-valued cells at init time
  • Remove defined name
  • Wrong spill-operator result for blocked spill
  • QUERY coerces dates to string by local timezone
  • Support structured references in INDIRECT
  • IF result should not be marked dynamic
  • Make apiary bin work again
  • Allow disabling common-subexpression extraction
  • Fix 1904 epoch bug when converting JSF to CSF
  • Export FormulaSyntaxError and EvaluationError
  • Add Model.empty() convenience method
  • Export recalculation option symbols
  • ADDRESS with invalid coordinates yields wrong results or throws exception
  • Use source number format in TO_TEXT
  • Set number format in TO_* functions
  • XLOOKUP third argument wrongly forced up-to-date
  • ROW etc. fail to update when name ref updates
  • False-pos circdep in SUMIF/AVERAGEIF on target range extension
  • Workbook.iterFormulaCells had a bug and a redundant sibling
  • Update JSF support
  • Add a quick start guide
  • Add Starlight-based documentation system
  • Add tutorial for creating a spreadsheet from scratch
  • Document some methods on the Model class
  • Add support for loading and converting JSF format
  • CONVERT failed to handle reference value argument
  • Bump fx from 4.11.2 to 4.12.0 [bot]
  • Bump msgpackr from 1.11.4 to 1.11.5 [bot]
  • Fix defined names causing slow iterative calculation

Version revoked due to incorrect fix.

  • Detect parent labels
  • Label sequence confusion from sparse values at island top/left
  • Bump component-emitter from 1.3.0 to 2.0.0
  • Upgrade pg-mem to 2.6.15
  • Leftmost-column data mistaken for a label sequence
  • Skip over gaps in mixed-type label subsequences
  • Improve island-based label detection