chore: sync upstream (72 Commits) #20
No reviewers
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/pdfcraft!20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chore/sync-upstream-20261108"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Upstream-Sync von
upstream/main(72 Commits). Fast-Forward.f7505898Keep ruled tables when exporting a PDF to Word (#5154)adbf1dc0M9: signed appearances show their real validation state (#79) (#2808)f841666dRelease: refresh contributor credits for each release (#6487) (#6488)5bb8bbf2Add dry-run preview to doc_batch without writing outputs (#6486)5644d56cMerge pull request #6243 from alehel/refactor/page-press-edit-text9dbede87Merge pull request #5816 from KenM76/feat/unreadable-object-report33e3945cMerge main and preserve unreadable diagnostics with cached failures784ce921Merge pull request #6497 from helenkwok/web/page-apia94e90daMerge pull request #6471 from ZIDAN44/fix/6440-add-text-cmyk-gray09a63d6dMerge pull request #6197 from KenM76/feat/rich-copy21747a4eMerge pull request #5802 from KenM76/perf/failed-object-cachea9ccca5bpdfcraft-web: say ui.open answers with an error on the web6ec23789pdfcraft-web: say a timed-out call is not guaranteed to have been skipped9db177c1Add text: the ink tests reach the non-number and content_update paths (review)a9e98e0dpdfcraft-web: window.pdfcraft, the page command API from craft-web-api, opt-in with ?controlAn object whose load fails reads as null (ISO 32000-2 §7.3.10) and the file opens, but nothing said so: the repair log records only document-level repairs, so a file with an unparseable /Info showed no repair and no reason for its missing title. pdfcraft-cos Document now records each object whose load fails, with its generation and the reason, in a set shared by clones and scans like the object cache: at most 100, keyed by number, first reason kept, cut to 160 characters, built only for an object not yet listed. It is reset where the caches are (authenticate, reconstruct); edited objects drop off a document's list. Document::unreadable_objects() gives neutral lines ("object 4 0 could not be read: ..."), the engine passes them on, and automation doc_info adds an unreadable_objects array, kept apart from repairs so the "has been repaired" notice and the clean-file checks keep their meaning. Tests: a cos unit test for listing, dedup, clones, scans and edits; a cos test for the 100 cap and the no-readable-copy reason; an end-to-end doc_info test on a synthetic broken file. Each fails with the fix reverted. The core.repair-log parity entry cites them and says what is not listed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SqmHYx8FiWM5PcsoiErgp93788af11) into feat/unreadable-object-report 34426ebd9e`object_ui` took a Shift- or ⌘-press before anyone else, whoever owned it, through its own inventory test at the press point, and declined a plain press where that test found an object the router didn't (just outside a picture's edge), so such a press started nothing at all. - The page view reads the press's modifiers from `PagePointer` (`modifiers`: those held at the frame's first primary press). With Edit text, a press that adds (Shift, Ctrl or ⌘) is the objects' whole: `object_ui::modified_hit` gives `Objects { Toggle(target) }` for the object under it, or none (an area selection that adds), `Held` while text being typed is open, and `Refused` on a page whose objects can't be selected together. Only the press asks: hover and cursors are as before. - `object_ui` is told what the press is to its page (`PagePress`) and acts on its own parts; a press nobody holds starts the area selection. The inventory test and its decline go, and so does `blocked_page`: the held press keeps the editor open until the button is up through its capture. - A plain press beside a picture, within the 2 px the objects are found in but outside the picture, now starts an area selection. - The guard: `object_ui::input` no longer reads the router. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>083b3aca) into feat/rich-copy ecb5cae460- Spaces HTML would collapse keep their width across runs, at a paragraph's start and after a break. - font_family returns the families to try: spaced, then as spelt ('Sim Sun','SimSun'); a hyphen splits only before a style word, so MS-Gothic stays whole. - clip_html reports its cut; empty paragraphs count against the cap; the span cap is checked before a paragraph opens; ClipBuilder's Default starts a paragraph; a negative size clamps to 1pt. - RichCopy::truncated: a capped copy is marked, the clipboard then puts plain text only, and text_extract sets html_truncated. No HTML for any page after the shared budget runs out. - A style change at a line end is a wrap, not a paragraph; the block hint is skipped when a smaller block overlaps it; no editor reports styles_incomplete. - A column selection copies plain text only. Each new test fails with its fix reverted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SqmHYx8FiWM5PcsoiErgp9