Commit Graph
547 Commits
Author SHA1 Message Date
Brandon Thomas e2bcb712fd Merge pull request #418 from neilcawse/fix/numfmt-text
Numfmt: fraction literals and zero fractions, `?` pads thousands separator, TEXT booleans through text section
2026-10-11 18:05:17 -04:00
Brandon Thomas 936c6a055a Merge pull request #423 from neilcawse/fix/xlsx-names-xlpm
XLSX: strip _xlpm. from LET/LAMBDA parameters on read, keep line breaks in table columns, allow leading backslash in table names

# Conflicts:
#	docs/file-format-parity.md
2026-10-11 18:05:16 -04:00
Brandon Thomas 5432419cd5 Merge pull request #427 from vedran-dobos/csv-keep-delimiter
CSV: saving keeps the separator the file was opened with (#426)
2026-10-11 18:05:14 -04:00
Vedran DobosandClaude Opus 5.5 b13ea3e2f3 CSV: saving keeps the separator the file was opened with (#426)
A `;`-separated CSV (the usual CSV where `,` is the decimal separator) was
rewritten with `,` on save: read_csv sniffed the delimiter but the result was
dropped, and save_bytes passed a hard-coded b','. file.save, Save As .csv,
file.exportCsv, file.saveBytes and gridcraft-cli convert all went through it.

The workbook now remembers the separator it was read with
(Workbook::csv_delimiter, set by read_csv) and a CSV save writes it back.
Workbooks not read from CSV, and .tsv/.txt sources saved as .csv, keep `,`.

Regression tests: `;`, `,` and tab .csv round trips byte for byte, new and
.xlsx-origin workbooks save with `,`, and open-by-path + edit + file.save on a
`;` file keeps `;` (also through exportCsv and saveBytes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 23:46:27 -07:00
Brandon Thomas e6773dac3c Merge pull request #433 from derechopiano/fix/autofit-filter-button-spacing
Fix AutoFit width for table and AutoFilter dropdowns
2026-10-11 18:05:13 -04:00
Brandon Thomas 1841658978 Merge pull request #439 from itrycodinganditsbad/rotated-text-align
Rotated text follows the cell's alignment
2026-10-11 18:05:12 -04:00
Brandon Thomas f38b17fb67 Merge pull request #438 from MarekSpodBiedry/issue-428
Scatter charts of two unlabelled columns plot the first as X for one series (#428)
2026-10-11 18:05:11 -04:00
Fabio LussiandClaude Opus 5.5 dbc04ddae0 Rotated text follows the cell's alignment (Fixes #435)
Text turned by an angle was drawn at a fixed anchor (bottom-left for upward,
top-left for downward text) and ignored the horizontal and vertical alignment,
so upright text with Middle Align in a tall merged cell sat at the bottom.

rotated_text_pos places the turned galley's bounding box in the cell per the
alignment, then derives the TextShape anchor from it. General/Bottom keep the
old placement for upright text.

Fixes #435

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 00:00:56 +02:00
MarekSpodBiedry 88df1670ba Scatter charts of two unlabelled columns plot the first as X for one series (#428) 2026-10-11 23:38:27 +02:00
derechopiano 1a6c864235 home.autofitColumnWidth: reserve filter dropdown space 2026-10-11 22:09:51 +01:00
neilcawseandClaude Opus 5.5 13afa8c773 XLSX: read cell formulas via file→model conversion (_xlpm), keep line breaks in table columns, allow leading backslash in table names
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:39:31 -04:00
neilcawseandClaude Opus 5.5 737999f182 Numfmt: fraction literals and zero fractions, ? pads thousands separator, TEXT booleans through text section
Checked against Excel-cached TEXT() results in number- and text-format test workbooks: 226 of 352 TEXT cells mismatched before, 0 after.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:39:30 -04:00
Brandon Thomas a5137872c1 Merge pull request #401 from vangel76/fix/text-box-formatting
Drawing: text box formatting — run size/bold/font/outline, alignment, anchor, no outline (#377)
2026-10-11 16:14:44 -04:00
Brandon ThomasandClaude Opus 5.5 3054babe0e Text boxes: their typefaces count as used workbook fonts, so an installed one is bound; restore image_ext's doc comment (review fix-up for #401)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:14:41 -04:00
Brandon Thomas 1c3beb2a95 Merge branch 'land' into fix-401
# Conflicts:
#	ROADMAP.md
2026-10-11 16:09:03 -04:00
Brandon Thomas 4a23b9cf4b Merge pull request #404 from vangel76/fix/header-footer-variants
Headers and footers: first-page and even-page variants, Insert › Header & Footer edits in place (#344)

# Conflicts:
#	ROADMAP.md
2026-10-11 16:08:56 -04:00
Brandon Thomas 7cd96b945f Merge pull request #402 from vangel76/fix/ui-font-hebrew-fallback
UI fonts: formula bar falls back to the cell font, so Hebrew isn't boxes (#349)

# Conflicts:
#	ROADMAP.md
2026-10-11 16:08:55 -04:00
Brandon Thomas 773f7e6b76 Merge pull request #388 from itrycodinganditsbad/fix-373
Draw the outline band for grouped rows and columns (#373)
2026-10-11 16:06:48 -04:00
Brandon Thomas b2101947ca Merge branch 'land' into fix-388
# Conflicts:
#	docs/ui-parity.md
2026-10-11 16:01:53 -04:00
Brandon Thomas 1ea549bfe4 Merge pull request #394 from vangel76/fix/print-save-as-pdf
File: desktop Print opens the system PDF viewer, Save As offers PDF/CSV/HTML (#370, #343)
2026-10-11 16:01:33 -04:00
Brandon ThomasandClaude Opus 5.5 5c26c963f8 Print PDF in the shared temp folder: create it exclusively (never follow or overwrite an existing file or symlink) and owner-only on Unix (review fix-up for #394)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:01:30 -04:00
Brandon Thomas 6cc69494ca Merge branch 'land' into fix-394
# Conflicts:
#	ROADMAP.md
2026-10-11 15:55:10 -04:00
Brandon Thomas 0065485fc0 Merge pull request #390 from GhostMitra (rebased head; the wanted part is already on main) 2026-10-11 15:54:44 -04:00
Brandon Thomas c3f6b51055 Merge pull request #392 from GhostMitra (rebased head; the wanted part is already on main) 2026-10-11 15:54:44 -04:00
Brandon Thomas bf63a8dd5e Merge pull request #391 from GhostMitra/feat/web-save-file-picker
Web: native Save and Save As file picker with download fallback
2026-10-11 15:52:09 -04:00
Brandon ThomasandClaude Opus 5.5 6fb99ef5e1 Web save: any picker refusal but a cancel, or a failed write, falls back to a download (review fix-up for #391)
A save without a recent user gesture (e.g. over the control channel) is refused with SecurityError and would otherwise fail silently.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:52:08 -04:00
Brandon Thomas fc4a74001b Merge branch 'land' into fix-391 2026-10-11 15:51:44 -04:00
debarghaya 173245a5b0 Web: add favicon to web app index and disable dev incremental compilation 2026-10-12 01:21:22 +05:30
debarghaya 159e057a28 Web & UI: resolve system theme preference and default web to system theme 2026-10-12 01:20:53 +05:30
Brandon Thomas 2d54f56724 Merge pull request #390 from GhostMitra
Web: follow the browser's light/dark appearance (the unused resolve_theme and raster_to_alpha_mask helpers from the PR are left out)
2026-10-11 15:50:21 -04:00
Brandon Thomas 80f2a75f58 Merge pull request #392 from GhostMitra/fix/web-favicon
Web: add favicon to web app index
2026-10-11 15:50:01 -04:00
Brandon ThomasandClaude Opus 5.5 35e317ae3a Keep incremental dev builds; the favicon change stands on its own (review fix-up for #392)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:49:44 -04:00
Brandon Thomas 479377304f Merge branch 'land' into fix-392 2026-10-11 15:49:38 -04:00
Brandon Thomas baaa606036 Merge pull request #396 from nihilist-narwhal/fix-xlookup-reference
XLOOKUP: return a reference when the result range is one
2026-10-11 15:49:34 -04:00
Brandon ThomasandClaude Opus 5.5 6d59233e62 XLOOKUP reference path: an empty match_mode keeps the search_mode after it (review fix-up for #396)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:49:32 -04:00
Brandon Thomas c7bd7deebb Merge branch 'land' into fix-396 2026-10-11 15:49:00 -04:00
debarghaya 937bf63315 Web: native Save and Save As file picker with download fallback 2026-10-12 01:18:44 +05:30
vangel76andClaude Opus 5.5 cdd71b4d5d Headers and footers: first-page and even-page variants, Insert › Header & Footer edits in place (#344)
XLSX headerFooter kept only oddHeader/oddFooter: a workbook whose header is on a
different first page (differentFirst + firstHeader) or on even pages showed no
header, and saving dropped it. The model now keeps the first/even headers and
footers and the differentFirst / differentOddEven / scaleWithDoc / alignWithMargins
flags; XLSX reads and writes them; the PDF and the Page Layout view use the right
pair per page; in-place editing edits the page's own pair, and the Header & Footer
tab has Different First Page and Different Odd & Even Pages. pageLayout.headerFooter
takes the variants and a page: odd|even|first for one-section edits.

Insert › Header & Footer now switches to Page Layout view and edits the first
page's centre header, as in Excel, instead of opening the codes dialog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:44:49 +02:00
Brandon Thomas f173d6733d Merge pull request #387 from vangel76/fix/sheet-protection-password
Review: Protect Sheet passwords use Excel-compatible hashes, kept in XLSX (#346)

# Conflicts:
#	ROADMAP.md
2026-10-11 15:43:46 -04:00
Brandon Thomas 283b06453e Merge pull request #383 from vangel76/fix/sheetview-top-left-cell
View: restore and save the scroll position (topLeftCell) (#378)

# Conflicts:
#	ROADMAP.md
2026-10-11 15:43:45 -04:00
Brandon Thomas 12b46e6bbe Merge pull request #395 from vangel76/fix/space-selection-shortcuts
Keyboard: Shift+Space and Ctrl+Space select without starting an edit (#338)

# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/grid.rs
2026-10-11 15:43:44 -04:00
Brandon Thomas 8498dedb7d Merge pull request #381 from vangel76/fix/shrink-to-fit
Grid: render Shrink to fit (#375)

# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/grid.rs
2026-10-11 15:43:32 -04:00
Brandon Thomas d90a072d90 Merge pull request #380 from vangel76/fix/merged-range-borders
Grid: merged ranges draw their right and bottom borders (#376)

# Conflicts:
#	ROADMAP.md
2026-10-11 15:43:31 -04:00
Brandon Thomas 39c3b04d0d Merge pull request #382 from vangel76/fix/dx12-dxc-startup
Windows: compile DirectX 12 shaders with FXC, no DXC runtime needed (#339, #354)
2026-10-11 15:43:30 -04:00
Brandon Thomas 380b355d77 Merge pull request #400 from nihilist-narwhal/fix-index-array-args
INDEX: arrays of row and column numbers pick a value each
2026-10-11 15:43:13 -04:00
Brandon ThomasandClaude Opus 5.5 fca801c17e INDEX: compare the result size with saturating u64 math, so it can't overflow on 32-bit targets (review fix-up for #400)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:43:11 -04:00
Brandon Thomas fbb2285532 Merge branch 'land' into fix-400 2026-10-11 15:42:32 -04:00
Brandon Thomas 437881f53a Merge pull request #399 from nihilist-narwhal/fix-future-function-prefixes
XLSX: write the _xlfn. prefix for GROUPBY, PIVOTBY, ENCODEURL and the REGEX functions
2026-10-11 15:42:27 -04:00
Brandon Thomas d821aa1409 Merge pull request #398 from nihilist-narwhal/fix-relative-names
Defined names: relative references follow the cell that uses the name
2026-10-11 15:42:26 -04:00
Brandon Thomas 2657cb2fa6 Merge pull request #397 from nihilist-narwhal/fix-validation-formulas
Data validation: relative formulas, checked with the value being entered
2026-10-11 15:42:25 -04:00