chore: sync upstream (72 Commits) #2

Merged
alf merged 72 commits from chore/sync-upstream-20261020 into main 2026-10-20 11:06:12 +00:00
Owner

Upstream-Sync von upstream/main (72 Commits). Fast-Forward.

  • 23829d8 Merge pull request #1828 from dylanmtaylor/chore/drop-competitor-references
  • 49fe41a Merge pull request #1892 from vedran-dobos:options-prefix-translations
  • 4401b3e Merge pull request #1877 from SocraticsAI:host-chrome
  • aa41259 Merge pull request #1910 from Silvertree2010:fix/1907-bug-touchscreen-devices-cannot-p
  • 8492416 Merge pull request #1916 from Silvertree2010:fix/1915-desktop-theme-watcher-opens-a-ne
  • 47fc3d5 Merge pull request #1922 from Silvertree2010:fix/h552-rangeref-parse-accepts-signed-ro
  • 70018d4 Merge pull request #1925 from DrM7md:nux/insert-delete-whole-lines
  • b402359 Merge pull request #1938 from Mouhand-Kaddo:fix/html-export-rtl
  • 92c0d1e Chrome: turning the File tab off closes a Backstage that is already open
  • 27f4c9c Touch pan: a pan that never saw its release doesn't swallow the next press
  • f5267cb docs: one Last updated line per parity doc after merging
  • b77848e Merge pull request #1882 from neilcawse:fix/pivot-grand-totals
  • f8e916b Merge pull request #1902 from Shnrqpdr:fix/1846-autofit-keytips
  • ab6fd48 Merge pull request #1867 from HyakoV3:fix/1808-csv-as-text
  • 06a94d4 Merge pull request #1935 from Mouhand-Kaddo:fix/shape-text-rtl
Upstream-Sync von `upstream/main` (72 Commits). Fast-Forward. - 23829d8 Merge pull request #1828 from dylanmtaylor/chore/drop-competitor-references - 49fe41a Merge pull request #1892 from vedran-dobos:options-prefix-translations - 4401b3e Merge pull request #1877 from SocraticsAI:host-chrome - aa41259 Merge pull request #1910 from Silvertree2010:fix/1907-bug-touchscreen-devices-cannot-p - 8492416 Merge pull request #1916 from Silvertree2010:fix/1915-desktop-theme-watcher-opens-a-ne - 47fc3d5 Merge pull request #1922 from Silvertree2010:fix/h552-rangeref-parse-accepts-signed-ro - 70018d4 Merge pull request #1925 from DrM7md:nux/insert-delete-whole-lines - b402359 Merge pull request #1938 from Mouhand-Kaddo:fix/html-export-rtl - 92c0d1e Chrome: turning the File tab off closes a Backstage that is already open - 27f4c9c Touch pan: a pan that never saw its release doesn't swallow the next press - f5267cb docs: one Last updated line per parity doc after merging - b77848e Merge pull request #1882 from neilcawse:fix/pivot-grand-totals - f8e916b Merge pull request #1902 from Shnrqpdr:fix/1846-autofit-keytips - ab6fd48 Merge pull request #1867 from HyakoV3:fix/1808-csv-as-text - 06a94d4 Merge pull request #1935 from Mouhand-Kaddo:fix/shape-text-rtl
alf added 72 commits 2026-10-20 11:06:11 +00:00
A line that is not a JSON object with a string method, including an HTTP
request line, bytes that are not UTF-8 or a line over 64 MiB, gets one
error reply and the connection closes before anything after it is read.
Request lines are read with a bound instead of buffering them whole.
Close the control port on the first line that isn't a request
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found while testing crates/engine/src/cmd/pivot.rs:678 (func_param at :248)

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
Crostini's cros-host-fonts mounts the host's fonts under
/usr/share/fonts/chromeos (noto/, notocjk/, crosextra/), which none of the
fixed Linux path lists reached: Thai, Hebrew, CJK and Symbols 2 fell back to
egui's Latin-only faces and drew tofu with the fonts installed, and the UI and
cell roles missed Noto Sans and Carlito. Add those folders to each list, with a
structural test that every list probes them.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The grid's look() and print's cell_look() layered a rule's fill, font and
borders onto the cell style but not its num_fmt, so a cell under a rule with a
number format kept its own. Take the rule's code when it isn't General (in a
differential style General means "not set", as layer_under treats it).

Print also re-formatted every non-General cell from its own style through
display::cell_text; format with the look's code instead, through a new
display::value_text_as that value_text now calls (CSV/Text output unchanged).
Show Formulas keeps cell_text.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Excel counts TRUE/FALSE and error values as strings in a cache field's
<sharedItems>. GridCraft wrote containsString="0" (and counted booleans and
errors as separate kinds for containsMixedTypes) for such columns, which made
the file unopenable in Excel, even when the column wasn't used in the pivot.

