Brandon Thomas
bcf55f0f00
Merge PR #2274
...
# Conflicts:
# docs/ui-parity.md
2026-10-23 10:11:33 -04:00
Higgs32584 and Claude Opus 5.5
b5b3969377
scripts: trust gate review fixes ( #2178 )
...
- automate.trustScripts: only a missing `trusted` defaults to true; a
non-boolean value is an error and leaves the workbook untrusted.
- The refusal message points at Trust Scripts in View > Macros (Alt+F8)
and at automate.trustScripts.
- Catalog row for automate.trustScripts; parity checklist regenerated.
- Script steps run inside an io::ScriptSandbox (thread-local) so
read_file/write_file refuse whatever the parameter is called, and a
step that raises OpenUrl is dropped and stops the script. The id/param
deny list stays as the up-front refusal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-22 12:43:48 -04:00
Higgs32584
6dedb9310b
Merge remote-tracking branch 'origin/main' into fix/2178-script-trust-gate
2026-10-22 12:32:28 -04:00
Dominik Strebel and Claude Opus 5.5
840ba5c3a5
view: Show Outline Symbols (Ctrl+8), read and written
...
A sheet can hide its outline's level buttons and brackets while keeping
the outline (Excel's Ctrl+8, saved as showOutlineSymbols="0"). It wasn't
modelled, so such sheets showed a wide outline band Excel doesn't.
- model: Sheet::show_outline_symbols (default on, also for older JSON).
- xlsx: read and written on the sheet view.
- engine: view.showOutlineSymbols {on?} (Ctrl+8), undoable.
- ui: no outline bands while it's off.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-22 15:54:06 +02:00
aiongg
d5cdd2ea2b
Integration: track t15
...
# Conflicts:
# contributors/people.toml
# crates/engine/src/tests.rs
# docs/file-format-parity.md
# docs/localization-parity.md
2026-10-22 03:05:39 +00:00
aiongg
561382cc6d
Integration: track t14
...
# Conflicts:
# ROADMAP.md
# contributors/people.toml
# crates/formula/src/tests.rs
# docs/file-format-parity.md
# docs/localization-parity.md
# docs/ui-parity.md
2026-10-22 03:05:30 +00:00
aiongg
c7fd66d807
Integration: track t12
...
# Conflicts:
# ROADMAP.md
# crates/calc/src/tests.rs
# crates/chart/src/tests.rs
# crates/engine/src/tests.rs
# crates/xlsx/src/tests/mod.rs
# docs/chart-parity.md
2026-10-22 03:05:03 +00:00
aiongg
9350ab1def
Integration: track t11
...
# Conflicts:
# ROADMAP.md
# apps/gridcraft-web/Cargo.toml
# crates/ui-egui/src/i18n.rs
# docs/control-protocol.md
# docs/gaps.md
# docs/target-app-parity.md
# docs/ui-parity.md
2026-10-22 03:04:52 +00:00
aiongg
4c5c345c31
Integration: track t10
...
# Conflicts:
# ROADMAP.md
# crates/ui-egui/tests/sheet_tabs.rs
# crates/xlsx/src/tests/roundtrip.rs
# docs/gaps.md
# docs/ui-parity.md
2026-10-22 03:04:30 +00:00
aiongg
6dda6be2c6
Integration: track t09
...
# Conflicts:
# crates/engine/src/tests.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/i18n/pt.rs
# docs/file-format-parity.md
# docs/target-app-parity.md
# docs/ui-parity.md
2026-10-22 03:04:21 +00:00
aiongg
d3201e7cea
Integration: track t08
...
# Conflicts:
# ROADMAP.md
# crates/engine/src/tests.rs
# docs/file-format-parity.md
# docs/localization-parity.md
2026-10-22 03:03:55 +00:00
aiongg
4c81d658ec
Integration: track t05
...
# Conflicts:
# crates/ui-egui/tests/keyboard_shortcuts.rs
# docs/ui-parity.md
2026-10-22 03:01:39 +00:00
aiongg
512b2aa9fd
Integration: track t04
...
# Conflicts:
# ROADMAP.md
# crates/engine/src/cmd/edit.rs
# crates/engine/src/cmd/formulas.rs
# crates/engine/src/tests.rs
# crates/formula/src/lib.rs
# crates/formula/src/parser.rs
# crates/formula/src/tests.rs
# crates/ui-egui/src/control.rs
# crates/ui-egui/src/formula_bar.rs
# crates/ui-egui/src/grid.rs
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/lib.rs
# crates/ui-egui/src/ribbon.rs
# crates/ui-egui/tests/selection.rs
# docs/function-parity.md
# docs/ui-parity.md
2026-10-22 03:01:31 +00:00
aiongg
b0b6409112
Integration: track t03
...
# Conflicts:
# ROADMAP.md
# crates/ui-egui/tests/keyboard_shortcuts.rs
# docs/file-format-parity.md
# docs/localization-parity.md
# docs/ui-parity.md
2026-10-22 03:00:13 +00:00
aiongg
54d0f7cfc0
Integration: track t02
...
# Conflicts:
# ROADMAP.md
# crates/core/src/lib.rs
# crates/ui-egui/src/editor.rs
# crates/ui-egui/src/grid.rs
# crates/ui-egui/src/tabs.rs
# docs/chart-parity.md
# docs/localization-parity.md
# docs/ui-parity.md
2026-10-22 02:59:55 +00:00
aiongg
ec61d59b41
Integration: cargo fmt
2026-10-22 02:50:46 +00:00
aiongg
470a2ae2c1
Merge PR #1765 : Sheet protection: obey the Sort and Use AutoFilter boxes
...
Conflicts:
- crates/engine/src/cmd/data.rs: do_sort keeps #1284 's sheet parameter and checks Sorting on it; toggle_filter checks Filtering after #1285 's data_target
- crates/engine/src/tests.rs: adjacent tests, both kept
2026-10-22 02:37:16 +00:00
aiongg
8ec29a8b3b
Merge PR #1652 : Fill handle: right-drag opens the fill menu (Copy Cells, Fill Series, Fill Formatting Only, Fill Without Formatting, Series…)
...
crates/ui-egui/src/grid.rs: kept both GridState fields (context_menu_frame, fill_menu); previous_popups tuple has four elements inside the touch_pan branch; release match has Drag::Rows|Cols, then the two Drag::Fill arms
docs/ui-parity.md: kept HEAD header line, both change rows
2026-10-22 02:36:24 +00:00
aiongg
d97f61748e
Merge PR #1946 : XLSX: keep cell fonts' charset (Arabic 178) and family on save
...
crates/xlsx/src/styles.rs: family/charset block ported into the dxf.is_none() branch of font_xml (PR #1225 made it take Option<&DxfStated>)
docs/file-format-parity.md: header Change line keeps both sides' clauses
2026-10-22 02:36:23 +00:00
aiongg
8e2974cc65
Merge PR #1629 : Memory: undo steps share picture and macro bytes instead of copying them
...
Conflicts:
- ROADMAP.md: both progress-log and revision rows kept
- crates/xlsx/src/sheet_write.rs: keeps #995 's image_part call; drops #1629 's to_vec line (image_part copies from &[u8])
2026-10-22 02:36:22 +00:00
aiongg
cba89cfda8
Merge PR #1066 : Engine: formulas.evaluate refuses what cell entry refuses, saying why
...
ROADMAP.md: both progress-log rows kept.
2026-10-22 02:36:20 +00:00
aiongg
8590dca0db
Merge PR #2207 : clipboard: bound HTML colspan/rowspan expansion ( #2171 )
2026-10-22 02:36:12 +00:00
aiongg
7e74b35a1b
Merge PR #2095 : Number Stored as Text: green indicator, warning button and Convert to Number ( #1994 )
...
crates/ui-egui/src/grid.rs: kept object_menu (2084) and error_check_tag (2095), both fns and both calls.
crates/ui-egui/src/i18n/de.rs, pt.rs: union of the entries.
docs/ui-parity.md: one status line naming both changes, both history rows.
2026-10-22 02:36:03 +00:00
aiongg
7768f56603
Merge PR #1580 : Calc: CELL("filename") names the workbook's file
2026-10-22 02:35:56 +00:00
aiongg
013ead7389
Integration: #2033 drop the dated history from the auto-fit comments
2026-10-22 02:35:41 +00:00
aiongg
aab44d2c23
Merge PR #1535 : engine: sort and remove duplicates move the rows' notes and hyperlinks
...
# Conflicts:
# crates/engine/src/tests.rs
2026-10-22 02:35:40 +00:00
aiongg
5c1b171892
Merge PR #1738 : Keep chart source range in step with inserted and deleted lines
2026-10-22 02:35:39 +00:00
aiongg
d83dc11ff2
Merge PR #1695 : Charts: box & whisker charts honor their quartile method
...
crates/engine/src/tests.rs: kept both new tests (csv_as_text_keeps_identifier_columns_as_written and box_whisker_quartile_methods_survive_xlsx).
2026-10-22 02:35:39 +00:00
aiongg
26c6e4ca14
Merge PR #1621 : Reject unsupported flip param in arrange.rotate
...
Conflicts:
- crates/engine/src/tests.rs: kept both appended tests
2026-10-22 02:35:33 +00:00
aiongg
0118413c77
Merge PR #2080 : HTML export: place pictures and charts at their anchors
...
crates/engine/src/tests.rs: kept both sides' new tests (journal tests from #1230 , HTML export tests from the PR).
docs/file-format-parity.md: header Last updated 2026-10-21 with both change clauses; both revision-history rows, newest first.
2026-10-22 02:35:32 +00:00
aiongg
b17f47b2ca
Merge PR #2033 : Row auto-fit: count line breaks only in cells that wrap
...
ROADMAP.md: header line keeps the newer 2026-10-19 date and lists this change; this PR's progress-log row added once below the newer rows.
2026-10-22 02:35:31 +00:00
aiongg
cede13d0a7
Merge PR #1527 : engine: pageLayout.printTitles only touches the axes it is given
2026-10-22 02:35:30 +00:00
aiongg
5f4309e4ba
Merge PR #1653 : Charts: insert.chart builds a series from every area of a multi-area range
2026-10-22 02:35:30 +00:00
aiongg
d691e95f6d
Merge PR #1285 : Remove Duplicates, Filter and Subtotal: a Sheet! prefix on the range works on that sheet
2026-10-22 02:35:24 +00:00
aiongg
87df1947f9
Merge PR #1284 : Sort: a Sheet! prefix on the range sorts that sheet, not the active one
2026-10-22 02:35:21 +00:00
aiongg
d26bbe3432
Merge PR #1085 : Format: Row Height and Column Width say pixels, and take points like the reference app
...
Conflicts:
- crates/engine/src/cmd/format.rs: spec strings keep #885 's sheet?/Sheet! forms with #1085 's pixels/points wording; row_height and col_width keep #1085 's unit logic with #885 's (si, lines) = line_targets
2026-10-22 02:35:21 +00:00
aiongg
8709b41666
Merge PR #1525 : Keep leading empty columns and rows when saving CSV/text
...
Conflicts:
- crates/xlsx/src/csv.rs: write_csv doc comment merged (this PR's A1 rectangle sentence, main's per-field cap wording)
- crates/engine/src/tests.rs: kept both appended tests
2026-10-22 02:35:17 +00:00
aiongg
bdb03349f6
Merge PR #1930 : Accounting format: the documented currency symbol is honoured
2026-10-22 02:35:17 +00:00
aiongg
43cd35d4bd
Merge PR #1263 : Bound Undo history growth after bulk edits
...
crates/engine/src/lib.rs: kept both the journal caps (#1230 ) and the undo byte budget; separate constants and call sites.
crates/engine/src/cmd/edit.rs: undo pushes through push_history; the redo entry keeps the undone edit's selection (#1855 behaviour).
crates/engine/src/tests.rs: kept both tests (redo_selects_the_redone_cell and the two history-bound tests).
2026-10-22 02:35:17 +00:00
aiongg
f8b7547344
Merge PR #1709 : Rows: a big font isn't counted twice when the sheet's default height already fits it
2026-10-22 02:35:02 +00:00
aiongg
51401a382c
Merge PR #1534 : engine: a cut takes the source's notes, hyperlinks and merged areas with it
2026-10-22 02:35:01 +00:00
aiongg
32faa4f1c6
Merge PR #1661 : Merged cell with Wrap Text: auto-fit skips it, so the text draws and the row keeps its default height
2026-10-22 02:34:59 +00:00
aiongg
ee54646258
Merge PR #1372 : Edit: text that would parse as a number or formula keeps its quote prefix in the editor ( #1362 )
2026-10-22 02:34:59 +00:00
aiongg
0087afce8a
Merge PR #1230 : Journal: cap by serialized size and keep a recording's start through trims
...
crates/engine/src/tests.rs: kept both sides' new tests (csv_as_text test from main, the two journal tests from the PR).
2026-10-22 02:34:53 +00:00
aiongg
38fb979498
Merge PR #1329 : Slicer: find a named table on any sheet
...
Conflicts: crates/engine/src/tests.rs (both appended a test at the same spot; kept both)
2026-10-22 02:34:53 +00:00
aiongg
49328f80c0
Merge PR #1381 : engine: rebuild cell-store bands and counts when importing a JSON workbook
2026-10-22 02:34:49 +00:00
aiongg
4f7111941e
Merge PR #951 : fix(fill): respect the workbook date system in monthly AutoFill
...
docs/ui-parity.md: kept the newer header line, kept both history rows.
2026-10-22 02:34:45 +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
947930e889
Merge PR #584 : Refuse inserting cells that would push values off the worksheet ( #580 )
2026-10-22 02:34:36 +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