Commit Graph
1101 Commits
Author SHA1 Message Date
Marco Arnulfo 9e28655a8a ROMAN: forms 2 and 3 subtract IC, XM and VM like Excel (fixes #733) 2026-10-12 18:37:51 +02:00
Marco Arnulfo e88d3d7583 EDATE and EOMONTH: serial 0 is day 0 and February 1900 has 28 days (fixes #734)
Excel's EDATE and EOMONTH read serial 0 as 0 January 1900 and end
February 1900 on the 28th (serial 59), although the sheet itself keeps
the Lotus 29 February 1900 (serial 60). GridCraft clamped day 0 up to
day 1 and used the sheet's 29-day February, so EDATE(0,0) was 1,
EDATE(0,1) 32, EDATE(31,1) and EOMONTH(59,0) 60.

EDATE now keeps day 0 and both functions take the real calendar's month
lengths. Serial 60 still reads as 29 February, so EDATE(60,1) stays
29 March. DATE, DAY and the parser keep the leap day.

Tests: the Excel 365 table from the issue; the #124 cases that expected
60 at the end of February 1900 now expect 59.
2026-10-12 18:36:51 +02:00
Marco Arnulfo 15b346e6ca macOS: register the Window menu as NSApp's windowsMenu, so the tiling shortcuts work (fixes #716) 2026-10-12 18:36:00 +02:00
Marco Arnulfo ea5db94fe3 Numfmt: a negative number that rounds to zero shows no minus sign (fixes #729) 2026-10-12 18:35:01 +02:00
dantebertuzziandClaude Opus 5.5 de04cbe917 i18n(pt-BR): translate 546 more labels, dialog strings and tooltips
Brazilian Portuguese had 377 catalog entries, so most dialogs, menus and
tooltips showed in English with the interface set to Português (Brasil).
This adds every key the other catalogs translate (counting the open
Spanish-dialog #669, Russian #676, Czech #652, Polish #650, Turkish #663
and Italian #713 PRs), bringing pt-BR to 923 entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:29:17 -03:00
dantebertuzziandClaude Opus 5.5 857f538c08 cell.set / set_cell: accept a number for input (#697)
`input` is documented as "text, number or =formula", but only a string
was read; a JSON number was dropped and the command failed (or, on 0.5.0,
silently cleared the cell). The undocumented `value` alias already went
through `json_to_input`. Both keys now share that converter, so numbers
and booleans are entered as typed. The MCP `set_cell` schema types
`input` as string, number or boolean to match its description.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:15:06 -03:00
neilcawseandClaude Opus 5.5 1f7fd07c0d PivotTables: values on rows (Σ Values in Rows, dataOnRows)
With two or more value fields the Σ Values pseudo-field can sit in Rows
as well as Columns, at any position among the row fields. The model
records it (`PivotTable.values_on_rows`, `values_position`) and the
engine lays it out like Excel in compact, outline and tabular form: one
row item per value field at the Σ Values level, per-value subtotals
("East Sum of Sales") and grand totals ("Total Sum of Sales").

XLSX reads `dataOnRows` and the `-2` field's place in rowFields or
colFields and writes them back; the "values on rows are shown on
columns" warning is gone. `pivot.moveField` moves "Σ Values" between
Rows and Columns or within one, axis field moves keep it in place, and
the PivotTable Fields pane lists it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 12:06:30 -04:00
Marco Arnulfo 1a49d18dd1 Comments pane: one Show Comments button, and the pane keeps its width (fixes #710) 2026-10-12 18:02:02 +02:00
jonathanwxh-cell d4874373a4 #551: preserve editable ink through XLSX round trips 2026-10-12 23:54:44 +08:00
Losminek c167d59c70 Merge remote-tracking branch 'upstream/main' into cs-tooltips 2026-10-12 17:53:24 +02:00
Brandon ThomasandClaude Opus 5.5 fc45b7f6d8 Release 0.6.1: rebuild with the fixed shared release workflow
The previous release build failed in craft-common-actions, not in this
repo: riscv64 packaging got --formats deb,rpm,tar (fixed in
craft-common-actions#3), Linux jobs lacked the ALSA headers
(craft-common-actions#5), and Windows signing needed the AZURE_* secrets
listed in the caller.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.6.1
2026-10-12 11:11:15 -04:00
Brandon ThomasandClaude Opus 5.5 9cb931bac9 Release workflow: pass the Azure signing secrets so Windows builds are signed (#440)
Since the release workflow moved to storytold/craft-common-actions, it has
passed only the Apple and WINDOWS_CERTIFICATE secrets. The signing job reads
values from the release environment, but only for names the caller lists, so
the AZURE_* names that Trusted Signing uses came through empty and Windows
builds would ship unsigned. Same fix as storytold/craft-launcher#174.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:08:25 -04:00
skylar taylor-barrick 85bfcdfcfd Merge pull request #459 from storytold/codex/craft-print-onboarding
Print: select printers and submit jobs through craft-print
2026-10-12 09:05:31 -06:00
Isaac Levine 746a1e0364 File: Export as PDF in the File menu, and the palette asks for a path (#407) 2026-10-12 11:03:13 -04:00
skylar taylor-barrick 9fc4108899 Printing: expose native commands through control discovery 2026-10-12 16:50:03 +02:00
Marco Arnulfo dfb780a544 UI: clicking a column or row header in point mode inserts N:N / n:n (#691) 2026-10-12 15:56:22 +02:00
RichardandClaude Opus 5.5 ae54c84bc9 Key the cached Top 10 cutoff by criterion, not column (#661)
Two Top 10 criteria on one column (possible in native JSON files) shared one
cache entry, so the last cutoff overwrote the first. Reported by @derechopiano.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ut3hr3a13szpQdQ7gbYbfc
2026-10-13 00:10:54 +11:00
Vedran DobosandClaude Opus 5.5 3830cee850 View: Ctrl+wheel zoom steps along a ladder that never skips 100% (#689)
Each frame multiplied the whole-number zoom by egui's eased wheel
factor and rounded, so a notch out never undid a notch in:
100 -> 122 -> 101 -> 123 -> 102.

A notch now moves to the next step on WHEEL_ZOOM_LADDER (10 ... 85, 100,
120 ... 400; four per doubling, about 20% apart). A step less than 5%
away is skipped, but 100% and the limits never are, so 121% out goes
to 100% and 99% in goes to 100%. The wheel's turning is counted in
notches: parts of a notch add up, and a notch steps once 60% of it has
turned. With animations on the zoom glides to the step, and a notch
turned during a glide steps on from where it's going.

The status bar's Zoom In / Zoom Out keep their 10% steps; that, and
whether the glide needs a setting of its own, is noted in
docs/decisions.md for the maintainers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:57:57 +02:00
derechopiano f7f04df4d7 #681: Reveal the selected worksheet tab after navigation 2026-10-12 13:55:18 +01:00
Marco Arnulfo ef15e22815 Charts: a newly inserted chart is selected, so Delete removes it (#668, #256)
Only the Recommended Charts dialog selected the chart it inserted. The Insert
gallery buttons and Alt+F1 dropped the id insert.chart returns, so the selection
stayed on the source cells and Delete cleared the data instead of the chart.
SheetApp::run now selects the new chart whenever insert.chart succeeds, which
covers every caller.
2026-10-12 13:27:27 +02:00
Marco Arnulfo 2589f3f7d4 Data validation: hide the input message while the cell's list is open (#505)
The input message is a tooltip-order area just below the cell, and the in-cell
dropdown opens at the same spot, so the message covered the first items of the
list. It now stays hidden while the list picker is open on the active cell and
comes back when the list closes.
2026-10-12 13:17:09 +02:00
Brandon ThomasandClaude Opus 5.5 b3acae6b77 Release prep: 0.6.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 05:44:31 -04:00
RichardandClaude Opus 5.5 bf9a202222 Compute the Top 10 filter threshold once per column, not once per row (#661)
apply_filter cloned and sorted the column's numbers for every row it tested,
O(n^2 log n). The threshold is now computed once per criterion with the other
column stats. Adds a test for top/bottom items and percent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ut3hr3a13szpQdQ7gbYbfc
2026-10-12 20:29:00 +11:00
derechopiano 0514e537ac #441: Open AutoFilter header menus with Alt+Down 2026-10-12 09:56:52 +01:00
LosminekandClaude Opus 5.5 a33a5741d8 i18n(cs): translate 120 labels and tooltips already looked up via tr()
Ribbon tooltips and menu items, cell and header context menus, formula
bar, sheet tabs and status controls had no Czech entry and fell back to
English. Catalog-only: cs.rs, no new tr() call sites, no other language.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:25:35 +02:00
MarekSpodBiedry 7d9c0a4dd9 Center Across Selection: center text over the empty cells to its right (#479) 2026-10-12 08:41:31 +02:00
MarekSpodBiedry 8663be2c32 Keep a long outline group's bracket once its first 4096 lines scroll away (#510) 2026-10-12 08:39:55 +02:00
MarekSpodBiedry 85c7fc4d6e Zoom dialog: a Magnification choice sets the percentage to store (#521) 2026-10-12 08:39:42 +02:00
MarekSpodBiedry 9be19c98d8 Keep a literal chart category with a comma or semicolon as one point on save (#519) 2026-10-12 08:39:37 +02:00
MarekSpodBiedry 9da1814cdf Refuse a PivotTable that cannot fit before aggregating all column groups (#515) 2026-10-12 08:39:35 +02:00
MarekSpodBiedry 0ccc94edd3 Save a table that has only a header row and a totals row (#511) 2026-10-12 08:39:27 +02:00
MarekSpodBiedry ba5e871329 Run the fill-handle double-click fill before the handle press returns (#507) 2026-10-12 08:39:20 +02:00
MarekSpodBiedry 5334ae5cbc Keep manually hidden and collapsed rows when removing an AutoFilter (#508) 2026-10-12 08:39:12 +02:00
MarekSpodBiedry 8517c7c48d xlsx: warn when hyperlinks past the 10,000-cell cap are dropped on read (#513) 2026-10-12 08:39:12 +02:00
MarekSpodBiedry 3ceb50f404 Keep a solid data bar solid across an XLSX save and reopen (#550) 2026-10-12 08:39:11 +02:00
MarekSpodBiedry 310cade6e5 Formula: print flat operator chains iteratively so deep trees cannot overflow the stack (#527) 2026-10-12 08:38:48 +02:00
MarekSpodBiedry 2ce94fa581 Data Validation dialog opens on the active cell's current rule (#522) 2026-10-12 08:38:44 +02:00
MarekSpodBiedry 91873e03eb Draw data labels on area and stacked area charts (#545) 2026-10-12 08:38:28 +02:00
MarekSpodBiedry 5fbd726a11 Treat non-object params as empty in themeColors, background and drawBorder (#516) 2026-10-12 08:38:11 +02:00
MarekSpodBiedry dc6f7246a3 Page Setup opens on the sheet's saved margins (#524) 2026-10-12 08:38:09 +02:00
MarekSpodBiedry c20f4c2fcb Fail Web Page export on sheets taller than its row limit instead of dropping cells (#514) 2026-10-12 08:38:04 +02:00
MarekSpodBiedry c8a47c9fb3 Read omitted val on chart smooth and showVal as on (#518) 2026-10-12 08:37:57 +02:00
MarekSpodBiedry baac184ed8 Reject row/column insert counts past the worksheet and clamp delete counts instead of overflowing (#531) 2026-10-12 08:37:46 +02:00
MarekSpodBiedry 53df51310f Check the full PIVOTBY layout size before building column headers (#537) 2026-10-12 08:37:38 +02:00
MarekSpodBiedry 3846376937 Refuse Total Row on a table that ends on the last worksheet row (#533) 2026-10-12 08:37:37 +02:00
MarekSpodBiedry 2d0fb534a2 Fix saving a custom view or script when the stored list is not a JSON object (#517) 2026-10-12 08:37:04 +02:00
MarekSpodBiedry 9a698aa1ff Make gridcraft-cli check compare conditional-format rule contents, not just their count (#559) 2026-10-12 08:36:53 +02:00
MarekSpodBiedry 9bbb263661 HSTACK checks its padded output size before building it (#536) 2026-10-12 08:36:37 +02:00
MarekSpodBiedry 7464ce6e6e Return an error when a weekday fill runs past the supported dates (#535) 2026-10-12 08:36:31 +02:00
MarekSpodBiedry 389c539da4 Honour the gridlines flag on box-and-whisker and stock charts (#543) 2026-10-12 08:36:18 +02:00