prxnvt
66f7993ba5
Merge main into #462
...
# Conflicts:
# crates/engine/src/lib.rs
# crates/engine/src/tests.rs
# docs/architecture.md
2026-10-22 02:30:25 -04:00
prxnvt
471114e296
Engine: a visible name of the item shape is not workbook data
...
The item store read, listed and removed every workbook-scope name of the `_gc_<key>_<n>` shape,
visible or not, so saving an item removed a person's own visible name that happened to look like
one. Items are the hidden names the store writes; a legacy `_sc_<key>` name still reads. A visible
`_gc_` name is left alone by every operation, and writing an item that would need that name is
refused before anything changes: a hidden name beside it with the same name is the one an xlsx
file drops, so the item would be lost on save.
2026-10-22 02:24:55 -04:00
prxnvt
2287f63a95
Engine: a group rolled back inside a command keeps the redo history
...
A command that changed the workbook cleared the redo history even when an open group owned
its step. When the group was then rolled back inside the same command (the debugger's Stop
with Undo Changes), the rollback put the redo history back and the command's bookkeeping cleared
it again. Now only a command that makes a step of its own clears the redo history; a group
clears it when it ends as a step, and a rollback restores it.
2026-10-22 02:00:54 -04:00
prxnvt
eb3eaa052d
Engine: a command keeps its group's name only for a group it ended itself
...
The record of the last group step (document, history length, epoch) outlived the Undo of that
step. A later command that opened and closed its own groups at the same history length, after
rolling one back, passed the epoch check (the record's epoch merely differed from the one the
command started with) and took the name of the nested edit it had made instead of its own.
The step must now come from a group ended during the command (an epoch past the command's
starting one), and a rollback drops a record of a step it truncated away.
2026-10-22 01:36:01 -04:00
aiongg
c7016fb724
Integration: fix struct literals and call signatures after combining tracks (Series.quartiles, Comment.note_box, Image data Arc, signature language)
2026-10-22 03:11:35 +00: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
ca1cdd4229
Integration: track t13
...
# Conflicts:
# ROADMAP.md
# contributors/people.toml
# crates/engine/src/cmd/data.rs
# crates/xlsx/src/tests/mod.rs
# docs/chart-parity.md
# docs/file-format-parity.md
# docs/function-parity.md
# docs/gaps.md
# docs/localization-parity.md
# docs/target-app-parity.md
2026-10-22 03:05:18 +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
1d9b29ff57
Integration: cargo fmt
2026-10-22 02:45:22 +00:00
aiongg
1316d39865
Merge PR #1151 : Charts: a huge trendline forecast no longer collapses the chart ( #1148 )
...
ROADMAP.md: all rows kept.
crates/chart/src/tests.rs: both tests kept.
2026-10-22 02:37:37 +00:00
aiongg
169c78dda8
Merge PR #1111 : Respect workbook structure protection in sheet rename, move, copy, hide and unhide ( #1049 )
2026-10-22 02:37:22 +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
6370fd2254
Merge PR #1693 : Charts: series that refer to defined names ([0]!Name) plot their data, and are saved qualified
...
crates/xlsx/src/tests/mod.rs: kept both mod lines (cellmetadata, chart_book_names)
docs/file-format-parity.md: kept HEAD header line, both change rows
2026-10-22 02:36:34 +00:00
aiongg
431aaaaf69
Merge PR #2022 : Reject unparseable conditional-format formulas ( #1999 )
...
crates/engine/src/cmd/insert.rs: kept both sides: PR #884 's is_string_literal and cf_style_json, and PR #2022 's check_cf_* before edit(); 884's kept string literals parse
2026-10-22 02:36:33 +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
ced3f7ce7a
Merge PR #1912 : Print CJK text with a CID font instead of question marks
...
crates/pdf/src/lib.rs: add_page keeps both fonts [bool; FONT_SLOTS] and links Vec
2026-10-22 02:36:20 +00:00
aiongg
7fd1553a8b
Merge PR #1626 : Keyboard: Ctrl+6 hides and shows objects, saved as workbookPr showObjects
...
Conflicts:
- docs/file-format-parity.md: header and the three .xlsx rows keep main's text plus the show-objects entry; both log rows kept
- docs/ui-parity.md: header keeps main's text plus Ctrl+6; both log rows kept
2026-10-22 02:36:15 +00:00
aiongg
8590dca0db
Merge PR #2207 : clipboard: bound HTML colspan/rowspan expansion ( #2171 )
2026-10-22 02:36:12 +00:00
aiongg
d0394a0f34
Merge PR #2005 : AutoFill refuses a target that doesn't hold the source in a corner (whole rows into whole columns aborted the app)
...
crates/engine/src/fill.rs: kept both tests (#1360 and #2005 ).
2026-10-22 02:36:12 +00:00
aiongg
d67193f403
Merge PR #1685 : #1447 : a PivotChart's link names the workbook
...
docs/file-format-parity.md: header Change line names both pivot fixes; both change log rows kept
2026-10-22 02:36:11 +00:00
aiongg
635056bd23
Merge PR #2131 : Print: JIS B4/B5 and Japanese paper sizes (はがき・封筒・B6)
...
ROADMAP.md: one status line naming both changes; both feature-table and progress-log rows, newest first.
2026-10-22 02:36:10 +00:00
aiongg
7269b12f1e
Integration: #1976 scenarioShow writes stored numbers as values
...
Entering them through the parser applied percent entry to Percentage-formatted
cells (a stored 0.05 would not round-trip). Test: scenario_show_restores_a_percentage_cells_stored_number.
2026-10-22 02:36:05 +00:00
aiongg
c03d4a881b
Merge PR #1570 : XLSX: keep dynamic-array cell metadata (cm) on save
...
ROADMAP.md: kept both progress-log rows
2026-10-22 02:36:04 +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
05ecd6d4a8
Merge PR #1628 : Add Advanced Filter dialog and fix copy-to data loss
...
crates/ui-egui/src/control.rs: kept #1477 's unconditional build_params call
crates/ui-egui/src/dialogs.rs: build_params pub(crate) once, with #1628 's advancedFilter arm
docs/ui-parity.md: status line combined, change-log rows both kept
2026-10-22 02:35:59 +00:00
aiongg
7768f56603
Merge PR #1580 : Calc: CELL("filename") names the workbook's file
2026-10-22 02:35:56 +00:00
aiongg
6b0411091a
Merge PR #1559 : Sort and de-duplicate data.textToColumns fixed-width breaks
...
Conflicts:
- crates/engine/src/cmd/data.rs: adjacent test insertions, both kept
2026-10-22 02:35:56 +00:00
aiongg
2fbb45eac0
Merge PR #2049 : Word-wrap-aware automatic row height ( #1969 )
...
crates/engine/src/cmd/mod.rs: kept #2033 's wrap-only branch and #2049 's wrapped_line_count helper, called inside the wrap branch; dropped #2049 's explicit/else arm.
2026-10-22 02:35:55 +00:00
aiongg
524ab89a1a
Merge PR #1379 : engine: subtotal honours header:false instead of dropping the first data row
...
Conflicts:
- crates/engine/src/cmd/data.rs: subtotal keeps #1285 's data_target and sheet-qualified calls with #1379 's header/first logic; grand-total range starts at first; both tests kept (#1299 filter blanks, #1379 subtotal)
2026-10-22 02:35:51 +00:00
aiongg
6e66756ce8
Merge PR #1976 : Enter bare numbers in Percentage-formatted cells as percents
2026-10-22 02:35:44 +00:00
aiongg
46647fd61e
Merge PR #1474 : Conditional formatting: text rules never match an error value ( #1162 )
2026-10-22 02:35:41 +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
3ed16929d9
Merge PR #1320 : AutoFit Column Width measures text in the font the grid draws it with
...
Conflicts:
- crates/engine/src/cmd/format.rs: autofit_cols keeps #885 's (si, lines) and adds #1320 's measure
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
6d4e62d12b
Merge PR #2032 : Formula entry: an incomplete formula's error describes what was typed ( fixes #2030 )
...
crates/formula/src/tests.rs: kept both tests.
2026-10-22 02:35:39 +00:00