What's Changed
- selection.move: clamp extreme dr/dc to the sheet edge instead of overflowing by @webdevtodayjason in #232
- CHOOSE: pick element by element when the index is an array by @nihilist-narwhal in #252
- Add MacJedi42 to the contributor names by @MacJedi42 in #253
- Sort and Remove Duplicates: compare text the way Excel does by @nihilist-narwhal in #255
- XLSX: write one cfvo per icon in icon-set rules (#235) by @alexanderalber in #262
- XLSX: write
@as_xlfn.SINGLEin a dynamic-array formula (#64) by @alexanderalber in #267 - Fix Paste button deadlock in ribbon by @ttrudging in #272
- Add vangel76 to the contributor names by @vangel76 in #274
- UI: skip system fonts egui can't parse instead of panicking at startup (#226) by @vangel76 in #277
- UI: Name Box Enter goes to the typed cell, not the one below (#247) by @vangel76 in #282
- macOS: use the correctly padded Dock icon by @Zarvinx in #222
- fix: Save toolbar button and saveChanges dialog discard an in-progress cell edit by @Dejan-Port in #223
- XLSX: bump quick-xml 0.38 -> 0.41 (RUSTSEC-2026-0195 namespace-declaration DoS) by @pkibiego in #231
- Accuracy: round an exact tie at the 16th significant digit toward zero by @MacJedi42 in #248
- Criteria: text patterns don't match blank cells by @nihilist-narwhal in #250
- ci: refactor workflows to use storytold/craft-common-actions by @dylanmtaylor in #336
- Do not draw the selection over the frozen pane when it lies only in the scrolling pane (#198) by @MarekSpodBiedry in #217
- Resize charts from the corner handle and the Size fields, keep typed chart and table names (#190) by @MarekSpodBiedry in #218
- Delete selected charts with the keyboard by @Zarvinx in #219
- i18n: Spanish interface translation (the Español option only localized formulas) by @diegozpy in #242
- Conditional formatting: apply every matching rule; Cell Value rules as in Excel by @nihilist-narwhal in #251
- AutoFilter: a selected header row filters the data below it; search box in the filter menu (#201) by @alexanderalber in #263
- Add German (de) interface language by @arekown in #271
- Functions: ODDFPRICE, ODDFYIELD, ODDLPRICE, ODDLYIELD (#275) by @vangel76 in #276
- Fill handle: Ctrl+drag swaps copying and extending a series (#264) by @vangel76 in #278
- Functions: PERCENTOF and EUROCONVERT (#279) by @vangel76 in #280
- Clipboard: pasted currency cells keep the number from the clipboard HTML (#257) by @vangel76 in #285
- Functions: BAHTTEXT (#291) by @vangel76 in #292
- Name Manager: New… and Edit… open the name dialog and return to the manager (#238) by @vangel76 in #293
- View: Interface size preference scales the whole window (#230) by @vangel76 in #294
- View: Formula Bar and Zoom 100% as engine commands (#289) by @vangel76 in #295
- Functions: TRIMRANGE (#296) by @vangel76 in #297
- Keep formula helpers inside the worksheet when scrolling (#200) by @webdevtodayjason in #228
- Typed dates before 1900 stay text; typed times past 24 hours keep their hours by @nihilist-narwhal in #254
- macOS: centre the window buttons in the title bar (#170) by @vangel76 in #323
- Issue #347: Protect Sheet and Unprotect Sheet mask the password by @LloydNicholson in #351
- Charts: Recommended Charts opens a dialog of chart types with previews (#215) by @vangel76 in #301
- XLSX: write threaded comments and persons parts, read note visibility (#300) by @vangel76 in #302
- Charts: Select Data edits the category axis labels; blank corner makes column 1 the categories (#287) by @vangel76 in #303
- Checkboxes: ribbon button, Excel's value and Delete rules, XLSX cell controls (#196) by @vangel76 in #305
- PivotTables: calculated fields (pivot.calculatedField) (#304) by @vangel76 in #306
- Review: Allow Edit Ranges with Excel-compatible password hashes (#307) by @vangel76 in #308
- Grid: freeze panes by dragging the freeze handles (#195) by @vangel76 in #309
- Grid: mirror right-to-left sheets (#146) by @vangel76 in #310
- Charts: PivotCharts (insert.pivotChart) (#311) by @vangel76 in #313
- Windows: never load Vulkan by default; OpenGL fallback when DirectX 12 can't start (#120) by @vangel76 in #315
- macOS: end the process in on_exit so quitting doesn't crash (#117) by @vangel76 in #316
- Functions: FORECAST.ETS, .CONFINT, .SEASONALITY and .STAT (#314) by @vangel76 in #317
- UI: title-bar light/dark switch, File › Display theme, system appearance on first run (#194, #239) by @vangel76 in #318
- Keyboard: Excel shortcut audit, add the missing ones (#110) by @vangel76 in #319
- Data: Analysis ToolPak with 13 tools and the Data Analysis dialog (#312) by @vangel76 in #320
- Packaging: offer GridCraft for .xlsb and .ods files (#92) by @vangel76 in #321
- Data: Solver with Simplex LP, integer branch and bound and a nonlinear method (#326) by @vangel76 in #327
- UI: File tab Backstage view (#174) by @vangel76 in #331
- i18n: Czech interface language (cs) by @Losminek in #335
- Issue #341: resizing Ctrl-selected rows or columns resizes all of them by @LloydNicholson in #350
- Get rid of double range copy for aggregation operations over ranges by @Fly-Style in #352
- Issue #348: copying multiple selections works when the areas line up, and explains when it can't by @LloydNicholson in #353
- Journal: sheet protection passwords aren't recorded in plain text by @LloydNicholson in #355
- Fix horizontal worksheet tab scrolling by @ttrudging in #268
- Cell: cell.set without an input is an error by @mikl0s in #207
- Fix Rust 1.95 Clippy warnings by @Zarvinx in #212
- Read the browser clock for NOW(), TODAY() and year-less dates on wasm (#202) by @MarekSpodBiedry in #216
- Review: Previous/Next Comment, Show Comments, Show All Notes, Convert to Comments (#281) by @vangel76 in #286
- Clipboard: Insert Copied Cells and Insert Cut Cells (#21) by @vangel76 in #288
- UI fonts: symbol fallback faces so interface symbols aren't boxes (#197) by @vangel76 in #298
- M2: fix cell vertical alignment positioning and add keytips (#241) by @AlissonFA in #261
- Leave the active cell unshaded inside a selected range by @arcanii in #265
- Glide the selection outline to a new selection; View ▸ Animations turns it off by @arcanii in #266
- View: Page Layout view with rulers and in-place headers and footers (#329) by @vangel76 in #334
- Data: Forecast Sheet (data.forecastSheet) (#322) by @vangel76 in #325
- XLSX/IO: read legacy .xls (BIFF8) workbooks (#121) by @vangel76 in #332
- XLSX: keep unmodelled parts on save (#330) by @vangel76 in #333
- Cell references: an invalid reference is an error instead of the active cell by @mikl0s in #206
- fix(ribbon): Watch Window layout in Formulas ribbon (#342) by @ege-arhan in #360
- Edit date cells as dates, not serial numbers (#362) by @MarekSpodBiedry in #364
- Ctrl+click on an already selected header or cell deselects it (#359) by @MarekSpodBiedry in #365
- Reorder selected columns by dragging headers by @Zarvinx in #211
- Feature/table slicers by @zaidshurbaji in #193
- web: print straight to the system print dialog, not just export by @Dejan-Port in #209
- Linux: the display theme asks the desktop, not winit by @gyurix in #203
- Preserve VBA macros + Excel-style macros UX (issue #6) by @justinjohn0306 in #19
- Fix: list and render installed system fonts (#4) by @justinjohn0306 in #9
- Grid: merged ranges draw their right and bottom borders (#376) by @vangel76 in #380
- Grid: render Shrink to fit (#375) by @vangel76 in #381
- Windows: compile DirectX 12 shaders with FXC, no DXC runtime needed (#339, #354) by @vangel76 in #382
- View: restore and save the scroll position (topLeftCell) (#378) by @vangel76 in #383
- Review: Protect Workbook dialog with an Excel-compatible password (#345) by @vangel76 in #384
- Review: Protect Sheet passwords use Excel-compatible hashes, kept in XLSX (#346) by @vangel76 in #387
- Keyboard: Shift+Space and Ctrl+Space select without starting an edit (#338) by @vangel76 in #395
- Data validation: relative formulas, checked with the value being entered by @nihilist-narwhal in #397
- Defined names: relative references follow the cell that uses the name by @nihilist-narwhal in #398
- XLSX: write the _xlfn. prefix for GROUPBY, PIVOTBY, ENCODEURL and the REGEX functions by @nihilist-narwhal in #399
- INDEX: arrays of row and column numbers pick a value each by @nihilist-narwhal in #400
- Web: native Save and Save As file picker with download fallback by @GhostMitra in #391
- XLOOKUP: return a reference when the result range is one by @nihilist-narwhal in #396
- Web & UI: resolve system theme preference and default web to system theme by @GhostMitra in #390
- Web: add favicon to web app index and disable dev incremental compilation by @GhostMitra in #392
- File: desktop Print opens the system PDF viewer, Save As offers PDF/CSV/HTML (#370, #343) by @vangel76 in #394
- Draw the outline band for grouped rows and columns (#373) by @itrycodinganditsbad in #388
- Drawing: text box formatting — run size/bold/font/outline, alignment, anchor, no outline (#377) by @vangel76 in #401
- UI fonts: formula bar falls back to the cell font, so Hebrew isn't boxes (#349) by @vangel76 in #402
- Headers and footers: first-page and even-page variants, Insert › Header & Footer edits in place (#344) by @vangel76 in #404
- Scatter charts of two unlabelled columns plot the first as X for one series (#428) by @MarekSpodBiedry in #438
- Rotated text follows the cell's alignment by @itrycodinganditsbad in #439
- Refuse formulas with the wrong argument count on entry (#363) by @shrshk in #409
- Keytips: table-driven sequential access-key system (issues #33, #49) by @jsymes21-byte in #411
- Keytips: full Excel sequential Alt table — 364 sequences, badges on every control, generated tests (fixes #33, #49) by @jsymes21-byte in #412
- i18n: add French (fr) interface by @pechnikov2026-star in #413
- CI: run cargo xtask ci on pull requests and pushes to main by @neilcawse in #415
- CLI: check subcommand - cached-value calc oracle and XLSX round-trip fidelity on any corpus by @neilcawse in #416
- Numfmt: fraction literals and zero fractions,
?pads thousands separator, TEXT booleans through text section by @neilcawse in #418 - Functions: MODE/VALUE/SUMPRODUCT text args, ADDRESS [Book]Sheet, Excel-style lookup bisection, SUBTOTAL skips filtered rows by @neilcawse in #419
- Formulas: trim-reference operators (A1:.E10, A1.:E10, A1.:.E10); read unbracketed [[#This Row],Col] by @neilcawse in #420
- Calc: iterative calculation for circular references (Maximum Iterations, Maximum Change) by @neilcawse in #421
- File formats: CSV/TSV export writes displayed values; templates and .xlsm saved with their own content types by @neilcawse in #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 #423
- Charts: read, write and draw trendlines by @neilcawse in #424
- Engine: command-sequence fuzz harness (undo/redo, XLSX round-trip, full-recalc invariants) and the bugs it found by @neilcawse in #425
- CSV: saving keeps the separator the file was opened with (#426) by @vedran-dobos in #427
- Fix AutoFit width for table and AutoFilter dropdowns by @derechopiano in #433
- Open password-encrypted workbooks (Agile and Standard encryption) (#11) by @LloydNicholson in #436
- Print: select printers and submit jobs through craft-print by @skylartaylor in #459
- Release workflow: pass the Azure signing secrets by @echelon in #440
New Contributors
- @webdevtodayjason made their first contribution in #232
- @MacJedi42 made their first contribution in #253
- @alexanderalber made their first contribution in #262
- @ttrudging made their first contribution in #272
- @vangel76 made their first contribution in #274
- @Zarvinx made their first contribution in #222
- @Dejan-Port made their first contribution in #223
- @pkibiego made their first contribution in #231
- @diegozpy made their first contribution in #242
- @arekown made their first contribution in #271
- @Losminek made their first contribution in #335
- @Fly-Style made their first contribution in #352
- @mikl0s made their first contribution in #207
- @AlissonFA made their first contribution in #261
- @arcanii made their first contribution in #265
- @ege-arhan made their first contribution in #360
- @zaidshurbaji made their first contribution in #193
- @gyurix made their first contribution in #203
- @GhostMitra made their first contribution in #391
- @shrshk made their first contribution in #409
- @jsymes21-byte made their first contribution in #411
- @pechnikov2026-star made their first contribution in #413
- @neilcawse made their first contribution in #415
- @vedran-dobos made their first contribution in #427
- @derechopiano made their first contribution in #433
- @skylartaylor made their first contribution in #459
Full Changelog: v0.5.0...v0.6.1