What's Changed
- Ribbon: Font Size value is centered in its box (fixes #3155) by @kenkanuma in #3161
- Data validation and conditional formats: anchor relative formulas on the top-left cell of all areas (#3152) by @ljkx in #3173
- Ribbon test: pin macOS for the AutoSum tooltip, so it passes on a Mac by @Aimarmndz in #3179
- Charts: decimate area top and baseline at paired horizontal indices by @neilcawse in #3132
- check: find volatile defined names with a worklist instead of repeated passes by @dylanmtaylor in #3187
- Protection: authorize the sheet a column move changes; refuse edits that unlock locked cells by @dylanmtaylor in #3196
- xlsx: rename repeated table headers without retrying handed-out suffixes by @dylanmtaylor in #3213
- XLSX: write the XLDAPR extension URI in lower case next to in-cell pictures (part of #2339) by @hectorviov in #3217
- PivotTables: dense rank ties and the "Count of" caption for Count Numbers (part of #1448) by @hectorviov in #3219
- Open a web page's table as a sheet, also when it is named .xls (fixes #3166) by @hectorviov in #3223
- XLSX: checkboxes no longer make Excel repair the file (fixes #2630) by @hectorviov in #3225
- Ctrl+. moves to the next corner of the selection (fixes #1442) by @hectorviov in #3226
- XLSX: write page margins as their decimals (part of #1609) by @hectorviov in #3228
- XLSX: keep a workbook's R1C1 reference style through open and save (part of #2809) by @hectorviov in #3234
- Frozen panes: frozen columns keep their text, gridlines and borders while scrolling (#2544) by @adifiedio in #3237
- Show or hide a workbook's sheet tabs and scroll bars (fixes #3101) by @hectorviov in #3239
- Charts and macro examples unquote sheet names as formulas do (fixes #2012) by @hectorviov in #3243
- A linked cell's menu edits, opens or removes its link (fixes #2120) by @hectorviov in #3244
- Key tips: Excel 2003 menu access keys (Alt+I, R; Alt+D, S; …) (#941, #2311) by @hectorviov in #3250
- Clipboard: paste a picture from the system clipboard at the active cell (#699) by @adifiedio in #3251
- Open SYLK (.slk) files: values, R1C1 formulas, number formats, widths (#1481) by @hectorviov in #3253
- Find and Replace: search only the selected range (#3224) by @hectorviov in #3254
- Point mode: dragging over row or column headers extends the reference by @Morzilla in #3267
- Options: highlight the active cell's row, as a global preference by @Morzilla in #3268
- Drag and drop asks before replacing data (fixes #3136) by @hectorviov in #3216
- GROUPBY: total depth 2 or more adds subtotals (part of #1456) by @hectorviov in #3221
- Draw: the live pen stroke is drawn as the ink it commits (fixes #1786) by @hectorviov in #3229
- Copy quotes only cells with a tab or line break, as Excel does (fixes #2225) by @hectorviov in #3231
- XLSX: keep "remove personal information on save" and honour it (part of #3089) by @hectorviov in #3238
- Paste Special: every option has its Excel access key (fixes #1482) by @hectorviov in #3240
- xlsx: repair repeated sheet names through a set of assigned names by @dylanmtaylor in #3211
- PDF export: wrap text with running widths by @dylanmtaylor in #3208
- engine: PivotTable filters test each record against a set of selected labels by @dylanmtaylor in #3279
- check: charge relationship parts to the package's decompression budget by @dylanmtaylor in #3185
- calc: cap the text one & over arrays may build in all by @dylanmtaylor in #3189
- calc: list each dependent once when a change spreads by @dylanmtaylor in #3190
- Security: MODE counts through an index, FREQUENCY bins by binary search by @dylanmtaylor in #3198
- ods: charge a cell's text when the cell is read, not when its row ends by @dylanmtaylor in #3257
- functions: NUMBERVALUE strips trailing percent signs in one pass by @dylanmtaylor in #3262
- functions: match TEXTSPLIT/TEXTBEFORE/TEXTAFTER delimiters through an index, within a work limit by @dylanmtaylor in #3263
- engine: weekday fill series moves by whole weeks by @dylanmtaylor in #3272
- engine: cap header and footer sections at 64 KiB when fields expand by @dylanmtaylor in #3284
- chart, numfmt: treemap rows grow in constant time per item; General fit clamps its width by @dylanmtaylor in #3290
- engine: protection checks for filter, outline, row/column size, picture, pivot and edit-range paths by @dylanmtaylor in #3296
- chart: series without values take no span entries in cartesian rendering by @dylanmtaylor in #3300
- ui-egui: formula reference colouring in linear time; bounded fill-character repeats by @dylanmtaylor in #3311
- formula, calc: bounded LET/LAMBDA name lookup; ragged array literals refused before reserving by @dylanmtaylor in #3312
- Pass the Linux signing key to the release workflow by @dylanmtaylor in #3380
- XLSX: the XML element cap counts only elements kept in the tree by @RedBearAK in #2527
- link: require confirmation for programmatic link.open (#2181) by @Higgs32584 in #2203
- Form controls: buttons, sliders and spin buttons, with Assign Action, Format Control and XLSX round trip by @prxnvt in #481
- About: credits tables fit without side-scrolling and their columns resize by @FredApps in #3320
- Charts: draw every doughnut series as a ring by @alosslessdev in #1827
- UI: RefEdit follow-ups: a dialog keeps the sheet it was opened on, a click on the selected cell picks, quoted sheet names in Solver by @prxnvt in #3180
- Web: page host mode, so a page can host GridCraft in its own document (#2592) by @helenkwok in #2593
- i18n: German context menus' Insert reads "Zellen einfügen", not a second "Einfügen" (#2874) by @ZIDAN44 in #3425
- fix(calc): apply "Set precision as displayed" in calculation by @Harrison-Booth in #1366
- Paste of a whole-column or whole-row copy no longer aborts the app by @Harrison-Booth in #2018
- xlsx: stop memory amplification from declared sizes (#2173) by @Higgs32584 in #2197
- Copy the shared house rules into AGENTS.md by @FredApps in #3487
New Contributors
- @kenkanuma made their first contribution in #3161
- @ljkx made their first contribution in #3173
- @hectorviov made their first contribution in #3217
- @adifiedio made their first contribution in #3237
- @Morzilla made their first contribution in #3267
- @FredApps made their first contribution in #3320
- @ZIDAN44 made their first contribution in #3425
Full Changelog: v0.16.1...v0.17.0