Commit Graph
1133 Commits
Author SHA1 Message Date
Dylan M. Taylor e91e7f7a68 ci: delegate FreeBSD workflow, add nix check, and remove flatpak-pages 2026-10-15 20:47:20 -04:00
skylar taylor-barrick bb685e3275 Merge pull request #1588 from marcoarnulfo/fix/filter-menu-enter-applies
AutoFilter: Enter in the filter menu applies the filter and closes it
2026-10-15 18:28:45 -06:00
Marco Arnulfo fda8e7b703 AutoFilter: Enter in the filter menu applies the filter and closes it (fixes #1516) 2026-10-16 01:13:10 +02:00
NetterSilverandClaude Haiku 5.5 1ab9e60d88 Reject formula number literals too large for f64 as parse errors
Found while testing crates/formula/src/lexer.rs:258

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 22:23:34 +02:00
Nihilist NarwhalandClaude Opus 5.5 82ee02aac4 Formula parser: Excel's 8,192-character limit and postfix nesting (never crash) (#1330)
A hostile file could abort any process that opens it: a cell formula of a
million `%` (`1%%%…`) or a 200,000-term sum parsed into trees deep enough to
overflow the stack when printed, saved, evaluated or dropped, even in release
builds. Postfix operators (`%`, invoking a result) built their nesting in a
loop that the 256-level limit did not see.

- `parse` refuses formula text longer than Excel's 8,192 characters
  (`MAX_FORMULA_LEN`, counted in characters, the leading `=` excluded). This
  also bounds the depth of the left-deep trees long operator chains build.
- Each postfix `%` and each call of a result counts towards the nesting limit.
- A file's formula that is refused keeps its text and cached value, as other
  unparsable formulas do.

Regression tests: formula (small-stack thread: long `%`, invoke and operator
chains are errors; the limit counts characters, not bytes) and xlsx
(`hostile_formula_text_does_not_overflow_the_stack`: open, save and drop a
workbook with such formulas and a defined name on a 1 MiB stack). Both abort
with a stack overflow without the fix.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:39:28 -06:00
Harrison O'Connor-Hoover 79e85c1b80 fix(edit): recalculate every cell changed by large clears (#1032) (#1128) 2026-10-15 13:38:13 -06:00
wstock 348d955a0a Conditional formatting: text rules never match an error value (#1162)
In Excel the "contains", "begins with" and "ends with" rules are
SEARCH/LEFT/RIGHT formulas, which fail on an error value, so an error
cell is never formatted by them and always matches "does not contain".
GridCraft matched on the error's display text instead, so #N/A
"contained" a and "began with" #.

Skip error values in the three positive rules and match them in
notContainsText, with a regression test over =NA(), =1/0 and text cells.
2026-10-15 06:57:38 +00:00
CouchRiv bc524fa48e Merge remote-tracking branch 'up/main' into fix/conditional-format-style-colors 2026-10-15 01:36:05 -04:00
skylar taylor-barrickandskylartaylor e6b6b34970 ci: add comfortable runtime limits to unbounded jobs (#1418)
Co-authored-by: skylartaylor <26588250+skylartaylor@users.noreply.github.com>
2026-10-15 05:16:03 +02:00
derechopiano be20ca163d UI: keep PivotTable field-list scrollbar at pane edge 2026-10-15 04:13:02 +01:00
Mario f9802ecc9d Improved font dropdown row sizing and scroll alignment 2026-10-15 01:15:15 +02:00
Mario 50f8c0d42b Fix font dropdown resizing and keyboard navigation 2026-10-14 22:16:10 +02:00
Brandon ThomasandClaude Opus 5.5 d9d09f0baa Release 0.7.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.7.0
2026-10-14 09:33:30 -04:00
Marco Arnulfo f519fd67f6 XLSX: keep a dxf's protection, font size and face, and the font parts it turns off (part of #1209) 2026-10-14 04:49:33 +02:00
vangel76andClaude Sonnet 5.5 1539500b7f Conditional formats: statistics only for rules that read them, borrowed not cloned per cell (#1098)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 20:11:02 +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
Marco Arnulfo 5a7fbfa5b8 Contributors: add my real name 2026-10-13 10:46:07 +02:00
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
Brandon Thomas 84acf6293b Merge pull request #848 from marcoarnulfo:feat/cell-autocomplete 2026-10-13 02:04:03 -04: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 ThomasandClaude Opus 5.5 589b59defc Docs: one Last updated line per doc after the merges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:02:41 -04:00
Brandon Thomas fefe3a0c27 Merge pull request #463 from arcanii:recent-modified
# Conflicts:
#	docs/ui-parity.md
2026-10-13 02:02:30 -04:00
Brandon Thomas 3753d7cf08 Merge pull request #855 from edurbs:row-autofit-833 2026-10-13 01:52:13 -04:00
Brandon ThomasandClaude Opus 5.5 a8cd6f4b63 Drop the planning notes from the PR
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:52:12 -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
Bryan MarkandClaude Opus 5.5 11838c58c6 Merge branch 'main' into recent-modified
Brings the branch up to upstream's main (59 more commits). One conflict:

- docs/ui-parity.md: every line of both sides is kept, as upstream's own
  merges keep them, in the order of their dates, newest first (upstream
  has a change of the 13th now, which goes above this one of the 12th).

Gate: all eight steps, 1580 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:48:48 +09:00
Brandon Thomas f353ec7fa4 Merge pull request #863 from marcoarnulfo:fix/xlsx-xml-maps 2026-10-13 01:40:22 -04: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 a4ca87ab2a Merge pull request #862 from marcoarnulfo:fix/pivot-fields-pane-i18n 2026-10-13 01:40:11 -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 884585a344 Merge pull request #463 from arcanii:recent-modified 2026-10-13 01:40:00 -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
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 8272c991b9 Merge pull request #854 from derechopiano:fix/data-validation-dialog 2026-10-13 01:17:15 -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 Thomas e2a6aacf78 Merge #849 fix-up 2026-10-13 01:16:10 -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 Thomas 6503df5411 Merge #849 fix-up 2026-10-13 01:13:38 -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
Brandon Thomas 2b36221890 Merge pull request #849 from marcoarnulfo:feat/horizontal-scrollbar 2026-10-13 01:07:18 -04: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 Thomas ebea0c94d1 Merge #811 test fix 2026-10-13 01:06:20 -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 aa02516162 Merge pull request #811 from vangel76:fix/numfmt-parse-linear 2026-10-13 01:05:46 -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 Thomas 0703575b04 Merge #809 test fix 2026-10-13 01:05:06 -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