aiongg
44b33a2f57
Integration: a subnormal chart data range gives a finite nice scale
2026-10-24 09:38:51 +00:00
aiongg
56b15df0ab
Integration: a huge RTF left indent no longer overflows when the outline level is derived
2026-10-24 09:38:19 +00:00
aiongg
a453292729
Merge main into the integration batch
2026-10-24 09:20:03 +00:00
aiongg
910b03f4a1
Integration: the GIF play/pause click works only while the pointer is awake and the button is shown
2026-10-24 09:19:46 +00:00
aiongg
e679fa500a
Integration: right-clicking a control handle in Edit Points keeps the picked point and its menu
2026-10-24 09:17:30 +00:00
aiongg
027075d352
Integration: a rejected positional revision stays rejected after a slide is inserted or deleted in the open deck
2026-10-24 09:16:08 +00:00
Dylan M. Taylor
f86928d0d5
perf(pptx): index export lookups and deduplicate relationship parts ( #1281 )
...
- Row 31: Use HashMap for comment author lookup in author_slot
- Row 37: Index preserved parts by ID before resolving graphic frame relationships
- Row 10: Index kept chart parts by normalized path and avoid duplicate payload scans
- Row 39: Update existing relationship parts instead of appending duplicates in PackageOut
2026-10-24 05:16:07 -04:00
aiongg
2bbfe46d3e
Integration: slides with two visible pictures get no layout ideas
2026-10-24 09:14:11 +00:00
aiongg
9dcb7bab03
Integration: the automatic-date test reads the clock before and after the command so a tick of the second cannot fail it
2026-10-24 09:13:29 +00:00
aiongg
75bec53e08
Integration: RTF import drops NUL units and masks \u to 16 bits so the surrogate marker cannot be forged
2026-10-24 09:11:34 +00:00
Dylan M. Taylor
c55a9f771e
security(metafile): harden EMF+ parsing, clipping complexity, and memory accounting ( #1280 )
...
* fix(metafile): harden EMF+ parsing, clipping complexity, and memory accounting
- Row 72: Use checked tail slicing in comment header offset calculations
- Row 78: Break FillRects and DrawRects loops early when canvas is full
- Row 75: Pre-check dimensions in decode_compressed before RGBA pixel allocation
- Row 85: Account for EMF+ object table image/path memory against MAX_BYTES
- Row 42: Replace O(N^2) prefix copying in wrap_line with linear measurement
- Row 43 & 54: Share immutable clip regions Arc across placed items and charge canvas regions
- Row 48: Bound text transformation scale and glyph curve geometry in Picture::place and draw_text
- Row 52 & 68: Impose work budget bounds on Sutherland-Hodgman polygon clipping and bitmap masking
* fix(metafile): collapse nested if statement per clippy
2026-10-24 05:06:04 -04:00
Dylan M. Taylor
c955407373
security(engine): check regular file and size bound on read, preserve permissions and symlinks on save ( #1265 )
...
* security(engine): check regular file and size bound on read, preserve permissions and symlinks on save
* style: format recovery.rs write_atomic
2026-10-24 04:45:48 -04:00
Dylan M. Taylor and Claude Sonnet 5.5
54962c6389
refactor: explicit imports for table modules (SonarCloud S2208) ( #1262 )
...
* refactor: replace wildcard table imports with explicit names (SonarCloud S2208)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
* style: rustfmt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-24 04:43:36 -04:00
Dylan M. Taylor
6189fa8bf6
perf(engine): bound HTML entity semicolon scan window and formatting stack search ( #1267 )
2026-10-24 04:41:43 -04:00
Dylan M. Taylor
713f605566
perf(chart): optimize axis plotted extent scan and cache non-bar error bar stats ( #1266 )
2026-10-24 04:41:23 -04:00
Dylan M. Taylor
9641817a15
security: clamp alpha_num bullet expansion and sanitize filename logging ( #1264 )
2026-10-24 04:40:29 -04:00
Dylan M. Taylor
1e097e3edd
security: use exclusive temporary directories for macOS cert import and media fixtures ( #1263 )
2026-10-24 04:40:26 -04:00
Dylan M. Taylor and Claude Sonnet 5.5
d94790d97a
refactor: replace redundant closures with method paths (SonarCloud S1612) ( #1261 )
...
Skipped where the receiver type is generic or not evident without a compiler (wrapping_neg, total_cmp, exists, to_vec, as_ref, split_first, Option::into_inner).
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-24 04:27:07 -04:00
aiongg
9c31b567da
Integration: #978 media-controls test turns presenter view off so its embedded window does not cover the bar
2026-10-24 07:28:17 +00:00
aiongg
30755b3ff7
Integration: #1244 Notes-button test starts with the pane closed and clicks the gap the language name must not cover
2026-10-24 06:53:15 +00:00
aiongg
f639ef986e
Integration: #927 Header & Footer dialog: reading the format must not store the default as picked
2026-10-24 06:47:20 +00:00
aiongg
ded9094f59
Integration: crates/model/src/chart.rs keeps main's CRLF line endings
2026-10-24 06:29:33 +00:00
aiongg
7c1ae73ead
Integration: #565 collapse the nested if in rtf_to_outline (clippy)
2026-10-24 06:29:33 +00:00
aiongg
36cd258bd2
Merge PR #883 : PPTX: paragraph builds edited in the reference app keep their clicks
...
ROADMAP.md: union of log rows. docs/animation-parity.md: main's header; the by-paragraph row from the PR, the triggers row from main; both revision rows.
2026-10-24 06:27:19 +00:00
aiongg
8957e193e9
Merge integration track r1-t02 (dialogs, view, text editing, panes, status bar, other)
...
ROADMAP.md, docs/gaps.md: union of both tracks' log rows.
2026-10-24 06:26:36 +00:00
aiongg
820b163067
Merge integration track r1-t01 (charts, tables, render, shapes, slides, slideshow, outline formats)
2026-10-24 06:26:23 +00:00
aiongg
80e5506456
Integration: cargo fmt
2026-10-24 06:25:28 +00:00
aiongg
3a37fb6b7e
Integration: #565 rtf_to_outline never splits a multi-byte character after \u or \' escapes
2026-10-24 06:18:22 +00:00
aiongg
abd8768b65
Merge PR #565 : Files: save and open outlines as RTF
...
Conflicts:
crates/engine/src/cmd/file.rs: export spec keeps main's transparentBackground and adds rtf; probe_clips (main) and outline_text (PR) both kept
docs/file-format-parity.md: PR's outline row (RTF now read) with main's .md wording, main's PNG row
2026-10-24 06:18:03 +00:00
aiongg
882f1cbdbc
Merge PR #1075 : Indent table rows in outline export so they stay on their slide
2026-10-24 06:17:37 +00:00
aiongg
bb5da2036d
Merge PR #978 : Hide the slide show media controls when the pointer is idle ( #967 )
...
Conflicts: crates/ui-egui/src/show.rs (test module: kept both sides' tests)
2026-10-24 06:17:37 +00:00
aiongg
5b5fd5eabe
Merge PR #1109 : Reuse Slides: choose which slides of the other file to insert
...
Conflicts: ROADMAP.md (union of both sides' rows)
2026-10-24 06:17:26 +00:00
aiongg
2693336155
Merge PR #809 : Design: Browse for Themes brings a template's slide master and layouts ( #807 )
...
Conflicts: ROADMAP.md (union of both sides' rows)
2026-10-24 06:17:23 +00:00
aiongg
f52c911959
Integration: #927 Header & Footer dialog sends dateFormat only when picked; set_date doc comment back above set_date
...
Without it, Apply rewrote every slide's existing date field to datetime1.
2026-10-24 06:17:19 +00:00
aiongg
0313e0128a
Merge PR #850 : Review: reject revisions after Compare, one or all
...
ROADMAP.md, docs/gaps.md: kept main's lines and the PR's single added line in each table.
2026-10-24 06:16:50 +00:00
aiongg
5880086522
Merge PR #927 : Header & Footer: the automatic date takes a format
2026-10-24 06:16:45 +00:00
aiongg
b7c505a389
Merge PR #1254 : Reject invalid index in slide.hide and slide.layout
...
Conflicts: crates/engine/src/tests.rs (appended both sides' tests)
2026-10-24 06:16:45 +00:00
aiongg
987f49ac03
Merge PR #1252 : Reject '+'-signed numeric character references in HTML paste
2026-10-24 06:16:43 +00:00
aiongg
dd9111ba20
Merge PR #384 : Web: point web app favicon to deckcraft.ico
...
contributors/people.toml: kept both new entries.
2026-10-24 06:16:43 +00:00
aiongg
92724e02bb
Merge PR #1205 : Design Ideas: no ideas for slides with diagrams, connectors or other graphics ( #1200 )
...
Conflicts: crates/engine/src/cmd/ideas.rs (test module: kept both sides' tests)
2026-10-24 06:16:39 +00:00
aiongg
0b6ea6a287
Integration: #1244 test that a long language name leaves the Notes button clickable
2026-10-24 06:16:38 +00:00
aiongg
29cc5f83bd
Integration: #833 drop the leftover PNG debug hook from the Edit Points menu test
2026-10-24 06:16:27 +00:00
aiongg
c480b74a3f
Merge PR #833 : Shapes: Edit Points — Straight/Curved Segment and Open/Close Path from the right-click menu
...
Conflicts: ROADMAP.md docs/gaps.md docs/ui-parity.md (union of both sides' rows)
2026-10-24 06:16:21 +00:00
aiongg
2fd32751cc
Merge PR #1251 : Fix arrange.distribute span to use the selection's full extent
2026-10-24 06:16:21 +00:00
aiongg
78afd2fc45
Merge PR #1245 : Title: arrange.group: nest groups at most 32 deep
2026-10-24 06:16:18 +00:00
aiongg
b280f7755d
Merge PR #846 : Canvas: the Format and Animation Painter override the cursor ( #830 )
...
Conflicts: crates/ui-egui/src/canvas.rs (cursor match: kept #806 's resize_cursor arm inside #846 's painter-armed wrapper)
2026-10-24 06:16:18 +00:00
aiongg
84702f3810
Merge PR #806 : Canvas: the resize cursor follows the handle's rotated diagonal ( #745 )
...
Conflicts: ROADMAP.md (union of both sides' rows)
2026-10-24 06:16:06 +00:00
aiongg
be5413826c
Merge PR #848 : Render: quick styles render on empty placeholder text boxes ( #832 )
...
Conflicts: ROADMAP.md (union of rows)
2026-10-24 06:16:06 +00:00
aiongg
2109dfa03c
Merge PR #1244 : Status bar: keep a long language name from overlapping
2026-10-24 06:15:59 +00:00
aiongg
e6f7648219
Integration: #945 allow unwrap and expect in the thumbs tests module
2026-10-24 06:15:59 +00:00