aiongg
4fd7657508
Merge PR #1068 : Ribbon: more currency symbols in the Accounting Number Format menu
...
crates/ui-egui/src/ribbon.rs: kept main's single_area/whole_lines helpers and the PR's accounting_symbol_tests module (both appended at end of file).
2026-10-22 02:34:45 +00:00
aiongg
941da33355
Merge PR #1432 : Stop BINOM.INV/CRITBINOM hanging when trials exceed 2^53
2026-10-22 02:34:45 +00:00
aiongg
522b8a1f42
Merge PR #1225 : XLSX: keep a dxf's protection, font size and face, and the font parts it turns off
2026-10-22 02:34:44 +00:00
aiongg
d34e3db0b8
Merge PR #949 : Sheet tabs: New sheet (+) right after the last tab, the strip capped at 60%
...
Conflicts: docs/ui-parity.md (header change text, sheet tabs row and change log: union of both sides)
2026-10-22 02:34:44 +00:00
aiongg
e51bc1ab70
Merge PR #1136 : Grid: per-frame work no longer scales with the whole sheet ( #1098 )
2026-10-22 02:34:44 +00:00
aiongg
8e931b24b4
Merge PR #898 : UI: File › Account shows the version, platform and licence, with an About GridCraft button
...
crates/ui-egui/tests/file_menu.rs: kept both tests (translated headings, account/About).
2026-10-22 02:34:43 +00:00
aiongg
7f9cf33bfd
Merge PR #632 : Header & Footer dialog opens on the saved header and footer
...
crates/ui-egui/tests/interaction.rs: keep both new tests
2026-10-22 02:34:42 +00:00
aiongg
a3baf552a1
Merge PR #1281 : N() converts a computed array element by element, so it works inside SUMPRODUCT
...
crates/calc/src/tests.rs: kept both tests (union).
2026-10-22 02:34:42 +00:00
aiongg
91af0c60d6
Merge PR #952 : Ribbon: Font Size is a box you type into, the sizes behind its arrow
...
contributors/people.toml: kept both new entries
2026-10-22 02:34:40 +00:00
aiongg
7bf0c8dbd7
Merge PR #1249 : Headers: mark hidden columns and rows, split cursor and double-click to unhide ( #1247 )
2026-10-22 02:34:39 +00:00
aiongg
4ec2de2501
Merge PR #1248 : Opening an XLSX with a part over 512 MB says how to get the data in
2026-10-22 02:34:39 +00:00
aiongg
2cbd39ca8d
Merge PR #1223 : Sheet tabs: right-clicking a tab activates its sheet
2026-10-22 02:34:39 +00:00
aiongg
2c73c2b18f
Merge PR #1214 : Grid: an armed Format Painter pastes onto the next cells clicked or dragged
2026-10-22 02:34:39 +00:00
aiongg
1f1be405c1
Merge PR #1427 : Recalc: an anchor's new formula no longer reads its old spill area
2026-10-22 02:34:37 +00:00
aiongg
4434e142fb
Merge PR #1380 : xlsx: keep every property of the default cell format when importing a file
2026-10-22 02:34:37 +00:00
aiongg
ccc0e8cfe4
Merge PR #885 : Row, column and freeze commands act on the sheet they are given
2026-10-22 02:34:36 +00:00
aiongg
c4389fcacb
Merge PR #701 : Keep sheet navigation on visible worksheets at workbook boundaries
2026-10-22 02:34:36 +00:00
aiongg
cedaa46916
Merge PR #1156 : XLSX: [Content_Types].xml is the first zip entry, workbook parts precede document properties, so libmagic detects the file type ( #1090 )
2026-10-22 02:34:36 +00:00
aiongg
947930e889
Merge PR #584 : Refuse inserting cells that would push values off the worksheet ( #580 )
2026-10-22 02:34:36 +00:00
aiongg
c470450eb3
Merge PR #1091 : i18n: add Polish (pl) interface, full catalog (970 labels)
2026-10-22 02:34:35 +00:00
aiongg
ed4b4e1ca7
Merge PR #663 : i18n: Turkish (tr) interface language
2026-10-22 02:34:35 +00:00
aiongg
0e077cfd88
Merge PR #1974 : In-cell editor: a Wrap Text cell edits wrapped at the column width ( #1970 )
2026-10-22 02:34:35 +00:00
aiongg
f55cbcd061
Merge PR #1237 : BAHTTEXT: a final one after the millions reads เอ็ด
2026-10-22 02:34:35 +00:00
aiongg
bd4c875225
Merge PR #884 : Conditional formats: hex colours in a custom style, and no more silently empty or never-matching rules
2026-10-22 02:34:35 +00:00
aiongg
8a7f0348b6
Merge PR #1120 : Open notice: do not promise to keep macros that were dropped ( #1024 )
2026-10-22 02:34:35 +00:00
aiongg
8041fbfc22
Merge PR #451 : perf: fill-handle double-click scans a dense neighbour column ~2.4x faster
2026-10-22 02:34:35 +00:00
aiongg
91be133965
Merge PR #1114 : Read date text arguments in the workbook date system ( #1038 )
2026-10-22 02:34:35 +00:00
aiongg
34de196c9f
Merge PR #1119 : Fix xlsx: combine escaped UTF-16 surrogate pairs when decoding strings ( #1025 )
2026-10-22 02:34:35 +00:00
aiongg
a0a4b6a7d0
Merge PR #1105 : Fix row keys merging distinct text rows in UNIQUE and grouping ( #1012 )
2026-10-22 02:34:35 +00:00
aiongg
2c22070a62
Merge PR #1060 : LAMBDA helpers: #CALC! for nested arrays, #VALUE! for wrong parameter counts
2026-10-22 02:34:35 +00:00
aiongg
307b25dc92
Merge PR #488 : Build: the ui-egui build script reads CARGO_MANIFEST_DIR when it runs
2026-10-22 02:34:34 +00:00
aiongg
a48f418a77
Merge PR #831 : i18n: test that translations keep the shape of their English
2026-10-22 02:34:34 +00:00
aiongg
df39416e36
Merge PR #1115 : Cap CSV import fields per record at the worksheet column limit ( #1037 )
2026-10-22 02:34:34 +00:00
aiongg
340ce131ef
Merge PR #1340 : calc: calculate long dependency chains with bounded stack
2026-10-22 02:34:33 +00:00
aiongg
136a8fa07e
Merge PR #1337 : Selection: whole columns and rows don't widen to merged cells
2026-10-22 02:34:33 +00:00
aiongg
ec5e939677
Merge PR #1104 : xlsx: keep the first group's series kind when importing a combination chart ( #1014 )
2026-10-22 02:34:33 +00:00
aiongg
a4c53ad020
Merge PR #1061 : Recalc: an array that spills as before doesn't requeue its dependents
2026-10-22 02:34:33 +00:00
aiongg
954f30f9f4
Merge PR #1058 : Format Cells: take the documented camelCase style keys
2026-10-22 02:34:33 +00:00
aiongg
f8f7193f52
Merge PR #1084 : Data validation: a list typed without quotes is saved as a quoted list, and an unknown type is refused
2026-10-22 02:34:32 +00:00
aiongg
0288ad2f31
Merge PR #630 : Cap queued pointer events from ui.click/ui.drag control requests ( #525 )
2026-10-22 02:34:31 +00:00
aiongg
9aed6fb534
Merge PR #1102 : CSV export: check the size cap before each field, not after the row ( #1023 )
2026-10-22 02:34:31 +00:00
aiongg
f295fa0947
Merge PR #629 : Make check --json list warning messages instead of a count ( #526 )
2026-10-22 02:34:30 +00:00
Higgs32584 and Claude Opus 5.5
06b7d09a7e
clipboard: drop wall-clock timing from span test (clippy)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 21:28:47 -04:00
Higgs32584 and Claude Opus 5.5
5392d95bf8
scripts: require workbook trust before running embedded scripts ( #2178 )
...
A workbook opened with GridCraft scripts (`_sc_scripts`) starts untrusted:
automate.runScript refuses them until the user trusts the workbook for the
session (Macros dialog > Trust Scripts, i.e. automate.trustScripts) or the
caller passes `trusted: true` for that one run. Workbooks without scripts,
and scripts written in the session, are unaffected.
Whatever the trust, a script whose steps reach outside the workbook
(file.*, link.*, or any `path` param: Get Data, From Text/CSV, Insert
Picture) is refused before any step runs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 21:13:13 -04:00
Higgs32584 and Claude Opus 5.5
b817c04a9b
clipboard: bound HTML colspan/rowspan expansion ( #2171 )
...
Clipboard HTML is read only as far as the pasted text's shape (clamped
to the sheet) and at most 1,000,000 cells; colspan/rowspan are clamped
to the sheet extent before expanding, and rowspan now keeps later rows
in their columns.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 21:06:51 -04:00
Higgs32584 and Claude Opus 5.5
836b269806
calc: cap array broadcast result size ( #2182 )
...
zip2 (binary operators, TEXT), zip3 (array IF) and MAP now compute the
broadcast cell count with checked multiplication and return #NUM! when it
exceeds MAX_CELLS, instead of allocating (abort) or wrapping on wasm32.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 20:27:26 -04:00
Higgs32584 and Claude Opus 5.5
5b908c04f8
core: iterative number coercion for nested parentheses ( #2180 )
...
Parenthesised negatives were parsed by recursing once per level, so runtime
text such as REPT("(",32767)&"1"&REPT(")",32767) overflowed the stack. Strip
the parentheses in a loop, toggling the sign per level; results are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 20:24:15 -04:00
Higgs32584 and Claude Opus 5.5
be94b011c5
calc: bound SUBTOTAL/AGGREGATE input work ( #2175 )
...
Every area, array and value of one SUBTOTAL/AGGREGATE call is charged against MAX_CELLS before any cell is read; past it the call returns #NUM!. A value stored in XFD1048576 no longer makes SUBTOTAL(9,A:XFD) read ~17 billion cells into a vector.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 20:10:00 -04:00
Higgs32584 and Claude Opus 5.5
e1b8aad143
calc: cap LINEST-family regressor matrices ( #2177 )
...
LINEST, LOGEST, TREND and GROWTH built k x k normal-equation matrices
(plus two copies in sym_inverse, O(k^3)) with k taken straight from the
known_xs shape, so one formula could allocate gigabytes and abort on open.
More than 255 predictors is now #VALUE!, and more than 1e9 rows x k^2
multiply-adds is #NUM!, both checked before any allocation.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-21 20:07:30 -04:00
Dylan M. Taylor
912b817abe
security: enforce HTTPS on curl downloads (SonarCloud S6506) ( #2188 )
...
Add --proto '=https' to curl invocations so redirects cannot downgrade to
plaintext HTTP. Resolves SonarCloud S6506 (shell/docker/githubactions).
2026-10-21 19:36:04 -04:00