Commit Graph
1496 Commits
Author SHA1 Message Date
quantmind-br 482c3e9481 Engine: formulas.evaluate refuses what cell entry refuses, saying why
`formulas.evaluate` (behind `gridcraft-cli eval` and MCP's `evaluate_formula`) turned any
formula that didn't parse into #NAME?, so `=SUM(1;2)` looked like an unknown function. It now
parses the way `cell.set` does (missing closing parentheses are added) and returns the same
errors: "There's a problem with this formula: expected `,` or `)`, found Semicolon", or the
wrong-argument-count message. An unknown function still evaluates to #NAME?, as in Excel.
2026-10-13 09:38:41 -03:00
Marco Arnulfo f8838b15e1 Keyboard: an arrow that commits typing ends the run of Tabs, as in Excel
Typing then Right or Down committed through the Enter/Tab path, so Right
continued the run and Down went back to its starting column. Found by
@richard1912 against Excel 365: from B2, type, Tab, type, Right, Enter
lands on D3, and with Down on C4.
2026-10-13 14:32:23 +02:00
pourie-he c05285e181 UI: support Command and Shift clicks in formula pointing 2026-10-13 23:12:38 +11:00
nihilist-narwhal 93338d06ce LAMBDA helpers: #CALC! for nested arrays, #VALUE! for wrong parameter counts
MAP, BYROW, BYCOL, SCAN and MAKEARRAY put one value in each cell, but a
LAMBDA returning several values silently gave its first one:
MAP({1,2},LAMBDA(x,{1,2})) was {1,1} and BYROW(…,LAMBDA(r,r)) the first
column. As in Excel, the whole result is now #CALC!, as arrays can't
nest (a single-value array is still fine). MAP with a LAMBDA taking a
different number of parameters than it has arrays, and BYROW or BYCOL
with one taking other than one, ran anyway; Excel gives #VALUE!.
2026-10-13 06:54:46 -05:00
nihilist-narwhal 9939819ee3 rows/cols parameters: accept a single row or column
home.insertRows {"rows":"3"} and home.insertColumns {"cols":"B"}
failed with "not a range": only spans such as 3:3 or B:B parsed. The
same went for deleting, hiding, sizing and grouping rows and columns.
A single row number or column letter now means that one line.
2026-10-13 06:54:31 -05:00
nihilist-narwhal 260da4e752 Recalc: an array that spills as before doesn't requeue its dependents
After each round, every array formula that was evaluated queued the
dependents of its spill area again, even when it spilled the same area
with the same values. Two arrays that read each other's spill areas
then queued each other in every round, up to the limit of 8: one edit
evaluated 24 formulas instead of 3. An unchanged spill now leaves its
dependents alone. last_recalc_cells counts the formulas of all rounds.
2026-10-13 06:54:21 -05:00
nihilist-narwhal 785913ed47 Flash Fill: read the text cells show
Flash Fill read stored values, so a date was the serial number 45306,
not 2024-01-15: with "15/01/2024" given for 2024-01-15 it found no
part of the source in the example and filled every row with
"15/01/2024" again. It now reads the cells' displayed text, as Excel
does.
2026-10-13 06:54:20 -05:00
nihilist-narwhal a98239e1d1 Format Cells: take the documented camelCase style keys
home.formatCells documents {style: {numFmt?, ...}}, but the style patch
was merged with the style's snake_case field names, so numFmt (and
borders.diagUp/diagDown) were silently ignored. camelCase keys in the
patch are now renamed to the style's own; snake_case keys still work.
2026-10-13 06:54:20 -05:00
Marco Arnulfo 4d5360fd90 Sheet tabs: Ctrl-drag (Cmd or Option on macOS) drops a copy of the sheet (fixes #971) 2026-10-13 12:21:52 +02:00
Marco Arnulfo 3272097e15 Control: Go To and Select over the control channel scroll the active cell into view (fixes #966) 2026-10-13 12:02:55 +02:00
RichardandClaude Opus 5.5 4bcc5c87d1 Ribbon: Font Size box matches the Font name box, list drops under it
The size box is one frame with the Font name box's fill, border, height and
corners, with the text field and the dropdown arrow inside it (focus shows
the selection stroke). The size list drops directly below the box and is as
wide as it, instead of opening 220 pt wide under the arrow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ut3hr3a13szpQdQ7gbYbfc
2026-10-13 20:09:54 +11:00
Anirudh Sharma 8f9338a5ec fix(fill): respect workbook date system in monthly autofill 2026-10-13 14:21:00 +05:30
Marco Arnulfo 4ec6a373b0 Ribbon: Font Size is a box you type into, the sizes behind its arrow (fixes #932) 2026-10-13 10:35:59 +02:00
Marco Arnulfo f644004cc6 Sheet tabs: New sheet (+) right after the last tab, the strip capped at 60% (part of #943) 2026-10-13 10:35:14 +02:00
Brandon ThomasandClaude Opus 5.5 4c70a46377 i18n: Enable AutoComplete for cell values in every catalog
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:04:02 -04:00
Brandon Thomas f4bd752bdc Merge main into #848 2026-10-13 02:03:38 -04:00
Brandon Thomas ebe0138d30 Merge main into #855
# Conflicts:
#	ROADMAP.md
#	docs/gaps.md
#	docs/target-app-parity.md
2026-10-13 01:52:08 -04:00
Marco Arnulfo a54cf58f2e Keyboard: Enter after a run of Tabs goes to the next row in the column the run started from (fixes #911) 2026-10-13 07:48:23 +02:00
Brandon Thomas be003d44af Merge main into #863
# Conflicts:
#	crates/xlsx/src/tests/passthrough_tests.rs
2026-10-13 01:40:22 -04:00
Brandon Thomas 72e7590c8c Merge main into #862
# Conflicts:
#	crates/ui-egui/tests/interaction.rs
2026-10-13 01:40:11 -04:00
Brandon Thomas 08cbb69585 Merge main into #463
# Conflicts:
#	docs/ui-parity.md
2026-10-13 01:40:00 -04:00
Brandon Thomas 80d282e7a5 Merge pull request #752 from marcoarnulfo:fix/function-excel-diffs-738 2026-10-13 01:39:44 -04:00
Brandon Thomas 5144bd5b17 Merge pull request #742 from marcoarnulfo:fix/edate-eomonth-1900 2026-10-13 01:39:43 -04:00
Marco Arnulfo 06c8ff640d Keytips: Alt, F opens the File view, and its F letters still run (part of #893) 2026-10-13 07:31:28 +02:00
Brandon ThomasandClaude Opus 5.5 8108dbccc6 Fix-up: close the passthrough tests the merges left open; rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:21:57 -04:00
Brandon Thomas a2bf1b3ad5 Merge main into #854
# Conflicts:
#	crates/ui-egui/src/dialogs.rs
2026-10-13 01:17:14 -04:00
Brandon ThomasandClaude Opus 5.5 77f5799bf1 Test: drop the unused Color32 import
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:16:10 -04:00
Brandon ThomasandClaude Opus 5.5 99f202b18a Tab bar: the scrollbar-reachable test checks #849's scrollbar track; drop the unused Color32 import
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:13:38 -04:00
Marco Arnulfo d0d4d26c74 UI: File › Account shows the version, platform and licence, with an About GridCraft button (fixes #896) 2026-10-13 07:12:34 +02:00
Brandon Thomas 4536bc7fc8 Merge main into #849
# Conflicts:
#	crates/ui-egui/src/grid.rs
#	crates/ui-egui/src/tabs.rs
#	docs/ui-parity.md
2026-10-13 01:07:17 -04:00
Brandon ThomasandClaude Opus 5.5 afb6eca31f Test: drive the linear-time parse check through the uncapped parser
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:06:20 -04:00
Brandon Thomas be45ccab31 Merge main into #811
# Conflicts:
#	ROADMAP.md
#	crates/numfmt/src/parse.rs
#	crates/numfmt/src/tests.rs
2026-10-13 01:05:45 -04:00
Brandon ThomasandClaude Opus 5.5 499bf2c0a7 Test: the uncached long TEXT() code stays under the 255-character cap
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:05:06 -04:00
Brandon Thomas 0c488f79b3 Merge main into #809
# Conflicts:
#	ROADMAP.md
#	crates/numfmt/src/lib.rs
#	crates/numfmt/src/tests.rs
#	crates/xlsx/src/tests/malformed.rs
2026-10-13 01:04:29 -04:00
Brandon Thomas 2d0a3f8a47 Merge main into #780
# Conflicts:
#	ROADMAP.md
#	crates/engine/src/cmd/insert.rs
#	crates/engine/src/tests.rs
2026-10-13 01:02:28 -04:00
Brandon Thomas 20d6923cb6 Merge main into #766
# Conflicts:
#	ROADMAP.md
#	crates/engine/src/cmd/sheet.rs
2026-10-13 01:00:59 -04:00
Brandon Thomas c6ab899259 Merge #824 fix-up 2026-10-13 00:57:02 -04:00
Brandon ThomasandClaude Opus 5.5 20309f6e99 Fix-up: close the Save As link test the merge left open
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:57:02 -04:00
Brandon Thomas 9c773166f9 Merge #594 fix-up 2026-10-13 00:55:57 -04:00
Brandon ThomasandClaude Opus 5.5 623997a19e Fix-up: close the CSV history-name test the merge left open
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:55:57 -04:00
Brandon Thomas 9972a75f10 Merge main into #824
# Conflicts:
#	crates/engine/src/cmd/file.rs
#	crates/engine/src/tests.rs
#	crates/xlsx/src/tests/passthrough_tests.rs
2026-10-13 00:53:41 -04:00
Brandon Thomas b3ad57982e Merge main into #830
# Conflicts:
#	crates/ui-egui/src/ribbon.rs
2026-10-13 00:53:05 -04:00
Brandon Thomas 3c4556bb04 Merge main into #856
# Conflicts:
#	ROADMAP.md
#	crates/model/src/lib.rs
#	crates/xlsx/src/tests/passthrough_tests.rs
#	docs/file-format-parity.md
2026-10-13 00:52:57 -04:00
Bryan MarkandClaude Opus 5.5 b112b56424 Merge branch 'main' into recent-modified
Brings the branch up to upstream's main (180 more commits). One conflict,
and one thing the merge needed that was no conflict:

- docs/ui-parity.md: every line of both sides is kept, as upstream's own
  merges keep them (its heading has three lines now); this change's
  heading line and history row come first.
- crates/ui-egui/src/i18n/pt.rs: upstream's Portuguese catalog gained a
  "Yesterday" of its own, with the same word ("Ontem"). The one this change
  added is left out: a second arm for the same text is unreachable.

Gate: all eight steps, 1548 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:50:13 +09:00
Brandon Thomas cc0b7c18d1 Merge main into #600
# Conflicts:
#	crates/calc/src/eval.rs
2026-10-13 00:49:39 -04:00
Brandon Thomas fe26486eb5 Merge main into #690
# Conflicts:
#	crates/ui-egui/src/grid.rs
#	docs/ui-parity.md
2026-10-13 00:48:41 -04:00
Brandon Thomas 0068c8f517 Merge main into #649
# Conflicts:
#	crates/ui-egui/src/grid.rs
2026-10-13 00:48:39 -04:00
Brandon Thomas b464a7f242 Merge main into #594
# Conflicts:
#	crates/engine/src/io.rs
2026-10-13 00:48:36 -04:00
Brandon Thomas c888e81d71 Merge main into #593
# Conflicts:
#	crates/functions/src/text.rs
2026-10-13 00:48:34 -04:00
Brandon Thomas 2f33d43546 Merge main into #591
# Conflicts:
#	crates/engine/src/cmd/data.rs
2026-10-13 00:41:59 -04:00