GridCraft v0.13.0
- Trace arrows stay on the traced cell when the selection moves by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/2481
- Make the Row Height dialog use points like Excel by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2524
- Return None from datetime_from_serial when rounding carries past 9999 by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2528
- Keep on every body-font font on save by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2557
- Fix PERCENTRANK returning #NUM! for very large significance by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2417
- Scale MINVERSE rounding cutoff to the input matrix by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2428
- Fix ISOWEEKNUM/WEEKNUM(…,21) for the first days of the calendar by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2443
- web: let an iframe host turn off the title bar and File tab from the URL (?chrome=) by @OdooPudakMachinery in https://github.com/storytold/gridcraft/pull/2444
- Fix IMSQRT leaving a stray real part for negative reals by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2457
- Fix YEARFRAC basis 0 for February-end start and 31st end by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2463
- Fix parsing of ranges whose second end repeats the sheet name by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2473
- Options > Formulas: Maximum Iterations and Maximum Change fields by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2493
- Shift+Arrow on a whole column or row keeps the view on the rows or columns it showed by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/2497
- feat(engine): open a saved workbook without recalculating it by @Fubeo in https://github.com/storytold/gridcraft/pull/2512
- fix(xlsx): keep each sheet's sheetId across a rewrite by @Fubeo in https://github.com/storytold/gridcraft/pull/2513
- fix(engine): editing a note or comment keeps its thread by @Fubeo in https://github.com/storytold/gridcraft/pull/2515
- Remove sparklines when their row or column is deleted by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2551
- Print huge and tiny CLI numbers in exponent form by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2552
- Warn for each skipped drawing object and chart on XLSX open by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2555
- AutoSum: a selected row gets its total to the right, as in Excel by @arcanii in https://github.com/storytold/gridcraft/pull/2561
- Sonar maintainability: explicit imports, method paths, smaller functions by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2412
- Migrate GridCraft to egui 0.37 by @skylartaylor in https://github.com/storytold/gridcraft/pull/2543
- feat: startup update prompt modal and direct self-updating by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2566
- Security: the --control server requires an auth token and closes bad connections (#777) by @vangel76 in https://github.com/storytold/gridcraft/pull/783
- build: pin craft-update to craft-libs main (495e597) by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2586
- build: pin craft-update to craft-libs main (495e597) by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2591
- chore(deps): safe dependency refresh by @skylartaylor in https://github.com/storytold/gridcraft/pull/2595
- Linux: default to XWayland for file drag-and-drop on Wayland desktops by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/165
- refactor: reduce cognitive complexity in auto_sum, update_cursor, read_styles by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2609
- refactor: reduce cognitive complexity in outline layout and outline settings by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2612
- Window per workbook (1/4): a cell draft stays in its workbook; Switch Windows by @aiongg in https://github.com/storytold/gridcraft/pull/2616
- Window per workbook (2/4): windows in the engine; New Window shares the workbook by @aiongg in https://github.com/storytold/gridcraft/pull/2617
- Window per workbook (3/4): a native window per workbook window by @aiongg in https://github.com/storytold/gridcraft/pull/2618
- Window per workbook (4/4): two windows on one workbook without copying it; Arrange All by @aiongg in https://github.com/storytold/gridcraft/pull/2619
- refactor: reduce cognitive complexity in options, python highlighter, i18n scanner, loop search by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2611
- ci: require nextest 0.9.150 by @skylartaylor in https://github.com/storytold/gridcraft/pull/2680
- refactor: shared module layout (craft-contrib#20) by @aiongg in https://github.com/storytold/gridcraft/pull/2690
- fix(ui): dropdown menus grow back after a search with no matches by @aiongg in https://github.com/storytold/gridcraft/pull/2743
- Speed up XLSX save by writing worksheet XML without per-cell allocations by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2749
- Format Chart Area: Chart Type offers the stacked and 100% stacked types and marks the current one by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2605
- Windows installation policy: GridCraft by @Jeremy8776 in https://github.com/storytold/gridcraft/pull/2704
- Enforce Rust coding standards via Clippy by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2711
- @OdooPudakMachinery made their first contribution in https://github.com/storytold/gridcraft/pull/2444
- @Fubeo made their first contribution in https://github.com/storytold/gridcraft/pull/2512
- @Jeremy8776 made their first contribution in https://github.com/storytold/gridcraft/pull/2704
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.12.1...v0.13.0
GridCraft v0.12.1
- Romanian: translate Options|Editing and 22 newer strings by @vioreltus in https://github.com/storytold/gridcraft/pull/2233
- Keep '!' in structured-reference columns intact on XLSX save by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2244
- ui: a too-wide number in a repeat-fill format shows #### by @pick2510 in https://github.com/storytold/gridcraft/pull/2260
- run --script: a line's unknown key stops the run (#2256) by @Hamza0101 in https://github.com/storytold/gridcraft/pull/2266
- Snapshot: catalog installed fonts before rendering by @pick2510 in https://github.com/storytold/gridcraft/pull/2275
- Print numbers near f64::MAX in a form that parses back by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2289
- Add extra Japanese translations for UI elements by @coolvitto in https://github.com/storytold/gridcraft/pull/2292
- Tables: Format as Table inside a table restyles it by @dfendr in https://github.com/storytold/gridcraft/pull/2295
- Hyperlinks: Ctrl+click on a link follows it instead of extending the selection (#1198) by @xc4pr in https://github.com/storytold/gridcraft/pull/2314
- Page Up into frozen rows scrolls the rows below back to the top by @RedBearAK in https://github.com/storytold/gridcraft/pull/2357
- Treat empty instance_num in TEXTBEFORE/TEXTAFTER as 1 by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2245
- range.setValues: parse: false stores a string as the text it is (#2255) by @Hamza0101 in https://github.com/storytold/gridcraft/pull/2267
- view: Show Outline Symbols (Ctrl+8), read and written by @pick2510 in https://github.com/storytold/gridcraft/pull/2274
- Hardening: overlong digits, NaN lookup indexes, bounded REGEXREPLACE (#2163, #2162) by @tyrel in https://github.com/storytold/gridcraft/pull/2279
- Fill handle: Auto Fill Options button after a drag offers Copy Cells, Fill Series and the formatting modes (#1403) by @xc4pr in https://github.com/storytold/gridcraft/pull/2315
- packaging: shell, PowerShell and web page fixes (SonarCloud S7688, S7679, S7682, S8677, S7926) by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2323
- Use chrono instead of hand-rolled UTC conversion by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2121
- CI: one test binary per crate, nextest, line tables only by @aiongg in https://github.com/storytold/gridcraft/pull/2372
- Packaging: pin the signing client and appimagetool, and check their hashes by @aiongg in https://github.com/storytold/gridcraft/pull/2073
- Grid: #### fits its cell in every font by @aiongg in https://github.com/storytold/gridcraft/pull/2378
- CI: shared gate workflow; FreeBSD nightly and on release by @aiongg in https://github.com/storytold/gridcraft/pull/2338
- CI: the gate builds with the release craft-fonts pin by @aiongg in https://github.com/storytold/gridcraft/pull/2381
- i18n: missing translations are reported, never a failure by @aiongg in https://github.com/storytold/gridcraft/pull/2383
- Keep the in-cell editor wide enough for the next character at high zoom (#2336) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/2366
- AutoFilter: grow the range when a value is entered in the row below it (#2342) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/2367
- Ribbon: fall back to Home when the active contextual tab is gone by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/2369
- Ctrl+Alt+click on a link extends the selection; Auto Fill Options button checked in screen space on right-to-left sheets (#2368) by @xc4pr in https://github.com/storytold/gridcraft/pull/2375
- PivotTables: Show Details, double-click a value cell to list its source records on a new sheet (#2364) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/2386
- Fix MOD returning wrong sign and magnitude for tiny divisors by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2387
- ci(sonar): stop cancelling main-branch runs so coverage is published by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2390
- Engine: building blocks for multi-command actions (undo groups, recording buffer, document trust, chunked hidden names) by @prxnvt in https://github.com/storytold/gridcraft/pull/462
- Conditional formatting: New Rule's formula box takes references clicked or dragged on the grid (#2348) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/2388
- Calc: INDEX with one index on a 2-D reference is #REF!, as in Excel by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2392
- Accuracy: PMT to Excel's last bits via ln_1p/exp_m1 by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2393
- Keytips: Alt, H, B border letters apply their own preset by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2394
- Analysis ToolPak: value arguments reject multi-cell references, as Excel 365 does by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2396
- Read accounting negatives like $(1,234) in number text by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2397
- Lookups compare numbers exactly, like Excel by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2399
- Reject unmatched '.' and ',' in NUMBERVALUE text by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2400
- XLSX: write accounting formats 42 and 44 with their code by @helenkwok in https://github.com/storytold/gridcraft/pull/2402
- M2.9: budget lambda work and bound wildcard substring search by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2415
- M2.9: cap xlsx import work and gate hostile datetime fields by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2413
- M2.9: bound print/export/autofit work in the engine by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2416
- M2.9: harden native file open/save by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2418
- M2.9: close protection gaps a trusted script or other sheet would slip through by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2420
- M6: misc hardening sweep (findings 0, 5, 7, 11, 12, 23, 26) by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2422
- M7: enforce Agile encryption dataIntegrity (finding 1) by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2425
- UI: theme tokens with a contrast test, ribbon overflow arrows and split button, multi-line formula bar, code editor widget by @prxnvt in https://github.com/storytold/gridcraft/pull/456
- Merge 18 open PRs (tested batch) by @aiongg in https://github.com/storytold/gridcraft/pull/2538
- docs: Different First Page and Different Odd & Even Pages are no longer listed as missing by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2486
- Error Checking: its arrow opens a Circular References submenu listing a cell on each loop by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2501
- Charts: 100% Stacked Area draws each value as a share of its category's total by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2522
- Ribbon: Insert › Column or Bar offers 100% Stacked Bar by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2525
- Calc: a LAMBDA that calls itself without end answers #NUM! instead of overflowing the stack by @dotCooCoo in https://github.com/storytold/gridcraft/pull/1809
- Formulas: F3 opens Paste Name, which inserts a defined name or pastes the list of names by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2410
- Go To: lists the named ranges of every sheet and the references entered, and goes to several at once by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2414
- Status bar: a right-click opens a statistics menu, with Numerical Count, Minimum and Maximum added by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2421
- Keyboard: Ctrl+Shift+U expands and collapses the formula bar instead of underlining by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2427
- Tests: the engine's file-system tests each use their own temporary folder by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2434
- Fill handle: Fill Days, Fill Weekdays, Fill Months and Fill Years for a date by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2456
- PivotTables: Enable show details turns Show Details off for a PivotTable by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2461
- PivotTables: right-clicking a value cell offers Show Details in the cell menu by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2467
- Sheet tabs: drag the handle at the scrollbar's left edge to give the tabs more or less room by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2477
- Outline: Settings puts summary rows above and summary columns left of their detail by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2482
- Headers and footers: printing follows the Scale with Document and Align with Page Margins check boxes by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2488
- Circular references: Error Checking and the status bar quote sheet names that need quotes by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2504
- Status bar: Circular References names a cell only when a loop is on the active sheet by @dotCooCoo in https://github.com/storytold/gridcraft/pull/2510
- Paste Name and Go To: follow-ups from the batch review by @aiongg in https://github.com/storytold/gridcraft/pull/2540
- @pick2510 made their first contribution in https://github.com/storytold/gridcraft/pull/2260
- @coolvitto made their first contribution in https://github.com/storytold/gridcraft/pull/2292
- @dfendr made their first contribution in https://github.com/storytold/gridcraft/pull/2295
- @xc4pr made their first contribution in https://github.com/storytold/gridcraft/pull/2314
- @tyrel made their first contribution in https://github.com/storytold/gridcraft/pull/2279
- @helenkwok made their first contribution in https://github.com/storytold/gridcraft/pull/2402
- @dotCooCoo made their first contribution in https://github.com/storytold/gridcraft/pull/2486
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.11.1...v0.12.1
GridCraft v0.11.1
[!NOTE] FreeBSD aarch64 is dropped from this release. We had to cut releases, and we cannot build this target within the 5-hour CI limit for any of the Craft apps, so we are dropping it for now. This is a known blocker, flagged for a future fix in storytold/craft-common-actions#39. FreeBSD x86_64 and every other platform are included.
- security: enforce HTTPS on curl downloads (SonarCloud S6506) by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/2188
- Backlog integration: 230 reviewed fixes and reference app behaviour changes by @aiongg in https://github.com/storytold/gridcraft/pull/2226
- Seed the Sort dialog column from the active cell (#1906) by @bfenty in https://github.com/storytold/gridcraft/pull/1979
- Desktop theme: the watcher's link has a type off Linux, so the gate passes there by @Hamza0101 in https://github.com/storytold/gridcraft/pull/1981
- calc: LET and LAMBDA names ignore case in any script by @webglobecontact-ui in https://github.com/storytold/gridcraft/pull/1996
- Spanish formula aliases for financial functions (#1986) by @bfenty in https://github.com/storytold/gridcraft/pull/2000
- Formulas: Excel's longest legal operator chain (4,096 operands) no longer crashes entry or save by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2019
- Linux: time out the desktop theme's portal read by @bmh129 in https://github.com/storytold/gridcraft/pull/2026
- Formula entry: an incomplete formula's error describes what was typed (fixes #2030) by @kezmdor in https://github.com/storytold/gridcraft/pull/2032
- Row auto-fit: count line breaks only in cells that wrap by @RedBearAK in https://github.com/storytold/gridcraft/pull/2033
- Fix WebGL startup on devices with lower GPU limits by @mbaksa in https://github.com/storytold/gridcraft/pull/2038
- Word-wrap-aware automatic row height (#1969) by @bfenty in https://github.com/storytold/gridcraft/pull/2049
- i18n: Dutch (nl) interface language by @Stefanfra in https://github.com/storytold/gridcraft/pull/2061
- Use scientific notation when number_to_text rounds up to 1e15 by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/2069
- HTML export: place pictures and charts at their anchors by @bilalmughal in https://github.com/storytold/gridcraft/pull/2080
- Right-click on a chart opens the chart's menu, not the cell's (fixes #2067) by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/2084
- Grid: paint the scrollbar's column beside the column headings (white corner in dark mode) by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/2086
- fix(ui): Esc and Enter close a data validation alert, not the edit behind it, and the keyboard goes back to the entry (#2089) by @vedran-dobos in https://github.com/storytold/gridcraft/pull/2090
- Paste Special: Excel's two-column layout, translated, Paste Link button by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/2093
- Dialogs: OK and Cancel in a row, so form dialogs fit their content by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/2094
- Number Stored as Text: green indicator, warning button and Convert to Number (#1994) by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/2095
- docs: fix Trunk website link (#2076) by @Zaxaerith in https://github.com/storytold/gridcraft/pull/2098
- Fonts: a cell font named in another language matches its installed font (fixes #1898) by @chessive in https://github.com/storytold/gridcraft/pull/2100
- Romanian (ro) interface language by @vioreltus in https://github.com/storytold/gridcraft/pull/2102
- Translate form-dialog field labels, choices and notes by @vioreltus in https://github.com/storytold/gridcraft/pull/2106
- Backstage: list the languages alphabetically by their own name by @nikolainyegaard in https://github.com/storytold/gridcraft/pull/2116
- Print: JIS B4/B5 and Japanese paper sizes (はがき・封筒・B6) by @midasdf in https://github.com/storytold/gridcraft/pull/2131
- PivotTable Fields pane: scan the source once per change, not every frame by @Aimarmndz in https://github.com/storytold/gridcraft/pull/2142
- Table Design: draw the Table Styles gallery in the ribbon (#2148) by @alosslessdev in https://github.com/storytold/gridcraft/pull/2150
- calc: bound SUBTOTAL/AGGREGATE input work (#2175) by @Higgs32584 in https://github.com/storytold/gridcraft/pull/2194
- calc: cap LINEST-family regressor matrices (#2177) by @Higgs32584 in https://github.com/storytold/gridcraft/pull/2195
- core: iterative number coercion for nested parentheses (#2180) by @Higgs32584 in https://github.com/storytold/gridcraft/pull/2200
- calc: cap array broadcast result size (#2182) by @Higgs32584 in https://github.com/storytold/gridcraft/pull/2201
- clipboard: bound HTML colspan/rowspan expansion (#2171) by @Higgs32584 in https://github.com/storytold/gridcraft/pull/2207
- Web: keep preferences such as dark mode between visits by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1589
- XLSX: keep custom column widths that round to the default width by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1615
- Keyboard: Ctrl+6 hides and shows objects, saved as workbookPr showObjects by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1626
- Add Advanced Filter dialog and fix copy-to data loss by @derechopiano in https://github.com/storytold/gridcraft/pull/1628
- Memory: undo steps share picture and macro bytes instead of copying them by @arcanii in https://github.com/storytold/gridcraft/pull/1629
- Memory: interface fonts are read once and shared with egui, not copied into it by @arcanii in https://github.com/storytold/gridcraft/pull/1630
- Memory: floating pictures' textures are bounded, sized to what is drawn, and dropped with their workbook by @arcanii in https://github.com/storytold/gridcraft/pull/1631
- fix(xlsx): bound repeated column expansion by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/1648
- fix(ets): avoid repeated scans while interpolating gaps by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/1650
- Fill handle: right-drag opens the fill menu (Copy Cells, Fill Series, Fill Formatting Only, Fill Without Formatting, Series…) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1652
- Cell editor: the caret contrasts with the cell's fill by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1657
- macOS: bold interface text draws Cyrillic е open, not like ө by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1669
- fix: theme PivotTable field group buttons by @ozero in https://github.com/storytold/gridcraft/pull/1671
- Keep overflow text visible when its source cell scrolls out of view by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1672
- contributors: add Harrison-Booth by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/1674
- #1447: two value fields without a column field hide the Values row by @HyakoV3 in https://github.com/storytold/gridcraft/pull/1683
- #1447: a PivotChart's link names the workbook by @HyakoV3 in https://github.com/storytold/gridcraft/pull/1685
- XLSX: keep Japanese phonetic runs (ふりがな) on open and save by @midasdf in https://github.com/storytold/gridcraft/pull/1692
- Charts: series that refer to defined names (
[0]!Name) plot their data, and are saved qualified by @bldred in https://github.com/storytold/gridcraft/pull/1693 - Charts: box & whisker charts honor their quartile method by @webdevtodayjason in https://github.com/storytold/gridcraft/pull/1695
- XLSX: new workbooks get (fixes #1699) by @aviiciii in https://github.com/storytold/gridcraft/pull/1701
- Fonts: find the cell, serif, mono, Thai and Hebrew faces in Fedora's package folders (#1694) by @tydude001 in https://github.com/storytold/gridcraft/pull/1705
- Reject table.resize when the new range overlaps another table by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1706
- Rows: a big font isn't counted twice when the sheet's default height already fits it by @tisca26 in https://github.com/storytold/gridcraft/pull/1709
- Tables: add the missing Resize Table button (#935) by @adrinothiago-cpu in https://github.com/storytold/gridcraft/pull/1724
- Prefill the Remove Duplicates range from the selection by @TheRenegadeDev in https://github.com/storytold/gridcraft/pull/1725
- Fail CLI checks on incomplete or empty input discovery by @TheRenegadeDev in https://github.com/storytold/gridcraft/pull/1726
- Use the platform clock for UI timing on the web by @TheRenegadeDev in https://github.com/storytold/gridcraft/pull/1728
- Move PivotTables with their cells on row/column insert and delete by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1731
- i18n(ja): translate the dialog, message and menu strings (943 entries, matching the pt-BR coverage) by @midasdf in https://github.com/storytold/gridcraft/pull/1732
- fix(web): clean up print iframe and blob resources by @TheRenegadeDev in https://github.com/storytold/gridcraft/pull/1734
- Analysis ToolPak: moving-average standard errors use a running sum (#1043) by @TheRenegadeDev in https://github.com/storytold/gridcraft/pull/1735
- Keep chart source range in step with inserted and deleted lines by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1738
- Ctrl+Alt+letter that types a character no longer triggers the Ctrl shortcut (#1530) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1744
- Docs: §6's calculation bugs have all landed by @Hamza0101 in https://github.com/storytold/gridcraft/pull/1753
- i18n: translate sheet tab context menu and AutoSave toggle (fixes #1537) by @dknalp in https://github.com/storytold/gridcraft/pull/1754
- Fonts: render Lao text with an installed Lao face instead of tofu by @Laosmartsoft in https://github.com/storytold/gridcraft/pull/1758
- Sheet protection: obey the Sort and Use AutoFilter boxes by @Hamza0101 in https://github.com/storytold/gridcraft/pull/1765
- Add Ukrainian localization (uk.rs) by @War2Darius in https://github.com/storytold/gridcraft/pull/1770
- i18n: add Vietnamese interface translations by @thanhbv102-arch in https://github.com/storytold/gridcraft/pull/1772
- Added multi-column/row selection in formulas & column/row selection highlighting. by @Cyan101 in https://github.com/storytold/gridcraft/pull/1838
- Docs: correct stale chart round-trip notes by @alosslessdev in https://github.com/storytold/gridcraft/pull/1889
- Keep the in-cell editor at the cell's height for one line by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1905
- Print CJK text with a CID font instead of question marks by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1912
- Grid: row and column heading labels grow with the zoom by @DrM7md in https://github.com/storytold/gridcraft/pull/1924
- Accounting format: the documented currency
symbolis honoured by @zyzabruh in https://github.com/storytold/gridcraft/pull/1930 - Keep date text with signed parts like +3/4/2026 as text by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1937
- CSV import: read Windows-1256 Arabic files as Arabic by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1942
- XLSX: keep the theme's per-script fonts (<a:font script="Arab">) on save — stacked on #1740 by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1945
- XLSX: keep cell fonts' charset (Arabic 178) and family on save by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1946
- Translate and standardizes UI error feedback by locale by @Lord-Taw in https://github.com/storytold/gridcraft/pull/1958
- Control channel: a request its sender gave up on is not run later by @Hamza0101 in https://github.com/storytold/gridcraft/pull/1971
- In-cell editor: a Wrap Text cell edits wrapped at the column width (#1970) by @jcagudelo12 in https://github.com/storytold/gridcraft/pull/1974
- Select precedent/dependent cells with Ctrl+[ / Ctrl+] (#1865 part 1) by @bfenty in https://github.com/storytold/gridcraft/pull/1975
- Enter bare numbers in Percentage-formatted cells as percents by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1976
- Grid: the selection outline follows a mouse drag at once by @DrM7md in https://github.com/storytold/gridcraft/pull/1993
- Persist the AutoSave preference across restarts (#1901) by @bfenty in https://github.com/storytold/gridcraft/pull/1995
- ui: language command docs and error list every language by @webglobecontact-ui in https://github.com/storytold/gridcraft/pull/1998
- Formula editing: arrow pointing restarts from the edited cell after typing (#1949) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/2001
- AutoFill refuses a target that doesn't hold the source in a corner (whole rows into whole columns aborted the app) by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/2005
- Reject unparseable conditional-format formulas (#1999) by @bfenty in https://github.com/storytold/gridcraft/pull/2022
- AutoFit Column Width measures text in the font the grid draws it with by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1320
- Keyboard: Alt+= no longer starts an edit with the
=it types by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1332 - Selection: whole columns and rows don't widen to merged cells by @DCM4711 in https://github.com/storytold/gridcraft/pull/1337
- calc: calculate long dependency chains with bounded stack by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/1340
- engine: keep AutoFill text series from panicking or wrapping on i64 overflow by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1360
- Context menu: the right-click that opens it doesn't close it by @DCM4711 in https://github.com/storytold/gridcraft/pull/1363
- engine: keep case-insensitive replace from dropping text when folding shifts byte boundaries by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1364
- Fix font dropdown list resizing and keyboard up/down navigation by @mbaksa in https://github.com/storytold/gridcraft/pull/1365
- Keep Middle/Bottom vertical alignment for wrapped text taller than its row by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1371
- Protection: Protect Sheet entries unprotect, selectLockedCells enforced (#1346) by @vangel76 in https://github.com/storytold/gridcraft/pull/1373
- Header menus: Format Cells… for the selected rows or columns by @DCM4711 in https://github.com/storytold/gridcraft/pull/1375
- engine: subtotal honours header:false instead of dropping the first data row by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1379
- xlsx: keep every property of the default cell format when importing a file by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1380
- engine: rebuild cell-store bands and counts when importing a JSON workbook by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1381
- UI: Improve Command Palette keyboard navigation and layout by @mbaksa in https://github.com/storytold/gridcraft/pull/1414
- Recalc: an anchor's new formula no longer reads its old spill area by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1427
- Recalc: formulas reading an array that loses a spill conflict see #SPILL! by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1428
- Stop BINOM.INV/CRITBINOM hanging when trials exceed 2^53 by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1432
- Refuse table names that clash with defined names or R1C1 references by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1434
- Fix fraction numerators saturating at u64::MAX for large values by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1438
- Add Greek (el) interface localization by @Camthalion77 in https://github.com/storytold/gridcraft/pull/1468
- Let GROUPBY and PIVOTBY take a LAMBDA as their function by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1469
- fix(solver): commit solutions and reports atomically by @euisuh in https://github.com/storytold/gridcraft/pull/1470
- i18n: add Italian translation by @icsimpianti in https://github.com/storytold/gridcraft/pull/1473
- Conditional formatting: text rules never match an error value (#1162) by @wstock in https://github.com/storytold/gridcraft/pull/1474
- Control channel: ui.dialog.confirm sends what OK sends (#1459) by @wstock in https://github.com/storytold/gridcraft/pull/1477
- UI: keep PivotTable field-list scrollbar at pane edge by @derechopiano in https://github.com/storytold/gridcraft/pull/1485
- XLSX: preserve carriage returns in saved text by @derechopiano in https://github.com/storytold/gridcraft/pull/1495
- Fix number-format palette colours in grid and PDF output by @bogusyogi in https://github.com/storytold/gridcraft/pull/1500
- Read securities function dates in the workbook's date system by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1507
- Calc: a dynamic array of one value still anchors a spill range by @Hamza0101 in https://github.com/storytold/gridcraft/pull/1510
- Reject formula number literals too large for f64 as parse errors by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1512
- Fix scalar INDEX/MATCH XLSX export by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/1514
- fix #1443: Ctrl+Q no longer closes the window outside macOS by @HyakoV3 in https://github.com/storytold/gridcraft/pull/1520
- UI: function help follows the interface language by @quantmind-br in https://github.com/storytold/gridcraft/pull/1523
- Keep leading empty columns and rows when saving CSV/text by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1525
- functions: NETWORKDAYS.INTL accepts the all-weekend string "1111111" by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1526
- engine: pageLayout.printTitles only touches the axes it is given by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1527
- fix #1458: one Excel sheet-name quoting rule for formulas, pivot sources and ADDRESS by @HyakoV3 in https://github.com/storytold/gridcraft/pull/1529
- xlsx: keep a table's filter criteria when the sheet AutoFilter coincides with it by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1531
- engine: a cut takes the source's notes, hyperlinks and merged areas with it by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1534
- engine: sort and remove duplicates move the rows' notes and hyperlinks by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1535
- UI: Delete dismisses the AutoComplete proposal, and deleting text never brings it back (#1521) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1547
- Focus the Find what field when Find and Replace opens (#1518) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1548
- Open the Insert Chart dialog from Recommended Charts instead of inserting a chart (#1399) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1550
- Keep nan/inf time and fraction look-alikes as text by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1552
- Sort and de-duplicate data.textToColumns fixed-width breaks by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1559
- ui: truncate long workbook titles in the title bar by @IsmaelEzequiel in https://github.com/storytold/gridcraft/pull/1560
- calc: bounded references up to 1,048,576 cells keep their full shape by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/1568
- XLSX: keep dynamic-array cell metadata (cm) on save by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/1570
- Calc: CELL("filename") names the workbook's file by @Hamza0101 in https://github.com/storytold/gridcraft/pull/1580
- Contributors: add Marco Arnulfo by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1596
- XLSX: keep header and footer pictures on save by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1600
- Grid: a scrolled Table's header names and filter buttons in the column headings (#1423) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1612
- XLSX: a note keeps its box's place and size through open and save (#1608) by @switch87 in https://github.com/storytold/gridcraft/pull/1614
- Grid: a cell with line breaks and Wrap Text off draws the whole string on one line by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1618
- Reject unsupported flip param in arrange.rotate by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1621
- Keyboard: Ctrl+Shift+A after a function name inserts its argument names by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1624
- Charts: insert.chart builds a series from every area of a multi-area range by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1653
- Merged cell with Wrap Text: auto-fit skips it, so the text draws and the row keeps its default height by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1661
- Row, column and freeze commands act on the sheet they are given (
sheet, or aSheet!prefix) by @CouchRiv in https://github.com/storytold/gridcraft/pull/885 - UI: File › Account shows the version, platform and licence, with an About GridCraft button by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/898
- Keytips: Alt, F opens the File view, and its F letters still run by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/905
- Ribbon: Font Size is a box you type into, the sizes behind its arrow by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/952
- Control: Go To and Select over the control channel scroll the active cell into view by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/970
- Sheet tabs: Ctrl-drag (Cmd or Option on macOS) drops a copy of the sheet by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/973
- XLSX export: a picture shared by several sheets is one media part (#985) by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/995
- Fix Command-click and Shift-click references during formula entry by @pourie-he in https://github.com/storytold/gridcraft/pull/1056
- Flash Fill: read the text cells show by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1057
- Format Cells: take the documented camelCase style keys by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1058
- rows/cols parameters: accept a single row or column by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1059
- LAMBDA helpers: #CALC! for nested arrays, #VALUE! for wrong parameter counts by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1060
- Recalc: an array that spills as before doesn't requeue its dependents by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1061
- Engine: formulas.evaluate refuses what cell entry refuses, saying why by @quantmind-br in https://github.com/storytold/gridcraft/pull/1066
- Ribbon: more currency symbols in the Accounting Number Format menu by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1068
- Colour menus: More Colors… and Recent Colors (#928) by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1083
- Data validation: a list typed without quotes is saved as a quoted list, and an unknown type is refused by @CouchRiv in https://github.com/storytold/gridcraft/pull/1084
- Format: Row Height and Column Width say pixels, and take points like Excel by @CouchRiv in https://github.com/storytold/gridcraft/pull/1085
- Charts: multi-level category axes (year beside month) read, drawn and written back by @Lexx143 in https://github.com/storytold/gridcraft/pull/1088
- i18n: add Polish (pl) interface, full catalog (970 labels) by @mbielski1337 in https://github.com/storytold/gridcraft/pull/1091
- fix(grid): keep cursor stable during cell dragging (#936) by @Zaxaerith in https://github.com/storytold/gridcraft/pull/1095
- CSV export: check the size cap before each field, not after the row (#1023) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1102
- Keep chart cache point positions when a reference has blank edges (#1015) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1103
- xlsx: keep the first group's series kind when importing a combination chart (#1014) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1104
- Fix row keys merging distinct text rows in UNIQUE and grouping (#1012) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1105
- Refuse a cut-paste whose destination does not fit instead of dropping cells (#997) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1108
- fix(ui): commit a pointed formula on the sheet it was started on (#996) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1109
- Size the list validation dropdown to up to 8 rows (#1089) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1110
- Respect workbook structure protection in sheet rename, move, copy, hide and unhide (#1049) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1111
- Read date text arguments in the workbook date system (#1038) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1114
- Cap CSV import fields per record at the worksheet column limit (#1037) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1115
- Fix table without header: re-point references when the data moves down (#1030) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1117
- Fix xlsx: combine escaped UTF-16 surrogate pairs when decoding strings (#1025) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1119
- Open notice: do not promise to keep macros that were dropped (#1024) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1120
- Grid: per-frame work no longer scales with the whole sheet (#1098) by @vangel76 in https://github.com/storytold/gridcraft/pull/1136
- Charts: a huge trendline forecast no longer collapses the chart (#1148) by @vangel76 in https://github.com/storytold/gridcraft/pull/1151
- XLSX: [Content_Types].xml is the first zip entry, workbook parts precede document properties, so libmagic detects the file type (#1090) by @vangel76 in https://github.com/storytold/gridcraft/pull/1156
- fix(ui): menu items highlight under the pointer (#1174) by @richard1912 in https://github.com/storytold/gridcraft/pull/1180
- fix(ui): ribbon tooltips show each platform's shortcuts (Ctrl+B on Windows, ⌘B on macOS) (#1191) by @richard1912 in https://github.com/storytold/gridcraft/pull/1194
- Grid: an armed Format Painter pastes onto the next cells clicked or dragged by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1214
- File: Save a Copy asks where to save a bare name instead of writing it to the working directory by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1215
- Sheet tabs: right-clicking a tab activates its sheet by @richard1912 in https://github.com/storytold/gridcraft/pull/1223
- XLSX: keep a dxf's protection, font size and face, and the font parts it turns off by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1225
- Journal: cap by serialized size and keep a recording's start through trims by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1230
- Fix native CJK fallback paths in Flatpak by @allenyllee in https://github.com/storytold/gridcraft/pull/1236
- BAHTTEXT: a final one after the millions reads เอ็ด by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1237
- Opening an XLSX with a part over 512 MB says how to get the data in by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1248
- Headers: mark hidden columns and rows, split cursor and double-click to unhide (#1247) by @richard1912 in https://github.com/storytold/gridcraft/pull/1249
- Dialogs move by their title bar instead of staying pinned to the centre by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1252
- Bound Undo history growth after bulk edits by @derechopiano in https://github.com/storytold/gridcraft/pull/1263
- Zoom dialog: Excel's layout, current zoom pre-selected, Fit selection (#930) by @richard1912 in https://github.com/storytold/gridcraft/pull/1277
- N() converts a computed array element by element, so it works inside SUMPRODUCT by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1281
- Sort: a Sheet! prefix on the range sorts that sheet, not the active one by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1284
- Remove Duplicates, Filter and Subtotal: a Sheet! prefix on the range works on that sheet, not the active one by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1285
- Preserve hyperlinks in PDF export and support PDF in CLI convert by @derechopiano in https://github.com/storytold/gridcraft/pull/1292
- Filter: count empty text and ="" results as (Blanks) (#1294) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1299
- Show dynamic array source formulas read-only in spill cells by @Prachannagven in https://github.com/storytold/gridcraft/pull/1306
- engine: refuse removeDuplicates with no valid column instead of deleting all rows by @midasmatterhorn in https://github.com/storytold/gridcraft/pull/1308
- Reject a list data validation that has no formula1 (#1303) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1326
- Slicer: find a named table on any sheet by @dev-exe in https://github.com/storytold/gridcraft/pull/1329
- Form dialogs open ready to type (Column Width, Row Height) by @Harrison-Booth in https://github.com/storytold/gridcraft/pull/1331
- Edit: text that would parse as a number or formula keeps its quote prefix in the editor (#1362) by @vangel76 in https://github.com/storytold/gridcraft/pull/1372
- perf: fill-handle double-click scans a dense neighbour column ~2.4x faster by @Dejan-Port in https://github.com/storytold/gridcraft/pull/451
- Build: the ui-egui build script reads CARGO_MANIFEST_DIR when it runs by @prxnvt in https://github.com/storytold/gridcraft/pull/488
- Refuse inserting cells that would push values off the worksheet (#580) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/584
- Make check --json list warning messages instead of a count (#526) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/629
- Cap queued pointer events from ui.click/ui.drag control requests (#525) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/630
- Open the Header & Footer dialog on the sheet's saved header and footer (#523) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/632
- i18n: Turkish (tr) interface language by @yeniufuklar-com in https://github.com/storytold/gridcraft/pull/663
- Keep sheet navigation on visible worksheets at workbook boundaries by @jonathanwxh-cell in https://github.com/storytold/gridcraft/pull/701
- Names: a name over several ranges reads its top-level commas as unions by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/759
- i18n: test that translations keep the shape of their English by @bmh129 in https://github.com/storytold/gridcraft/pull/831
- Closing the window asks to save unsaved workbooks by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/846
- Conditional formats: hex colours in a custom style, and no more silently empty or never-matching rules by @CouchRiv in https://github.com/storytold/gridcraft/pull/884
- Keyboard: Enter after a run of Tabs goes to the next row in the column the run started from by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/913
- Sheet tabs: New sheet (+) right after the last tab, the strip capped at 60% by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/949
- fix(fill): respect the workbook date system in monthly AutoFill by @anirudhqwerty in https://github.com/storytold/gridcraft/pull/951
- README: the app icon above the title by @bflatastic in https://github.com/storytold/gridcraft/pull/2249
- scripts: require workbook trust before running embedded scripts (#2178) by @Higgs32584 in https://github.com/storytold/gridcraft/pull/2209
- @aiongg made their first contribution in https://github.com/storytold/gridcraft/pull/2226
- @bfenty made their first contribution in https://github.com/storytold/gridcraft/pull/1979
- @Hamza0101 made their first contribution in https://github.com/storytold/gridcraft/pull/1981
- @webglobecontact-ui made their first contribution in https://github.com/storytold/gridcraft/pull/1996
- @Harrison-Booth made their first contribution in https://github.com/storytold/gridcraft/pull/2019
- @kezmdor made their first contribution in https://github.com/storytold/gridcraft/pull/2032
- @RedBearAK made their first contribution in https://github.com/storytold/gridcraft/pull/2033
- @mbaksa made their first contribution in https://github.com/storytold/gridcraft/pull/2038
- @Stefanfra made their first contribution in https://github.com/storytold/gridcraft/pull/2061
- @bilalmughal made their first contribution in https://github.com/storytold/gridcraft/pull/2080
- @Zaxaerith made their first contribution in https://github.com/storytold/gridcraft/pull/2098
- @chessive made their first contribution in https://github.com/storytold/gridcraft/pull/2100
- @vioreltus made their first contribution in https://github.com/storytold/gridcraft/pull/2102
- @nikolainyegaard made their first contribution in https://github.com/storytold/gridcraft/pull/2116
- @midasdf made their first contribution in https://github.com/storytold/gridcraft/pull/2131
- @Aimarmndz made their first contribution in https://github.com/storytold/gridcraft/pull/2142
- @alosslessdev made their first contribution in https://github.com/storytold/gridcraft/pull/2150
- @ozero made their first contribution in https://github.com/storytold/gridcraft/pull/1671
- @bldred made their first contribution in https://github.com/storytold/gridcraft/pull/1693
- @aviiciii made their first contribution in https://github.com/storytold/gridcraft/pull/1701
- @tisca26 made their first contribution in https://github.com/storytold/gridcraft/pull/1709
- @adrinothiago-cpu made their first contribution in https://github.com/storytold/gridcraft/pull/1724
- @TheRenegadeDev made their first contribution in https://github.com/storytold/gridcraft/pull/1725
- @dknalp made their first contribution in https://github.com/storytold/gridcraft/pull/1754
- @Laosmartsoft made their first contribution in https://github.com/storytold/gridcraft/pull/1758
- @War2Darius made their first contribution in https://github.com/storytold/gridcraft/pull/1770
- @thanhbv102-arch made their first contribution in https://github.com/storytold/gridcraft/pull/1772
- @Cyan101 made their first contribution in https://github.com/storytold/gridcraft/pull/1838
- @zyzabruh made their first contribution in https://github.com/storytold/gridcraft/pull/1930
- @Lord-Taw made their first contribution in https://github.com/storytold/gridcraft/pull/1958
- @jcagudelo12 made their first contribution in https://github.com/storytold/gridcraft/pull/1974
- @DCM4711 made their first contribution in https://github.com/storytold/gridcraft/pull/1337
- @midasmatterhorn made their first contribution in https://github.com/storytold/gridcraft/pull/1360
- @Camthalion77 made their first contribution in https://github.com/storytold/gridcraft/pull/1468
- @euisuh made their first contribution in https://github.com/storytold/gridcraft/pull/1470
- @icsimpianti made their first contribution in https://github.com/storytold/gridcraft/pull/1473
- @wstock made their first contribution in https://github.com/storytold/gridcraft/pull/1474
- @bogusyogi made their first contribution in https://github.com/storytold/gridcraft/pull/1500
- @quantmind-br made their first contribution in https://github.com/storytold/gridcraft/pull/1523
- @IsmaelEzequiel made their first contribution in https://github.com/storytold/gridcraft/pull/1560
- @pourie-he made their first contribution in https://github.com/storytold/gridcraft/pull/1056
- @Lexx143 made their first contribution in https://github.com/storytold/gridcraft/pull/1088
- @mbielski1337 made their first contribution in https://github.com/storytold/gridcraft/pull/1091
- @allenyllee made their first contribution in https://github.com/storytold/gridcraft/pull/1236
- @Prachannagven made their first contribution in https://github.com/storytold/gridcraft/pull/1306
- @dev-exe made their first contribution in https://github.com/storytold/gridcraft/pull/1329
- @yeniufuklar-com made their first contribution in https://github.com/storytold/gridcraft/pull/663
- @anirudhqwerty made their first contribution in https://github.com/storytold/gridcraft/pull/951
- @bflatastic made their first contribution in https://github.com/storytold/gridcraft/pull/2249
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.10.0...v0.11.1
GridCraft v0.10.0
[!NOTE] FreeBSD aarch64 is dropped from this release. We had to cut releases, and we cannot build this target within the 5-hour CI limit for any of the Craft apps, so we are dropping it for now. This is a known blocker, flagged for a future fix in storytold/craft-common-actions#39. FreeBSD x86_64 and every other platform are included.
- Skip CodeRabbit reviews on Dependabot PRs by @echelon in https://github.com/storytold/gridcraft/pull/2057
- ci: switch to shared nix workflow from craft-common-actions by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/1620
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.9.0...v0.10.0
GridCraft v0.9.0
- Reject unknown value-field func in insert.pivotTable by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1757
- Fonts: probe ChromeOS's /usr/share/fonts/chromeos for script fallbacks (fixes #1762) by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/1768
- Conditional formatting: show a rule's number format (fixes #1163) by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/1769
- Fix MEDIAN overflow for large finite middle values by @MMexicann in https://github.com/storytold/gridcraft/pull/1585
- ci: configure Dependabot for Cargo and GitHub Actions by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/1872
- docs: add SonarCloud and CodeRabbit badges to README by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/1860
- #1447: TRUE/FALSE or error values in a pivot source no longer make the file unopenable by @Higgs32584 in https://github.com/storytold/gridcraft/pull/1814
- Translate the cell and header context menus into German (#1830) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/1845
- #1528: a formula's references are outlined only on the sheet they belong to by @HyakoV3 in https://github.com/storytold/gridcraft/pull/1866
- #1808: file.open can keep every CSV/TSV field as text by @HyakoV3 in https://github.com/storytold/gridcraft/pull/1867
- ui: let an embedding host turn off the title bar and File tab by @rdexel in https://github.com/storytold/gridcraft/pull/1877
- Hide blank and text rows for numeric ordering custom filters by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1879
- fix(xlsx): read and write PivotTable grand totals in Excel's direction by @neilcawse in https://github.com/storytold/gridcraft/pull/1882
- i18n: French and Serbian Options headings and Sheet Options “View” without the context prefix (#1891) by @vedran-dobos in https://github.com/storytold/gridcraft/pull/1892
- Keytips: letters typed with Alt held continue the sequence (fixes #1846) by @Shnrqpdr in https://github.com/storytold/gridcraft/pull/1902
- #1855: Backspace then Enter is one undo step; redo selects the redone cell by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/1903
- Pan the grid on a one-finger touch drag instead of selecting by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1910
- Reuse one D-Bus session connection in the desktop theme watcher by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1916
- fix(edit): Ctrl+Enter gives each cell the number format typing gives it (#1919) by @vedran-dobos in https://github.com/storytold/gridcraft/pull/1920
- Reject signed and multi-$ whole-row ranges in RangeRef::parse by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1922
- Fix two clippy lints new in Rust 1.95 by @DrM7md in https://github.com/storytold/gridcraft/pull/1923
- Keyboard: Ctrl+Shift+= and Ctrl+- act on whole rows and columns at once by @DrM7md in https://github.com/storytold/gridcraft/pull/1925
- Grid: explicit Left/Right alignment keeps its side on a right-to-left… by @DrM7md in https://github.com/storytold/gridcraft/pull/1926
- Names: count characters, not bytes, in the 255-character name limit by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1934
- XLSX: keep right-to-left paragraph direction in text boxes and shapes by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1935
- HTML export and copy: keep right-to-left sheets and Arabic text direction by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1938
- XLS import: read WINDOW2 so right-to-left sheets open right-to-left by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1939
- Search from the end for negative TEXTBEFORE/TEXTAFTER instances by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/1941
- Tables: limit table names to 255 characters, counted as characters by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1943
- XLS: skip dialog sheets instead of importing them as worksheets by @Mouhand-Kaddo in https://github.com/storytold/gridcraft/pull/1947
- Outline: + shows zero-width hidden columns at the default width (fixes #1714) by @HaSh3003 in https://github.com/storytold/gridcraft/pull/1965
- docs: drop references to competing commercial software by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/1828
- @MMexicann made their first contribution in https://github.com/storytold/gridcraft/pull/1585
- @Higgs32584 made their first contribution in https://github.com/storytold/gridcraft/pull/1814
- @HyakoV3 made their first contribution in https://github.com/storytold/gridcraft/pull/1866
- @rdexel made their first contribution in https://github.com/storytold/gridcraft/pull/1877
- @Shnrqpdr made their first contribution in https://github.com/storytold/gridcraft/pull/1902
- @DrM7md made their first contribution in https://github.com/storytold/gridcraft/pull/1923
- @Mouhand-Kaddo made their first contribution in https://github.com/storytold/gridcraft/pull/1934
- @HaSh3003 made their first contribution in https://github.com/storytold/gridcraft/pull/1965
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.8.0...v0.9.0
GridCraft v0.8.0
- ci: add comfortable runtime limits to unbounded jobs by @skylartaylor in https://github.com/storytold/gridcraft/pull/1418
- fix(edit): recalculate all changed cells after large-range clears by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/1128
- Formula parser: Excel's 8,192-character limit and postfix nesting (never crash) by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/1330
- AutoFilter: Enter in the filter menu applies the filter and closes it by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/1588
- ci: delegate FreeBSD workflow, add nix check, and remove flatpak-pages by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/1590
- Close the control port on the first line that isn't a request by @skylartaylor in https://github.com/storytold/gridcraft/pull/1782
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.7.0...v0.8.0
GridCraft v0.7.0
- fix(calc): recalculate dependents of a cleared spill past 65536 cells (#558) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/605
- Return #VALUE! when a LAMBDA call has too few argument positions (#557) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/606
- SUBTOTAL 109-111 leave out nested subtotals like 1-11 (#556) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/607
- fix(xlsx): keep leading and trailing whitespace in document properties on reopen (#554) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/608
- Refuse XLSX export of sheet names XLSX cannot hold (#552) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/609
- Fix data.filterBy inside a table installing the sheet AutoFilter instead of toggling the table button (#547) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/611
- Fix histogram counts disagreeing with interval labels on bin boundaries (#546) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/612
- Draw data labels on area and stacked area charts (#545) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/613
- Fix chart rasterizer panic on negative rectangle extents (#542) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/616
- Return #VALUE! from FIND and SEARCH when the start is past the text end (#541) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/617
- Return zero from ROUNDDOWN and TRUNC at precisions beyond the number range (#540) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/618
- Return #NUM! from PROB for zero probabilities (#539) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/619
- Reject oversized TEXTSPLIT results before building the padded grid (#538) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/620
- Check the full PIVOTBY layout size before building column headers (#537) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/621
- HSTACK checks its padded output size before building it (#536) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/622
- Return an error when a weekday fill runs past the supported dates (#535) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/623
- Column sort rejects a zero row key with a parameter error instead of panicking (#534) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/624
- Refuse Total Row on a table that ends on the last worksheet row (#533) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/625
- Spelling: skip suggestions for words longer than 64 characters (#532) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/626
- Reject row/column insert counts past the worksheet and clamp delete counts instead of overflowing (#531) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/627
- Formula: print flat operator chains iteratively so deep trees cannot overflow the stack (#527) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/628
- Page Setup opens on the sheet's saved margins (#524) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/631
- Data Validation dialog opens on the active cell's current rule (#522) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/633
- Zoom dialog: a Magnification choice sets the percentage to store (#521) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/634
- Fix ribbon checkboxes sending the pre-click value (#520) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/635
- Keep a literal chart category with a comma or semicolon as one point on save (#519) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/636
- Read omitted val on chart smooth and showVal as on (#518) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/637
- Web: opt-in embedding bridge for host pages (?host=parent) by @CyberFox-81 in https://github.com/storytold/gridcraft/pull/237
- io: remove the .sctmp temporary file when a save fails by @SteamSmith in https://github.com/storytold/gridcraft/pull/450
- AutoFilter: the value list scrolls across the menu's full width (Fixes #432) by @tydude001 in https://github.com/storytold/gridcraft/pull/452
- i18n: add Serbian (Latin script) interface translations by @Dejan-Port in https://github.com/storytold/gridcraft/pull/453
- fix(i18n): correct scattered wrong French translations and add 2 missing keys by @Dejan-Port in https://github.com/storytold/gridcraft/pull/454
- Packaging: offer GridCraft for .xlsb and .ods files on macOS by @neilcawse in https://github.com/storytold/gridcraft/pull/457
- UI: Paste button and menus paste the system clipboard; regression test for the Paste freeze (#273) by @neilcawse in https://github.com/storytold/gridcraft/pull/461
- OFFSET: huge offsets and sizes give #REF! instead of overflowing by @webdevtodayjason in https://github.com/storytold/gridcraft/pull/466
- Data: Solver Evolutionary method, and Answer and Limits reports by @prxnvt in https://github.com/storytold/gridcraft/pull/475
- INDEX: a huge area number gives #REF! instead of overflowing by @webdevtodayjason in https://github.com/storytold/gridcraft/pull/476
- AutoFill: times, quarters, ordinals and mixed sources continue as series by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/483
- Formulas: long operator chains no longer hit the evaluator's depth limit by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/484
- Manage Rules: don't index past the list after a delete by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/485
- Merge Across: keep only the first value of each row by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/487
- INDIRECT: R1C1 offsets past the sheet give #REF! instead of overflowing by @webdevtodayjason in https://github.com/storytold/gridcraft/pull/503
- Convert TODAY and NOW to the workbook date system in 1904 workbooks (#578) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/586
- Restore frozen panes when showing a custom view (#577) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/587
- Tables: names with a hyphen or other operator characters are rejected (#576) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/588
- Reject table.resize to a range that does not overlap the table (#575) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/589
- Keep a defined name that shares a table's name when the table is renamed (#574) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/590
- Return #VALUE! for AGGREGATE without a data argument (#572) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/592
- Open files by their content, not a mismatched extension (#569) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/595
- Parse an intersection whose operand became #REF! (#568) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/596
- Parse two-digit years in spaced month-name dates (#566) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/598
- Treat serials past 9999-12-31 as out of range in the 1904 date system (#565) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/599
- Paste Special: copy the validation rule with the Validation and All options (#562) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/602
- MCP: reject invalid format_range borders as invalid params (#560) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/603
- Make gridcraft-cli check compare conditional-format rule contents, not just their count (#559) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/604
- Add OmaStore manifest by @KitsuneSemCalda in https://github.com/storytold/gridcraft/pull/99
- fix: select a newly inserted chart from Recommended Charts by @Dejan-Port in https://github.com/storytold/gridcraft/pull/448
- XLSX: write this-row structured references as [[#This Row],[Col]] by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/869
- Fix saving a custom view or script when the stored list is not a JSON object (#517) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/638
- Treat non-object params as empty in themeColors, background and drawBorder (#516) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/639
- Refuse a PivotTable that cannot fit before aggregating all column groups (#515) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/640
- Fail Web Page export on sheets taller than its row limit instead of dropping cells (#514) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/641
- xlsx: warn when hyperlinks past the 10,000-cell cap are dropped on read (#513) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/642
- Keep every range of a conditional format or validation sqref (#512) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/643
- Save a table that has only a header row and a totals row (#511) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/644
- Keep a long outline group's bracket once its first 4096 lines scroll away (#510) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/645
- fix(grid): filter dropdown installs the AutoFilter on the clicked table (#509) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/646
- Keep manually hidden and collapsed rows when removing an AutoFilter (#508) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/647
- Run the fill-handle double-click fill before the handle press returns (#507) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/648
- i18n(cs): translate 120 labels and tooltips already looked up via tr() by @Losminek in https://github.com/storytold/gridcraft/pull/652
- Compute the Top 10 filter threshold once per column (#661) by @richard1912 in https://github.com/storytold/gridcraft/pull/664
- Data validation: hide the input message while the cell's list is open (#505) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/679
- Charts: a newly inserted chart is selected, so Delete removes it (#668, #256) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/683
- Functions: COUNTIF family returns #VALUE! for criteria over 255 characters by @neilcawse in https://github.com/storytold/gridcraft/pull/686
- UI: clicking a column or row header in point mode inserts N:N / n:n (#691) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/695
- Comments pane: one Show Comments button, and the pane keeps its width by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/715
- PivotTables: values on rows (Σ Values in Rows, dataOnRows) by @neilcawse in https://github.com/storytold/gridcraft/pull/718
- cell.set / set_cell: accept a number for
input(#697) by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/720 - i18n(pt-BR): translate 546 more labels, dialog strings and tooltips by @dantebertuzzi in https://github.com/storytold/gridcraft/pull/739
- Numfmt: a negative number that rounds to zero shows no minus sign by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/740
- macOS: register the Window menu as NSApp's windowsMenu, so the tiling shortcuts work by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/741
- ROMAN: forms 2 and 3 subtract IC, XM and VM like Excel by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/744
- functions: MODE skips typed text and logical arguments by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/745
- XLS: a FORMAT record shorter than its character count keeps the characters it holds by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/746
- XLS: open compound files whose last sector isn't padded by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/748
- Formulas: keep _xludf. so user-defined calls stay user-defined by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/755
- Grid: extending the selection from the keyboard scrolls its moving end into view (#762) by @msaulc in https://github.com/storytold/gridcraft/pull/763
- Grid: the selection outline stays visible when extended to the last row (#687) by @vangel76 in https://github.com/storytold/gridcraft/pull/767
- Numfmt: scientific formats with a literal after E±, a % or a comma match Excel by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/773
- XLS: a formula kept as its saved value keeps a text result by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/821
- XLSX: keep fileVersion and calcFeatures in workbook.xml on save by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/822
- XLSX: a hyperlink to another file is saved as an external relationship by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/826
- Grid: Shift+arrows in point mode extend from the pointed cell, also up and left by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/836
- Sheet tabs: All Sheets navigator with a filter field by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/851
- Refuse to save to an unknown file extension instead of writing XLSX under it by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/879
- check: a boolean cached as 1/0 without t="b" matches, and is counted apart by @CouchRiv in https://github.com/storytold/gridcraft/pull/882
- File: Export as PDF in the File menu, and the palette asks for a path (#407) by @isaac-levine in https://github.com/storytold/gridcraft/pull/704
- XLS: array formulas fill their range on recalculation by @neilcawse in https://github.com/storytold/gridcraft/pull/460
- Functions passed by name: GROUPBY(…,SUM), BYROW(…,SUM), MAP(…,ABS) by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/486
- Chart: color pie, doughnut, treemap and sunburst points from the workbook theme (#579) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/585
- Quote sheet names when printing sheet-qualified defined names (#567) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/597
- Keep a solid data bar solid across an XLSX save and reopen (#550) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/610
- Funnel chart: hide value labels when data labels are off (#544) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/614
- Honour the gridlines flag on box-and-whisker and stock charts (#543) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/615
- Open AutoFilter header menus with Alt+Down by @derechopiano in https://github.com/storytold/gridcraft/pull/659
- Reveal the active worksheet tab after sheet navigation by @derechopiano in https://github.com/storytold/gridcraft/pull/688
- Preserve editable ink strokes across XLSX saves by @jonathanwxh-cell in https://github.com/storytold/gridcraft/pull/712
- XLS import: read the calculation settings (iteration, mode, precision as displayed) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/747
- Tables: structured references keep the spaces at the edges of a column name by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/749
- Functions: DGET and the database functions match Excel for computed, empty-string and empty-field criteria by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/751
- CELL("width") returns the Column Width dialog value, without the padding (#735) by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/753
- Data: Forecast Sheet Forecast Start option (#785) by @vangel76 in https://github.com/storytold/gridcraft/pull/786
- i18n: look up the Format Cells dialog labels in the catalog by @brzuchal in https://github.com/storytold/gridcraft/pull/788
- Page Layout view: drag the margins on the rulers (#792) by @vangel76 in https://github.com/storytold/gridcraft/pull/794
- Calc: SUBTOTAL 109 recalculates when Row Height, AutoFit or Ungroup reveal rows by @vangel76 in https://github.com/storytold/gridcraft/pull/796
- Numfmt: TEXT() and chart labels parse each format code once (#806) by @vangel76 in https://github.com/storytold/gridcraft/pull/808
- PDF: title and author are written as UTF-16BE when they are not ASCII (#813) by @vangel76 in https://github.com/storytold/gridcraft/pull/814
- PDF: text width cannot overflow; dash, stroke width and NaN sizes are sanitised (#812) by @vangel76 in https://github.com/storytold/gridcraft/pull/815
- XLSX: keep the workbook's default font on save by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/823
- XLS: formulas that use a skipped defined name keep their saved results by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/825
- UI: Enter pastes the copied range and ends copy mode by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/850
- CSV export: refuse a file over 512 MiB instead of expanding the whole used range (#528) by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/853
- check: the package round trip reports relationship kinds the save lost by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/871
- Reject out-of-range numeric filterBy columns instead of overflowing (#573) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/591
- Fix SEARCH position when text contains a char with multi-char lowercase (#571) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/593
- fix(engine): CSV named History keeps a valid sheet name (#570) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/594
- Read date text in the workbook date system in arithmetic and VALUE (#564) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/600
- Center Across Selection: center text over the empty cells to its right (#479) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/649
- View: Ctrl+wheel zoom steps along a ladder that never skips 100% (#689) by @vedran-dobos in https://github.com/storytold/gridcraft/pull/690
- Grid: deleting several Ctrl-selected rows removes them all (#758) by @vangel76 in https://github.com/storytold/gridcraft/pull/766
- Security: cell hyperlinks open only http, https and mailto, after a confirmation (#777) by @vangel76 in https://github.com/storytold/gridcraft/pull/780
- Numfmt: no panic on a fraction denominator with 65,536 zeros; format codes are capped at 255 characters (#807) by @vangel76 in https://github.com/storytold/gridcraft/pull/809
- Numfmt: format-code parsing is linear, and an unclosed [ is treated the same in both passes (#810) by @vangel76 in https://github.com/storytold/gridcraft/pull/811
- XLSX: Save As into another folder keeps links on the same workbook by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/824
- View ribbon: lay out the Show group's checkboxes in two columns by @bmh129 in https://github.com/storytold/gridcraft/pull/830
- Grid: horizontal scrollbar in the sheet tab bar by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/849
- UI: Show rule-specific data validation fields by @derechopiano in https://github.com/storytold/gridcraft/pull/854
- XLSX: keep chart sheets on open and save (#727) by @Silvertree2010 in https://github.com/storytold/gridcraft/pull/856
- EDATE and EOMONTH: serial 0 is day 0 and February 1900 has 28 days by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/742
- Functions: MIRR, COUNTIF, INDIRECT and USDOLLAR match Excel 365 by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/752
- Rows auto-fit oversized fonts on open and on row formatting (#833) by @edurbs in https://github.com/storytold/gridcraft/pull/855
- PivotTables: the PivotTable Fields pane follows the interface language by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/862
- XLSX: XML maps survive a save, with their table columns and mapped cells by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/863
- File view: the recent list tells when each workbook was last changed by @arcanii in https://github.com/storytold/gridcraft/pull/463
- UI: AutoComplete for cell values can be turned off, Backspace and Escape drop the proposal by @marcoarnulfo in https://github.com/storytold/gridcraft/pull/848
- @CyberFox-81 made their first contribution in https://github.com/storytold/gridcraft/pull/237
- @SteamSmith made their first contribution in https://github.com/storytold/gridcraft/pull/450
- @tydude001 made their first contribution in https://github.com/storytold/gridcraft/pull/452
- @prxnvt made their first contribution in https://github.com/storytold/gridcraft/pull/475
- @KitsuneSemCalda made their first contribution in https://github.com/storytold/gridcraft/pull/99
- @marcoarnulfo made their first contribution in https://github.com/storytold/gridcraft/pull/869
- @richard1912 made their first contribution in https://github.com/storytold/gridcraft/pull/664
- @dantebertuzzi made their first contribution in https://github.com/storytold/gridcraft/pull/720
- @msaulc made their first contribution in https://github.com/storytold/gridcraft/pull/763
- @CouchRiv made their first contribution in https://github.com/storytold/gridcraft/pull/882
- @isaac-levine made their first contribution in https://github.com/storytold/gridcraft/pull/704
- @jonathanwxh-cell made their first contribution in https://github.com/storytold/gridcraft/pull/712
- @brzuchal made their first contribution in https://github.com/storytold/gridcraft/pull/788
- @Silvertree2010 made their first contribution in https://github.com/storytold/gridcraft/pull/853
- @bmh129 made their first contribution in https://github.com/storytold/gridcraft/pull/830
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.6.1...v0.7.0
GridCraft v0.6.1
- selection.move: clamp extreme dr/dc to the sheet edge instead of overflowing by @webdevtodayjason in https://github.com/storytold/gridcraft/pull/232
- CHOOSE: pick element by element when the index is an array by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/252
- Add MacJedi42 to the contributor names by @MacJedi42 in https://github.com/storytold/gridcraft/pull/253
- Sort and Remove Duplicates: compare text the way Excel does by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/255
- XLSX: write one cfvo per icon in icon-set rules (#235) by @alexanderalber in https://github.com/storytold/gridcraft/pull/262
- XLSX: write
@as_xlfn.SINGLEin a dynamic-array formula (#64) by @alexanderalber in https://github.com/storytold/gridcraft/pull/267 - Fix Paste button deadlock in ribbon by @ttrudging in https://github.com/storytold/gridcraft/pull/272
- Add vangel76 to the contributor names by @vangel76 in https://github.com/storytold/gridcraft/pull/274
- UI: skip system fonts egui can't parse instead of panicking at startup (#226) by @vangel76 in https://github.com/storytold/gridcraft/pull/277
- UI: Name Box Enter goes to the typed cell, not the one below (#247) by @vangel76 in https://github.com/storytold/gridcraft/pull/282
- macOS: use the correctly padded Dock icon by @Zarvinx in https://github.com/storytold/gridcraft/pull/222
- fix: Save toolbar button and saveChanges dialog discard an in-progress cell edit by @Dejan-Port in https://github.com/storytold/gridcraft/pull/223
- XLSX: bump quick-xml 0.38 -> 0.41 (RUSTSEC-2026-0195 namespace-declaration DoS) by @pkibiego in https://github.com/storytold/gridcraft/pull/231
- Accuracy: round an exact tie at the 16th significant digit toward zero by @MacJedi42 in https://github.com/storytold/gridcraft/pull/248
- Criteria: text patterns don't match blank cells by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/250
- ci: refactor workflows to use storytold/craft-common-actions by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/336
- Do not draw the selection over the frozen pane when it lies only in the scrolling pane (#198) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/217
- Resize charts from the corner handle and the Size fields, keep typed chart and table names (#190) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/218
- Delete selected charts with the keyboard by @Zarvinx in https://github.com/storytold/gridcraft/pull/219
- i18n: Spanish interface translation (the Español option only localized formulas) by @diegozpy in https://github.com/storytold/gridcraft/pull/242
- Conditional formatting: apply every matching rule; Cell Value rules as in Excel by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/251
- AutoFilter: a selected header row filters the data below it; search box in the filter menu (#201) by @alexanderalber in https://github.com/storytold/gridcraft/pull/263
- Add German (de) interface language by @arekown in https://github.com/storytold/gridcraft/pull/271
- Functions: ODDFPRICE, ODDFYIELD, ODDLPRICE, ODDLYIELD (#275) by @vangel76 in https://github.com/storytold/gridcraft/pull/276
- Fill handle: Ctrl+drag swaps copying and extending a series (#264) by @vangel76 in https://github.com/storytold/gridcraft/pull/278
- Functions: PERCENTOF and EUROCONVERT (#279) by @vangel76 in https://github.com/storytold/gridcraft/pull/280
- Clipboard: pasted currency cells keep the number from the clipboard HTML (#257) by @vangel76 in https://github.com/storytold/gridcraft/pull/285
- Functions: BAHTTEXT (#291) by @vangel76 in https://github.com/storytold/gridcraft/pull/292
- Name Manager: New… and Edit… open the name dialog and return to the manager (#238) by @vangel76 in https://github.com/storytold/gridcraft/pull/293
- View: Interface size preference scales the whole window (#230) by @vangel76 in https://github.com/storytold/gridcraft/pull/294
- View: Formula Bar and Zoom 100% as engine commands (#289) by @vangel76 in https://github.com/storytold/gridcraft/pull/295
- Functions: TRIMRANGE (#296) by @vangel76 in https://github.com/storytold/gridcraft/pull/297
- Keep formula helpers inside the worksheet when scrolling (#200) by @webdevtodayjason in https://github.com/storytold/gridcraft/pull/228
- Typed dates before 1900 stay text; typed times past 24 hours keep their hours by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/254
- macOS: centre the window buttons in the title bar (#170) by @vangel76 in https://github.com/storytold/gridcraft/pull/323
- Issue #347: Protect Sheet and Unprotect Sheet mask the password by @LloydNicholson in https://github.com/storytold/gridcraft/pull/351
- Charts: Recommended Charts opens a dialog of chart types with previews (#215) by @vangel76 in https://github.com/storytold/gridcraft/pull/301
- XLSX: write threaded comments and persons parts, read note visibility (#300) by @vangel76 in https://github.com/storytold/gridcraft/pull/302
- Charts: Select Data edits the category axis labels; blank corner makes column 1 the categories (#287) by @vangel76 in https://github.com/storytold/gridcraft/pull/303
- Checkboxes: ribbon button, Excel's value and Delete rules, XLSX cell controls (#196) by @vangel76 in https://github.com/storytold/gridcraft/pull/305
- PivotTables: calculated fields (pivot.calculatedField) (#304) by @vangel76 in https://github.com/storytold/gridcraft/pull/306
- Review: Allow Edit Ranges with Excel-compatible password hashes (#307) by @vangel76 in https://github.com/storytold/gridcraft/pull/308
- Grid: freeze panes by dragging the freeze handles (#195) by @vangel76 in https://github.com/storytold/gridcraft/pull/309
- Grid: mirror right-to-left sheets (#146) by @vangel76 in https://github.com/storytold/gridcraft/pull/310
- Charts: PivotCharts (insert.pivotChart) (#311) by @vangel76 in https://github.com/storytold/gridcraft/pull/313
- Windows: never load Vulkan by default; OpenGL fallback when DirectX 12 can't start (#120) by @vangel76 in https://github.com/storytold/gridcraft/pull/315
- macOS: end the process in on_exit so quitting doesn't crash (#117) by @vangel76 in https://github.com/storytold/gridcraft/pull/316
- Functions: FORECAST.ETS, .CONFINT, .SEASONALITY and .STAT (#314) by @vangel76 in https://github.com/storytold/gridcraft/pull/317
- UI: title-bar light/dark switch, File › Display theme, system appearance on first run (#194, #239) by @vangel76 in https://github.com/storytold/gridcraft/pull/318
- Keyboard: Excel shortcut audit, add the missing ones (#110) by @vangel76 in https://github.com/storytold/gridcraft/pull/319
- Data: Analysis ToolPak with 13 tools and the Data Analysis dialog (#312) by @vangel76 in https://github.com/storytold/gridcraft/pull/320
- Packaging: offer GridCraft for .xlsb and .ods files (#92) by @vangel76 in https://github.com/storytold/gridcraft/pull/321
- Data: Solver with Simplex LP, integer branch and bound and a nonlinear method (#326) by @vangel76 in https://github.com/storytold/gridcraft/pull/327
- UI: File tab Backstage view (#174) by @vangel76 in https://github.com/storytold/gridcraft/pull/331
- i18n: Czech interface language (cs) by @Losminek in https://github.com/storytold/gridcraft/pull/335
- Issue #341: resizing Ctrl-selected rows or columns resizes all of them by @LloydNicholson in https://github.com/storytold/gridcraft/pull/350
- Get rid of double range copy for aggregation operations over ranges by @Fly-Style in https://github.com/storytold/gridcraft/pull/352
- Issue #348: copying multiple selections works when the areas line up, and explains when it can't by @LloydNicholson in https://github.com/storytold/gridcraft/pull/353
- Journal: sheet protection passwords aren't recorded in plain text by @LloydNicholson in https://github.com/storytold/gridcraft/pull/355
- Fix horizontal worksheet tab scrolling by @ttrudging in https://github.com/storytold/gridcraft/pull/268
- Cell: cell.set without an input is an error by @mikl0s in https://github.com/storytold/gridcraft/pull/207
- Fix Rust 1.95 Clippy warnings by @Zarvinx in https://github.com/storytold/gridcraft/pull/212
- Read the browser clock for NOW(), TODAY() and year-less dates on wasm (#202) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/216
- Review: Previous/Next Comment, Show Comments, Show All Notes, Convert to Comments (#281) by @vangel76 in https://github.com/storytold/gridcraft/pull/286
- Clipboard: Insert Copied Cells and Insert Cut Cells (#21) by @vangel76 in https://github.com/storytold/gridcraft/pull/288
- UI fonts: symbol fallback faces so interface symbols aren't boxes (#197) by @vangel76 in https://github.com/storytold/gridcraft/pull/298
- M2: fix cell vertical alignment positioning and add keytips (#241) by @AlissonFA in https://github.com/storytold/gridcraft/pull/261
- Leave the active cell unshaded inside a selected range by @arcanii in https://github.com/storytold/gridcraft/pull/265
- Glide the selection outline to a new selection; View ▸ Animations turns it off by @arcanii in https://github.com/storytold/gridcraft/pull/266
- View: Page Layout view with rulers and in-place headers and footers (#329) by @vangel76 in https://github.com/storytold/gridcraft/pull/334
- Data: Forecast Sheet (data.forecastSheet) (#322) by @vangel76 in https://github.com/storytold/gridcraft/pull/325
- XLSX/IO: read legacy .xls (BIFF8) workbooks (#121) by @vangel76 in https://github.com/storytold/gridcraft/pull/332
- XLSX: keep unmodelled parts on save (#330) by @vangel76 in https://github.com/storytold/gridcraft/pull/333
- Cell references: an invalid reference is an error instead of the active cell by @mikl0s in https://github.com/storytold/gridcraft/pull/206
- fix(ribbon): Watch Window layout in Formulas ribbon (#342) by @ege-arhan in https://github.com/storytold/gridcraft/pull/360
- Edit date cells as dates, not serial numbers (#362) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/364
- Ctrl+click on an already selected header or cell deselects it (#359) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/365
- Reorder selected columns by dragging headers by @Zarvinx in https://github.com/storytold/gridcraft/pull/211
- Feature/table slicers by @zaidshurbaji in https://github.com/storytold/gridcraft/pull/193
- web: print straight to the system print dialog, not just export by @Dejan-Port in https://github.com/storytold/gridcraft/pull/209
- Linux: the display theme asks the desktop, not winit by @gyurix in https://github.com/storytold/gridcraft/pull/203
- Preserve VBA macros + Excel-style macros UX (issue #6) by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/19
- Fix: list and render installed system fonts (#4) by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/9
- Grid: merged ranges draw their right and bottom borders (#376) by @vangel76 in https://github.com/storytold/gridcraft/pull/380
- Grid: render Shrink to fit (#375) by @vangel76 in https://github.com/storytold/gridcraft/pull/381
- Windows: compile DirectX 12 shaders with FXC, no DXC runtime needed (#339, #354) by @vangel76 in https://github.com/storytold/gridcraft/pull/382
- View: restore and save the scroll position (topLeftCell) (#378) by @vangel76 in https://github.com/storytold/gridcraft/pull/383
- Review: Protect Workbook dialog with an Excel-compatible password (#345) by @vangel76 in https://github.com/storytold/gridcraft/pull/384
- Review: Protect Sheet passwords use Excel-compatible hashes, kept in XLSX (#346) by @vangel76 in https://github.com/storytold/gridcraft/pull/387
- Keyboard: Shift+Space and Ctrl+Space select without starting an edit (#338) by @vangel76 in https://github.com/storytold/gridcraft/pull/395
- Data validation: relative formulas, checked with the value being entered by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/397
- Defined names: relative references follow the cell that uses the name by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/398
- XLSX: write the _xlfn. prefix for GROUPBY, PIVOTBY, ENCODEURL and the REGEX functions by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/399
- INDEX: arrays of row and column numbers pick a value each by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/400
- Web: native Save and Save As file picker with download fallback by @GhostMitra in https://github.com/storytold/gridcraft/pull/391
- XLOOKUP: return a reference when the result range is one by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/396
- Web & UI: resolve system theme preference and default web to system theme by @GhostMitra in https://github.com/storytold/gridcraft/pull/390
- Web: add favicon to web app index and disable dev incremental compilation by @GhostMitra in https://github.com/storytold/gridcraft/pull/392
- File: desktop Print opens the system PDF viewer, Save As offers PDF/CSV/HTML (#370, #343) by @vangel76 in https://github.com/storytold/gridcraft/pull/394
- Draw the outline band for grouped rows and columns (#373) by @itrycodinganditsbad in https://github.com/storytold/gridcraft/pull/388
- Drawing: text box formatting — run size/bold/font/outline, alignment, anchor, no outline (#377) by @vangel76 in https://github.com/storytold/gridcraft/pull/401
- UI fonts: formula bar falls back to the cell font, so Hebrew isn't boxes (#349) by @vangel76 in https://github.com/storytold/gridcraft/pull/402
- Headers and footers: first-page and even-page variants, Insert › Header & Footer edits in place (#344) by @vangel76 in https://github.com/storytold/gridcraft/pull/404
- Scatter charts of two unlabelled columns plot the first as X for one series (#428) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/438
- Rotated text follows the cell's alignment by @itrycodinganditsbad in https://github.com/storytold/gridcraft/pull/439
- Refuse formulas with the wrong argument count on entry (#363) by @shrshk in https://github.com/storytold/gridcraft/pull/409
- Keytips: table-driven sequential access-key system (issues #33, #49) by @jsymes21-byte in https://github.com/storytold/gridcraft/pull/411
- Keytips: full Excel sequential Alt table — 364 sequences, badges on every control, generated tests (fixes #33, #49) by @jsymes21-byte in https://github.com/storytold/gridcraft/pull/412
- i18n: add French (fr) interface by @pechnikov2026-star in https://github.com/storytold/gridcraft/pull/413
- CI: run cargo xtask ci on pull requests and pushes to main by @neilcawse in https://github.com/storytold/gridcraft/pull/415
- CLI: check subcommand - cached-value calc oracle and XLSX round-trip fidelity on any corpus by @neilcawse in https://github.com/storytold/gridcraft/pull/416
- Numfmt: fraction literals and zero fractions,
?pads thousands separator, TEXT booleans through text section by @neilcawse in https://github.com/storytold/gridcraft/pull/418 - Functions: MODE/VALUE/SUMPRODUCT text args, ADDRESS [Book]Sheet, Excel-style lookup bisection, SUBTOTAL skips filtered rows by @neilcawse in https://github.com/storytold/gridcraft/pull/419
- Formulas: trim-reference operators (A1:.E10, A1.:E10, A1.:.E10); read unbracketed [[#This Row],Col] by @neilcawse in https://github.com/storytold/gridcraft/pull/420
- Calc: iterative calculation for circular references (Maximum Iterations, Maximum Change) by @neilcawse in https://github.com/storytold/gridcraft/pull/421
- File formats: CSV/TSV export writes displayed values; templates and .xlsm saved with their own content types by @neilcawse in https://github.com/storytold/gridcraft/pull/422
- XLSX: strip _xlpm. from LET/LAMBDA parameters on read, keep line breaks in table columns, allow leading backslash in table names by @neilcawse in https://github.com/storytold/gridcraft/pull/423
- Charts: read, write and draw trendlines by @neilcawse in https://github.com/storytold/gridcraft/pull/424
- Engine: command-sequence fuzz harness (undo/redo, XLSX round-trip, full-recalc invariants) and the bugs it found by @neilcawse in https://github.com/storytold/gridcraft/pull/425
- CSV: saving keeps the separator the file was opened with (#426) by @vedran-dobos in https://github.com/storytold/gridcraft/pull/427
- Fix AutoFit width for table and AutoFilter dropdowns by @derechopiano in https://github.com/storytold/gridcraft/pull/433
- Open password-encrypted workbooks (Agile and Standard encryption) (#11) by @LloydNicholson in https://github.com/storytold/gridcraft/pull/436
- Print: select printers and submit jobs through craft-print by @skylartaylor in https://github.com/storytold/gridcraft/pull/459
- Release workflow: pass the Azure signing secrets by @echelon in https://github.com/storytold/gridcraft/pull/440
- @webdevtodayjason made their first contribution in https://github.com/storytold/gridcraft/pull/232
- @MacJedi42 made their first contribution in https://github.com/storytold/gridcraft/pull/253
- @alexanderalber made their first contribution in https://github.com/storytold/gridcraft/pull/262
- @ttrudging made their first contribution in https://github.com/storytold/gridcraft/pull/272
- @vangel76 made their first contribution in https://github.com/storytold/gridcraft/pull/274
- @Zarvinx made their first contribution in https://github.com/storytold/gridcraft/pull/222
- @Dejan-Port made their first contribution in https://github.com/storytold/gridcraft/pull/223
- @pkibiego made their first contribution in https://github.com/storytold/gridcraft/pull/231
- @diegozpy made their first contribution in https://github.com/storytold/gridcraft/pull/242
- @arekown made their first contribution in https://github.com/storytold/gridcraft/pull/271
- @Losminek made their first contribution in https://github.com/storytold/gridcraft/pull/335
- @Fly-Style made their first contribution in https://github.com/storytold/gridcraft/pull/352
- @mikl0s made their first contribution in https://github.com/storytold/gridcraft/pull/207
- @AlissonFA made their first contribution in https://github.com/storytold/gridcraft/pull/261
- @arcanii made their first contribution in https://github.com/storytold/gridcraft/pull/265
- @ege-arhan made their first contribution in https://github.com/storytold/gridcraft/pull/360
- @zaidshurbaji made their first contribution in https://github.com/storytold/gridcraft/pull/193
- @gyurix made their first contribution in https://github.com/storytold/gridcraft/pull/203
- @GhostMitra made their first contribution in https://github.com/storytold/gridcraft/pull/391
- @shrshk made their first contribution in https://github.com/storytold/gridcraft/pull/409
- @jsymes21-byte made their first contribution in https://github.com/storytold/gridcraft/pull/411
- @pechnikov2026-star made their first contribution in https://github.com/storytold/gridcraft/pull/413
- @neilcawse made their first contribution in https://github.com/storytold/gridcraft/pull/415
- @vedran-dobos made their first contribution in https://github.com/storytold/gridcraft/pull/427
- @derechopiano made their first contribution in https://github.com/storytold/gridcraft/pull/433
- @skylartaylor made their first contribution in https://github.com/storytold/gridcraft/pull/459
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.5.0...v0.6.1
GridCraft v0.5.0
- Desktop: write log records to standard error and a rotating log file by @switch87 in https://github.com/storytold/gridcraft/pull/8
- Default Windows startup to DirectX 12 by @DWAA1660 in https://github.com/storytold/gridcraft/pull/22
- Fix: inserting or deleting rows, columns or cells cancels copy/cut mode (#21) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/34
- Fix missing dropdown arrows on large ribbon buttons (#26) by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/35
- Fix disappearing text when editing merged cells (#40) by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/44
- Fix header double-click AutoFit for selected columns and rows (#42) by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/46
- Fix worksheet popups staying open after outside clicks (#41) by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/47
- Issue #48: rotated text with Wrap Text draws upright (grid and print) by @LloydNicholson in https://github.com/storytold/gridcraft/pull/50
- Issue #51: General numbers fit by the cell's own font, not 11pt by @LloydNicholson in https://github.com/storytold/gridcraft/pull/53
- ROUND: keep 15 significant digits when asked for 15+ digits, so ROUND(0.1+0.2,15) is 0.3 (#58) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/60
- XLSX: write _xlpm. prefix on LET/LAMBDA parameter names, strip it on read (#63) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/65
- Issue #123: SUMIF/AVERAGEIF size the sum range like the criteria range by @LloydNicholson in https://github.com/storytold/gridcraft/pull/67
- Issue #124: DATE(1900,2,29) is serial 60, as in Excel by @LloydNicholson in https://github.com/storytold/gridcraft/pull/68
- Preserve whole-sheet formatting when entering empty cells (#70) by @DWAA1660 in https://github.com/storytold/gridcraft/pull/74
- Fix the documented offscreen snapshot command (#71) by @DWAA1660 in https://github.com/storytold/gridcraft/pull/75
- Add the missing vertical worksheet scrollbar (#73) by @DWAA1660 in https://github.com/storytold/gridcraft/pull/77
- XLSX: cache #SPILL! and #CALC! as #VALUE! so Excel can open the file by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/85
- chore: bump github actions to fix Node 20 deprecation warnings by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/89
- Fix Enter navigation returning to the last clicked cell by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/94
- Recommend supported recovery steps after a screenshot timeout by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/95
- Add System appearance alongside Light and Dark themes by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/96
- Add a visible File menu to the shared ribbon by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/97
- Preview border presets and fix shared-edge removal by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/106
- Preserve quick selection drags and clarify the fill handle by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/109
- Protection: enforce locked cells for every command, keep hidden formulas hidden by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/111
- Insert/Delete Cells: adjust references like Excel by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/112
- Names: keep sheet-level names with their sheet on move, copy and delete by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/113
- Names: R1C1-style names, Create from Selection bottom/right, LAMBDA name case by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/114
- Formulas: the spill range operator (A1#) by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/115
- Preserve doubled text qualifiers in Text to Columns by @agammann in https://github.com/storytold/gridcraft/pull/119
- Publish Flatpak repository through GitHub Pages by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/81
- ci: Add RISC-V Linux build by @dylanmtaylor in https://github.com/storytold/gridcraft/pull/90
- Issue #122: Recalc: linear in the number of range formulas by @LloydNicholson in https://github.com/storytold/gridcraft/pull/66
- Issue #118: committing a cell in the web app no longer traps on the clock by @LloydNicholson in https://github.com/storytold/gridcraft/pull/125
- Import worksheet data and cached values from ODS files by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/100
- Import worksheet data and cached results from XLSB workbooks by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/101
- Fix copying selected cells as rich HTML tables by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/36
- Add initial Alt ribbon keytips and legacy shortcuts (#33) by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/43
- Allow editing and selecting text inside worksheet text boxes by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/84
- Objects: anchor modes — images/charts/shapes follow cells on sort (#5) by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/12
- File open: report password-protected (encrypted) files clearly (#11) by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/17
- Line charts: smooth (spline) curves (issue #52) by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/62
- Charts: Switch Row/Column on charts read from a file; scatter with text X values by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/116
- Render CJK text (Japanese/Chinese/Korean) instead of tofu by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/25
- i18n: switch the interface language, defaulting to the system language (#20) by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/31
- Fonts: render Thai and Hebrew (and other non-Latin scripts) instead of tofu (#32) by @justinjohn0306 in https://github.com/storytold/gridcraft/pull/38
- i18n: Brazilian Portuguese interface language (#79) by @edurbs in https://github.com/storytold/gridcraft/pull/82
- i18n: add Simplified Chinese, Korean and Russian UI by @neko233-com in https://github.com/storytold/gridcraft/pull/104
- Progress docs: re-measure against Excel 16.113.4; standard doc set; parity-checklist rename by @echelon in https://github.com/storytold/gridcraft/pull/189
- Offer an optional desktop shortcut in the Windows installer by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/108
- Support common Spanish formula names and semicolon arguments by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/98
- Preserve array evaluation for non-spilling XLSX formulas by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/83
- Add static pictures inside cells with XLSX roundtrip by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/105
- Paste Special operations: keep text, errors and formulas by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/150
- Current region: grow past 10,000 rows, in linear time by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/151
- selection.move: Ctrl+arrow without a direction no longer loops forever by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/153
- functions: MIN() accepts zero arguments by @itrycodinganditsbad in https://github.com/storytold/gridcraft/pull/159
- Rename sheet-qualified defined names with their sheet (#134) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/178
- Clamp table style number to 1 so zero-numbered styles don't underflow (#130) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/179
- Keep the untouched part of a data validation range when clearing or replacing part of it (#129) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/180
- Keep comma when a semicolon or tab is missing from some CSV lines (#127) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/181
- Deliver Export as PDF as a browser download (#141) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/182
- Shrink 3-D sheet spans when an end sheet is deleted (#140) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/183
- Honor search in the desktop engine.commands handler so connected list_commands filters (#136) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/184
- Report an error when file commands get no file in MCP and CLI (#135) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/185
- Compare numbers at 15 significant digits like Excel (#57) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/187
- Release focus when the sheet tab rename ends (#145) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/188
- Recalc: formulas over a blocked spill see #SPILL!; no spilling in tables by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/157
- Recalc: stale spills and values after edits (fixes #133, #139) by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/148
- Tables: typing in the header row renames the column; Go To a table selects its data by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/149
- Whole-sheet selection: Fill and Remove Duplicates no longer run out of memory or time by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/152
- Repeated headers: number pivot fields and table columns in linear time by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/154
- Ranges keep their size past the used range; spilled blanks show 0 by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/155
- Charts: combo and stock charts keep their kind in XLSX by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/158
- Legacy array formulas: fill the range they were entered in by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/156
- fill: clamp month and year date series to the month's last day by @itrycodinganditsbad in https://github.com/storytold/gridcraft/pull/160
- Charts: histogram, box & whisker, waterfall, funnel, treemap and sunburst keep their kind through XLSX by @nihilist-narwhal in https://github.com/storytold/gridcraft/pull/161
- macOS: open documents from Finder, the Dock and
open -a(#69) by @LloydNicholson in https://github.com/storytold/gridcraft/pull/164 - Write comment and hyperlink maps with A1 keys so JSON save works (#126) by @MarekSpodBiedry in https://github.com/storytold/gridcraft/pull/186
- Preserve formula references when cutting cells across sheets by @harrisonoconnorhover in https://github.com/storytold/gridcraft/pull/144
- Bump version to 0.5.0 for release by @echelon in https://github.com/storytold/gridcraft/pull/227
- @switch87 made their first contribution in https://github.com/storytold/gridcraft/pull/8
- @DWAA1660 made their first contribution in https://github.com/storytold/gridcraft/pull/22
- @MarekSpodBiedry made their first contribution in https://github.com/storytold/gridcraft/pull/34
- @harrisonoconnorhover made their first contribution in https://github.com/storytold/gridcraft/pull/35
- @LloydNicholson made their first contribution in https://github.com/storytold/gridcraft/pull/50
- @nihilist-narwhal made their first contribution in https://github.com/storytold/gridcraft/pull/85
- @dylanmtaylor made their first contribution in https://github.com/storytold/gridcraft/pull/89
- @agammann made their first contribution in https://github.com/storytold/gridcraft/pull/119
- @justinjohn0306 made their first contribution in https://github.com/storytold/gridcraft/pull/12
- @edurbs made their first contribution in https://github.com/storytold/gridcraft/pull/82
- @neko233-com made their first contribution in https://github.com/storytold/gridcraft/pull/104
- @itrycodinganditsbad made their first contribution in https://github.com/storytold/gridcraft/pull/159
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.4.0...v0.5.0
GridCraft v0.4.0
- macOS DMG: branded window background and icon layout by @XusBadia in https://github.com/storytold/gridcraft/pull/13
- @XusBadia made their first contribution in https://github.com/storytold/gridcraft/pull/13
Full Changelog: https://github.com/storytold/gridcraft/compare/v0.3.0...v0.4.0