Commit Graph
100 Commits
Author SHA1 Message Date
aiongg 6f10378b17 Integration: #1320 font-measure AutoFit tests in their own test binary
They run the process-wide installed-font scan, whose faces bind from the
next frame; in the same process as the header drag tests they changed text
widths under them, which failed those tests about 1 run in 4 in parallel.
2026-10-22 04:22:36 +00:00
aiongg c4c7f747c7 Integration: keytip NR test gives the sheet data so the Insert Chart dialog opens 2026-10-22 03:54:39 +00:00
aiongg 818175f51e Integration: Japanese catalog covers the reference catalog's new keys; clear the texture delta in the completion test 2026-10-22 03:32:41 +00: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 cde364f269 Integration: cargo fmt after combining tracks 2026-10-22 03:08:30 +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 a680ac59f0 Integration: track t07
# Conflicts:
#	crates/calc/src/tests.rs
#	docs/function-parity.md
2026-10-22 03:03:23 +00:00
aiongg cfda01c831 Integration: track t06
# Conflicts:
#	ROADMAP.md
#	contributors/people.toml
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/tests/interaction.rs
#	docs/gaps.md
#	docs/localization-parity.md
2026-10-22 03:03:17 +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 f193f0d834 Integration: track t01 2026-10-22 02:58:49 +00:00
aiongg d056570d97 Integration: cargo fmt 2026-10-22 02:57:51 +00:00
aiongg 21c3ec248c Integration: cargo fmt 2026-10-22 02:51:29 +00:00
aiongg ec61d59b41 Integration: cargo fmt 2026-10-22 02:50:46 +00:00
aiongg 55aeed6f1a Integration: cargo fmt 2026-10-22 02:48:11 +00:00
aiongg 1b4b51225d Integration: #1912 restore the end of add_page lost in the merge resolution 2026-10-22 02:47:32 +00:00
aiongg b35b5a8b9d Integration: cargo fmt 2026-10-22 02:46:29 +00:00
aiongg 7b47c5a846 Integration: #995 test builds Image.data as Arc<Vec<u8>> (after #1629)
shared_media.rs predates the Arc change; literals and comparisons use .into() and to_vec().
2026-10-22 02:46:21 +00:00
aiongg 55877df80f Integration: cargo fmt 2026-10-22 02:46:00 +00:00
aiongg f02f446905 Integration: #1194 drop the duplicate Cut and Copy German arms (#1830 already translates them) 2026-10-22 02:45:54 +00:00
aiongg 4ac3f2fa64 Integration: cargo fmt 2026-10-22 02:45:35 +00:00
aiongg 1d9b29ff57 Integration: cargo fmt 2026-10-22 02:45:22 +00:00
aiongg c37298b468 Integration: #1151 test literal gains the category_levels field from #1088 2026-10-22 02:40:38 +00:00
aiongg 36c9df453f Integration: order localization-parity revision rows newest first 2026-10-22 02:39:29 +00:00
aiongg 47bf083d0a Integration: #2116 move name_sort_key and its test into the existing tests module 2026-10-22 02:39:21 +00:00
aiongg a1c1fc05de Merge PR #2116: Backstage: list the languages alphabetically by their own name 2026-10-22 02:39:08 +00:00
aiongg d4eabcee96 Merge PR #2106: Translate form-dialog field labels, choices and notes 2026-10-22 02:39:04 +00:00
aiongg 10ac46c243 Integration: #2102 fill Romanian catalog gap (Options|Editing, English text) 2026-10-22 02:39:04 +00:00
aiongg 0eeaeec0c1 Merge PR #2102: Romanian (ro) interface language
Conflicts:
- crates/ui-egui/src/i18n.rs: language registration lines kept from both sides (Language::ALL has 18 entries).
- crates/ui-egui/tests/file_menu.rs: both language rows kept.
- docs/localization-parity.md: one Last updated line naming all changes; both revision rows kept, newest first.
2026-10-22 02:38:43 +00:00
aiongg e72d5f290a Merge PR #2061: i18n: Dutch (nl) interface language
Conflicts:
- crates/ui-egui/src/i18n.rs: language registration lines kept from both sides (Language::ALL has 17 entries).
- ROADMAP.md: one Last updated line naming both changes; both progress-log rows kept.
- docs/localization-parity.md: one Last updated line naming both changes; both revision rows kept.
2026-10-22 02:38:32 +00:00
aiongg 905ef6a6a5 Integration: #2000 remove duplicated Spanish financial alias block 2026-10-22 02:38:15 +00:00
aiongg 4286ac2930 Merge PR #2000: Spanish formula aliases for financial functions (#1986) 2026-10-22 02:38:09 +00:00
aiongg 7649a762ff Merge PR #1772: i18n: add Vietnamese interface translations
Conflicts:
- crates/ui-egui/src/i18n.rs: language registration lines kept from both sides (Language::ALL has 16 entries).
- docs/localization-parity.md: both revision rows kept.
2026-10-22 02:38:09 +00:00
aiongg e4c406dbcf Merge PR #1194: fix(ui): ribbon tooltips show each platform's shortcuts (Ctrl+B on Windows, ⌘B on macOS) (#1191)
crates/ui-egui/src/widgets.rs: both test modules kept.
2026-10-22 02:37:51 +00:00
aiongg 8bfe310208 Integration: #1770 register Ukrainian (Language::Uk) and fill 573 missing keys with English text 2026-10-22 02:37:49 +00:00
aiongg a9a8fe7d20 Integration: #1754 translate the sheet-tab Delete button; Spanish Hide and Autoguardado; test that the sheet-tab and AutoSave labels translate in es, de, fr, ko, ru, zh, sr 2026-10-22 02:37:48 +00:00
aiongg 3a01ce689e Integration: i18n drop duplicate Unprotect Sheet… entries (added by #1373 and #1754) 2026-10-22 02:37:43 +00:00
aiongg 9d3252189d Merge PR #1180: fix(ui): menu items highlight under the pointer (#1174)
crates/ui-egui/src/grid.rs: list picker button combines frame_when_inactive(false) with main's LIST_PICKER_ROW_H min size.
2026-10-22 02:37:42 +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 56c31b0b31 Merge PR #1993: Grid: the selection outline follows a mouse drag at once
Conflicts:
- docs/ui-parity.md: header keeps main's change list plus the outline entry; both log rows kept
2026-10-22 02:37:23 +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 d8b73ecb4e Merge PR #1110: Size the list validation dropdown to up to 8 rows (#1089) 2026-10-22 02:37:19 +00:00
aiongg f5b35fb3ac Merge PR #1109: fix(ui): commit a pointed formula on the sheet it was started on (#996)
crates/ui-egui/src/lib.rs: sheet re-activation first, then main's unchanged-empty-commit check and the commit chain.
crates/ui-egui/src/tabs.rs: union of test imports.
2026-10-22 02:37:19 +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 ad1899e1ca Merge PR #1770: Add Ukrainian localization (uk.rs) 2026-10-22 02:37:08 +00:00
aiongg 01485e2b66 Merge PR #1838: Added multi-column/row selection in formulas & column/row selection highlighting.
crates/ui-egui/src/editor.rs: kept both appended tests
crates/ui-egui/src/grid.rs: kept the Table heading filter-button check, then point_header(.., mods.shift, mods.command); kept format_painter_apply and the extend/add point_header
2026-10-22 02:37:08 +00:00
aiongg 37bf37d181 Merge PR #1103: Keep chart cache point positions when a reference has blank edges (#1015)
crates/xlsx/src/chart.rs: 1103's used-range clipping applied in ref_values after 1088's ref_target call.
2026-10-22 02:37:08 +00:00
aiongg f4f18bb368 Merge PR #1701: XLSX: new workbooks get <fileVersion appName="gridcraft"/>
Conflicts:
- crates/xlsx/src/write.rs: keeps #1701's fileVersion block followed by #1626's workbookPr attributes (showObjects, date1904)
2026-10-22 02:37:05 +00:00
aiongg 31d6221463 Integration: #1725 prefill Remove Duplicates with the current region when only the cursor is placed 2026-10-22 02:37:01 +00:00
aiongg 59e6f123ba Integration: #2095 error-check colours come from theme tokens 2026-10-22 02:36:59 +00:00
aiongg ad7fe4ed70 Merge PR #1095: fix(grid): keep cursor stable during cell dragging (#936)
crates/ui-egui/src/grid.rs: keep main's touch-pan guard around interact, add 1095's update_cursor call after it.
docs/ui-parity.md: one Last updated line, change notes combined; both history rows kept.
2026-10-22 02:36:58 +00:00
aiongg 857bdae023 Merge PR #1692: XLSX: keep Japanese phonetic runs on open and save
Conflicts:
- crates/model/src/lib.rs, crates/xlsx/src/read.rs, crates/xlsx/src/write.rs: use lists unioned (ShowObjects and the phonetic types)
- docs/file-format-parity.md: main's header and rows kept (#1692 collapsed the three duplicate .xlsx rows; they stay), phonetic-runs text added to each; Last updated 2026-10-20
2026-10-22 02:36:58 +00:00
aiongg 46ddd61021 Merge PR #1732: i18n(ja): translate the dialog, message and menu strings (943 entries, matching the pt-BR coverage)
Conflicts:
- crates/ui-egui/src/i18n.rs: mod it and mod ja both kept; Language::Ja dispatches to ja::translate; the shape test (PR #831) iterates ja::CORE, which replaces JAPANESE.
- docs/localization-parity.md: both revision rows kept, newest first.
2026-10-22 02:36:53 +00:00
aiongg 48285a8fc4 Merge PR #1754: i18n: translate sheet tab context menu and AutoSave toggle (fixes #1537)
crates/ui-egui/src/i18n/de.rs: kept both sets of entries; dropped the duplicate Unprotect Sheet… line
crates/ui-egui/src/tabs.rs: kept active_sheet_protected() and the protectSheet dialog id, tr() on both button labels
2026-10-22 02:36:53 +00:00
aiongg e738049157 Merge PR #1088: Charts: multi-level category axes (year beside month) read, drawn and written back
ROADMAP.md: all rows kept.
2026-10-22 02:36:49 +00:00
aiongg 75f6c92eab Integration: #2086 test that the strip beside the column headings is filled in dark mode 2026-10-22 02:36:41 +00:00
aiongg 6432253de9 Integration: #973 move the sheet-tab copy row from the element table to the change history 2026-10-22 02:36:40 +00:00
aiongg cd3fcfd2a0 Merge PR #1083: Colour menus: More Colors… and Recent Colors (#928)
ROADMAP.md: all progress-log rows kept.
docs/ui-parity.md: one Last updated line, change notes combined; both history rows kept; ribbon row wording tidied.
2026-10-22 02:36:40 +00:00
aiongg c9941763cc Integration: #2093 move the paste_special_shortcuts doc comment back onto its function 2026-10-22 02:36:38 +00:00
aiongg d44c08c354 Merge PR #2093: Paste Special: the reference app's two-column layout, translated, Paste Link button
crates/ui-egui/src/dialogs.rs: window width match keeps both zoom and pasteSpecial arms
docs/ui-parity.md: status line combined, change-log rows both kept
2026-10-22 02:36:35 +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 e6ccfba926 Merge PR #2142: PivotTable Fields pane: scan the source once per change, not every frame 2026-10-22 02:36:33 +00:00
aiongg fccca928b3 Merge PR #1631: Memory: floating pictures' textures are bounded, sized to what is drawn, and dropped with their workbook
Conflicts:
- ROADMAP.md: header change line names both memory changes; both progress-log and revision rows kept
2026-10-22 02:36:33 +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 70426fc913 Merge PR #1657: Cell editor: the caret contrasts with the cell's fill 2026-10-22 02:36:24 +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 42768628c4 Merge PR #1473: i18n: add Italian translation
Conflicts: crates/ui-egui/src/i18n.rs: language registration lines kept from both sides (Language::ALL has 14 entries).
2026-10-22 02:36:21 +00:00
aiongg 826a22dc2b Integration: #2131 remove a leftover conflict marker line in ROADMAP.md 2026-10-22 02:36:21 +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 90d4c3af0f Merge PR #1981: Desktop theme: the watcher's link has a type off Linux, so the gate passes there 2026-10-22 02:36:20 +00:00
aiongg 608925af08 Merge PR #1979: Seed the Sort dialog column from the active cell (#1906) 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 a8f74730c1 Merge PR #1056: Fix Command-click and Shift-click references during formula entry
contributors/people.toml: union of both new entries.
docs/ui-parity.md: one Last updated line, change notes combined; both history rows kept.
2026-10-22 02:36:14 +00:00
aiongg 929c506d1b Merge PR #2100: Fonts: a cell font named in another language matches its installed font (fixes #1898) 2026-10-22 02:36:12 +00:00
aiongg 8590dca0db Merge PR #2207: clipboard: bound HTML colspan/rowspan expansion (#2171) 2026-10-22 02:36:12 +00:00
aiongg 7221e11f56 Merge PR #1945: XLSX: keep the theme's per-script fonts (<a:font script="Arab">) on save (stacked on #1740, included)
Conflicts:
- docs/file-format-parity.md: kept main's three .xlsx rows (the PR's docs hunk replaced them with one) and added the theme-font wording to each; header keeps main's change list plus this PR's phrase (updated 2026-10-20)
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 75e84a26d5 Merge PR #1612: Grid: a scrolled Table's header names and filter buttons in the column headings (#1423)
docs/ui-parity.md: kept HEAD header line, both change rows, newest first
2026-10-22 02:36:10 +00:00
aiongg 823914157a Merge PR #2200: core: iterative number coercion for nested parentheses (#2180) 2026-10-22 02:36:10 +00:00
aiongg 07f806d3e5 Merge PR #2098: docs: fix Trunk website link (#2076) 2026-10-22 02:36:10 +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 edb214b236 Merge PR #1725: Prefill the Remove Duplicates range from the selection
docs/ui-parity.md: status line combined, change-log rows both kept
2026-10-22 02:36:09 +00:00
aiongg 78b7ef49fd Merge PR #1889: Docs: correct stale chart round-trip notes 2026-10-22 02:36:08 +00:00
aiongg 7963cdb218 Merge PR #1758: Fonts: render Lao text with an installed Lao face instead of tofu
Conflicts:
- docs/localization-parity.md: status line, script-support text and history rows from both sides kept
2026-10-22 02:36:08 +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