nihilist-narwhal
683ff6003c
Defined names with relative references
...
A name whose references have no $ was evaluated as if they were
absolute. In Excel such references are relative: defined from B2,
=Sheet1!A2 means "the cell to the left", and the file stores it
relative to A1 (Sheet1!XFD1, wrapping around the sheet's edge).
Name formulas with relative references are now moved by the using
cell's offset from A1, wrapping at the edges, and formulas.defineName
takes relative references as relative to the active cell, as Excel's
Name Manager does, and stores them relative to A1.
2026-10-11 13:53:26 -05:00
Brandon Thomas and Claude Opus 5.5
743ca809cc
Fix-up: Insert Copied Cells target and PivotChart anchor use #206 's checked cell_param
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 14:34:37 -04:00
Brandon Thomas
a9f9b09acc
Merge pull request #365 from MarekSpodBiedry/issue-359
...
Ctrl+click on an already selected header or cell deselects it (#359 )
2026-10-11 14:34:17 -04:00
Brandon Thomas
57ab1790ad
Merge pull request #364 from MarekSpodBiedry/issue-362
...
Edit date cells as dates, not serial numbers (#362 )
2026-10-11 14:34:16 -04:00
Brandon Thomas
1fc7f50104
Merge pull request #360 from ege-arhan/fix/formulas-ribbon-layout
...
fix(ribbon): Watch Window layout in Formulas ribbon (#342 )
2026-10-11 14:34:14 -04:00
Brandon Thomas
76f3a29c79
Merge branch 'land' into fix-206
2026-10-11 14:23:51 -04:00
Brandon Thomas and Claude Opus 5.5
8fcb9b1007
Fix-up: es/de/cs strings for Forecast Sheet ( #325 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 14:15:18 -04:00
Brandon Thomas
7a34692a0d
Merge pull request #325 from vangel76/feat/forecast-sheet
...
Data: Forecast Sheet (data.forecastSheet) (#322 )
# Conflicts:
# ROADMAP.md
# docs/gaps.md
# docs/parity-checklist.md
# docs/ui-parity.md
2026-10-11 13:52:00 -04:00
Brandon Thomas
fda7f5bc14
Merge pull request #333 from vangel76/feat/xlsx-passthrough
...
XLSX: keep unmodelled parts on save (#330 )
# Conflicts:
# ROADMAP.md
# crates/model/src/lib.rs
# crates/model/src/sheet.rs
# docs/file-format-parity.md
# docs/gaps.md
2026-10-11 13:51:59 -04:00
Brandon Thomas
c379da6ac9
Merge pull request #332 from vangel76/feat/xls-read
...
XLSX/IO: read legacy .xls (BIFF8) workbooks (#121 )
# Conflicts:
# docs/gaps.md
2026-10-11 13:51:48 -04:00
Brandon Thomas and Claude Opus 5.5
4a55aa3e34
Merge main into page-layout-view: pages keep the gliding selection ( #266 ), frozen-pane clipping ( #217 ), right-to-left mirroring and freeze handles ( #310 , #309 ); es/de/cs strings for headers and footers
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:39:07 -04:00
Brandon Thomas and Claude Opus 5.5
baffd3c78d
Fix-up #325 : cap Forecast Sheet history and forecast rows
...
The default periods (a third of the history, up to ~33k) bypassed
MAX_PERIODS, and each forecast row's three ETS formulas refit over the whole
history, so 100k history rows x 10k periods froze the app. History is now at
most 10,000 rows, periods at most 10,000, and history x periods at most
500,000 (about 3 us per history point per fit: a few seconds of recalc at
the cap). The default is clamped to the cap; explicit periods or an end past
it are refused.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:30:47 -04:00
Brandon Thomas and Claude Opus 5.5
c8b1b941f7
Merge main into selection-glide: the gliding outline and its fill respect frozen panes ( #217 ) and right-to-left sheets ( #310 ); es/de/cs strings for Animations
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:27:27 -04:00
Brandon Thomas and Claude Opus 5.5
b3908bf81e
Key tips HAT/HAM/HAB run Align Top/Middle/Bottom, with a test (review fix-up for #261 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:20:22 -04:00
MarekSpodBiedry
568b754211
Ctrl+click on an already selected header or cell deselects it ( #359 )
2026-10-11 19:18:39 +02:00
MarekSpodBiedry
ea2e2a5bba
Edit date cells as dates, not serial numbers ( #362 )
2026-10-11 19:18:27 +02:00
Brandon Thomas and Claude Opus 5.5
27ef18ec2c
symbol_glyphs test: compare against a private-use code point no font covers (review fix-up for #298 )
...
U+25FB is a real glyph in DejaVu, so the test could pass while symbols still rendered as boxes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:14:30 -04:00
Brandon Thomas
6cf32cf4eb
Merge branch 'land' into fix-298
...
# Conflicts:
# ROADMAP.md
2026-10-11 13:13:26 -04:00
Brandon Thomas
5360a77505
Merge remote-tracking branch 'origin/main' into fix-325
...
# Conflicts:
# ROADMAP.md
# crates/engine/src/cmd/mod.rs
# crates/ui-egui/src/dialogs.rs
# docs/gaps.md
# docs/parity-checklist.md
# docs/ui-parity.md
2026-10-11 13:12:41 -04:00
Brandon Thomas and Claude Opus 5.5
1fb5f3264d
Spanish, German and Czech strings for Insert Copied/Cut Cells (review fix-up for #288 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:12:23 -04:00
Brandon Thomas and Claude Opus 5.5
e52fc4aa08
Fix-up #333 : escape kept content types and charge kept VML to the kept total
...
Content types (and extensions) of kept parts come from the input file and
were written into [Content_Types].xml unescaped, so a quote or angle bracket
injected XML; they are now attribute-escaped. Each sheet re-read and kept
its VML drawing (up to 16 MB) outside MAX_KEPT_TOTAL, so many sheets sharing
one highly compressed drawing amplified memory; the drawing is now read
within and charged to the remaining kept-bytes allowance.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:05:45 -04:00
Brandon Thomas
9cb6cb2384
Merge branch 'land' into fix-288
...
# Conflicts:
# ROADMAP.md
# crates/engine/src/cmd/edit.rs
# docs/target-app-parity.md
2026-10-11 13:01:23 -04:00
Brandon Thomas and Claude Opus 5.5
c83f214c9d
Spanish, German and Czech strings for comment navigation (review fix-up for #286 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 13:00:27 -04:00
Brandon Thomas
79fce91359
Merge remote-tracking branch 'origin/main' into fix-333
...
# Conflicts:
# ROADMAP.md
# crates/model/src/lib.rs
# crates/xlsx/src/sheet_read.rs
# docs/file-format-parity.md
# docs/gaps.md
2026-10-11 12:56:45 -04:00
Brandon Thomas and Claude Opus 5.5
e78cc6edc9
Fix-up #332 : bound .xls formula nesting and share one record budget across sheets
...
Chained PtgParen/PtgUminus (or operator) tokens built a ~16K-deep Expr whose
printing or drop overflowed the stack; nesting past the formula parser's
MAX_DEPTH (256) is now reported as unsupported. BoundSheet records pointing
into one huge substream each got their own 40M-record allowance; the
allowance is now shared by the whole Workbook stream, and two sheets at the
same offset are refused.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 12:55:17 -04:00
Brandon Thomas
141fef26e8
Merge remote-tracking branch 'origin/main' into fix-286
...
# Conflicts:
# ROADMAP.md
# crates/engine/src/cmd/review.rs
# docs/gaps.md
# docs/parity-checklist.md
# docs/target-app-parity.md
2026-10-11 12:52:12 -04:00
Brandon Thomas
30312e7546
Merge remote-tracking branch 'origin/main' into fix-332
...
# Conflicts:
# ROADMAP.md
# docs/file-format-parity.md
# docs/gaps.md
2026-10-11 12:51:12 -04:00
Ege Arhan
64089568c8
fix(ribbon): Watch Window layout in Formulas ribbon ( #342 )
2026-10-11 16:50:42 +00:00
Brandon Thomas
336deb87de
Merge pull request #216 from MarekSpodBiedry/issue-202
...
Read the browser clock for NOW(), TODAY() and year-less dates on wasm (#202 )
2026-10-11 12:46:33 -04:00
Brandon Thomas
fa12cb441b
Merge pull request #212 from Zarvinx/build/rust-1.95-clippy
...
Fix Rust 1.95 Clippy warnings
# Conflicts:
# crates/ui-egui/src/grid.rs
2026-10-11 12:46:32 -04:00
Brandon Thomas
9d3b3a6074
Merge pull request #207 from mikl0s/fix/cell-set-requires-input-v2
...
Cell: cell.set without an input is an error
2026-10-11 12:46:03 -04:00
Brandon Thomas and Claude Opus 5.5
4cb4f6586e
rustfmt the sheet-tab scroll area (review fix-up for #268 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 12:42:02 -04:00
Brandon Thomas
de8d70cc39
Merge remote-tracking branch 'origin/main' into fix-268
2026-10-11 12:41:54 -04:00
Brandon Thomas and Claude Opus 5.5
abbd8181b9
Fix-up: theme test picks System from Backstage Options' Display theme combo ( #318 after #331 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 12:31:17 -04:00
Brandon Thomas and Claude Opus 5.5
4d2335c8f5
Fix-up: Spanish, German and Czech strings for the features merged alongside them; theme test goes through Backstage Options ( #318 after #331 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 12:21:15 -04:00
Brandon Thomas and Claude Opus 5.5
267a2183ac
Fix-up: Backstage options read the formula bar from engine prefs ( #331 after #295 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 12:13:09 -04:00
Brandon Thomas
0305d2a666
Merge pull request #335 from Losminek/cs-pr
...
i18n: Czech interface language (cs)
# Conflicts:
# ROADMAP.md
# contributors/people.toml
# crates/ui-egui/src/control.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/theme.rs
# docs/localization-parity.md
2026-10-11 12:10:06 -04:00
Brandon Thomas
29660e8c4d
Merge pull request #331 from vangel76/feat/file-backstage
...
UI: File tab Backstage view (#174 )
# Conflicts:
# ROADMAP.md
# crates/engine/src/tests.rs
# crates/ui-egui/src/control.rs
# crates/ui-egui/src/lib.rs
# crates/ui-egui/src/ribbon.rs
# docs/parity-checklist.md
# docs/ui-parity.md
2026-10-11 12:08:56 -04:00
Brandon Thomas
839072c6dd
Merge pull request #327 from vangel76/feat/solver
...
Data: Solver with Simplex LP, integer branch and bound and a nonlinear method (#326 )
# Conflicts:
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/i18n/ko.rs
# crates/ui-egui/src/i18n/pt.rs
# crates/ui-egui/src/i18n/ru.rs
# crates/ui-egui/src/i18n/zh.rs
# crates/ui-egui/src/ribbon.rs
# crates/ui-egui/tests/interaction.rs
# docs/gaps.md
# docs/parity-checklist.md
# docs/target-app-parity.md
# docs/ui-parity.md
2026-10-11 12:07:34 -04:00
Brandon Thomas
1dbad7768d
Merge pull request #320 from vangel76/feat/analysis-toolpak
...
Data: Analysis ToolPak with 13 tools and the Data Analysis dialog (#312 )
# Conflicts:
# crates/ui-egui/src/dialogs.rs
# docs/gaps.md
# docs/parity-checklist.md
2026-10-11 12:06:42 -04:00
Brandon Thomas
95660dc132
Merge pull request #319 from vangel76/fix/excel-shortcuts
...
Keyboard: Excel shortcut audit, add the missing ones (#110 )
# Conflicts:
# docs/ui-parity.md
2026-10-11 12:06:40 -04:00
Brandon Thomas
925ff53122
Merge pull request #303 from vangel76/fix/chart-category-axis
...
Charts: Select Data edits the category axis labels; blank corner makes column 1 the categories (#287 )
# Conflicts:
# crates/engine/src/tests.rs
# crates/ui-egui/src/dialogs.rs
# crates/ui-egui/tests/interaction.rs
# docs/chart-parity.md
2026-10-11 12:06:39 -04:00
Brandon Thomas
fe9e3163f0
Merge pull request #301 from vangel76/fix/recommended-charts
...
Charts: Recommended Charts opens a dialog of chart types with previews (#215 )
# Conflicts:
# crates/engine/src/tests.rs
# crates/ui-egui/tests/interaction.rs
# docs/chart-parity.md
2026-10-11 12:06:37 -04:00
Brandon Thomas
867c5fd1f1
Merge pull request #317 from vangel76/feat/forecast-ets
...
Functions: FORECAST.ETS, .CONFINT, .SEASONALITY and .STAT (#314 )
# Conflicts:
# README.md
# ROADMAP.md
# docs/function-parity.md
# docs/gaps.md
2026-10-11 12:05:55 -04:00
Brandon Thomas
97bad77ef4
Merge pull request #313 from vangel76/feat/pivot-chart
...
Charts: PivotCharts (insert.pivotChart) (#311 )
# Conflicts:
# ROADMAP.md
# crates/engine/src/cmd/pivot.rs
# docs/gaps.md
# docs/parity-checklist.md
# docs/target-app-parity.md
2026-10-11 12:05:54 -04:00
Brandon Thomas
685802ee9f
Merge pull request #306 from vangel76/feat/pivot-calculated-field
...
PivotTables: calculated fields (pivot.calculatedField) (#304 )
# Conflicts:
# ROADMAP.md
# docs/gaps.md
# docs/parity-checklist.md
# docs/target-app-parity.md
2026-10-11 12:05:52 -04:00
Brandon Thomas
2af0984af0
Merge pull request #308 from vangel76/feat/review-allow-edit-ranges
...
Review: Allow Edit Ranges with Excel-compatible password hashes (#307 )
# Conflicts:
# ROADMAP.md
# crates/xlsx/src/sheet_write.rs
# crates/xlsx/src/tests/malformed.rs
# docs/file-format-parity.md
# docs/gaps.md
# docs/parity-checklist.md
# docs/target-app-parity.md
2026-10-11 12:05:30 -04:00
Brandon Thomas
4dce1181e1
Merge pull request #305 from vangel76/feat/cell-checkbox
...
Checkboxes: ribbon button, Excel's value and Delete rules, XLSX cell controls (#196 )
# Conflicts:
# ROADMAP.md
2026-10-11 12:05:28 -04:00
Brandon Thomas
1f99931dd3
Merge pull request #302 from vangel76/feat/xlsx-threaded-comments
...
XLSX: write threaded comments and persons parts, read note visibility (#300 )
# Conflicts:
# ROADMAP.md
# crates/xlsx/src/tests/roundtrip.rs
2026-10-11 12:05:27 -04:00
Brandon Thomas
1302ec76a4
Merge pull request #310 from vangel76/fix/sheet-right-to-left
...
Grid: mirror right-to-left sheets (#146 )
# Conflicts:
# crates/ui-egui/src/grid.rs
# docs/localization-parity.md
2026-10-11 12:05:25 -04:00