Add Stats::strings() (text, booleans, errors) and use it for
containsSemiMixedTypes, containsString and containsMixedTypes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
While pointing at another sheet, a reference without a sheet name (A1) was outlined on the
sheet being shown instead of the sheet the edit started on.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
file.open takes {csvAsText: true}: a CSV, TSV or TXT file opens with every field as the text
it holds, with no number, date or boolean conversion, so identifiers such as GTINs, SKUs and
ZIP codes keep their digits and leading zeros and save back unchanged. The default is
unchanged. The CsvOptions.parse_values switch already existed in the reader.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
SheetApp gains a non-persisted `chrome` field. Both parts stay on by
default; a host that owns its window and files can hide the title bar,
and the File tab together with the Backstage view it opens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found while testing crates/engine/src/cmd/data.rs:550 (custom_ok, used from apply_filter at :623)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: Dylan M. Taylor <dylan@dylanmtaylor.com>
rowGrandTotals is the Grand Total row under the report and colGrandTotals the
Grand Total column at its right. Both were mapped the other way round; a
GridCraft round trip hid it, but an Excel file with only one grand total opened
with the other one.
* docs: add SonarCloud and CodeRabbit badges to README

* docs: put SonarCloud and CodeRabbit badges on their own line
fr.rs and sr.rs translated three `context|label` keys with the context
kept ("Options|Général", "Opcije|Opšte", "Options de la feuille|Affichage"
...). `Language::tr` shows a found translation as it is, so File › Options
section headings and the Sheet Options "View" checkboxes showed the prefix.
The values now hold only the label.

Tests: `translations_never_show_the_context_prefix` (no catalog shows a `|`
for any key) and `translated_options_headings_show_no_context_prefix`
(File › Options in French and Serbian); both fail on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Alt+H, O, A (AutoFit Row Height) and Alt+H, O, I (AutoFit Column Width)
ran nothing when Alt was still held for H, as Excel allows: any key with
Alt down cancelled keytips. KeyTips now tracks the left Alt key, and a
letter typed with it held that continues a known sequence is handled as
a keytip letter. Other Alt combinations still cancel; AltGr (right Alt)
and macOS Option are unchanged (#1864).
Backspace clears the cell (edit.clearContents) and opens an empty editor.
Committing that editor ran cell.set "" on the already-empty cell, which
recorded a second, empty undo step, so Ctrl+Z appeared to do nothing and
the next Ctrl+Z undid an unrelated earlier edit. Committing empty text
into an empty cell now runs no command.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Undo stored the selection at the moment of undoing (wherever the user had
clicked) in the redo entry, so redo jumped back there instead of to the
cells it changed. The redo entry now keeps the undone step's selection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes #1907

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From CodeRabbit's review of #1892: the fix also strips the prefix from
"Sheet Options|View" (the Gridlines and Headings checkboxes), but the test
only rendered File › Options. It now opens Page Layout in French and
Serbian too and checks that the checkboxes read "Affichage" / "Prikaz",
not "Options de la feuille|Affichage" / "Opcije lista|Prikaz". It fails
with the old catalog values.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes #1915

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Cells are painted left to right and a right-to-left sheet is mirrored
afterwards, so an explicit Align Right ended up on the left (and Align
Left on the right). Excel keeps an explicit alignment on the side it
names in either sheet direction; General alignment follows the sheet.

The alignment is now swapped before painting (painted_halign), for
straight and rotated text alike.

Signed-off-by: MH <q6rrzz@gmail.com>
With whole rows or whole columns selected, Excel inserts or deletes them
directly; it asks which way to shift only for other selections. Both
shortcuts always opened the Insert or Delete dialog, an extra step for
the most common case.

Signed-off-by: MH <q6rrzz@gmail.com>
CI installs the stable toolchain, and Rust 1.95's clippy fails
'cargo clippy --workspace --all-targets -- -D warnings' on main:

- xls/mod.rs: collapsible_match. The XF record's size check becomes a
  match guard; a full table still ignores the record (the catch-all arm).
- passthrough_tests.rs: nonminimal_bool. !is_some_and(x) is written as
  is_none_or(!x).

No change in behaviour.

Signed-off-by: MH <q6rrzz@gmail.com>
range.fill parsed the input once at the active cell, then put back the old
style of every target that already held a cell, so 5%, $5, 3/4/2026 or
=DATE(...) lost their automatic format there (0.05, 5, 46085), and empty
targets took the active cell's style. Each target now gets what
input_to_cell gives for it (parsed once per distinct style), as typing does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found while testing crates/core/src/addr.rs:217

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Found while testing crates/functions/src/text.rs:511-552

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Templates hide grouped columns as width="0" hidden="1". Show Detail and the level buttons only cleared hidden, so the columns stayed invisible; they now reset a zero size, as Unhide does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	docs/localization-parity.md
# Conflicts:
#	docs/file-format-parity.md
#	docs/localization-parity.md
# Conflicts:
#	docs/file-format-parity.md
#	docs/localization-parity.md
# Conflicts:
#	docs/file-format-parity.md
# Conflicts:
#	docs/ui-parity.md
# Conflicts:
#	docs/file-format-parity.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	docs/file-format-parity.md
#	docs/localization-parity.md
# Conflicts:
#	crates/ui-egui/src/i18n.rs
#	docs/localization-parity.md
Merge pull request #1828 from dylanmtaylor/chore/drop-competitor-references
Some checks failed
CI / cargo xtask ci (push) Has been cancelled
Nix / eval (push) Has been cancelled
CI / cargo xtask ci (pull_request) Has been cancelled
Nix / eval (pull_request) Has been cancelled
23829d8c67
docs: drop references to competing commercial software
alf merged commit 23829d8c67 into main 2026-10-20 11:06:12 +00:00
alf deleted branch chore/sync-upstream-20261020 2026-10-20 11:06:12 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/gridcraft!2
No description provided.